// Validating benchmarks: // ***** BenchmarkRunner: Start ***** // ***** Found 1 benchmark(s) in total ***** // ***** Building 1 exe(s) in Parallel: Start ***** // start dotnet restore /p:DebugType=portable /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 in D:\git\performance\artifacts\1ccce033-64a3-435f-aa36-2b2e6f78fca8 // command took 1.8s and exited with 0 // start dotnet build -c Release /p:DebugType=portable --no-restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 in D:\git\performance\artifacts\1ccce033-64a3-435f-aa36-2b2e6f78fca8 // command took 3.83s and exited with 0 // start dotnet publish -c Release /p:DebugType=portable --no-build --no-restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 in D:\git\performance\artifacts\1ccce033-64a3-435f-aa36-2b2e6f78fca8 // command took 2.32s and exited with 0 // ***** Done, took 00:00:10 (10.77 sec) ***** // Found 1 benchmarks: // Span.IndexOfValue: Job-SBYHPE(PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable, Toolchain=CoreRun, IterationTime=250.0000 ms, MaxIterationCount=20, MinIterationCount=15, WarmupCount=1) [Size=512] // ************************** // Benchmark: Span.IndexOfValue: Job-SBYHPE(PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable, Toolchain=CoreRun, IterationTime=250.0000 ms, MaxIterationCount=20, MinIterationCount=15, WarmupCount=1) [Size=512] // *** Execute *** // Launch: 1 / 1 // Execute: E:\perfinvestigation\39722\artifacts\test\libs\bin\testhost\net5.0-Windows_NT-Release-x64\shared\Microsoft.NETCore.App\67aed764-671e-45ca-8c7a-ef9e6fb1a8fb\CoreRun.exe "1ccce033-64a3-435f-aa36-2b2e6f78fca8.dll" --benchmarkName "System.Memory.Span.IndexOfValue(Size: 512)" --job "PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable, Toolchain=CoreRun, IterationTime=250.0000 ms, MaxIterationCount=20, MinIterationCount=15, WarmupCount=1" --benchmarkId 0 in D:\git\performance\artifacts\1ccce033-64a3-435f-aa36-2b2e6f78fca8\bin\Release\netcoreapp5.0\publish ; Assembly listing for method CastHelpers:StelemRef(Array,int,Object) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 5.50) ref -> rcx class-hnd ; V01 arg1 [V01,T02] ( 4, 4 ) int -> rdx ; V02 arg2 [V02,T01] ( 6, 4.50) ref -> r8 class-hnd ; V03 loc0 [V03,T03] ( 4, 2.50) byref -> rax ; V04 loc1 [V04,T04] ( 3, 2 ) long -> rdx ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M22649_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M22649_IG02: cmp edx, dword ptr [rcx+8] jae SHORT G_M22649_IG10 movsxd rdx, edx lea rax, bword ptr [rcx+8*rdx+16] mov rdx, qword ptr [rcx] mov rdx, qword ptr [rdx+48] test r8, r8 je SHORT G_M22649_IG06 ;; bbWeight=1 PerfScore 9.50 G_M22649_IG03: cmp rdx, qword ptr [r8] jne SHORT G_M22649_IG08 ;; bbWeight=0.50 PerfScore 1.50 G_M22649_IG04: mov rcx, rax mov rdx, r8 ;; bbWeight=0.50 PerfScore 0.25 G_M22649_IG05: add rsp, 40 jmp CastHelpers:WriteBarrier(byref,Object) ;; bbWeight=0.50 PerfScore 1.13 G_M22649_IG06: xor rcx, rcx mov gword ptr [rax], rcx ;; bbWeight=0.50 PerfScore 0.63 G_M22649_IG07: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M22649_IG08: mov r9, 0xD1FFAB1E cmp qword ptr [rcx], r9 je SHORT G_M22649_IG04 mov rcx, rax ;; bbWeight=0.50 PerfScore 1.75 G_M22649_IG09: add rsp, 40 jmp CastHelpers:StelemRef_Helper(byref,long,Object) ;; bbWeight=0.50 PerfScore 1.13 G_M22649_IG10: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 92, prolog size 4, PerfScore 25.95, (MethodHash=93aaa786) for method CastHelpers:StelemRef(Array,int,Object) ; ============================================================ ; Assembly listing for method CastHelpers:LdelemaRef(Array,int,long):byref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 5 ) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) int -> rdx ; V02 arg2 [V02,T02] ( 3, 3 ) long -> r8 ; V03 loc0 [V03,T04] ( 2, 1.50) byref -> rax ; V04 loc1 [V04,T03] ( 2, 2 ) long -> rdx ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M33592_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M33592_IG02: cmp edx, dword ptr [rcx+8] jae SHORT G_M33592_IG05 movsxd rax, edx lea rax, bword ptr [rcx+8*rax+16] mov rdx, qword ptr [rcx] mov rdx, qword ptr [rdx+48] cmp rdx, r8 jne SHORT G_M33592_IG04 ;; bbWeight=1 PerfScore 9.50 G_M33592_IG03: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M33592_IG04: add rsp, 40 jmp CastHelpers:ThrowArrayMismatchException():byref ;; bbWeight=0.50 PerfScore 1.13 G_M33592_IG05: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 49, prolog size 4, PerfScore 16.40, (MethodHash=449e7cc7) for method CastHelpers:LdelemaRef(Array,int,long):byref ; ============================================================ ; Assembly listing for method AppContext:Setup(long,long,int) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T05] ( 3, 6 ) long -> rdi ; V01 arg1 [V01,T06] ( 3, 6 ) long -> rbx ; V02 arg2 [V02,T04] ( 5, 8 ) int -> rsi ; V03 loc0 [V03,T01] ( 6, 21 ) int -> rbp ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T07] ( 3, 6 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 3, 24 ) ref -> r14 class-hnd "Inlining Arg" ; V07 tmp3 [V07,T02] ( 2, 16 ) ref -> r15 class-hnd exact "Inlining Arg" ; V08 tmp4 [V08,T03] ( 2, 16 ) ref -> r8 class-hnd exact "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M18123_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov rdi, rcx mov rbx, rdx mov esi, r8d ;; bbWeight=1 PerfScore 7.00 G_M18123_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, rbp mov edx, esi xor r8, r8 call Dictionary`2:.ctor(int,IEqualityComparer`1):this mov rcx, 0xD1FFAB1E mov rdx, rbp call CORINFO_HELP_CHECKED_ASSIGN_REF xor ebp, ebp test esi, esi jle SHORT G_M18123_IG04 ;; bbWeight=1 PerfScore 6.25 G_M18123_IG03: mov rdx, 0xD1FFAB1E mov r14, gword ptr [rdx] movsxd rdx, ebp mov rdx, qword ptr [rdi+8*rdx] xor rcx, rcx call String:.ctor(long):this mov r15, rax movsxd rdx, ebp mov rdx, qword ptr [rbx+8*rdx] xor rcx, rcx call String:.ctor(long):this mov r8, rax cmp dword ptr [r14], r14d mov rcx, r14 mov rdx, r15 mov r9d, 2 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this inc ebp cmp ebp, esi jl SHORT G_M18123_IG03 ;; bbWeight=4 PerfScore 60.00 G_M18123_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 162, prolog size 12, PerfScore 93.70, (MethodHash=1ba9b934) for method AppContext:Setup(long,long,int) ; ============================================================ ; Assembly listing for method Dictionary`2:.ctor(int,IEqualityComparer`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 9, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 5, 4.50) int -> rdx ; V02 arg2 [V02,T02] ( 5, 4 ) ref -> rdi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T08] ( 2, 1.50) long -> rcx "impRuntimeLookup slot" ; V05 tmp2 [V05,T07] ( 2, 2 ) ref -> rdi class-hnd "impAppendStmt" ; V06 tmp3 [V06,T05] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V07 tmp4 [V07,T04] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V08 tmp5 [V08,T06] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V09 cse0 [V09,T09] ( 3, 1.25) long -> rdx "CSE - moderate" ; V10 cse1 [V10,T10] ( 3, 1.25) long -> rdx "CSE - moderate" ; V11 cse2 [V11,T03] ( 5, 3.50) long -> rbx "CSE - aggressive" ; ; Lcl frame size = 48 G_M17833_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx mov rdi, r8 ;; bbWeight=1 PerfScore 4.75 G_M17833_IG02: test edx, edx jl G_M17833_IG17 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG03: test edx, edx jle SHORT G_M17833_IG05 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG04: mov rcx, rsi call Dictionary`2:Initialize(int):int:this ;; bbWeight=0.50 PerfScore 0.63 G_M17833_IG05: test rdi, rdi je SHORT G_M17833_IG10 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG06: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rbx, qword ptr [rdx] mov rdx, qword ptr [rbx+32] test rdx, rdx je SHORT G_M17833_IG08 ;; bbWeight=0.50 PerfScore 4.63 G_M17833_IG07: jmp SHORT G_M17833_IG09 ;; bbWeight=0.25 PerfScore 0.50 G_M17833_IG08: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M17833_IG09: mov rcx, rdx call EqualityComparer`1:get_Default():EqualityComparer`1 cmp rax, rdi je SHORT G_M17833_IG10 lea rcx, bword ptr [rsi+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 2.13 G_M17833_IG10: mov rcx, qword ptr [rsi] mov rcx, qword ptr [rcx+48] mov rbx, qword ptr [rcx] mov rcx, 0xD1FFAB1E cmp qword ptr [rbx], rcx jne SHORT G_M17833_IG15 ;; bbWeight=1 PerfScore 9.25 G_M17833_IG11: cmp gword ptr [rsi+24], 0 jne SHORT G_M17833_IG15 mov rcx, 0xD1FFAB1E mov edx, 0x821 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rbx+24] test rdx, rdx je SHORT G_M17833_IG13 ;; bbWeight=0.50 PerfScore 6.00 G_M17833_IG12: jmp SHORT G_M17833_IG14 ;; bbWeight=0.25 PerfScore 0.50 G_M17833_IG13: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M17833_IG14: mov rcx, rdx mov rdx, rdi call CORINFO_HELP_CHKCASTANY lea rcx, bword ptr [rsi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 1.63 G_M17833_IG15: nop ;; bbWeight=1 PerfScore 0.25 G_M17833_IG16: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M17833_IG17: mov ecx, 22 call ThrowHelper:ThrowArgumentOutOfRangeException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 247, prolog size 12, PerfScore 62.20, (MethodHash=4fbeba56) for method Dictionary`2:.ctor(int,IEqualityComparer`1):this ; ============================================================ ; Assembly listing for method Dictionary`2:Initialize(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdx ; V02 loc0 [V02,T01] ( 5, 5 ) int -> rdi ; V03 loc1 [V03,T06] ( 2, 2 ) ref -> rbx class-hnd exact ; V04 loc2 [V04,T07] ( 2, 2 ) ref -> rbp class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V07 tmp2 [V07,T04] ( 3, 3 ) long -> [rsp+0x28] "spilling Runtime Lookup tree" ; V08 cse0 [V08,T05] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 56 G_M48741_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 5.50 G_M48741_IG02: mov ecx, edx call HashHelpers:GetPrime(int):int mov edi, eax movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbx, rax mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+40] test rdx, rdx je SHORT G_M48741_IG04 ;; bbWeight=1 PerfScore 12.50 G_M48741_IG03: mov qword ptr [rsp+28H], rdx jmp SHORT G_M48741_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M48741_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+28H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M48741_IG05: movsxd rdx, edi mov rcx, qword ptr [rsp+28H] call CORINFO_HELP_NEWARR_1_VC mov rbp, rax mov dword ptr [rsi+60], -1 mov rax, -1 mov ecx, edi xor rdx, rdx div rdx:rax, rcx inc rax mov qword ptr [rsi+48], rax lea rcx, bword ptr [rsi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov eax, edi ;; bbWeight=1 PerfScore 70.25 G_M48741_IG06: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 174, prolog size 13, PerfScore 110.21, (MethodHash=ab44419a) for method Dictionary`2:Initialize(int):int:this ; ============================================================ ; Assembly listing for method HashHelpers:GetPrime(int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 6, 8 ) int -> rsi ; V01 loc0 [V01,T06] ( 3, 6 ) ref -> rcx class-hnd ; V02 loc1 [V02,T01] ( 5, 17 ) int -> rax ; V03 loc2 [V03,T05] ( 3, 8.50) int -> r8 ; V04 loc3 [V04,T00] ( 8, 19.50) int -> rdi ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T09] ( 2, 0 ) ref -> rcx "argument with side effect" ; V08 tmp3 [V08,T10] ( 2, 0 ) ref -> rdx "argument with side effect" ; V09 tmp4 [V09,T02] ( 3, 12 ) int -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V10 cse0 [V10,T07] ( 3, 6 ) int -> rdx "CSE - aggressive" ; V11 rat0 [V11,T03] ( 3, 12 ) int -> rdx "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 40 G_M4841_IG01: push rdi push rsi sub rsp, 40 mov esi, ecx ;; bbWeight=1 PerfScore 2.50 G_M4841_IG02: test esi, esi jl G_M4841_IG16 ;; bbWeight=1 PerfScore 1.25 G_M4841_IG03: mov rcx, 0xD1FFAB1E mov edx, 0x7C8 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] xor eax, eax mov edx, dword ptr [rcx+8] test edx, edx jle SHORT G_M4841_IG06 ;; bbWeight=1 PerfScore 7.25 G_M4841_IG04: movsxd r8, eax mov r8d, dword ptr [rcx+4*r8+16] cmp r8d, esi jge SHORT G_M4841_IG14 ;; bbWeight=4 PerfScore 14.00 G_M4841_IG05: inc eax cmp edx, eax jg SHORT G_M4841_IG04 ;; bbWeight=4 PerfScore 6.00 G_M4841_IG06: mov edi, esi or edi, 1 cmp edi, 0xD1FFAB1E jge SHORT G_M4841_IG10 ;; bbWeight=0.50 PerfScore 0.88 G_M4841_IG07: mov ecx, edi call HashHelpers:IsPrime(int):bool test eax, eax je SHORT G_M4841_IG09 ;; bbWeight=4 PerfScore 10.00 G_M4841_IG08: lea ecx, [rdi-1] mov edx, 0xD1FFAB1E mov eax, edx imul edx:eax, ecx mov eax, edx shr eax, 31 sar edx, 4 add eax, edx imul eax, eax, 101 sub ecx, eax jne SHORT G_M4841_IG12 ;; bbWeight=2 PerfScore 21.50 G_M4841_IG09: add edi, 2 cmp edi, 0xD1FFAB1E jl SHORT G_M4841_IG07 ;; bbWeight=4 PerfScore 6.00 G_M4841_IG10: mov eax, esi ;; bbWeight=0.50 PerfScore 0.13 G_M4841_IG11: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M4841_IG12: mov eax, edi ;; bbWeight=0.50 PerfScore 0.13 G_M4841_IG13: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M4841_IG14: mov eax, r8d ;; bbWeight=0.50 PerfScore 0.13 G_M4841_IG15: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M4841_IG16: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x414F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 237, prolog size 8, PerfScore 96.83, (MethodHash=8005ed16) for method HashHelpers:GetPrime(int):int ; ============================================================ ; Assembly listing for method HashHelpers:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "dup spill" ; V02 tmp2 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[SB] must-init "struct address for call/obj" ; ; Lcl frame size = 48 G_M10497_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax mov qword ptr [rbp-10H], rax ;; bbWeight=1 PerfScore 4.00 G_M10497_IG02: mov rcx, 0xD1FFAB1E mov edx, 72 call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rbp-08H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_FIELDDESC_TO_STUBRUNTIMEFIELD mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-08H] mov rdx, gword ptr [rbp-10H] call RuntimeHelpers:InitializeArray(Array,RuntimeFieldHandle) mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 10.25 G_M10497_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 102, prolog size 20, PerfScore 26.45, (MethodHash=7b8cd6fe) for method HashHelpers:.cctor() ; ============================================================ ; Assembly listing for method NonRandomizedStringEqualityComparer:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M53224_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M53224_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call NonRandomizedStringEqualityComparer:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M53224_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=4fad3017) for method NonRandomizedStringEqualityComparer:.cctor() ; ============================================================ ; Assembly listing for method NonRandomizedStringEqualityComparer:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M19703_IG01: ;; bbWeight=1 PerfScore 0.00 G_M19703_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=a1d9b308) for method NonRandomizedStringEqualityComparer:.ctor():this ; ============================================================ ; Assembly listing for method CastHelpers:ChkCastAny(long,Object):Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 6, 4.50) long -> r8 ; V01 arg1 [V01,T03] ( 6, 4.50) ref -> rdx class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ; V03 loc1 [V03,T14] ( 2, 1 ) ref -> rax class-hnd ; V04 loc2 [V04,T12] ( 3, 1.50) long -> rax ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 3, 6 ) long -> rax "impAppendStmt" ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V08 tmp3 [V08,T11] ( 2, 2 ) long -> r9 "NewObj constructor temp" ; V09 tmp4 [V09,T13] ( 3, 1.50) int -> rax "Inline return value spill temp" ; V10 tmp5 [V10,T07] ( 4, 5 ) byref -> r10 "Inline stloc first use temp" ; V11 tmp6 [V11,T05] ( 4, 6.50) int -> rcx "Inline stloc first use temp" ; V12 tmp7 [V12,T00] ( 5, 8.50) int -> r9 "Inline stloc first use temp" ; V13 tmp8 [V13,T02] ( 5, 7.25) byref -> r11 "Inline stloc first use temp" ; V14 tmp9 [V14,T01] ( 5, 8.25) int -> rsi "Inline stloc first use temp" ; V15 tmp10 [V15,T09] ( 2, 4 ) long -> rdi "Inline stloc first use temp" ; V16 tmp11 [V16,T08] ( 5, 4.50) long -> rdi "Inline stloc first use temp" ; V17 tmp12 [V17,T10] ( 2, 2 ) ref -> r10 class-hnd "Inlining Arg" ; V18 tmp13 [V18,T15] ( 2, 1 ) int -> rcx "Inline stloc first use temp" ; V19 tmp14 [V19,T16] ( 2, 1 ) long -> r9 "Inline stloc first use temp" ;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V22 tmp17 [V22 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; ; Lcl frame size = 40 G_M42846_IG01: push rdi push rsi sub rsp, 40 mov r8, rcx ;; bbWeight=1 PerfScore 2.50 G_M42846_IG02: test rdx, rdx je G_M42846_IG12 ;; bbWeight=1 PerfScore 1.25 G_M42846_IG03: mov rax, qword ptr [rdx] cmp rax, r8 je G_M42846_IG12 mov r9, r8 mov rcx, 0xD1FFAB1E mov r10, gword ptr [rcx] add r10, 16 mov ecx, dword ptr [r10] mov r11, rax rol r11, 32 xor r9, r11 mov r11, 0xD1FFAB1E imul r9, r11 shr r9, cl mov ecx, r9d xor r9d, r9d ;; bbWeight=0.50 PerfScore 7.63 G_M42846_IG04: lea r11d, [rcx+1] movsxd r11, r11d lea r11, [r11+2*r11] lea r11, bword ptr [r10+8*r11] mov esi, dword ptr [r11] mov rdi, qword ptr [r11+8] and esi, -2 cmp rdi, rax jne SHORT G_M42846_IG06 ;; bbWeight=2 PerfScore 14.50 G_M42846_IG05: mov rdi, qword ptr [r11+16] xor rdi, r8 cmp rdi, 1 jbe SHORT G_M42846_IG08 ;; bbWeight=1 PerfScore 3.50 G_M42846_IG06: test esi, esi je SHORT G_M42846_IG10 inc r9d add ecx, r9d and ecx, dword ptr [r10+4] cmp r9d, 8 jl SHORT G_M42846_IG04 ;; bbWeight=2 PerfScore 10.00 G_M42846_IG07: jmp SHORT G_M42846_IG10 ;; bbWeight=0.25 PerfScore 0.50 G_M42846_IG08: cmp esi, dword ptr [r11] jne SHORT G_M42846_IG10 ;; bbWeight=0.25 PerfScore 0.75 G_M42846_IG09: mov rax, rdi shr rax, 32 jne SHORT G_M42846_IG16 mov eax, edi jmp SHORT G_M42846_IG11 ;; bbWeight=0.50 PerfScore 2.75 G_M42846_IG10: mov eax, 2 ;; bbWeight=0.50 PerfScore 0.13 G_M42846_IG11: cmp eax, 1 jne SHORT G_M42846_IG14 ;; bbWeight=0.50 PerfScore 0.63 G_M42846_IG12: mov rax, rdx ;; bbWeight=0.50 PerfScore 0.13 G_M42846_IG13: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M42846_IG14: mov rcx, r8 call CastHelpers:ChkCastAny_NoCacheLookup(long,Object):Object nop ;; bbWeight=0.50 PerfScore 0.75 G_M42846_IG15: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M42846_IG16: call CORINFO_HELP_OVERFLOW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 211, prolog size 9, PerfScore 68.35, (MethodHash=c33958a1) for method CastHelpers:ChkCastAny(long,Object):Object ; ============================================================ ; Assembly listing for method String:Ctor(long):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 5, 4 ) long -> rsi ; V02 loc0 [V02,T04] ( 3, 1.50) int -> rcx ; V03 loc1 [V03,T01] ( 4, 2 ) ref -> rdi class-hnd ; V04 loc2 [V04,T06] ( 2, 1 ) long -> r8 ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T05] ( 3, 1.50) int -> rcx "Inline stloc first use temp" ; V07 tmp2 [V07,T02] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V08 tmp3 [V08 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V09 tmp4 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V10 tmp5 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V11 tmp6 [V11,T03] ( 2, 2 ) byref -> rdx "impAppendStmt" ;* V12 tmp7 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 40 G_M63015_IG01: push rdi push rsi sub rsp, 40 mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M63015_IG02: test rsi, rsi jne SHORT G_M63015_IG05 ;; bbWeight=1 PerfScore 1.25 G_M63015_IG03: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M63015_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M63015_IG05: mov rcx, rsi xor edx, edx mov r8d, 0xD1FFAB1E call SpanHelpers:IndexOf(byref,ushort,int):int mov ecx, eax test ecx, ecx jl SHORT G_M63015_IG10 ;; bbWeight=0.50 PerfScore 1.63 G_M63015_IG06: test ecx, ecx jne SHORT G_M63015_IG08 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.75 G_M63015_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M63015_IG08: call String:FastAllocateString(int):String mov rdi, rax mov r8d, dword ptr [rdi+8] lea rcx, bword ptr [rdi+12] mov rdx, rsi add r8, r8 call Buffer:Memmove(byref,byref,long) mov rax, rdi ;; bbWeight=0.50 PerfScore 2.75 G_M63015_IG09: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M63015_IG10: call String:ThrowMustBeNullTerminatedString() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 123, prolog size 6, PerfScore 26.68, (MethodHash=b25e09d8) for method String:Ctor(long):String:this ; ============================================================ ; Assembly listing for method SpanHelpers:IndexOf(byref,ushort,int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 9, 43.50) byref -> rcx ; V01 arg1 [V01,T06] ( 7, 14 ) ushort -> rdx ; V02 arg2 [V02,T11] ( 4, 3.50) int -> r8 ; V03 loc0 [V03,T01] ( 28,140.50) long -> r9 ; V04 loc1 [V04,T00] ( 18,142 ) long -> rax ; V05 loc2 [V05,T08] ( 5, 10 ) byref -> r8 ; V06 loc3 [V06,T22] ( 2, 4 ) simd16 -> mm0 ; V07 loc4 [V07,T23] ( 2, 4 ) simd16 -> mm1 ; V08 loc5 [V08,T12] ( 3, 4.50) int -> r11 ; V09 loc6 [V09,T21] ( 2, 18 ) simd32 -> mm0 ; V10 loc7 [V10,T20] ( 2, 32 ) simd32 -> mm1 ; V11 loc8 [V11,T04] ( 3, 32.50) int -> r8 ; V12 loc9 [V12,T24] ( 2, 4 ) simd16 -> mm0 ; V13 loc10 [V13,T25] ( 2, 4 ) simd16 -> mm1 ; V14 loc11 [V14,T13] ( 3, 4.50) int -> rax ;* V15 loc12 [V15 ] ( 0, 0 ) simd16 -> zero-ref ;* V16 loc13 [V16 ] ( 0, 0 ) simd16 -> zero-ref ;* V17 loc14 [V17 ] ( 0, 0 ) int -> zero-ref ;* V18 loc15 [V18 ] ( 0, 0 ) simd16 -> zero-ref ;* V19 loc16 [V19 ] ( 0, 0 ) int -> zero-ref ld-addr-op ;* V20 loc17 [V20 ] ( 0, 0 ) simd16 -> zero-ref ;* V21 loc18 [V21 ] ( 0, 0 ) simd16 -> zero-ref ;* V22 loc19 [V22 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op ;* V23 loc20 [V23 ] ( 0, 0 ) simd32 -> zero-ref ;* V24 loc21 [V24 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op ;# V25 OutArgs [V25 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V26 tmp1 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V27 tmp2 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V28 tmp3 [V28 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V29 tmp4 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V30 tmp5 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V31 tmp6 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V32 tmp7 [V32,T17] ( 2, 1 ) int -> r10 "Inline return value spill temp" ;* V33 tmp8 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V34 tmp9 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V35 tmp10 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V36 tmp11 [V36,T18] ( 2, 1 ) int -> rax "Inline return value spill temp" ;* V37 tmp12 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V38 tmp13 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V39 tmp14 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V40 tmp15 [V40,T19] ( 2, 1 ) int -> rdx "Inline return value spill temp" ; V41 tmp16 [V41,T10] ( 8, 8 ) int -> rax "Single return block return value" ; V42 tmp17 [V42,T14] ( 2, 4 ) long -> r11 "Cast away GC" ; V43 tmp18 [V43,T16] ( 2, 2 ) long -> rax "Cast away GC" ; V44 tmp19 [V44,T07] ( 2, 16 ) long -> r11 "Cast away GC" ; V45 cse0 [V45,T09] ( 3, 10 ) byref -> rax "CSE - aggressive" ; V46 cse1 [V46,T03] ( 13, 42 ) int -> r11 "CSE - aggressive" ; V47 cse2 [V47,T05] ( 7, 22 ) long -> r10 "CSE - aggressive" ; V48 rat0 [V48,T15] ( 3, 3 ) int -> rax "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 0 G_M36664_IG01: push rsi vzeroupper ;; bbWeight=1 PerfScore 2.00 G_M36664_IG02: xor r9, r9 movsxd r10, r8d mov rax, r10 mov r11, rcx test r11b, 1 jne SHORT G_M36664_IG05 ;; bbWeight=1 PerfScore 2.25 G_M36664_IG03: cmp r8d, 16 jl SHORT G_M36664_IG05 mov rax, rcx neg eax mov r8d, eax shr r8d, 31 add eax, r8d sar eax, 1 mov eax, eax and rax, 7 cmp rax, 4 jl SHORT G_M36664_IG06 ;; bbWeight=0.50 PerfScore 3.25 G_M36664_IG04: lea r8, bword ptr [rcx+2*r9] movzx r11, dx movzx rsi, word ptr [r8] cmp r11d, esi je G_M36664_IG24 movzx rsi, word ptr [r8+2] cmp r11d, esi je G_M36664_IG23 movzx rsi, word ptr [r8+4] cmp r11d, esi je G_M36664_IG22 movzx r8, word ptr [r8+6] cmp r11d, r8d je G_M36664_IG21 add r9, 4 add rax, -4 ;; bbWeight=2 PerfScore 28.50 G_M36664_IG05: cmp rax, 4 jge SHORT G_M36664_IG04 ;; bbWeight=16 PerfScore 20.00 G_M36664_IG06: test rax, rax jle SHORT G_M36664_IG08 movzx r11, dx ;; bbWeight=4 PerfScore 6.00 G_M36664_IG07: movzx r8, word ptr [rcx+2*r9] cmp r8d, r11d je G_M36664_IG24 inc r9 dec rax test rax, rax jg SHORT G_M36664_IG07 ;; bbWeight=16 PerfScore 80.00 G_M36664_IG08: cmp r9, r10 jge G_M36664_IG19 lea rax, bword ptr [rcx+2*r9] mov r11, rax mov r8d, r11d test r8b, 31 je SHORT G_M36664_IG11 ;; bbWeight=4 PerfScore 14.00 G_M36664_IG09: movzx r11, dx vmovd xmm0, r11d vpbroadcastw xmm0, xmm0 vmovupd xmm1, xmmword ptr [rax] vpcmpeqw xmm0, xmm0, xmm1 vpmovmskb r11d, xmm0 test r11d, r11d jne SHORT G_M36664_IG10 add r9, 8 jmp SHORT G_M36664_IG11 ;; bbWeight=2 PerfScore 22.50 G_M36664_IG10: xor r10d, r10d tzcnt r10d, r11d shr r10d, 1 mov edx, r10d mov eax, edx add eax, r9d jmp G_M36664_IG25 ;; bbWeight=0.50 PerfScore 2.75 G_M36664_IG11: mov rax, r10 sub rax, r9 and rax, -16 jle SHORT G_M36664_IG14 ;; bbWeight=4 PerfScore 7.00 G_M36664_IG12: movzx r11, dx vmovd xmm0, r11d vpbroadcastw ymm0, ymm0 ;; bbWeight=2 PerfScore 4.50 G_M36664_IG13: vmovupd ymm1, ymmword ptr[rcx+2*r9] vpcmpeqw ymm1, ymm0, ymm1 vpmovmskb r8d, ymm1 test r8d, r8d jne SHORT G_M36664_IG16 add r9, 16 add rax, -16 test rax, rax jg SHORT G_M36664_IG13 ;; bbWeight=16 PerfScore 136.00 G_M36664_IG14: mov rax, r10 sub rax, r9 and rax, -8 jle SHORT G_M36664_IG18 ;; bbWeight=4 PerfScore 7.00 G_M36664_IG15: movzx r11, dx vmovd xmm0, r11d vpbroadcastw xmm0, xmm0 vmovupd xmm1, xmmword ptr [rcx+2*r9] vpcmpeqw xmm0, xmm0, xmm1 vpmovmskb eax, xmm0 test eax, eax jne SHORT G_M36664_IG17 add r9, 8 jmp SHORT G_M36664_IG18 ;; bbWeight=2 PerfScore 22.50 G_M36664_IG16: xor eax, eax tzcnt eax, r8d shr eax, 1 mov r10d, eax mov eax, r10d add eax, r9d jmp SHORT G_M36664_IG25 ;; bbWeight=0.50 PerfScore 2.75 G_M36664_IG17: xor edx, edx tzcnt edx, eax shr edx, 1 mov ecx, edx mov eax, ecx add eax, r9d jmp SHORT G_M36664_IG25 ;; bbWeight=0.50 PerfScore 2.75 G_M36664_IG18: cmp r9, r10 jge SHORT G_M36664_IG19 mov rax, r10 sub rax, r9 jmp G_M36664_IG05 ;; bbWeight=4 PerfScore 15.00 G_M36664_IG19: mov eax, -1 ;; bbWeight=0.50 PerfScore 0.13 G_M36664_IG20: vzeroupper pop rsi ret ;; bbWeight=0.50 PerfScore 1.25 G_M36664_IG21: lea eax, [r9+3] jmp SHORT G_M36664_IG25 ;; bbWeight=0.50 PerfScore 1.25 G_M36664_IG22: lea eax, [r9+2] jmp SHORT G_M36664_IG25 ;; bbWeight=0.50 PerfScore 1.25 G_M36664_IG23: lea eax, [r9+1] jmp SHORT G_M36664_IG25 ;; bbWeight=0.50 PerfScore 1.25 G_M36664_IG24: mov eax, r9d ;; bbWeight=0.50 PerfScore 0.13 G_M36664_IG25: vzeroupper pop rsi ret ;; bbWeight=0.50 PerfScore 1.25 ; Total bytes of code 451, prolog size 4, PerfScore 431.35, (MethodHash=db3370c7) for method SpanHelpers:IndexOf(byref,ushort,int):int ; ============================================================ ; Assembly listing for method Buffer:Memmove(byref,byref,long) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 16, 20 ) byref -> rcx ; V01 arg1 [V01,T01] ( 16, 20 ) byref -> rdx ; V02 arg2 [V02,T02] ( 18, 10.50) long -> r8 ; V03 loc0 [V03,T04] ( 6, 3 ) byref -> rax ; V04 loc1 [V04,T05] ( 6, 3 ) byref -> r9 ; V05 loc2 [V05,T03] ( 4, 12.50) long -> r10 ;# V06 OutArgs [V06 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T07] ( 2, 2 ) byref -> rdx "impAppendStmt" ;* V08 tmp2 [V08 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V09 tmp3 [V09,T08] ( 2, 2 ) byref -> rdx "impAppendStmt" ;* V10 tmp4 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V11 tmp5 [V11,T09] ( 2, 2 ) byref -> rdx "impAppendStmt" ;* V12 tmp6 [V12 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V13 tmp7 [V13,T10] ( 2, 2 ) byref -> rdx "impAppendStmt" ;* V14 tmp8 [V14 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V15 tmp9 [V15,T11] ( 2, 2 ) byref -> r9 "impAppendStmt" ; V16 tmp10 [V16,T12] ( 2, 2 ) byref -> r10 "impAppendStmt" ; V17 tmp11 [V17,T13] ( 2, 2 ) byref -> rcx "impAppendStmt" ;* V18 tmp12 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V19 tmp13 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V20 tmp14 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V21 tmp15 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V22 tmp16 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V23 tmp17 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V24 tmp18 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V25 tmp19 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V26 tmp20 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V27 tmp21 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V28 tmp22 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V29 tmp23 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V30 tmp24 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V31 tmp25 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V32 cse0 [V32,T06] ( 4, 2 ) int -> r10 "CSE - moderate" ; ; Lcl frame size = 0 G_M35999_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M35999_IG02: mov rax, rcx sub rax, rdx cmp rax, r8 jb G_M35999_IG14 ;; bbWeight=1 PerfScore 1.75 G_M35999_IG03: mov rax, rdx sub rax, rcx cmp rax, r8 jb G_M35999_IG14 lea rax, bword ptr [r8+rdx] lea r9, bword ptr [r8+rcx] cmp r8, 16 jbe SHORT G_M35999_IG06 cmp r8, 64 ja G_M35999_IG11 ;; bbWeight=0.50 PerfScore 2.63 G_M35999_IG04: vmovdqu xmm0, xmmword ptr [rdx] vmovdqu xmmword ptr [rcx], xmm0 cmp r8, 32 jbe SHORT G_M35999_IG05 lea r10, bword ptr [rcx+16] vmovdqu xmm0, xmmword ptr [rdx+16] vmovdqu xmmword ptr [r10], xmm0 cmp r8, 48 jbe SHORT G_M35999_IG05 add rcx, 32 vmovdqu xmm0, xmmword ptr [rdx+32] vmovdqu xmmword ptr [rcx], xmm0 ;; bbWeight=0.50 PerfScore 6.13 G_M35999_IG05: add r9, -16 vmovdqu xmm0, xmmword ptr [rax-16] vmovdqu xmmword ptr [r9], xmm0 jmp G_M35999_IG16 ;; bbWeight=0.50 PerfScore 2.63 G_M35999_IG06: mov r10d, r8d test r10b, 24 je SHORT G_M35999_IG07 mov r10, qword ptr [rdx] mov qword ptr [rcx], r10 lea rdx, bword ptr [r9-8] mov rcx, qword ptr [rax-8] mov qword ptr [rdx], rcx jmp G_M35999_IG16 ;; bbWeight=0.50 PerfScore 5.00 G_M35999_IG07: test r10b, 4 je SHORT G_M35999_IG08 mov r8d, dword ptr [rdx] mov dword ptr [rcx], r8d lea rdx, bword ptr [r9-4] mov ecx, dword ptr [rax-4] mov dword ptr [rdx], ecx jmp G_M35999_IG16 ;; bbWeight=0.50 PerfScore 4.88 G_M35999_IG08: test r8, r8 je G_M35999_IG16 ;; bbWeight=0.50 PerfScore 0.63 G_M35999_IG09: movzx r8, byte ptr [rdx] mov byte ptr [rcx], r8b test r10b, 2 je G_M35999_IG16 ;; bbWeight=0.50 PerfScore 2.13 G_M35999_IG10: lea rdx, bword ptr [r9-2] movsx rcx, word ptr [rax-2] mov word ptr [rdx], cx jmp SHORT G_M35999_IG16 ;; bbWeight=0.50 PerfScore 2.75 G_M35999_IG11: cmp r8, 0x800 ja SHORT G_M35999_IG15 mov r10, r8 shr r10, 6 ;; bbWeight=0.50 PerfScore 1.75 G_M35999_IG12: vmovdqu xmm0, xmmword ptr [rdx] vmovdqu xmmword ptr [rcx], xmm0 vmovdqu xmm0, xmmword ptr [rdx+16] vmovdqu xmmword ptr [rcx+16], xmm0 vmovdqu xmm0, xmmword ptr [rdx+32] vmovdqu xmmword ptr [rcx+32], xmm0 vmovdqu xmm0, xmmword ptr [rdx+48] vmovdqu xmmword ptr [rcx+48], xmm0 add rcx, 64 add rdx, 64 dec r10 jne SHORT G_M35999_IG12 ;; bbWeight=4 PerfScore 55.00 G_M35999_IG13: and r8, 63 cmp r8, 16 ja G_M35999_IG04 lea rdx, bword ptr [r9-16] vmovdqu xmm0, xmmword ptr [rax-16] vmovdqu xmmword ptr [rdx], xmm0 jmp SHORT G_M35999_IG16 ;; bbWeight=0.50 PerfScore 3.50 G_M35999_IG14: cmp rcx, rdx je SHORT G_M35999_IG16 ;; bbWeight=0.50 PerfScore 0.63 G_M35999_IG15: jmp Buffer:_Memmove(byref,byref,long) ;; bbWeight=0.50 PerfScore 1.00 G_M35999_IG16: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 327, prolog size 3, PerfScore 126.18, (MethodHash=08457360) for method Buffer:Memmove(byref,byref,long) ; ============================================================ ; Assembly listing for method Buffer:_Memmove(byref,byref,long) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 4 ) byref -> rsi ; V01 arg1 [V01,T02] ( 4, 4 ) byref -> rdi ; V02 arg2 [V02,T03] ( 3, 3 ) long -> rbx ;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref ; V04 loc1 [V04 ] ( 2, 2 ) byref -> [rbp-0x40] must-init pinned ;* V05 loc2 [V05 ] ( 0, 0 ) long -> zero-ref ; V06 loc3 [V06 ] ( 2, 2 ) byref -> [rbp-0x48] must-init pinned ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 FramesRoot [V08,T00] ( 6, 6 ) long -> r14 "Pinvoke FrameListRoot" ; V09 PInvokeFrame [V09 ] ( 8, 8 ) blk (72) [rbp-0x90] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V10 tmp3 [V10,T04] ( 2, 4 ) long -> rcx "Cast away GC" ; V11 tmp4 [V11,T05] ( 2, 4 ) long -> rdx "Cast away GC" ; ; Lcl frame size = 120 G_M18112_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] xor rbx, rbx mov qword ptr [rbp-40H], rbx mov qword ptr [rbp-48H], rbx mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 11.75 G_M18112_IG02: lea rcx, [rbp-88H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r14, rax mov rcx, rsp mov qword ptr [rbp-68H], rcx mov rcx, rbp mov qword ptr [rbp-58H], rcx mov bword ptr [rbp-40H], rsi mov rcx, rsi mov bword ptr [rbp-48H], rdi mov rdx, rdi mov r8, rbx mov rax, 0xD1FFAB1E mov qword ptr [rbp-78H], rax lea rax, G_M18112_IG04 mov qword ptr [rbp-60H], rax lea rax, bword ptr [rbp-88H] mov qword ptr [r14+16], rax mov byte ptr [r14+12], 0 ;; bbWeight=1 PerfScore 13.00 G_M18112_IG03: call [Buffer:__Memmove(long,long,long)] ;; bbWeight=1 PerfScore 3.00 G_M18112_IG04: mov byte ptr [r14+12], 1 cmp dword ptr [(reloc)], 0 je SHORT G_M18112_IG05 call [CORINFO_HELP_STOP_FOR_GC] ;; bbWeight=1 PerfScore 7.00 G_M18112_IG05: mov rax, bword ptr [rbp-80H] mov qword ptr [r14+16], rax xor rax, rax mov bword ptr [rbp-48H], rax mov bword ptr [rbp-40H], rax ;; bbWeight=1 PerfScore 4.25 G_M18112_IG06: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 194, prolog size 34, PerfScore 63.90, (MethodHash=831db93f) for method Buffer:_Memmove(byref,byref,long) ; ============================================================ ; Assembly listing for method Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 27, 17.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T08] ( 11, 9 ) ref -> rdi ld-addr-op class-hnd ; V02 arg2 [V02,T16] ( 5, 3.50) ref -> rbp class-hnd ; V03 arg3 [V03,T15] ( 6, 4 ) ubyte -> rbx ; V04 loc0 [V04,T03] ( 12, 23.50) ref -> r14 class-hnd ; V05 loc1 [V05,T14] ( 6, 6 ) ref -> r15 class-hnd ; V06 loc2 [V06,T09] ( 6, 11 ) int -> r12 ; V07 loc3 [V07,T00] ( 8, 25.50) int -> r13 ; V08 loc4 [V08,T23] ( 5, 3.50) byref -> [rsp+0x50] ; V09 loc5 [V09,T02] ( 7, 25 ) int -> [rsp+0x5C] ; V10 loc6 [V10,T24] ( 6, 3 ) int -> rbx ; V11 loc7 [V11,T28] ( 5, 2.50) byref -> [rsp+0x48] ; V12 loc8 [V12,T18] ( 3, 4.50) ref -> [rsp+0x40] class-hnd ; V13 loc9 [V13,T38] ( 3, 1.50) int -> rbx ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15,T31] ( 3, 2 ) int -> r12 ; V16 tmp2 [V16,T22] ( 4, 3.50) ref -> r15 class-hnd "spilling QMark2" ; V17 tmp3 [V17,T10] ( 3, 10 ) long -> rcx "impRuntimeLookup slot" ; V18 tmp4 [V18,T13] ( 2, 8 ) ref -> [rsp+0x38] class-hnd "impAppendStmt" ;* V19 tmp5 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V20 tmp6 [V20,T07] ( 4, 12 ) long -> r11 "spilling Runtime Lookup tree" ;* V21 tmp7 [V21 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V22 tmp8 [V22,T47] ( 4, 0 ) long -> rcx "impRuntimeLookup slot" ;* V23 tmp9 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V24 tmp10 [V24,T49] ( 3, 0 ) long -> rcx "spilling Runtime Lookup tree" ; V25 tmp11 [V25,T29] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V26 tmp12 [V26,T32] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V27 tmp13 [V27,T48] ( 4, 0 ) long -> rcx "impRuntimeLookup slot" ;* V28 tmp14 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V29 tmp15 [V29,T50] ( 3, 0 ) long -> rcx "spilling Runtime Lookup tree" ; V30 tmp16 [V30,T30] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ;* V31 tmp17 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V32 tmp18 [V32,T25] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V33 tmp19 [V33 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V34 tmp20 [V34,T33] ( 2, 2 ) byref -> rax "Inline return value spill temp" ; V35 tmp21 [V35,T19] ( 4, 4 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V36 tmp22 [V36,T20] ( 2, 4 ) long -> rax "Inlining Arg" ; V37 tmp23 [V37,T21] ( 2, 4 ) int -> rdx "Inlining Arg" ; V38 tmp24 [V38,T26] ( 3, 3 ) int -> rdx "Inline stloc first use temp" ; V39 tmp25 [V39,T46] ( 2, 1 ) byref -> rax "Inline return value spill temp" ; V40 tmp26 [V40,T37] ( 3, 1.50) ref -> rdx class-hnd "Inline stloc first use temp" ; V41 tmp27 [V41,T34] ( 2, 2 ) long -> r8 "Inlining Arg" ; V42 tmp28 [V42,T35] ( 2, 2 ) int -> rax "Inlining Arg" ; V43 tmp29 [V43,T39] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V44 tmp30 [V44,T27] ( 3, 3 ) int -> rdx "index expr" ; V45 tmp31 [V45,T36] ( 2, 2 ) int -> rdx "argument with side effect" ; V46 cse0 [V46,T05] ( 4, 12.50) byref -> [rsp+0x30] "CSE - aggressive" ; V47 cse1 [V47,T06] ( 4, 12.50) byref -> [rsp+0x28] "CSE - aggressive" ; V48 cse2 [V48,T17] ( 3, 5 ) long -> r11 "CSE - moderate" ; V49 cse3 [V49,T44] ( 3, 1.25) long -> r11 "CSE - conservative" ; V50 cse4 [V50,T45] ( 3, 1.25) long -> rdx "CSE - conservative" ; V51 cse5 [V51,T11] ( 3, 10 ) long -> rdx "CSE - aggressive" ; V52 cse6 [V52,T12] ( 3, 10 ) long -> rcx "CSE - aggressive" ; V53 cse7 [V53,T40] ( 3, 1.50) int -> rcx "CSE - conservative" ; V54 cse8 [V54,T41] ( 3, 1.50) int -> rdx "CSE - conservative" ; V55 cse9 [V55,T42] ( 3, 1.50) int -> rcx "CSE - conservative" ; V56 cse10 [V56,T43] ( 3, 1.50) int -> rcx "CSE - conservative" ; V57 cse11 [V57,T01] ( 8, 25 ) int -> [rsp+0x58] "CSE - aggressive" ; ; Lcl frame size = 104 G_M57844_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 104 mov qword ptr [rsp+60H], rcx mov rsi, rcx mov rdi, rdx mov rbp, r8 mov ebx, r9d ;; bbWeight=1 PerfScore 10.25 G_M57844_IG02: test rdi, rdi je G_M57844_IG40 ;; bbWeight=1 PerfScore 1.25 G_M57844_IG03: cmp gword ptr [rsi+8], 0 jne SHORT G_M57844_IG05 ;; bbWeight=1 PerfScore 3.00 G_M57844_IG04: mov rcx, rsi xor edx, edx call Dictionary`2:Initialize(int):int:this ;; bbWeight=0.50 PerfScore 0.75 G_M57844_IG05: mov r14, gword ptr [rsi+16] mov r15, gword ptr [rsi+24] test r15, r15 je SHORT G_M57844_IG10 ;; bbWeight=1 PerfScore 5.25 G_M57844_IG06: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov r11, qword ptr [rdx+64] test r11, r11 je SHORT G_M57844_IG08 ;; bbWeight=0.50 PerfScore 4.63 G_M57844_IG07: jmp SHORT G_M57844_IG09 ;; bbWeight=0.25 PerfScore 0.50 G_M57844_IG08: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M57844_IG09: mov rcx, r15 mov rdx, rdi call qword ptr [r11] mov r12d, eax jmp SHORT G_M57844_IG11 ;; bbWeight=0.50 PerfScore 2.88 G_M57844_IG10: mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+64] call qword ptr [rax+24]Object:GetHashCode():int:this mov r12d, eax ;; bbWeight=0.50 PerfScore 3.75 G_M57844_IG11: xor r13d, r13d mov rcx, gword ptr [rsi+8] mov edx, dword ptr [rcx+8] mov rax, qword ptr [rsi+48] mov r8d, r12d imul rax, r8 shr rax, 32 inc rax mov edx, edx imul rdx, rax shr rdx, 32 cmp edx, dword ptr [rcx+8] jae G_M57844_IG48 movsxd rdx, edx lea rax, bword ptr [rcx+4*rdx+16] mov bword ptr [rsp+50H], rax mov r8d, dword ptr [rax] dec r8d mov dword ptr [rsp+5CH], r8d test r15, r15 jne G_M57844_IG23 ;; bbWeight=1 PerfScore 24.75 G_M57844_IG12: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+32] test rdx, rdx je SHORT G_M57844_IG14 ;; bbWeight=0.50 PerfScore 4.63 G_M57844_IG13: jmp SHORT G_M57844_IG15 ;; bbWeight=0.25 PerfScore 0.50 G_M57844_IG14: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M57844_IG15: mov rcx, rdx call EqualityComparer`1:get_Default():EqualityComparer`1 ;; bbWeight=0.50 PerfScore 0.63 G_M57844_IG16: mov r9d, dword ptr [r14+8] mov dword ptr [rsp+58H], r9d mov r10d, dword ptr [rsp+5CH] cmp r9d, r10d jbe G_M57844_IG31 movsxd rdx, r10d lea rdx, [rdx+2*rdx] lea r11, bword ptr [r14+8*rdx+16] mov bword ptr [rsp+30H], r11 cmp dword ptr [r11+16], r12d jne SHORT G_M57844_IG18 ;; bbWeight=4 PerfScore 44.00 G_M57844_IG17: mov rdx, gword ptr [r14+8*rdx+16] mov rcx, rax mov r8, rdi mov gword ptr [rsp+40H], rax mov r10, qword ptr [rax] mov r10, qword ptr [r10+64] call qword ptr [r10+48]EqualityComparer`1:Equals(__Canon,__Canon):bool:this test eax, eax mov rax, gword ptr [rsp+40H] jne SHORT G_M57844_IG19 ;; bbWeight=2 PerfScore 25.50 G_M57844_IG18: mov r11, bword ptr [rsp+30H] mov r10d, dword ptr [r11+20] mov r8d, r10d inc r13d cmp dword ptr [rsp+58H], r13d jb G_M57844_IG47 mov dword ptr [rsp+5CH], r8d jmp SHORT G_M57844_IG16 ;; bbWeight=4 PerfScore 34.00 G_M57844_IG19: cmp bl, 1 jne SHORT G_M57844_IG20 mov r11, bword ptr [rsp+30H] lea rcx, bword ptr [r11+8] mov rdx, rbp call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M57844_IG38 ;; bbWeight=0.50 PerfScore 3.00 G_M57844_IG20: cmp bl, 2 je G_M57844_IG41 ;; bbWeight=0.50 PerfScore 0.63 G_M57844_IG21: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M57844_IG22: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M57844_IG23: mov r9d, dword ptr [r14+8] mov dword ptr [rsp+58H], r9d mov r8d, dword ptr [rsp+5CH] cmp r9d, r8d jbe G_M57844_IG31 movsxd rcx, r8d lea rcx, [rcx+2*rcx] lea r8, bword ptr [r14+8*rcx+16] mov bword ptr [rsp+28H], r8 cmp dword ptr [r8+16], r12d jne SHORT G_M57844_IG30 ;; bbWeight=4 PerfScore 44.00 G_M57844_IG24: mov r10, gword ptr [r14+8*rcx+16] mov gword ptr [rsp+38H], r10 mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov r11, qword ptr [rdx+48] test r11, r11 je SHORT G_M57844_IG26 ;; bbWeight=2 PerfScore 24.50 G_M57844_IG25: mov r10, gword ptr [rsp+38H] jmp SHORT G_M57844_IG27 ;; bbWeight=1 PerfScore 3.00 G_M57844_IG26: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax mov r10, gword ptr [rsp+38H] ;; bbWeight=1 PerfScore 2.50 G_M57844_IG27: mov rcx, r15 mov rdx, r10 mov r8, rdi call qword ptr [r11] test eax, eax je SHORT G_M57844_IG30 ;; bbWeight=2 PerfScore 10.00 G_M57844_IG28: cmp bl, 1 jne SHORT G_M57844_IG29 mov r13, bword ptr [rsp+28H] lea rcx, bword ptr [r13+8] mov rdx, rbp call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M57844_IG38 ;; bbWeight=0.50 PerfScore 3.00 G_M57844_IG29: cmp bl, 2 je G_M57844_IG44 jmp G_M57844_IG21 ;; bbWeight=0.50 PerfScore 1.63 G_M57844_IG30: mov r8, bword ptr [rsp+28H] mov r8d, dword ptr [r8+20] mov ecx, r8d inc r13d cmp dword ptr [rsp+58H], r13d jb G_M57844_IG47 mov dword ptr [rsp+5CH], ecx jmp G_M57844_IG23 ;; bbWeight=4 PerfScore 34.00 G_M57844_IG31: mov ecx, dword ptr [rsi+64] test ecx, ecx jle SHORT G_M57844_IG32 mov edx, dword ptr [rsi+60] mov ebx, edx cmp edx, dword ptr [rsp+58H] jae G_M57844_IG48 movsxd r9, edx lea rdx, [r9+2*r9] mov edx, dword ptr [r14+8*rdx+36] neg edx add edx, -3 mov dword ptr [rsi+60], edx dec ecx mov dword ptr [rsi+64], ecx jmp SHORT G_M57844_IG34 ;; bbWeight=0.50 PerfScore 7.50 G_M57844_IG32: mov ecx, dword ptr [rsi+56] mov ebx, ecx cmp dword ptr [rsp+58H], ebx jne SHORT G_M57844_IG33 call HashHelpers:ExpandPrime(int):int mov edx, eax mov rcx, rsi xor r8d, r8d call Dictionary`2:Resize(int,bool):this mov rdx, gword ptr [rsi+8] mov ecx, dword ptr [rdx+8] mov eax, ecx mov r8, qword ptr [rsi+48] mov r9d, r12d imul r8, r9 shr r8, 32 inc r8 mov eax, eax imul rax, r8 shr rax, 32 cmp eax, ecx jae G_M57844_IG48 movsxd rcx, eax lea rax, bword ptr [rdx+4*rcx+16] mov r14, rax mov bword ptr [rsp+50H], r14 ;; bbWeight=0.50 PerfScore 12.88 G_M57844_IG33: lea edx, [rbx+1] mov dword ptr [rsi+56], edx mov r14, gword ptr [rsi+16] ;; bbWeight=0.50 PerfScore 1.75 G_M57844_IG34: cmp ebx, dword ptr [r14+8] jae G_M57844_IG48 movsxd rdx, ebx lea rdx, [rdx+2*rdx] lea r8, bword ptr [r14+8*rdx+16] mov dword ptr [r8+16], r12d mov rax, bword ptr [rsp+50H] mov edx, dword ptr [rax] dec edx mov dword ptr [r8+20], edx mov bword ptr [rsp+48H], r8 mov rcx, r8 mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdi, bword ptr [rsp+48H] lea rcx, bword ptr [rdi+8] mov rdx, rbp call CORINFO_HELP_CHECKED_ASSIGN_REF inc ebx mov rdi, bword ptr [rsp+50H] mov dword ptr [rdi], ebx inc dword ptr [rsi+68] cmp r13d, 100 jbe SHORT G_M57844_IG38 test r15, r15 je SHORT G_M57844_IG36 ;; bbWeight=0.50 PerfScore 12.50 G_M57844_IG35: mov rdx, 0xD1FFAB1E cmp qword ptr [r15], rdx jne SHORT G_M57844_IG38 ;; bbWeight=0.25 PerfScore 0.81 G_M57844_IG36: test r15, r15 je SHORT G_M57844_IG38 ;; bbWeight=0.50 PerfScore 0.63 G_M57844_IG37: xor rdx, rdx mov gword ptr [rsi+24], rdx mov edx, dword ptr [r14+8] mov rcx, rsi mov r8d, 1 call Dictionary`2:Resize(int,bool):this ;; bbWeight=0.50 PerfScore 2.38 G_M57844_IG38: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M57844_IG39: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M57844_IG40: mov ecx, 4 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M57844_IG41: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] cmp qword ptr [rdx+56], 0 je SHORT G_M57844_IG42 mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+56] jmp SHORT G_M57844_IG43 ;; bbWeight=0 PerfScore 0.00 G_M57844_IG42: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rcx, rax ;; bbWeight=0 PerfScore 0.00 G_M57844_IG43: mov rdx, rdi call ThrowHelper:ThrowAddingDuplicateWithKeyArgumentException(__Canon) int3 ;; bbWeight=0 PerfScore 0.00 G_M57844_IG44: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] cmp qword ptr [rdx+56], 0 je SHORT G_M57844_IG45 mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+56] jmp SHORT G_M57844_IG46 ;; bbWeight=0 PerfScore 0.00 G_M57844_IG45: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rcx, rax ;; bbWeight=0 PerfScore 0.00 G_M57844_IG46: mov rdx, rdi call ThrowHelper:ThrowAddingDuplicateWithKeyArgumentException(__Canon) int3 ;; bbWeight=0 PerfScore 0.00 G_M57844_IG47: call ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() int3 ;; bbWeight=0 PerfScore 0.00 G_M57844_IG48: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1082, prolog size 33, PerfScore 445.39, (MethodHash=60591e0b) for method Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this ; ============================================================ ; Assembly listing for method NonRandomizedStringEqualityComparer:GetHashCode(String):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M31974_IG01: ;; bbWeight=1 PerfScore 0.00 G_M31974_IG02: test rdx, rdx jne SHORT G_M31974_IG05 ;; bbWeight=1 PerfScore 1.25 G_M31974_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M31974_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M31974_IG05: mov rcx, rdx ;; bbWeight=0.50 PerfScore 0.13 G_M31974_IG06: jmp String:GetNonRandomizedHashCode():int:this ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 16, prolog size 0, PerfScore 4.60, (MethodHash=3f548319) for method NonRandomizedStringEqualityComparer:GetHashCode(String):int:this ; ============================================================ ; Assembly listing for method String:GetNonRandomizedHashCode():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 4, 4 ) ref -> rcx this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) long -> zero-ref ; V02 loc1 [V02 ] ( 2, 2 ) byref -> [rsp+0x00] must-init pinned ; V03 loc2 [V03,T03] ( 5, 14 ) int -> rdx ; V04 loc3 [V04,T01] ( 8, 15.50) int -> r8 ; V05 loc4 [V05,T00] ( 6, 17.50) long -> rax ; V06 loc5 [V06,T02] ( 6, 15 ) int -> rcx ;# V07 OutArgs [V07 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T05] ( 2, 4 ) long -> rax "Cast away GC" ; ; Lcl frame size = 8 G_M2030_IG01: push rax xor rax, rax mov qword ptr [rsp], rax ;; bbWeight=1 PerfScore 2.25 G_M2030_IG02: lea rax, bword ptr [rcx+12] mov bword ptr [rsp], rax mov rax, bword ptr [rsp] mov edx, 0xD1FFAB1E mov r8d, 0xD1FFAB1E mov ecx, dword ptr [rcx+8] cmp ecx, 2 jle SHORT G_M2030_IG04 ;; bbWeight=1 PerfScore 6.25 G_M2030_IG03: add ecx, -4 mov r9d, edx rol r9d, 5 add edx, r9d xor edx, dword ptr [rax] mov r9d, r8d rol r9d, 5 add r8d, r9d xor r8d, dword ptr [rax+4] add rax, 8 cmp ecx, 2 jg SHORT G_M2030_IG03 ;; bbWeight=4 PerfScore 43.00 G_M2030_IG04: test ecx, ecx jle SHORT G_M2030_IG06 ;; bbWeight=1 PerfScore 1.25 G_M2030_IG05: mov ecx, r8d rol ecx, 5 add ecx, r8d mov r8d, ecx xor r8d, dword ptr [rax] ;; bbWeight=0.50 PerfScore 2.38 G_M2030_IG06: imul eax, r8d, 0xD1FFAB1E add eax, edx ;; bbWeight=1 PerfScore 2.25 G_M2030_IG07: add rsp, 8 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 109, prolog size 7, PerfScore 69.53, (MethodHash=583bf811) for method String:GetNonRandomizedHashCode():int:this ; ============================================================ ; Assembly listing for method Environment:SetCommandLineArgs(ref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M44809_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M44809_IG02: mov rcx, 0xD1FFAB1E mov edx, 103 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rdx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 3.25 G_M44809_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 53, prolog size 5, PerfScore 11.80, (MethodHash=ed2e50f6) for method Environment:SetCommandLineArgs(ref) ; ============================================================ ; Assembly listing for method Environment:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 FramesRoot [V01 ] ( 1, 1 ) long -> [rbp-0x40] "Pinvoke FrameListRoot" ; V02 PInvokeFrame [V02 ] ( 1, 1 ) blk (72) [rbp-0x88] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 120 G_M18515_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] ;; bbWeight=1 PerfScore 8.75 G_M18515_IG02: lea rcx, [rbp-80H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov qword ptr [rbp-40H], rax mov rax, rsp mov qword ptr [rbp-60H], rax mov rax, rbp mov qword ptr [rbp-50H], rax mov rax, 0xD1FFAB1E mov qword ptr [rbp-70H], rax lea rax, G_M18515_IG04 mov qword ptr [rbp-58H], rax mov rax, qword ptr [rbp-40H] lea rdx, bword ptr [rbp-80H] mov qword ptr [rax+16], rdx mov rax, qword ptr [rbp-40H] mov byte ptr [rax+12], 0 ;; bbWeight=1 PerfScore 13.00 G_M18515_IG03: call [Environment:GetProcessorCount():int] ;; bbWeight=1 PerfScore 3.00 G_M18515_IG04: mov rdx, qword ptr [rbp-40H] mov byte ptr [rdx+12], 1 cmp dword ptr [(reloc)], 0 je SHORT G_M18515_IG05 call [CORINFO_HELP_STOP_FOR_GC] ;; bbWeight=1 PerfScore 8.00 G_M18515_IG05: mov rdx, qword ptr [rbp-40H] mov rcx, bword ptr [rbp-78H] mov qword ptr [rdx+16], rcx mov dword ptr [reloc classVar[0xd1ffab1e]], eax jmp SHORT G_M18515_IG06 ;; bbWeight=1 PerfScore 6.00 G_M18515_IG06: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 165, prolog size 24, PerfScore 60.75, (MethodHash=a3f7b7ac) for method Environment:.cctor() ; ============================================================ ; Assembly listing for method StartupHookProvider:ProcessStartupHooks() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T26] ( 3, 2.50) ref -> rsi class-hnd ;* V01 loc1 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V02 loc2 [V02,T21] ( 3, 5 ) ref -> rsi class-hnd ; V03 loc3 [V03,T12] ( 6, 9 ) ref -> r14 class-hnd exact ;* V04 loc4 [V04 ] ( 0, 0 ) struct (16) zero-ref ; V05 loc5 [V05,T05] ( 7, 20.50) int -> r15 ; V06 loc6 [V06,T02] ( 12, 35 ) ref -> [rbp-0x78] EH do-not-enreg[] class-hnd EH-live ptr ; V07 loc7 [V07,T00] ( 5, 66 ) int -> r13 ;* V08 loc8 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr ; V09 loc9 [V09,T22] ( 3, 5 ) ref -> r14 class-hnd exact ; V10 loc10 [V10,T07] ( 5, 16.50) int -> rsi ;* V11 loc11 [V11 ] ( 0, 0 ) struct (16) zero-ref ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V13 tmp1 [V13,T23] ( 2, 4 ) ref -> rax "CASTCLASS eval op1" ; V14 tmp2 [V14,T17] ( 5, 6.74) ref -> rsi class-hnd "spilling QMark2" ; V15 tmp3 [V15 ] ( 1, 0.50) blk ( 8) [rbp-0x48] do-not-enreg[X] addr-exposed unsafe-buffer "stackallocLocal" ; V16 tmp4 [V16,T18] ( 6, 6 ) long -> rdi "dup spill" ;* V17 tmp5 [V17 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V18 tmp6 [V18,T37] ( 7, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V19 tmp7 [V19,T11] ( 3, 12 ) ref -> r13 class-hnd exact "NewObj constructor temp" ; V20 tmp8 [V20,T13] ( 2, 8 ) byref -> r12 "impAppendStmt" ; V21 tmp9 [V21,T40] ( 2, 0 ) ref -> rsi class-hnd "impSpillSpecialSideEff" ; V22 tmp10 [V22,T39] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V23 tmp11 [V23,T38] ( 7, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V24 tmp12 [V24,T19] ( 3, 6 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V25 tmp13 [V25 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V26 tmp14 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V27 tmp15 [V27 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V28 tmp16 [V28 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V29 tmp17 [V29 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V30 tmp18 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V31 tmp19 [V31 ] ( 2, 2 ) ushort -> [rbp-0x4C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ;* V32 tmp20 [V32 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V33 tmp21 [V33 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V34 tmp22 [V34,T24] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V35 tmp23 [V35,T01] ( 2, 64 ) ushort -> rdx "Inlining Arg" ; V36 tmp24 [V36,T41] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V37 tmp25 [V37,T42] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V38 tmp26 [V38,T08] ( 2, 16.50) byref -> rdi V01._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ;* V39 tmp27 [V39,T34] ( 0, 0 ) int -> zero-ref ptr V01._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ;* V40 tmp28 [V40 ] ( 0, 0 ) byref -> zero-ref ptr V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V42 tmp30 [V42,T14] ( 2, 8 ) ref -> rax V11.AssemblyName(offs=0x00) P-INDEP "field V11.AssemblyName (fldOffset=0x0)" ; V43 tmp31 [V43,T15] ( 2, 8 ) ref -> rcx V11.Path(offs=0x08) P-INDEP "field V11.Path (fldOffset=0x8)" ;* V44 tmp32 [V44 ] ( 0, 0 ) byref -> zero-ref ptr V17._pointer(offs=0x00) P-INDEP "field V17._pointer (fldOffset=0x0)" ;* V45 tmp33 [V45 ] ( 0, 0 ) int -> zero-ref V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)" ; V46 tmp34 [V46,T28] ( 2, 1 ) byref -> rdi V25._value(offs=0x00) P-INDEP "field V25._value (fldOffset=0x0)" ;* V47 tmp35 [V47 ] ( 0, 0 ) byref -> zero-ref ptr V26._pointer(offs=0x00) P-INDEP "field V26._pointer (fldOffset=0x0)" ;* V48 tmp36 [V48 ] ( 0, 0 ) int -> zero-ref V26._length(offs=0x08) P-INDEP "field V26._length (fldOffset=0x8)" ; V49 tmp37 [V49,T29] ( 2, 1 ) byref -> rdi V27._pointer(offs=0x00) P-INDEP "field V27._pointer (fldOffset=0x0)" ;* V50 tmp38 [V50,T35] ( 0, 0 ) int -> zero-ref ptr V27._length(offs=0x08) P-INDEP "field V27._length (fldOffset=0x8)" ; V51 tmp39 [V51,T30] ( 2, 1 ) byref -> rdi V29._value(offs=0x00) P-INDEP "field V29._value (fldOffset=0x0)" ; V52 tmp40 [V52,T31] ( 2, 1 ) byref -> rcx V32._pointer(offs=0x00) P-INDEP "field V32._pointer (fldOffset=0x0)" ; V53 tmp41 [V53,T33] ( 2, 1 ) int -> rdx V32._length(offs=0x08) P-INDEP "field V32._length (fldOffset=0x8)" ; V54 tmp42 [V54,T32] ( 2, 1 ) byref -> rcx V33._value(offs=0x00) P-INDEP "field V33._value (fldOffset=0x0)" ; V55 tmp43 [V55 ] ( 2, 2 ) struct (16) [rbp-0x60] do-not-enreg[XSB] must-init addr-exposed ptr "by-value struct argument" ; V56 tmp44 [V56,T25] ( 3, 3 ) byref -> r8 stack-byref "BlockOp address local" ; V57 tmp45 [V57,T27] ( 2, 2 ) ref -> rsi "argument with side effect" ; V58 tmp46 [V58,T43] ( 2, 0 ) ref -> rcx "argument with side effect" ; V59 tmp47 [V59,T44] ( 2, 0 ) ref -> rcx "argument with side effect" ; V60 tmp48 [V60,T45] ( 2, 0 ) ref -> rcx "argument with side effect" ; V61 tmp49 [V61,T46] ( 2, 0 ) ref -> rcx "argument with side effect" ; V62 tmp50 [V62,T47] ( 2, 0 ) ref -> rcx "argument with side effect" ; V63 tmp51 [V63,T48] ( 2, 0 ) ref -> rdx "argument with side effect" ; V64 tmp52 [V64,T03] ( 3, 24 ) byref -> rcx "BlockOp address local" ; V65 tmp53 [V65 ] ( 2, 16 ) struct (16) [rbp-0x70] do-not-enreg[XSB] must-init addr-exposed ptr "by-value struct argument" ; V66 tmp54 [V66,T04] ( 3, 24 ) byref -> rdx stack-byref "BlockOp address local" ; V67 GsCookie [V67 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V68 PSPSym [V68 ] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[X] addr-exposed "PSPSym" ; V69 tmp57 [V69,T16] ( 2, 8 ) ref -> rcx "optAddCopies" ;* V70 cse0 [V70,T36] ( 0, 0 ) long -> zero-ref "CSE - moderate" ; V71 cse1 [V71,T06] ( 2, 18 ) byref -> [rbp-0x80] "CSE - aggressive" ; V72 cse2 [V72,T20] ( 4, 5.50) int -> rbx "CSE - moderate" ; V73 cse3 [V73,T09] ( 7, 13 ) int -> registers "CSE - aggressive" ; V74 cse4 [V74,T10] ( 4, 12 ) long -> r12 "CSE - aggressive" ; ; Lcl frame size = 120 G_M36760_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-70H], xmm4 vmovdqa xmmword ptr [rbp-60H], xmm4 mov qword ptr [rbp-90H], rsp mov rax, 0xD1FFAB1E mov qword ptr [rbp-40H], rax ;; bbWeight=1 PerfScore 13.33 G_M36760_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWFAST mov rsi, rax mov rcx, rsi call RuntimeEventSource:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] call AppContext:GetData(String):Object mov rsi, rax test rsi, rsi je SHORT G_M36760_IG05 ;; bbWeight=1 PerfScore 9.00 G_M36760_IG03: mov rcx, 0xD1FFAB1E cmp qword ptr [rsi], rcx je SHORT G_M36760_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M36760_IG04: xor rsi, rsi ;; bbWeight=0.12 PerfScore 0.03 G_M36760_IG05: test rsi, rsi jne SHORT G_M36760_IG09 ;; bbWeight=1 PerfScore 1.25 G_M36760_IG06: mov rcx, 0xD1FFAB1E cmp qword ptr [rbp-40H], rcx je SHORT G_M36760_IG07 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.63 G_M36760_IG07: nop ;; bbWeight=0.50 PerfScore 0.13 G_M36760_IG08: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M36760_IG09: lea rdi, [rbp-48H] mov rcx, 0xD1FFAB1E mov edx, 0x6B8 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE movzx rcx, word ptr [reloc classVar[0xd1ffab1e]] mov word ptr [rdi], cx movzx rcx, word ptr [reloc classVar[0xd1ffab1e]] mov word ptr [rdi+2], cx mov word ptr [rdi+4], 32 mov word ptr [rdi+6], 44 movzx rcx, word ptr [reloc classVar[0xd1ffab1e]] mov word ptr [rbp-4CH], cx lea rcx, bword ptr [rbp-4CH] mov edx, 1 lea r8, bword ptr [rbp-60H] mov bword ptr [r8], rcx mov dword ptr [r8+8], edx mov rcx, rsi lea rdx, bword ptr [rbp-60H] mov r8d, 0xD1FFAB1E xor r9d, r9d call String:SplitInternal(ReadOnlySpan`1,int,int):ref:this mov rsi, rax mov ebx, dword ptr [rsi+8] movsxd rdx, ebx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov r14, rax xor r15d, r15d test ebx, ebx jle G_M36760_IG20 ;; bbWeight=0.50 PerfScore 10.50 G_M36760_IG10: movsxd r12, r15d mov rcx, gword ptr [rsi+8*r12+16] mov gword ptr [rbp-78H], rcx cmp gword ptr [rbp-78H], 0 je G_M36760_IG19 ;; bbWeight=4 PerfScore 21.00 G_M36760_IG11: mov rcx, gword ptr [rbp-78H] cmp dword ptr [rcx+8], 0 jbe G_M36760_IG19 ;; bbWeight=1 PerfScore 4.00 G_M36760_IG12: mov rcx, gword ptr [rbp-78H] call Path:IsPathFullyQualified(String):bool test eax, eax je SHORT G_M36760_IG13 mov r13d, dword ptr [r14+8] cmp r15d, r13d jae G_M36760_IG27 shl r12, 4 lea rcx, bword ptr [r14+r12+24] mov rdx, gword ptr [rbp-78H] call CORINFO_HELP_ASSIGN_REF jmp G_M36760_IG19 ;; bbWeight=2 PerfScore 27.00 G_M36760_IG13: xor r13d, r13d mov rax, gword ptr [rbp-78H] add rax, 12 ;; bbWeight=2 PerfScore 3.00 G_M36760_IG14: movsxd rcx, r13d movzx rdx, word ptr [rdi+2*rcx] mov bword ptr [rbp-80H], rax mov rcx, rax mov r8, gword ptr [rbp-78H] mov r8d, dword ptr [r8+8] call SpanHelpers:Contains(byref,ushort,int):bool test eax, eax jne G_M36760_IG25 ;; bbWeight=16 PerfScore 140.00 G_M36760_IG15: inc r13d cmp r13d, 4 mov rax, bword ptr [rbp-80H] jl SHORT G_M36760_IG14 ;; bbWeight=16 PerfScore 40.00 G_M36760_IG16: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp-78H] mov r8d, 5 call String:EndsWith(String,int):bool:this test eax, eax jne G_M36760_IG26 ;; bbWeight=2 PerfScore 11.50 G_M36760_IG17: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r13, rax mov ecx, dword ptr [r14+8] mov eax, ecx cmp r15d, eax jae SHORT G_M36760_IG18 mov rcx, r12 shl rcx, 4 lea r12, bword ptr [r14+rcx+16] mov rcx, r13 mov rdx, gword ptr [rbp-78H] call AssemblyName:.ctor(String):this mov rcx, r12 mov rdx, r13 call CORINFO_HELP_CHECKED_ASSIGN_REF jmp SHORT G_M36760_IG19 ;; bbWeight=2 PerfScore 28.00 G_M36760_IG18: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 G_M36760_IG19: inc r15d cmp ebx, r15d jg G_M36760_IG10 ;; bbWeight=4 PerfScore 6.00 G_M36760_IG20: xor esi, esi mov eax, dword ptr [r14+8] mov r13d, eax test r13d, r13d jle SHORT G_M36760_IG22 ;; bbWeight=0.50 PerfScore 1.88 G_M36760_IG21: movsxd rcx, esi shl rcx, 4 lea rcx, bword ptr [r14+rcx+16] mov rax, gword ptr [rcx] mov rcx, gword ptr [rcx+8] lea rdx, bword ptr [rbp-70H] mov gword ptr [rdx], rax mov gword ptr [rdx+8], rcx lea rcx, bword ptr [rbp-70H] call StartupHookProvider:CallStartupHook(StartupHookNameOrPath) inc esi cmp r13d, esi jg SHORT G_M36760_IG21 ;; bbWeight=4 PerfScore 51.00 G_M36760_IG22: mov rcx, 0xD1FFAB1E cmp qword ptr [rbp-40H], rcx je SHORT G_M36760_IG23 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.63 G_M36760_IG23: nop ;; bbWeight=0.50 PerfScore 0.13 G_M36760_IG24: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M36760_IG25: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1214F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, gword ptr [rbp-78H] call SR:Format(String,Object):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M36760_IG26: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1214F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, gword ptr [rbp-78H] call SR:Format(String,Object):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M36760_IG27: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 G_M36760_IG28: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+B0H] ;; bbWeight=0 PerfScore 0.00 G_M36760_IG29: mov rsi, rdx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax call SR:get_Argument_InvalidStartupHookSimpleAssemblyName():String mov rcx, rax mov rdx, gword ptr [rbp-78H] call SR:Format(String,Object):String mov rdx, rax mov rcx, rdi mov r8, rsi call ArgumentException:.ctor(String,Exception):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1016, prolog size 59, PerfScore 479.20, (MethodHash=91a17067) for method StartupHookProvider:ProcessStartupHooks() ; ============================================================ ; Assembly listing for method RuntimeEventSource:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 13, 26 ) struct (16) [rsp+0x38] do-not-enreg[SFB] "NewObj constructor temp" ; V03 tmp2 [V03 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V04 tmp3 [V04,T02] ( 2, 4 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 72 G_M18516_IG01: sub rsp, 72 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M18516_IG02: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+38H], xmm0 mov dword ptr [rsp+38H], 0xD1FFAB1E mov word ptr [rsp+3CH], 0x5A05 mov word ptr [rsp+3EH], 0x516D mov byte ptr [rsp+40H], 170 mov byte ptr [rsp+41H], 75 mov byte ptr [rsp+42H], 166 mov byte ptr [rsp+43H], 78 mov byte ptr [rsp+44H], 2 mov byte ptr [rsp+45H], 2 mov byte ptr [rsp+46H], 108 mov byte ptr [rsp+47H], 137 vmovupd xmm0, xmmword ptr [rsp+38H] vmovupd xmmword ptr [rsp+28H], xmm0 xor rdx, rdx mov gword ptr [rsp+20H], rdx lea rdx, bword ptr [rsp+28H] mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov r9d, 8 call EventSource:.ctor(Guid,String,int,ref):this nop ;; bbWeight=1 PerfScore 22.83 G_M18516_IG03: add rsp, 72 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 133, prolog size 7, PerfScore 39.03, (MethodHash=23bab7ab) for method RuntimeEventSource:.ctor():this ; ============================================================ ; Assembly listing for method EventSource:.ctor(Guid,String,int,ref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 5 ) byref -> rdi ; V02 arg2 [V02,T02] ( 3, 2.50) ref -> rbx class-hnd ; V03 arg3 [V03,T03] ( 3, 2.50) int -> rbp ; V04 arg4 [V04,T06] ( 1, 0.50) ref -> [rsp+0x70] class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T04] ( 2, 4 ) ref -> rax class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T05] ( 3, 3 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 32 G_M10156_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx mov rbx, r8 mov ebp, r9d ;; bbWeight=1 PerfScore 6.25 G_M10156_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST lea rcx, bword ptr [rsi+56] mov rdx, rax call CORINFO_HELP_ASSIGN_REF xor rcx, rcx mov qword ptr [rsi+136], rcx mov rcx, 0xD1FFAB1E mov edx, 0x745 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE cmp byte ptr [reloc classVar[0xd1ffab1e]], 0 je SHORT G_M10156_IG05 ;; bbWeight=1 PerfScore 7.75 G_M10156_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rcx, 0xD1FFAB1E mov edx, 10 call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [r14+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+120] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov rcx, rsi mov edx, ebp call EventSource:ValidateSettings(int):int:this mov dword ptr [rsi+148], eax mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9, gword ptr [rsp+70H] ;; bbWeight=0.50 PerfScore 5.38 G_M10156_IG04: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 jmp EventSource:Initialize(Guid,String,ref):this ;; bbWeight=0.50 PerfScore 2.38 G_M10156_IG05: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 ; Total bytes of code 205, prolog size 10, PerfScore 44.13, (MethodHash=dbfdd853) for method EventSource:.ctor(Guid,String,int,ref):this ; ============================================================ ; Assembly listing for method EventSource:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M45815_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M45815_IG02: call EventSource:InitializeIsSupported():bool mov byte ptr [reloc classVar[0xd1ffab1e]], al ;; bbWeight=1 PerfScore 2.00 G_M45815_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 27, prolog size 10, PerfScore 8.45, (MethodHash=5af74d08) for method EventSource:.cctor() ; ============================================================ ; Assembly listing for method EventSource:InitializeIsSupported():bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00 ] ( 2, 1.50) bool -> [rsp+0x20] do-not-enreg[X] addr-exposed ld-addr-op ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M4568_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M4568_IG02: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] lea rdx, [rsp+20H] call AppContext:TryGetSwitch(String,byref):bool test eax, eax jne SHORT G_M4568_IG05 ;; bbWeight=1 PerfScore 5.00 G_M4568_IG03: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M4568_IG04: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M4568_IG05: mov eax, dword ptr [rsp+20H] movzx rax, al ;; bbWeight=0.50 PerfScore 0.63 G_M4568_IG06: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 53, prolog size 4, PerfScore 12.55, (MethodHash=9aa1ee27) for method EventSource:InitializeIsSupported():bool ; ============================================================ ; Assembly listing for method AppContext:TryGetSwitch(String,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 6 ) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 5, 5 ) byref -> rdi ; V02 loc0 [V02,T04] ( 4, 4 ) ref -> rax class-hnd ; V03 loc1 [V03,T05] ( 4, 4 ) ref -> [rbp-0x38] EH do-not-enreg[] class-hnd EH-live ; V04 loc2 [V04 ] ( 5, 5 ) bool -> [rbp-0x18] do-not-enreg[XF] addr-exposed ld-addr-op ; V05 loc3 [V05,T14] ( 2, 2 ) bool -> [rbp-0x1C] EH do-not-enreg[] EH-live ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T06] ( 2, 4 ) ref -> rax "CASTCLASS eval op1" ; V08 tmp2 [V08,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" ; V09 tmp3 [V09,T19] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp4 [V10,T20] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V11 tmp5 [V11,T15] ( 2, 2 ) bool -> rax "Inline return value spill temp" ;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V15 tmp9 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V16 tmp10 [V16,T07] ( 2, 4 ) byref -> rcx "Inlining Arg" ;* V17 tmp11 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V18 tmp12 [V18,T08] ( 2, 4 ) int -> rdx "Inlining Arg" ; V19 tmp13 [V19,T10] ( 2, 2 ) byref -> rcx V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ; V20 tmp14 [V20,T16] ( 2, 2 ) int -> rdx V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ; V21 tmp15 [V21,T11] ( 2, 2 ) byref -> rcx V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ; V22 tmp16 [V22,T17] ( 2, 2 ) int -> rdx V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V23 tmp17 [V23,T12] ( 2, 2 ) byref -> rcx V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ; V24 tmp18 [V24,T18] ( 2, 2 ) int -> rdx V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ;* V25 tmp19 [V25 ] ( 0, 0 ) byref -> zero-ref V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ;* V26 tmp20 [V26 ] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ; V27 tmp21 [V27,T13] ( 2, 2 ) byref -> rcx V17._value(offs=0x00) P-INDEP "field V17._value (fldOffset=0x0)" ; V28 tmp22 [V28,T21] ( 2, 0 ) ref -> rdx "argument with side effect" ; V29 tmp23 [V29,T22] ( 2, 0 ) ref -> rcx "argument with side effect" ; V30 tmp24 [V30,T23] ( 2, 0 ) ref -> rdi "argument with side effect" ; V31 tmp25 [V31,T24] ( 2, 0 ) ref -> r8 "argument with side effect" ; V32 tmp26 [V32 ] ( 2, 4 ) struct (16) [rbp-0x30] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V33 tmp27 [V33,T03] ( 3, 6 ) byref -> rax stack-byref "BlockOp address local" ; V34 PSPSym [V34 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ; V35 cse0 [V35,T09] ( 3, 3 ) ref -> rdx "CSE - moderate" ; ; Lcl frame size = 80 G_M35971_IG01: push rbp push rdi push rsi sub rsp, 80 lea rbp, [rsp+60H] xor rax, rax mov qword ptr [rbp-30H], rax mov qword ptr [rbp-40H], rsp mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 6.50 G_M35971_IG02: test rsi, rsi je G_M35971_IG22 ;; bbWeight=1 PerfScore 1.25 G_M35971_IG03: cmp dword ptr [rsi+8], 0 je G_M35971_IG23 ;; bbWeight=1 PerfScore 3.00 G_M35971_IG04: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je SHORT G_M35971_IG12 mov gword ptr [rbp-38H], rdx xor edx, edx mov dword ptr [rbp-18H], edx ;; bbWeight=1 PerfScore 5.75 G_M35971_IG05: cmp byte ptr [rbp-18H], 0 jne SHORT G_M35971_IG08 ;; bbWeight=1 PerfScore 2.00 G_M35971_IG06: lea rdx, [rbp-18H] mov rcx, gword ptr [rbp-38H] call Monitor:ReliableEnter(Object,byref) ;; bbWeight=1 PerfScore 2.50 G_M35971_IG07: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, rsi mov r8, rdi cmp dword ptr [rcx], ecx call [Dictionary`2:TryGetValue(__Canon,byref):bool:this] test eax, eax je SHORT G_M35971_IG09 mov dword ptr [rbp-1CH], 1 jmp SHORT G_M35971_IG10 ;; bbWeight=1 PerfScore 12.00 G_M35971_IG08: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M35971_IG09: cmp byte ptr [rbp-18H], 0 je SHORT G_M35971_IG12 mov rcx, gword ptr [rbp-38H] call Monitor:Exit(Object) jmp SHORT G_M35971_IG12 ;; bbWeight=1 PerfScore 6.00 G_M35971_IG10: mov rcx, rsp call G_M35971_IG24 ;; bbWeight=1 PerfScore 1.25 G_M35971_IG11: jmp SHORT G_M35971_IG20 ;; bbWeight=1 PerfScore 2.00 G_M35971_IG12: mov rcx, rsi call AppContext:GetData(String):Object test rax, rax je SHORT G_M35971_IG15 ;; bbWeight=1 PerfScore 2.50 G_M35971_IG13: mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx je SHORT G_M35971_IG15 ;; bbWeight=0.50 PerfScore 1.63 G_M35971_IG14: xor rax, rax ;; bbWeight=0.25 PerfScore 0.06 G_M35971_IG15: test rax, rax je SHORT G_M35971_IG18 lea rcx, bword ptr [rax+12] mov edx, dword ptr [rax+8] lea rax, bword ptr [rbp-30H] mov bword ptr [rax], rcx mov dword ptr [rax+8], edx lea rcx, bword ptr [rbp-30H] mov rdx, rdi call Boolean:TryParse(ReadOnlySpan`1,byref):bool movzx rax, al test eax, eax je SHORT G_M35971_IG18 ;; bbWeight=1 PerfScore 9.50 G_M35971_IG16: mov eax, 1 ;; bbWeight=1 PerfScore 0.25 G_M35971_IG17: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 G_M35971_IG18: mov byte ptr [rdi], 0 xor eax, eax ;; bbWeight=1 PerfScore 1.25 G_M35971_IG19: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 G_M35971_IG20: mov eax, dword ptr [rbp-1CH] ;; bbWeight=1 PerfScore 1.00 G_M35971_IG21: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 G_M35971_IG22: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1D7C mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M35971_IG23: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x687B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1D7C mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M35971_IG24: push rbp push rdi push rsi sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=1 PerfScore 6.75 G_M35971_IG25: cmp byte ptr [rbp-18H], 0 je SHORT G_M35971_IG26 mov rcx, gword ptr [rbp-38H] call Monitor:Exit(Object) ;; bbWeight=1 PerfScore 4.00 G_M35971_IG26: nop ;; bbWeight=1 PerfScore 0.25 G_M35971_IG27: add rsp, 48 pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 469, prolog size 28, PerfScore 128.09, (MethodHash=3a45737c) for method AppContext:TryGetSwitch(String,byref):bool ; ============================================================ ; Assembly listing for method AppContext:GetData(String):Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 3.50) ref -> rsi class-hnd ; V01 loc0 [V01 ] ( 2, 1 ) ref -> [rbp-0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V02 loc1 [V02,T02] ( 4, 1.50) ref -> [rbp-0x20] EH do-not-enreg[] class-hnd EH-live ; V03 loc2 [V03 ] ( 5, 2 ) bool -> [rbp-0x18] do-not-enreg[XF] addr-exposed ld-addr-op ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T04] ( 2, 0 ) ref -> rdx "argument with side effect" ; V07 PSPSym [V07 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "PSPSym" ; V08 cse0 [V08,T01] ( 3, 2.50) ref -> rdx "CSE - aggressive" ; ; Lcl frame size = 72 G_M23875_IG01: push rbp push rsi sub rsp, 72 lea rbp, [rsp+50H] xor rax, rax mov qword ptr [rbp-10H], rax mov qword ptr [rbp-30H], rsp mov rsi, rcx ;; bbWeight=1 PerfScore 5.25 G_M23875_IG02: test rsi, rsi je SHORT G_M23875_IG14 ;; bbWeight=1 PerfScore 1.25 G_M23875_IG03: mov rax, 0xD1FFAB1E mov rdx, gword ptr [rax] test rdx, rdx jne SHORT G_M23875_IG06 ;; bbWeight=1 PerfScore 3.50 G_M23875_IG04: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M23875_IG05: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=0.50 PerfScore 1.25 G_M23875_IG06: mov gword ptr [rbp-20H], rdx xor edx, edx mov dword ptr [rbp-18H], edx ;; bbWeight=0.50 PerfScore 1.13 G_M23875_IG07: cmp byte ptr [rbp-18H], 0 jne SHORT G_M23875_IG09 ;; bbWeight=0.50 PerfScore 1.00 G_M23875_IG08: lea rdx, [rbp-18H] mov rcx, gword ptr [rbp-20H] call Monitor:ReliableEnter(Object,byref) jmp SHORT G_M23875_IG10 ;; bbWeight=0.50 PerfScore 2.25 G_M23875_IG09: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M23875_IG10: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] lea r8, [rbp-10H] mov rdx, rsi cmp dword ptr [rcx], ecx call [Dictionary`2:TryGetValue(__Canon,byref):bool:this] nop ;; bbWeight=0.50 PerfScore 4.13 G_M23875_IG11: cmp byte ptr [rbp-18H], 0 je SHORT G_M23875_IG12 mov rcx, gword ptr [rbp-20H] call Monitor:Exit(Object) ;; bbWeight=0.50 PerfScore 2.00 G_M23875_IG12: mov rax, gword ptr [rbp-10H] ;; bbWeight=0.50 PerfScore 0.50 G_M23875_IG13: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=0.50 PerfScore 1.25 G_M23875_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 839 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M23875_IG15: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=0 PerfScore 0.00 G_M23875_IG16: cmp byte ptr [rbp-18H], 0 je SHORT G_M23875_IG17 mov rcx, gword ptr [rbp-20H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M23875_IG17: nop ;; bbWeight=0 PerfScore 0.00 G_M23875_IG18: add rsp, 40 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 247, prolog size 24, PerfScore 48.33, (MethodHash=8ed9a2bc) for method AppContext:GetData(String):Object ; ============================================================ ; Assembly listing for method Dictionary`2:TryGetValue(__Canon,byref):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T01] ( 4, 3 ) byref -> rdi ; V03 loc0 [V03,T04] ( 3, 2.50) byref -> rax ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05,T03] ( 0, 0 ) long -> zero-ref "impRuntimeLookup slot" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; ; Lcl frame size = 40 G_M51562_IG01: push rdi push rsi sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx mov rdi, r8 ;; bbWeight=1 PerfScore 3.75 G_M51562_IG02: mov rcx, rsi call Dictionary`2:FindValue(__Canon):byref:this mov rdx, qword ptr [rsi] test rax, rax je SHORT G_M51562_IG05 ;; bbWeight=1 PerfScore 4.50 G_M51562_IG03: mov rdx, gword ptr [rax] mov rcx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov eax, 1 ;; bbWeight=0.50 PerfScore 1.75 G_M51562_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M51562_IG05: xor eax, eax mov qword ptr [rdi], rax ;; bbWeight=0.50 PerfScore 0.63 G_M51562_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 68, prolog size 11, PerfScore 19.68, (MethodHash=be493695) for method Dictionary`2:TryGetValue(__Canon,byref):bool:this ; ============================================================ ; Assembly listing for method Dictionary`2:FindValue(__Canon):byref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T09] ( 11, 7.50) ref -> rdi this class-hnd ; V01 arg1 [V01,T08] ( 8, 8.50) ref -> rsi ld-addr-op class-hnd ; V02 loc0 [V02,T00] ( 10, 29 ) byref -> registers ; V03 loc1 [V03,T23] ( 3, 2 ) byref -> rax ; V04 loc2 [V04,T21] ( 4, 3.50) ref -> r14 class-hnd ; V05 loc3 [V05,T16] ( 3, 5 ) int -> r14 ; V06 loc4 [V06,T01] ( 6, 13.50) int -> r15 ; V07 loc5 [V07,T10] ( 3, 8.50) ref -> r12 class-hnd ; V08 loc6 [V08,T03] ( 4, 12.50) int -> r13 ; V09 loc7 [V09,T19] ( 3, 4.50) ref -> rbx class-hnd ; V10 loc8 [V10,T17] ( 3, 5 ) int -> r15 ; V11 loc9 [V11,T02] ( 6, 13.50) int -> r12 ; V12 loc10 [V12,T11] ( 3, 8.50) ref -> r13 class-hnd ; V13 loc11 [V13,T04] ( 4, 12.50) int -> [rsp+0x2C] ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15,T20] ( 2, 4 ) long -> rcx "impRuntimeLookup slot" ;* V16 tmp2 [V16 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ;* V17 tmp3 [V17,T41] ( 0, 0 ) long -> zero-ref "impRuntimeLookup slot" ;* V18 tmp4 [V18 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V19 tmp5 [V19,T35] ( 2, 1.50) long -> rcx "impRuntimeLookup slot" ;* V20 tmp6 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V21 tmp7 [V21,T22] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V22 tmp8 [V22 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V23 tmp9 [V23,T13] ( 2, 6 ) long -> rcx "impRuntimeLookup slot" ; V24 tmp10 [V24,T12] ( 2, 8 ) ref -> [rsp+0x20] class-hnd "impAppendStmt" ;* V25 tmp11 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V26 tmp12 [V26,T05] ( 4, 12 ) long -> r11 "spilling Runtime Lookup tree" ;* V27 tmp13 [V27 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V28 tmp14 [V28,T36] ( 2, 1.50) long -> rcx "impRuntimeLookup slot" ; V29 tmp15 [V29,T24] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V30 tmp16 [V30,T39] ( 2, 1 ) byref -> rcx "Inline return value spill temp" ; V31 tmp17 [V31,T29] ( 3, 1.50) ref -> rcx class-hnd "Inline stloc first use temp" ; V32 tmp18 [V32,T25] ( 2, 2 ) long -> r8 "Inlining Arg" ; V33 tmp19 [V33,T26] ( 2, 2 ) int -> rax "Inlining Arg" ; V34 tmp20 [V34,T31] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V35 tmp21 [V35,T40] ( 2, 1 ) byref -> rcx "Inline return value spill temp" ; V36 tmp22 [V36,T30] ( 3, 1.50) ref -> rcx class-hnd "Inline stloc first use temp" ; V37 tmp23 [V37,T27] ( 2, 2 ) long -> r8 "Inlining Arg" ; V38 tmp24 [V38,T28] ( 2, 2 ) int -> rax "Inlining Arg" ; V39 tmp25 [V39,T32] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V40 cse0 [V40,T18] ( 3, 5 ) long -> r11 "CSE - moderate" ; V41 cse1 [V41,T37] ( 3, 1.25) long -> rdx "CSE - conservative" ; V42 cse2 [V42,T38] ( 3, 1.25) long -> r11 "CSE - conservative" ; V43 cse3 [V43,T14] ( 4, 4 ) long -> rbp "CSE - moderate" ; V44 cse4 [V44,T33] ( 3, 1.50) int -> rdx "CSE - conservative" ; V45 cse5 [V45,T34] ( 3, 1.50) int -> rdx "CSE - conservative" ; V46 cse6 [V46,T06] ( 3, 12 ) int -> rbp "CSE - aggressive" ; V47 cse7 [V47,T07] ( 3, 12 ) int -> [rsp+0x28] "CSE - aggressive" ; V48 cse8 [V48,T15] ( 5, 5 ) long -> rbx "CSE - moderate" ; ; Lcl frame size = 56 G_M43428_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 9.75 G_M43428_IG02: test rsi, rsi je G_M43428_IG25 ;; bbWeight=1 PerfScore 1.25 G_M43428_IG03: mov rbx, qword ptr [rdi] mov rcx, rbx mov rcx, qword ptr [rcx+48] mov rbp, qword ptr [rcx] cmp gword ptr [rdi+8], 0 je G_M43428_IG24 ;; bbWeight=1 PerfScore 9.25 G_M43428_IG04: mov r14, gword ptr [rdi+24] test r14, r14 jne G_M43428_IG11 mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+24]Object:GetHashCode():int:this mov r14d, eax mov rcx, gword ptr [rdi+8] mov edx, dword ptr [rcx+8] mov eax, edx mov r8, qword ptr [rdi+48] mov r9d, r14d imul r8, r9 shr r8, 32 inc r8 mov eax, eax imul rax, r8 shr rax, 32 cmp eax, edx jae G_M43428_IG27 movsxd rdx, eax lea rcx, bword ptr [rcx+4*rdx+16] mov r15d, dword ptr [rcx] mov r12, gword ptr [rdi+16] xor r13d, r13d mov rcx, rbx mov rdx, qword ptr [rbp+32] test rdx, rdx je SHORT G_M43428_IG06 ;; bbWeight=0.50 PerfScore 18.00 G_M43428_IG05: jmp SHORT G_M43428_IG07 ;; bbWeight=0.25 PerfScore 0.50 G_M43428_IG06: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M43428_IG07: mov rcx, rdx call EqualityComparer`1:get_Default():EqualityComparer`1 mov rbx, rax dec r15d ;; bbWeight=0.50 PerfScore 0.88 G_M43428_IG08: mov ebp, dword ptr [r12+8] cmp ebp, r15d jbe G_M43428_IG24 movsxd rdx, r15d lea rdx, [rdx+2*rdx] lea r15, bword ptr [r12+8*rdx+16] cmp dword ptr [r15+16], r14d jne SHORT G_M43428_IG10 ;; bbWeight=4 PerfScore 32.00 G_M43428_IG09: mov rdx, gword ptr [r15] mov rcx, rbx mov r8, rsi mov rax, qword ptr [rbx] mov rax, qword ptr [rax+64] call qword ptr [rax+48]EqualityComparer`1:Equals(__Canon,__Canon):bool:this test eax, eax jne G_M43428_IG22 ;; bbWeight=2 PerfScore 21.50 G_M43428_IG10: mov r15d, dword ptr [r15+20] inc r13d cmp ebp, r13d jb G_M43428_IG26 jmp SHORT G_M43428_IG08 ;; bbWeight=4 PerfScore 22.00 G_M43428_IG11: mov rcx, rbx mov r11, qword ptr [rbp+64] test r11, r11 je SHORT G_M43428_IG13 ;; bbWeight=0.50 PerfScore 1.75 G_M43428_IG12: jmp SHORT G_M43428_IG14 ;; bbWeight=0.25 PerfScore 0.50 G_M43428_IG13: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M43428_IG14: mov rcx, r14 mov rdx, rsi call qword ptr [r11] mov r15d, eax mov rcx, gword ptr [rdi+8] mov edx, dword ptr [rcx+8] mov eax, edx mov r8, qword ptr [rdi+48] mov r9d, r15d imul r8, r9 shr r8, 32 inc r8 mov eax, eax imul rax, r8 shr rax, 32 cmp eax, edx jae G_M43428_IG27 movsxd rdx, eax lea rcx, bword ptr [rcx+4*rdx+16] mov r12d, dword ptr [rcx] mov r13, gword ptr [rdi+16] xor eax, eax mov dword ptr [rsp+2CH], eax dec r12d ;; bbWeight=0.50 PerfScore 13.38 G_M43428_IG15: mov r8d, dword ptr [r13+8] mov dword ptr [rsp+28H], r8d cmp r8d, r12d jbe G_M43428_IG24 movsxd rcx, r12d lea rcx, [rcx+2*rcx] lea rcx, bword ptr [r13+8*rcx+16] mov r12, rcx cmp dword ptr [r12+16], r15d jne SHORT G_M43428_IG20 ;; bbWeight=4 PerfScore 41.00 G_M43428_IG16: mov r9, gword ptr [r12] mov gword ptr [rsp+20H], r9 mov rcx, rbx mov r11, qword ptr [rbp+48] test r11, r11 je SHORT G_M43428_IG18 ;; bbWeight=2 PerfScore 13.00 G_M43428_IG17: jmp SHORT G_M43428_IG19 ;; bbWeight=1 PerfScore 2.00 G_M43428_IG18: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=1 PerfScore 1.50 G_M43428_IG19: mov rcx, r14 mov rdx, gword ptr [rsp+20H] mov r8, rsi call qword ptr [r11] test eax, eax jne SHORT G_M43428_IG21 ;; bbWeight=2 PerfScore 11.50 G_M43428_IG20: mov r12d, dword ptr [r12+20] mov eax, dword ptr [rsp+2CH] inc eax cmp dword ptr [rsp+28H], eax jb SHORT G_M43428_IG26 mov dword ptr [rsp+2CH], eax jmp SHORT G_M43428_IG15 ;; bbWeight=4 PerfScore 33.00 G_M43428_IG21: mov r15, r12 jmp SHORT G_M43428_IG22 ;; bbWeight=1 PerfScore 2.25 G_M43428_IG22: cmp dword ptr [r15], r15d lea rax, bword ptr [r15+8] ;; bbWeight=0.50 PerfScore 1.25 G_M43428_IG23: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M43428_IG24: xor rax, rax jmp SHORT G_M43428_IG23 ;; bbWeight=0.50 PerfScore 1.13 G_M43428_IG25: mov ecx, 4 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M43428_IG26: call ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() int3 ;; bbWeight=0 PerfScore 0.00 G_M43428_IG27: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 566, prolog size 27, PerfScore 299.98, (MethodHash=5cc0565b) for method Dictionary`2:FindValue(__Canon):byref:this ; ============================================================ ; Assembly listing for method EventSource:ValidateSettings(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 6, 5 ) int -> rdx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 2, 0 ) ref -> rcx "argument with side effect" ; V05 tmp3 [V05,T04] ( 2, 0 ) ref -> rdi "argument with side effect" ; V06 tmp4 [V06,T05] ( 2, 0 ) ref -> r8 "argument with side effect" ; V07 cse0 [V07,T01] ( 3, 3 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 40 G_M62389_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M62389_IG02: mov eax, edx and eax, 12 cmp eax, 12 je SHORT G_M62389_IG07 ;; bbWeight=1 PerfScore 1.75 G_M62389_IG03: test eax, eax jne SHORT G_M62389_IG05 ;; bbWeight=1 PerfScore 1.25 G_M62389_IG04: or edx, 8 ;; bbWeight=0.50 PerfScore 0.13 G_M62389_IG05: mov eax, edx ;; bbWeight=1 PerfScore 0.25 G_M62389_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M62389_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xB635 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1DE4E mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 126, prolog size 6, PerfScore 20.48, (MethodHash=488d0c4a) for method EventSource:ValidateSettings(int):int:this ; ============================================================ ; Assembly listing for method EventSource:Initialize(Guid,String,ref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 26, 29 ) ref -> [rbp+0x10] EH do-not-enreg[] this class-hnd EH-live ; V01 arg1 [V01,T04] ( 4, 8 ) byref -> rsi ; V02 arg2 [V02,T05] ( 4, 4 ) ref -> rdi class-hnd ; V03 arg3 [V03,T06] ( 3, 3 ) ref -> r9 class-hnd ; V04 loc0 [V04,T11] ( 3, 3 ) ref -> rsi class-hnd exact ; V05 loc1 [V05,T12] ( 3, 3 ) ref -> rdi class-hnd exact ; V06 loc2 [V06,T09] ( 4, 3 ) ref -> [rbp-0x68] EH do-not-enreg[] class-hnd EH-live ; V07 loc3 [V07 ] ( 5, 4 ) bool -> [rbp-0x28] do-not-enreg[XF] addr-exposed ld-addr-op ;* V08 loc4 [V08 ] ( 0, 0 ) int -> zero-ref ; V09 loc5 [V09 ] ( 3, 3 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op ; V10 loc6 [V10,T14] ( 2, 2 ) long -> r8 ; V11 loc7 [V11,T15] ( 4, 0 ) ref -> rsi class-hnd ; V12 loc8 [V12,T10] ( 4, 3 ) ref -> [rbp-0x70] EH do-not-enreg[] class-hnd EH-live ; V13 loc9 [V13 ] ( 5, 4 ) bool -> [rbp-0x38] do-not-enreg[XF] addr-exposed ld-addr-op ; V14 loc10 [V14,T00] ( 6, 34 ) ref -> rsi class-hnd ; V15 OutArgs [V15 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V16 tmp1 [V16,T02] ( 5, 10 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V17 tmp2 [V17,T03] ( 5, 10 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V18 tmp3 [V18,T16] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V19 tmp4 [V19,T17] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V20 tmp5 [V20,T18] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V21 tmp6 [V21,T19] ( 2, 0 ) ref -> rsi class-hnd "impSpillSpecialSideEff" ; V22 tmp7 [V22,T20] ( 2, 0 ) ref -> rdi class-hnd "non-inline candidate call" ; V23 tmp8 [V23,T07] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V24 tmp9 [V24,T08] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ; V25 tmp10 [V25 ] ( 3, 6 ) struct ( 8) [rbp-0x40] do-not-enreg[XSB] addr-exposed "NewObj constructor temp" ; V26 tmp11 [V26 ] ( 3, 3 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed V09._handle(offs=0x00) P-DEP "field V09._handle (fldOffset=0x0)" ; V27 tmp12 [V27 ] ( 3, 5 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed V25._handle(offs=0x00) P-DEP "field V25._handle (fldOffset=0x0)" ; V28 tmp13 [V28,T21] ( 2, 0 ) ref -> rcx "argument with side effect" ; V29 tmp14 [V29,T22] ( 2, 0 ) ref -> rdi "argument with side effect" ; V30 tmp15 [V30,T23] ( 2, 0 ) ref -> r8 "argument with side effect" ; V31 tmp16 [V31 ] ( 2, 4 ) struct (16) [rbp-0x50] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V32 tmp17 [V32 ] ( 2, 4 ) struct (16) [rbp-0x60] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V33 tmp18 [V33,T24] ( 2, 0 ) ref -> rcx "argument with side effect" ; V34 tmp19 [V34,T25] ( 2, 0 ) ref -> rdx "argument with side effect" ; V35 tmp20 [V35,T26] ( 2, 0 ) ref -> rcx "argument with side effect" ; V36 tmp21 [V36,T27] ( 2, 0 ) ref -> rdx "argument with side effect" ; V37 tmp22 [V37,T28] ( 2, 0 ) ref -> r9 "argument with side effect" ; V38 tmp23 [V38,T29] ( 2, 0 ) ref -> r14 "argument with side effect" ; V39 tmp24 [V39,T30] ( 2, 0 ) ref -> rbx "argument with side effect" ; V40 tmp25 [V40,T31] ( 2, 0 ) ref -> rdx "argument with side effect" ; V41 PSPSym [V41 ] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[X] addr-exposed "PSPSym" ; V42 cse0 [V42,T13] ( 3, 3 ) ref -> rcx "CSE - aggressive" ; ; Lcl frame size = 128 G_M63519_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 128 vzeroupper lea rbp, [rsp+A0H] mov qword ptr [rbp-80H], rsp mov gword ptr [rbp+10H], rcx mov rsi, rdx mov rdi, r8 ;; bbWeight=1 PerfScore 9.25 G_M63519_IG02: mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+88] mov rdx, r9 call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+88] test rcx, rcx je SHORT G_M63519_IG03 test byte ptr [rcx+8], 1 jne G_M63519_IG09 ;; bbWeight=1 PerfScore 10.00 G_M63519_IG03: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rbp-50H], xmm0 mov rcx, 0xD1FFAB1E mov edx, 299 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] vmovdqu xmm0, xmmword ptr [rdx+8] vmovdqu xmmword ptr [rbp-60H], xmm0 lea rdx, bword ptr [rbp-60H] lea rcx, bword ptr [rbp-50H] call Guid:op_Equality(Guid,Guid):bool test eax, eax jne G_M63519_IG08 ;; bbWeight=1 PerfScore 13.00 G_M63519_IG04: test rdi, rdi je G_M63519_IG07 ;; bbWeight=1 PerfScore 1.25 G_M63519_IG05: mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp+10H] vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rcx+160], xmm0 mov rcx, 0xD1FFAB1E mov edx, 0x721 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp+10H] lea rcx, bword ptr [rcx+104] call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp+10H] call EventSource:InitializeProviderMetadata():this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWFAST mov rsi, rax mov rcx, rsi mov edx, 1 call EventProvider:.ctor(int):this lea rcx, bword ptr [rsi+88] mov rdx, gword ptr [rbp+10H] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+96], 1 mov rcx, rsi mov rdx, gword ptr [rbp+10H] call EventProvider:Register(EventSource):this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWFAST mov rdi, rax mov rcx, rdi mov edx, 2 call EventProvider:.ctor(int):this lea rcx, bword ptr [rdi+88] mov rdx, gword ptr [rbp+10H] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rdi+96], 2 call EventListener:get_EventListenersLock():Object mov gword ptr [rbp-68H], rax xor edx, edx mov dword ptr [rbp-28H], edx ;; bbWeight=1 PerfScore 33.50 G_M63519_IG06: jmp G_M63519_IG10 ;; bbWeight=1 PerfScore 2.00 G_M63519_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xB86F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M63519_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xB845 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M63519_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xBCFF mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1DA4A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M63519_IG10: cmp byte ptr [rbp-28H], 0 jne SHORT G_M63519_IG12 ;; bbWeight=1 PerfScore 2.00 G_M63519_IG11: lea rdx, [rbp-28H] mov rcx, gword ptr [rbp-68H] call Monitor:ReliableEnter(Object,byref) jmp SHORT G_M63519_IG13 ;; bbWeight=1 PerfScore 4.50 G_M63519_IG12: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M63519_IG13: mov rcx, rdi mov rdx, gword ptr [rbp+10H] call EventProvider:Register(EventSource):this nop ;; bbWeight=1 PerfScore 2.50 G_M63519_IG14: cmp byte ptr [rbp-28H], 0 je SHORT G_M63519_IG15 mov rcx, gword ptr [rbp-68H] call Monitor:Exit(Object) ;; bbWeight=1 PerfScore 4.00 G_M63519_IG15: mov rcx, gword ptr [rbp+10H] call EventListener:AddEventSource(EventSource) mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+48] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rbp+10H] mov rcx, gword ptr [rdx+8] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call String:Equals(String,String):bool test eax, eax je SHORT G_M63519_IG16 mov rcx, 0xD1FFAB1E mov edx, 106 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE cmp byte ptr [reloc classVar[0xd1ffab1e]], 0 je SHORT G_M63519_IG17 ;; bbWeight=1 PerfScore 15.75 G_M63519_IG16: mov rcx, gword ptr [rbp+10H] mov rdx, gword ptr [rcx+112] xor ecx, ecx mov qword ptr [rbp-40H], rcx lea rcx, bword ptr [rbp-40H] mov r8d, 3 call GCHandle:.ctor(Object,int):this mov rcx, qword ptr [rbp-40H] mov qword ptr [rbp-30H], rcx lea rcx, bword ptr [rbp-30H] call GCHandle:AddrOfPinnedObject():long:this mov r8, rax mov r9, gword ptr [rbp+10H] mov r9, gword ptr [r9+112] mov r9d, dword ptr [r9+8] mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+48] mov edx, 2 cmp dword ptr [rcx], ecx call EventProvider:SetInformation(int,long,int):int:this lea rcx, bword ptr [rbp-30H] call GCHandle:Free():this ;; bbWeight=1 PerfScore 22.50 G_M63519_IG17: mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+64] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rbp+10H] mov byte ptr [rax+158], 1 ;; bbWeight=1 PerfScore 4.75 G_M63519_IG18: call EventListener:get_EventListenersLock():Object mov gword ptr [rbp-70H], rax xor edx, edx mov dword ptr [rbp-38H], edx ;; bbWeight=1 PerfScore 3.25 G_M63519_IG19: cmp byte ptr [rbp-38H], 0 jne SHORT G_M63519_IG21 ;; bbWeight=1 PerfScore 2.00 G_M63519_IG20: lea rdx, [rbp-38H] mov rcx, gword ptr [rbp-70H] call Monitor:ReliableEnter(Object,byref) jmp SHORT G_M63519_IG22 ;; bbWeight=1 PerfScore 4.50 G_M63519_IG21: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M63519_IG22: mov rcx, gword ptr [rbp+10H] mov rsi, gword ptr [rcx+80] test rsi, rsi je SHORT G_M63519_IG24 ;; bbWeight=1 PerfScore 4.25 G_M63519_IG23: mov rcx, gword ptr [rbp+10H] mov rdx, rsi call EventSource:DoCommand(EventCommandEventArgs):this mov rsi, gword ptr [rsi+40] test rsi, rsi jne SHORT G_M63519_IG23 ;; bbWeight=8 PerfScore 44.00 G_M63519_IG24: cmp byte ptr [rbp-38H], 0 je SHORT G_M63519_IG25 mov rcx, gword ptr [rbp-70H] call Monitor:Exit(Object) ;; bbWeight=1 PerfScore 4.00 G_M63519_IG25: nop ;; bbWeight=1 PerfScore 0.25 G_M63519_IG26: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M63519_IG27: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 vzeroupper mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+A0H] ;; bbWeight=0 PerfScore 0.00 G_M63519_IG28: cmp byte ptr [rbp-28H], 0 je SHORT G_M63519_IG29 mov rcx, gword ptr [rbp-68H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M63519_IG29: nop ;; bbWeight=0 PerfScore 0.00 G_M63519_IG30: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M63519_IG31: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 vzeroupper mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+A0H] ;; bbWeight=0 PerfScore 0.00 G_M63519_IG32: mov rsi, rdx mov rdx, gword ptr [rbp+10H] cmp gword ptr [rdx+72], 0 jne SHORT G_M63519_IG33 mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+72] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0 PerfScore 0.00 G_M63519_IG33: mov rcx, gword ptr [rbp+10H] call EventSource:get_Name():String:this mov rdi, rax mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r14, gword ptr [rcx] mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+40]Exception:get_Message():String:this mov r9, rax mov r8, r14 mov rcx, rbx mov rdx, rdi call String:Concat(String,String,String,String):String mov rdx, rax mov rcx, gword ptr [rbp+10H] call EventSource:ReportOutOfBandMessage(String):this lea rax, G_M63519_IG18 ;; bbWeight=0 PerfScore 0.00 G_M63519_IG34: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M63519_IG35: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 vzeroupper mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+A0H] ;; bbWeight=0 PerfScore 0.00 G_M63519_IG36: cmp byte ptr [rbp-38H], 0 je SHORT G_M63519_IG37 mov rcx, gword ptr [rbp-70H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M63519_IG37: nop ;; bbWeight=0 PerfScore 0.00 G_M63519_IG38: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1234, prolog size 38, PerfScore 315.25, (MethodHash=c18507e0) for method EventSource:Initialize(Guid,String,ref):this ; ============================================================ ; Assembly listing for method Guid:op_Equality(Guid,Guid):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 9 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T01] ( 6, 9 ) byref -> rdx ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 2 ) int -> rax "impAppendStmt" ; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt" ; V05 tmp3 [V05,T04] ( 2, 2 ) int -> rax "impAppendStmt" ; ; Lcl frame size = 0 G_M24558_IG01: ;; bbWeight=1 PerfScore 0.00 G_M24558_IG02: mov eax, dword ptr [rcx] cmp eax, dword ptr [rdx] jne SHORT G_M24558_IG05 ;; bbWeight=1 PerfScore 5.00 G_M24558_IG03: mov eax, dword ptr [rcx+4] cmp eax, dword ptr [rdx+4] jne SHORT G_M24558_IG05 mov eax, dword ptr [rcx+8] cmp eax, dword ptr [rdx+8] jne SHORT G_M24558_IG05 mov eax, dword ptr [rcx+12] cmp eax, dword ptr [rdx+12] sete al movzx rax, al ;; bbWeight=0.50 PerfScore 7.63 G_M24558_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M24558_IG05: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M24558_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 38, prolog size 0, PerfScore 17.55, (MethodHash=7713a011) for method Guid:op_Equality(Guid,Guid):bool ; ============================================================ ; Assembly listing for method ActivityTracker:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M23187_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M23187_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call ActivityTracker:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M23187_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=825ba56c) for method ActivityTracker:.cctor() ; ============================================================ ; Assembly listing for method ActivityTracker:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M59916_IG01: ;; bbWeight=1 PerfScore 0.00 G_M59916_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=646115f3) for method ActivityTracker:.ctor():this ; ============================================================ ; Assembly listing for method EventSource:InitializeProviderMetadata():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 14, 22 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T00] ( 28, 50 ) ref -> rdi class-hnd exact ; V02 loc1 [V02,T17] ( 3, 8.50) int -> registers ; V03 loc2 [V03,T02] ( 9, 26.50) int -> rbx ; V04 loc3 [V04,T14] ( 6, 10 ) ref -> rbp class-hnd ; V05 loc4 [V05,T15] ( 4, 8 ) ubyte -> r14 ld-addr-op ; V06 loc5 [V06,T38] ( 2, 4 ) ref -> rbp class-hnd ; V07 loc6 [V07,T16] ( 5, 10 ) int -> r15 ; V08 loc7 [V08,T30] ( 3, 6 ) int -> rax ; V09 loc8 [V09 ] ( 7, 10.50) struct (24) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V10 loc9 [V10,T24] ( 2, 8 ) ubyte -> rcx ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V12 tmp1 [V12,T54] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V13 tmp2 [V13,T61] ( 8, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V14 tmp3 [V14,T55] ( 2, 2 ) ref -> rcx class-hnd "impAppendStmt" ; V15 tmp4 [V15,T56] ( 2, 2 ) int -> rbx "impAppendStmt" ; V16 tmp5 [V16,T04] ( 3, 24 ) ref -> rax class-hnd "impSpillLclRefs" ; V17 tmp6 [V17,T01] ( 4, 32 ) int -> rbx "impSpillLclRefs" ; V18 tmp7 [V18,T08] ( 3, 12 ) ref -> rcx class-hnd "Inlining Arg" ; V19 tmp8 [V19,T31] ( 2, 4 ) bool -> rdx "Inline return value spill temp" ;* V20 tmp9 [V20 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V21 tmp10 [V21 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V22 tmp11 [V22 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V23 tmp12 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V24 tmp13 [V24,T21] ( 2, 8 ) byref -> r14 "Inlining Arg" ;* V25 tmp14 [V25 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V26 tmp15 [V26,T25] ( 2, 8 ) int -> r15 "Inlining Arg" ; V27 tmp16 [V27,T32] ( 3, 6 ) bool -> rdx "Inline return value spill temp" ;* V28 tmp17 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V29 tmp18 [V29,T22] ( 2, 8 ) ref -> r8 class-hnd "Inlining Arg" ; V30 tmp19 [V30 ] ( 3, 5 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V31 tmp20 [V31,T45] ( 2, 4 ) int -> rax "Inline return value spill temp" ;* V32 tmp21 [V32 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V33 tmp22 [V33,T62] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V34 tmp23 [V34,T26] ( 3, 6 ) ref -> rdx class-hnd "Inline stloc first use temp" ; V35 tmp24 [V35,T18] ( 4, 8 ) int -> rcx "Inline stloc first use temp" ; V36 tmp25 [V36,T27] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V37 tmp26 [V37,T19] ( 4, 8 ) int -> rdx "Inline stloc first use temp" ; V38 tmp27 [V38,T28] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V39 tmp28 [V39,T20] ( 4, 8 ) int -> rax "Inline stloc first use temp" ; V40 tmp29 [V40,T13] ( 3, 12 ) ubyte -> rdx "Inlining Arg" ;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V42 tmp31 [V42,T06] ( 4, 16 ) int -> r15 "Inlining Arg" ;* V43 tmp32 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V44 tmp33 [V44 ] ( 0, 0 ) struct (24) zero-ref "NewObj constructor temp" ; V45 tmp34 [V45 ] ( 3, 5 ) ref -> [rsp+0x40] do-not-enreg[X] addr-exposed V09._list(offs=0x00) P-DEP "field V09._list (fldOffset=0x0)" ; V46 tmp35 [V46 ] ( 3, 5 ) int -> [rsp+0x48] do-not-enreg[X] addr-exposed V09._index(offs=0x08) P-DEP "field V09._index (fldOffset=0x8)" ; V47 tmp36 [V47 ] ( 3, 5 ) int -> [rsp+0x4C] do-not-enreg[X] addr-exposed V09._version(offs=0x0c) P-DEP "field V09._version (fldOffset=0xc)" ; V48 tmp37 [V48 ] ( 4, 9 ) ubyte -> [rsp+0x50] do-not-enreg[X] addr-exposed V09._current(offs=0x10) P-DEP "field V09._current (fldOffset=0x10)" ; V49 tmp38 [V49,T39] ( 2, 4 ) byref -> r14 V20._pointer(offs=0x00) P-INDEP "field V20._pointer (fldOffset=0x0)" ; V50 tmp39 [V50,T46] ( 2, 4 ) int -> r15 V20._length(offs=0x08) P-INDEP "field V20._length (fldOffset=0x8)" ; V51 tmp40 [V51,T40] ( 2, 4 ) byref -> r14 V21._pointer(offs=0x00) P-INDEP "field V21._pointer (fldOffset=0x0)" ; V52 tmp41 [V52,T47] ( 2, 4 ) int -> r15 V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)" ; V53 tmp42 [V53,T41] ( 2, 4 ) byref -> r14 V22._pointer(offs=0x00) P-INDEP "field V22._pointer (fldOffset=0x0)" ; V54 tmp43 [V54,T48] ( 2, 4 ) int -> r15 V22._length(offs=0x08) P-INDEP "field V22._length (fldOffset=0x8)" ;* V55 tmp44 [V55 ] ( 0, 0 ) byref -> zero-ref V23._pointer(offs=0x00) P-INDEP "field V23._pointer (fldOffset=0x0)" ;* V56 tmp45 [V56 ] ( 0, 0 ) int -> zero-ref V23._length(offs=0x08) P-INDEP "field V23._length (fldOffset=0x8)" ; V57 tmp46 [V57,T42] ( 2, 4 ) byref -> r14 V25._value(offs=0x00) P-INDEP "field V25._value (fldOffset=0x0)" ; V58 tmp47 [V58,T43] ( 2, 4 ) byref -> r14 V28._pointer(offs=0x00) P-INDEP "field V28._pointer (fldOffset=0x0)" ; V59 tmp48 [V59,T49] ( 2, 4 ) int -> r15 V28._length(offs=0x08) P-INDEP "field V28._length (fldOffset=0x8)" ; V60 tmp49 [V60,T44] ( 2, 4 ) byref -> r14 V32._pointer(offs=0x00) P-INDEP "field V32._pointer (fldOffset=0x0)" ; V61 tmp50 [V61,T50] ( 2, 4 ) int -> r15 V32._length(offs=0x08) P-INDEP "field V32._length (fldOffset=0x8)" ; V62 tmp51 [V62,T57] ( 3, 1.50) ref -> rdi V44._list(offs=0x00) P-INDEP "field V44._list (fldOffset=0x0)" ;* V63 tmp52 [V63,T60] ( 0, 0 ) int -> zero-ref V44._index(offs=0x08) P-INDEP "field V44._index (fldOffset=0x8)" ; V64 tmp53 [V64,T58] ( 2, 1 ) int -> rcx V44._version(offs=0x0c) P-INDEP "field V44._version (fldOffset=0xc)" ; V65 tmp54 [V65,T59] ( 2, 1 ) ubyte -> rax V44._current(offs=0x10) P-INDEP "field V44._current (fldOffset=0x10)" ; V66 tmp55 [V66,T05] ( 3, 24 ) ref -> rcx "arr expr" ; V67 tmp56 [V67,T07] ( 2, 16 ) ref -> rcx "argument with side effect" ; V68 tmp57 [V68,T09] ( 3, 12 ) ref -> r8 "arr expr" ; V69 tmp58 [V69 ] ( 2, 8 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V70 tmp59 [V70,T10] ( 3, 12 ) byref -> rcx stack-byref "BlockOp address local" ;* V71 tmp60 [V71 ] ( 0, 0 ) byref -> zero-ref stack-byref "BlockOp address local" ;* V72 tmp61 [V72 ] ( 0, 0 ) byref -> zero-ref stack-byref "BlockOp address local" ; V73 tmp62 [V73,T63] ( 2, 0 ) ref -> rcx "argument with side effect" ; V74 tmp63 [V74,T64] ( 2, 0 ) ref -> rcx "argument with side effect" ; V75 tmp64 [V75,T11] ( 3, 12 ) ref -> rcx "arr expr" ; V76 tmp65 [V76,T12] ( 3, 12 ) ref -> rdx "arr expr" ; V77 tmp66 [V77,T23] ( 2, 8 ) ref -> rcx "arr expr" ; V78 cse0 [V78,T33] ( 3, 6 ) int -> rdx "CSE - moderate" ; V79 cse1 [V79,T34] ( 3, 6 ) int -> rcx "CSE - moderate" ; V80 cse2 [V80,T35] ( 3, 6 ) int -> r8 "CSE - moderate" ; V81 cse3 [V81,T29] ( 3, 6 ) ref -> rcx "CSE - moderate" ; V82 cse4 [V82,T36] ( 3, 6 ) int -> rdx "CSE - moderate" ; V83 cse5 [V83,T51] ( 2, 4 ) int -> rax "CSE - moderate" ; V84 cse6 [V84,T52] ( 2, 4 ) int -> rax "CSE - moderate" ; V85 cse7 [V85,T53] ( 2, 4 ) int -> r8 "CSE - moderate" ; V86 cse8 [V86,T37] ( 3, 6 ) int -> r9 "CSE - moderate" ; ; Lcl frame size = 88 G_M7304_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 88 xor rax, rax mov qword ptr [rsp+28H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 mov qword ptr [rsp+50H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 11.08 G_M7304_IG02: cmp gword ptr [rsi+88], 0 je G_M7304_IG26 ;; bbWeight=1 PerfScore 3.00 G_M7304_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov edx, 100 call List`1:.ctor(int):this xor ebx, ebx mov rcx, gword ptr [rsi+88] mov ecx, dword ptr [rcx+8] dec ecx test ecx, ecx jle G_M7304_IG22 ;; bbWeight=0.50 PerfScore 4.38 G_M7304_IG04: mov rcx, gword ptr [rsi+88] cmp ebx, dword ptr [rcx+8] jae G_M7304_IG31 movsxd rdx, ebx mov rcx, gword ptr [rcx+8*rdx+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, 4 cmp dword ptr [rcx], ecx call String:StartsWith(String,int):bool:this test eax, eax je G_M7304_IG21 ;; bbWeight=4 PerfScore 56.00 G_M7304_IG05: mov r8, gword ptr [rsi+88] cmp ebx, dword ptr [r8+8] jae G_M7304_IG31 movsxd rcx, ebx mov rcx, gword ptr [r8+8*rcx+16] mov r8d, dword ptr [rcx+8] add r8d, -4 mov edx, 4 call String:Substring(int,int):String:this mov rbp, rax test rbp, rbp je SHORT G_M7304_IG11 ;; bbWeight=2 PerfScore 24.50 G_M7304_IG06: lea r14, bword ptr [rbp+12] mov r15d, dword ptr [rbp+8] call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo mov r8, rax lea rcx, bword ptr [rsp+28H] mov bword ptr [rcx], r14 mov dword ptr [rcx+8], r15d lea rcx, bword ptr [rsp+28H] lea r9, [rsp+38H] mov edx, 7 call Number:TryParseUInt32IntegerStyle(ReadOnlySpan`1,int,NumberFormatInfo,byref):int test eax, eax jne SHORT G_M7304_IG08 ;; bbWeight=2 PerfScore 19.50 G_M7304_IG07: cmp dword ptr [rsp+38H], 255 jbe SHORT G_M7304_IG09 ;; bbWeight=1 PerfScore 2.00 G_M7304_IG08: xor r14d, r14d xor edx, edx jmp SHORT G_M7304_IG10 ;; bbWeight=2 PerfScore 5.00 G_M7304_IG09: mov edx, dword ptr [rsp+38H] movzx r14, dl mov edx, 1 ;; bbWeight=2 PerfScore 3.00 G_M7304_IG10: test edx, edx jne SHORT G_M7304_IG12 ;; bbWeight=2 PerfScore 2.50 G_M7304_IG11: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rbp call String:Equals(String,String):bool test eax, eax je G_M7304_IG29 mov r14d, 1 ;; bbWeight=2 PerfScore 10.00 G_M7304_IG12: mov rcx, gword ptr [rsi+88] lea edx, [rbx+1] cmp edx, dword ptr [rcx+8] jae G_M7304_IG31 movsxd rdx, edx mov rbp, gword ptr [rcx+8*rdx+16] mov ecx, dword ptr [rdi+16] mov r15d, ecx inc dword ptr [rdi+20] mov rdx, gword ptr [rdi+8] mov eax, dword ptr [rdx+8] cmp eax, ecx jbe SHORT G_M7304_IG13 lea eax, [rcx+1] mov dword ptr [rdi+16], eax movsxd rcx, ecx mov byte ptr [rdx+rcx+16], 0 jmp SHORT G_M7304_IG14 ;; bbWeight=2 PerfScore 50.00 G_M7304_IG13: mov rcx, rdi xor edx, edx call List`1:AddWithResize(ubyte):this ;; bbWeight=2 PerfScore 3.00 G_M7304_IG14: inc dword ptr [rdi+20] mov rcx, gword ptr [rdi+8] mov edx, dword ptr [rdi+16] mov eax, dword ptr [rcx+8] cmp eax, edx jbe SHORT G_M7304_IG15 lea eax, [rdx+1] mov dword ptr [rdi+16], eax movsxd rdx, edx mov byte ptr [rcx+rdx+16], 0 jmp SHORT G_M7304_IG16 ;; bbWeight=2 PerfScore 34.00 G_M7304_IG15: mov rcx, rdi xor edx, edx call List`1:AddWithResize(ubyte):this ;; bbWeight=2 PerfScore 3.00 G_M7304_IG16: mov edx, r14d inc dword ptr [rdi+20] mov rcx, gword ptr [rdi+8] mov eax, dword ptr [rdi+16] mov r8d, dword ptr [rcx+8] cmp r8d, eax jbe SHORT G_M7304_IG17 lea r8d, [rax+1] mov dword ptr [rdi+16], r8d movsxd rax, eax mov byte ptr [rcx+rax+16], dl jmp SHORT G_M7304_IG18 ;; bbWeight=2 PerfScore 34.50 G_M7304_IG17: mov rcx, rdi call List`1:AddWithResize(ubyte):this ;; bbWeight=2 PerfScore 2.50 G_M7304_IG18: mov rcx, rdi mov rdx, rbp call EventSource:AddValueToMetaData(List`1,String):int add eax, 3 mov r8d, dword ptr [rdi+16] cmp r15d, r8d jae G_M7304_IG30 ;; bbWeight=2 PerfScore 10.00 G_M7304_IG19: mov rcx, gword ptr [rdi+8] mov rdx, rcx mov r9d, dword ptr [rdx+8] cmp r15d, r9d jae G_M7304_IG31 movsxd r10, r15d mov byte ptr [rdx+r10+16], al mov edx, dword ptr [rdi+20] inc edx mov dword ptr [rdi+20], edx inc r15d cmp r15d, r8d jae G_M7304_IG30 ;; bbWeight=2 PerfScore 23.00 G_M7304_IG20: cmp r15d, r9d jae G_M7304_IG31 movsxd r8, r15d sar eax, 8 mov byte ptr [rcx+r8+16], al inc edx mov dword ptr [rdi+20], edx ;; bbWeight=2 PerfScore 11.50 G_M7304_IG21: add ebx, 2 mov r8, gword ptr [rsi+88] mov r8d, dword ptr [r8+8] dec r8d cmp r8d, ebx jg G_M7304_IG04 ;; bbWeight=4 PerfScore 23.00 G_M7304_IG22: mov rcx, gword ptr [rsi+8] mov r8d, dword ptr [rdi+16] xor edx, edx xor r9d, r9d call Statics:MetadataForString(String,int,int,int):ref lea rcx, bword ptr [rsi+112] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rsi+112] mov ebx, dword ptr [rcx+8] sub ebx, dword ptr [rdi+16] mov ecx, dword ptr [rdi+20] xor eax, eax mov gword ptr [rsp+40H], rdi xor edx, edx mov dword ptr [rsp+48H], edx mov dword ptr [rsp+4CH], ecx mov byte ptr [rsp+50H], al ;; bbWeight=0.50 PerfScore 9.88 G_M7304_IG23: lea rcx, bword ptr [rsp+40H] call Enumerator:MoveNext():bool:this test eax, eax je SHORT G_M7304_IG27 ;; bbWeight=0.50 PerfScore 1.38 G_M7304_IG24: mov ecx, dword ptr [rsp+50H] movzx rcx, cl mov rax, gword ptr [rsi+112] lea edx, [rbx+1] mov edi, edx cmp ebx, dword ptr [rax+8] jae G_M7304_IG31 movsxd rdx, ebx mov byte ptr [rax+rdx+16], cl lea rcx, bword ptr [rsp+40H] call Enumerator:MoveNext():bool:this test eax, eax mov ebx, edi jne SHORT G_M7304_IG24 ;; bbWeight=4 PerfScore 45.00 G_M7304_IG25: jmp SHORT G_M7304_IG27 ;; bbWeight=0.50 PerfScore 1.00 G_M7304_IG26: mov rcx, gword ptr [rsi+8] xor edx, edx xor r8d, r8d xor r9d, r9d call Statics:MetadataForString(String,int,int,int):ref lea rcx, bword ptr [rsi+112] mov rdx, rax call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 2.75 G_M7304_IG27: nop ;; bbWeight=1 PerfScore 0.25 G_M7304_IG28: add rsp, 88 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 G_M7304_IG29: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xBE79 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, rbp call SR:Format(String,Object):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov ecx, 0x1DA4A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS lea rcx, bword ptr [rsi+120] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M7304_IG30: call ThrowHelper:ThrowArgumentOutOfRange_IndexException() int3 ;; bbWeight=0 PerfScore 0.00 G_M7304_IG31: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 933, prolog size 40, PerfScore 493.56, (MethodHash=bce1e377) for method EventSource:InitializeProviderMetadata():this ; ============================================================ ; Assembly listing for method Statics:MetadataForString(String,int,int,int):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 6 ) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 4, 4 ) int -> rdi ; V02 arg2 [V02,T03] ( 3, 3 ) int -> rbx ; V03 arg3 [V03,T04] ( 3, 3 ) int -> rbp ; V04 loc0 [V04,T07] ( 3, 3 ) int -> rbx ; V05 loc1 [V05,T01] ( 6, 6 ) ref -> r14 class-hnd exact ; V06 loc2 [V06,T08] ( 3, 3 ) ushort -> rcx ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T05] ( 2, 4 ) ref -> rcx "argument with side effect" ; V09 tmp2 [V09,T06] ( 2, 4 ) ref -> rcx "argument with side effect" ;* V10 cse0 [V10,T10] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; V11 cse1 [V11,T09] ( 3, 3 ) int -> r9 "CSE - aggressive" ; ; Lcl frame size = 48 G_M12520_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 mov rsi, rcx mov edi, edx mov ebx, r8d mov ebp, r9d ;; bbWeight=1 PerfScore 6.25 G_M12520_IG02: mov rcx, rsi call Statics:CheckName(String) mov rcx, 0xD1FFAB1E mov edx, 923 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, rsi cmp dword ptr [rcx], ecx call [UTF8Encoding:GetByteCount(String):int:this] add eax, edi lea ebx, [rax+rbx+3] movsxd rdx, ebx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov r14, rax add ebx, ebp jo SHORT G_M12520_IG04 cmp ebx, 0xFFFF ja SHORT G_M12520_IG04 mov ecx, ebx mov r9d, dword ptr [r14+8] cmp r9d, 0 jbe SHORT G_M12520_IG05 mov byte ptr [r14+16], cl cmp r9d, 1 jbe SHORT G_M12520_IG05 sar ecx, 8 mov byte ptr [r14+17], cl mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rsp+20H], r14 add edi, 2 mov dword ptr [rsp+28H], edi mov r9d, dword ptr [rsi+8] mov rdx, rsi xor r8d, r8d cmp dword ptr [rcx], ecx call [UTF8Encoding:GetBytes(String,int,int,ref,int):int:this] mov rax, r14 ;; bbWeight=1 PerfScore 36.75 G_M12520_IG03: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M12520_IG04: call CORINFO_HELP_OVERFLOW int3 ;; bbWeight=0 PerfScore 0.00 G_M12520_IG05: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 210, prolog size 10, PerfScore 67.75, (MethodHash=a31dcf17) for method Statics:MetadataForString(String,int,int,int):ref ; ============================================================ ; Assembly listing for method Statics:CheckName(String) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4 ) ref -> [rsp+0x30] class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M4446_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M4446_IG02: test rcx, rcx je SHORT G_M4446_IG04 ;; bbWeight=1 PerfScore 1.25 G_M4446_IG03: mov gword ptr [rsp+30H], rcx add rcx, 12 mov r8, gword ptr [rsp+30H] mov r8d, dword ptr [r8+8] xor edx, edx call SpanHelpers:IndexOf(byref,ushort,int):int test eax, eax jge SHORT G_M4446_IG05 ;; bbWeight=0.50 PerfScore 3.38 G_M4446_IG04: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M4446_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 839 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 103, prolog size 5, PerfScore 17.93, (MethodHash=8187eea1) for method Statics:CheckName(String) ; ============================================================ ; Assembly listing for method UTF8Encoding:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M39450_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M39450_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] mov edx, 1 call UTF8EncodingSealed:.ctor(bool):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 7.00 G_M39450_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 75, prolog size 16, PerfScore 19.50, (MethodHash=386a65e5) for method UTF8Encoding:.cctor() ; ============================================================ ; Assembly listing for method UTF8EncodingSealed:.ctor(bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) bool -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M42993_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 2.75 G_M42993_IG02: mov byte ptr [rsi+36], 1 mov dword ptr [rsi+32], 0xFDE9 mov rcx, rsi call [UTF8Encoding:SetDefaultFallbacks():this] mov byte ptr [rsi+37], dil ;; bbWeight=1 PerfScore 6.25 G_M42993_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 42, prolog size 6, PerfScore 15.45, (MethodHash=0886580e) for method UTF8EncodingSealed:.ctor(bool):this ; ============================================================ ; Assembly listing for method UTF8Encoding:SetDefaultFallbacks():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 40 G_M32279_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M32279_IG02: cmp byte ptr [rsi+38], 0 je SHORT G_M32279_IG05 ;; bbWeight=1 PerfScore 3.00 G_M32279_IG03: mov rcx, 0xD1FFAB1E mov edx, 882 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+16] call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 873 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+24] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 5.38 G_M32279_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M32279_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi call EncoderReplacementFallback:.ctor(String):this lea rcx, bword ptr [rsi+16] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi call DecoderReplacementFallback:.ctor(String):this lea rcx, bword ptr [rsi+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 6.88 G_M32279_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 217, prolog size 6, PerfScore 41.70, (MethodHash=38f481e8) for method UTF8Encoding:SetDefaultFallbacks():this ; ============================================================ ; Assembly listing for method EncoderReplacementFallback:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 3, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T01] ( 7, 11 ) ref -> rsi class-hnd ; V02 loc0 [V02,T02] ( 7, 11.50) bool -> rbx ; V03 loc1 [V03,T00] ( 6, 19 ) int -> rbp ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T07] ( 2, 0 ) ref -> rdx "argument with side effect" ; V08 tmp4 [V08,T08] ( 2, 0 ) ref -> rcx "argument with side effect" ; V09 tmp5 [V09,T09] ( 2, 0 ) ref -> rdi "argument with side effect" ; V10 tmp6 [V10,T10] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 tmp7 [V11,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; V12 cse0 [V12,T03] ( 3, 6 ) int -> r14 "CSE - aggressive" ; ; Lcl frame size = 32 G_M29642_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 32 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 5.75 G_M29642_IG02: test rsi, rsi je G_M29642_IG15 ;; bbWeight=1 PerfScore 1.25 G_M29642_IG03: xor ebx, ebx xor ebp, ebp mov r14d, dword ptr [rsi+8] test r14d, r14d jle SHORT G_M29642_IG13 ;; bbWeight=1 PerfScore 3.75 G_M29642_IG04: mov rcx, rsi mov edx, ebp call Char:IsSurrogate(String,int):bool test eax, eax je SHORT G_M29642_IG08 ;; bbWeight=4 PerfScore 11.00 G_M29642_IG05: mov rcx, rsi mov edx, ebp call Char:IsHighSurrogate(String,int):bool test eax, eax je SHORT G_M29642_IG06 test ebx, ebx jne SHORT G_M29642_IG13 mov ebx, 1 jmp SHORT G_M29642_IG09 ;; bbWeight=2 PerfScore 12.50 G_M29642_IG06: test ebx, ebx je SHORT G_M29642_IG14 ;; bbWeight=2 PerfScore 2.50 G_M29642_IG07: xor ebx, ebx jmp SHORT G_M29642_IG09 ;; bbWeight=2 PerfScore 4.50 G_M29642_IG08: test ebx, ebx jne SHORT G_M29642_IG13 ;; bbWeight=2 PerfScore 2.50 G_M29642_IG09: inc ebp cmp r14d, ebp jg SHORT G_M29642_IG04 ;; bbWeight=4 PerfScore 6.00 G_M29642_IG10: jmp SHORT G_M29642_IG13 ;; bbWeight=0.50 PerfScore 1.00 G_M29642_IG11: lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 2.00 G_M29642_IG12: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M29642_IG13: test ebx, ebx je SHORT G_M29642_IG11 ;; bbWeight=0.50 PerfScore 0.63 G_M29642_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x6F63 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1A569 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rdi call SR:Format(String,Object):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M29642_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1A569 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 285, prolog size 10, PerfScore 85.63, (MethodHash=71398c35) for method EncoderReplacementFallback:.ctor(String):this ; ============================================================ ; Assembly listing for method Char:IsSurrogate(String,int):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 5 ) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) int -> rdx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp3 [V05,T02] ( 2, 4 ) ushort -> rax "Inlining Arg" ; V06 tmp4 [V06,T06] ( 2, 0 ) ref -> rdx "argument with side effect" ; V07 tmp5 [V07,T07] ( 2, 0 ) ref -> rdx "argument with side effect" ; V08 cse0 [V08,T03] ( 2, 2 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 32 G_M27491_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M27491_IG02: test rcx, rcx je SHORT G_M27491_IG06 ;; bbWeight=1 PerfScore 1.25 G_M27491_IG03: mov eax, dword ptr [rcx+8] cmp eax, edx jbe SHORT G_M27491_IG07 ;; bbWeight=1 PerfScore 3.25 G_M27491_IG04: movsxd rax, edx movzx rax, word ptr [rcx+2*rax+12] add eax, -0xD800 cmp eax, 0x7FF setbe al movzx rax, al ;; bbWeight=1 PerfScore 4.00 G_M27491_IG05: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M27491_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x2068 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M27491_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 491 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 162, prolog size 5, PerfScore 27.70, (MethodHash=a9f2949c) for method Char:IsSurrogate(String,int):bool ; ============================================================ ; Assembly listing for method DecoderReplacementFallback:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 3, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T01] ( 7, 11 ) ref -> rsi class-hnd ; V02 loc0 [V02,T02] ( 7, 11.50) bool -> rbx ; V03 loc1 [V03,T00] ( 6, 19 ) int -> rbp ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T07] ( 2, 0 ) ref -> rdx "argument with side effect" ; V08 tmp4 [V08,T08] ( 2, 0 ) ref -> rcx "argument with side effect" ; V09 tmp5 [V09,T09] ( 2, 0 ) ref -> rdi "argument with side effect" ; V10 tmp6 [V10,T10] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 tmp7 [V11,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; V12 cse0 [V12,T03] ( 3, 6 ) int -> r14 "CSE - aggressive" ; ; Lcl frame size = 32 G_M8096_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 32 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 5.75 G_M8096_IG02: test rsi, rsi je G_M8096_IG15 ;; bbWeight=1 PerfScore 1.25 G_M8096_IG03: xor ebx, ebx xor ebp, ebp mov r14d, dword ptr [rsi+8] test r14d, r14d jle SHORT G_M8096_IG13 ;; bbWeight=1 PerfScore 3.75 G_M8096_IG04: mov rcx, rsi mov edx, ebp call Char:IsSurrogate(String,int):bool test eax, eax je SHORT G_M8096_IG08 ;; bbWeight=4 PerfScore 11.00 G_M8096_IG05: mov rcx, rsi mov edx, ebp call Char:IsHighSurrogate(String,int):bool test eax, eax je SHORT G_M8096_IG06 test ebx, ebx jne SHORT G_M8096_IG13 mov ebx, 1 jmp SHORT G_M8096_IG09 ;; bbWeight=2 PerfScore 12.50 G_M8096_IG06: test ebx, ebx je SHORT G_M8096_IG14 ;; bbWeight=2 PerfScore 2.50 G_M8096_IG07: xor ebx, ebx jmp SHORT G_M8096_IG09 ;; bbWeight=2 PerfScore 4.50 G_M8096_IG08: test ebx, ebx jne SHORT G_M8096_IG13 ;; bbWeight=2 PerfScore 2.50 G_M8096_IG09: inc ebp cmp r14d, ebp jg SHORT G_M8096_IG04 ;; bbWeight=4 PerfScore 6.00 G_M8096_IG10: jmp SHORT G_M8096_IG13 ;; bbWeight=0.50 PerfScore 1.00 G_M8096_IG11: lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 2.00 G_M8096_IG12: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M8096_IG13: test ebx, ebx je SHORT G_M8096_IG11 ;; bbWeight=0.50 PerfScore 0.63 G_M8096_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x6F63 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1A569 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rdi call SR:Format(String,Object):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M8096_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1A569 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 285, prolog size 10, PerfScore 85.63, (MethodHash=0135e05f) for method DecoderReplacementFallback:.ctor(String):this ; ============================================================ ; Assembly listing for method UTF8Encoding:GetByteCount(String):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 4, 3.25) ref -> rsi this class-hnd ; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rdx class-hnd ; V02 loc0 [V02,T05] ( 4, 3.25) long -> rdi ; V03 loc1 [V03 ] ( 2, 2 ) byref -> [rsp+0x30] must-init pinned ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T09] ( 2, 2 ) long -> rdi ; V06 tmp2 [V06,T01] ( 4, 6.50) int -> rbx "Inlining Arg" ; V07 tmp3 [V07,T06] ( 4, 3.25) int -> r9 ld-addr-op "Inline ldloca(s) first use temp" ; V08 tmp4 [V08,T08] ( 5, 2.75) int -> rbp "Inline stloc first use temp" ; V09 tmp5 [V09 ] ( 2, 2 ) long -> [rsp+0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V10 tmp6 [V10 ] ( 1, 1 ) int -> [rsp+0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V11 tmp7 [V11,T10] ( 2, 2 ) long -> rax "Inline stloc first use temp" ; V12 tmp8 [V12,T11] ( 2, 2 ) int -> r9 "Inline stloc first use temp" ; V13 tmp9 [V13,T07] ( 3, 3 ) long -> rbp "Inline stloc first use temp" ; V14 tmp10 [V14,T04] ( 2, 4 ) long -> rdi "Cast away GC" ; V15 rat0 [V15,T02] ( 3, 6 ) long -> rax "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 56 G_M57762_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 xor rax, rax mov qword ptr [rsp+30H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 5.75 G_M57762_IG02: test rdx, rdx je SHORT G_M57762_IG08 ;; bbWeight=1 PerfScore 1.25 G_M57762_IG03: lea r8, bword ptr [rdx+12] mov bword ptr [rsp+30H], r8 mov rdi, bword ptr [rsp+30H] mov ebx, dword ptr [rdx+8] cmp dword ptr [rsi], esi lea r8, [rsp+28H] lea r9, [rsp+20H] mov rcx, rdi mov edx, ebx call Utf16Utility:GetPointerToFirstInvalidChar(long,int,byref,byref):long sub rax, rdi mov rcx, rax shr rcx, 63 add rcx, rax sar rcx, 1 mov r9d, ecx movsxd rbp, r9d add rbp, qword ptr [rsp+28H] cmp rbp, 0xD1FFAB1E ja SHORT G_M57762_IG09 ;; bbWeight=1 PerfScore 15.00 G_M57762_IG04: cmp r9d, ebx je SHORT G_M57762_IG06 ;; bbWeight=1 PerfScore 1.25 G_M57762_IG05: mov rcx, rsi mov rdx, rdi mov r8d, ebx call Encoding:GetByteCountWithFallback(long,int,int):int:this add ebp, eax test ebp, ebp jl SHORT G_M57762_IG09 ;; bbWeight=0.25 PerfScore 0.81 G_M57762_IG06: mov eax, ebp ;; bbWeight=1 PerfScore 0.25 G_M57762_IG07: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M57762_IG08: mov ecx, 14 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M57762_IG09: call Encoding:ThrowConversionOverflow() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 151, prolog size 15, PerfScore 42.66, (MethodHash=5c531e5d) for method UTF8Encoding:GetByteCount(String):int:this ; ============================================================ ; Assembly listing for method Utf16Utility:GetPointerToFirstInvalidChar(long,int,byref,byref):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 18, 34 ) long -> rdi ; V01 arg1 [V01,T00] ( 19, 37 ) int -> rsi ; V02 arg2 [V02,T12] ( 4, 3 ) byref -> rbx ; V03 arg3 [V03,T13] ( 4, 3 ) byref -> rbp ; V04 loc0 [V04,T16] ( 3, 3 ) int -> rax ; V05 loc1 [V05,T02] ( 14, 29 ) long -> rax ; V06 loc2 [V06,T07] ( 6, 9 ) int -> rdx ; V07 loc3 [V07,T21] ( 2, 4.50) simd16 -> mm0 ; V08 loc4 [V08,T22] ( 2, 4.50) simd16 -> mm1 ; V09 loc5 [V09,T23] ( 2, 4.50) simd16 -> mm2 ; V10 loc6 [V10,T24] ( 2, 4.50) simd16 -> mm3 ;* V11 loc7 [V11 ] ( 0, 0 ) simd16 -> zero-ref ; V12 loc8 [V12,T18] ( 7, 26 ) simd16 -> mm4 ; V13 loc9 [V13,T19] ( 2, 8 ) simd16 -> mm5 ; V14 loc10 [V14,T20] ( 2, 8 ) simd16 -> mm6 ; V15 loc11 [V15,T03] ( 6, 20 ) int -> rcx ; V16 loc12 [V16,T06] ( 4, 12 ) int -> r8 ; V17 loc13 [V17,T10] ( 3, 6 ) int -> r9 ; V18 loc14 [V18,T14] ( 2, 4 ) int -> r10 ; V19 loc15 [V19,T04] ( 7, 14 ) int -> rcx ; V20 loc16 [V20,T08] ( 4, 8 ) long -> rcx ;* V21 loc17 [V21 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op ;* V22 loc18 [V22 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op ;* V23 loc19 [V23 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op ;* V24 loc20 [V24 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op ;* V25 loc21 [V25 ] ( 0, 0 ) simd32 -> zero-ref ;* V26 loc22 [V26 ] ( 0, 0 ) simd32 -> zero-ref ;* V27 loc23 [V27 ] ( 0, 0 ) simd32 -> zero-ref ;* V28 loc24 [V28 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op ;* V29 loc25 [V29 ] ( 0, 0 ) long -> zero-ref ;* V30 loc26 [V30 ] ( 0, 0 ) int -> zero-ref ;* V31 loc27 [V31 ] ( 0, 0 ) simd32 -> zero-ref ;* V32 loc28 [V32 ] ( 0, 0 ) int -> zero-ref ;* V33 loc29 [V33 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op ;* V34 loc30 [V34 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op ;* V35 loc31 [V35 ] ( 0, 0 ) ushort -> zero-ref ;* V36 loc32 [V36 ] ( 0, 0 ) long -> zero-ref ;* V37 loc33 [V37 ] ( 0, 0 ) int -> zero-ref ; V38 loc34 [V38,T05] ( 6, 12 ) int -> rcx ; V39 OutArgs [V39 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V40 tmp1 [V40 ] ( 0, 0 ) int -> zero-ref ;* V41 tmp2 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp3 [V42 ] ( 0, 0 ) int -> zero-ref ;* V43 tmp4 [V43 ] ( 0, 0 ) simd16 -> zero-ref ; V44 tmp5 [V44,T17] ( 2, 2 ) long -> rax "Inline return value spill temp" ;* V45 tmp6 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V46 tmp7 [V46,T09] ( 2, 8 ) int -> r8 "Inline return value spill temp" ; V47 tmp8 [V47,T15] ( 2, 4 ) int -> rcx "Inline return value spill temp" ; V48 cse0 [V48,T11] ( 3, 6 ) int -> r9 "CSE - aggressive" ; ; Lcl frame size = 56 G_M59809_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 vzeroupper vmovaps qword ptr [rsp+20H], xmm6 mov rdi, rcx mov esi, edx mov rbx, r8 mov rbp, r9 ;; bbWeight=1 PerfScore 9.25 G_M59809_IG02: mov edx, esi mov rcx, rdi call ASCIIUtility:GetIndexOfFirstNonAsciiChar_Sse2(long,long):long mov edx, eax lea rdi, [rdi+2*rdx] sub esi, eax jne SHORT G_M59809_IG05 ;; bbWeight=1 PerfScore 3.50 G_M59809_IG03: xor rax, rax mov qword ptr [rbx], rax mov dword ptr [rbp], eax mov rax, rdi ;; bbWeight=0.50 PerfScore 1.25 G_M59809_IG04: vmovaps xmm6, qword ptr [rsp+20H] add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 3.63 G_M59809_IG05: xor rax, rax xor edx, edx cmp esi, 8 jl G_M59809_IG13 vmovupd xmm0, xmmword ptr [reloc @RWD16] vmovupd xmm1, xmmword ptr [reloc @RWD48] vmovupd xmm2, xmmword ptr [reloc @RWD80] vxorps xmm3, xmm3, xmm3 ;; bbWeight=0.50 PerfScore 5.54 G_M59809_IG06: vmovdqu xmm4, xmmword ptr [rdi] vpminuw xmm5, xmm4, xmm0 vpsrlw xmm6, xmm4, 11 vpsubw xmm6, xmm3, xmm6 vpor xmm5, xmm5, xmm6 vpmovmskb ecx, xmm5 xor r8d, r8d popcnt r8d, ecx vpaddw xmm4, xmm4, xmm1 vpcmpgtw xmm5, xmm2, xmm4 vpmovmskb ecx, xmm5 test ecx, ecx je SHORT G_M59809_IG09 ;; bbWeight=4 PerfScore 42.00 G_M59809_IG07: vpsrlw xmm4, xmm4, 3 vpmovmskb r9d, xmm4 mov r10d, r9d and r10d, ecx xor r9d, 0x5555 and ecx, r9d shl ecx, 2 movzx r9, cx cmp r9d, r10d jne G_M59809_IG13 cmp ecx, 0xFFFF jbe SHORT G_M59809_IG08 mov ecx, r9d add r8d, -2 add rdi, -2 inc esi ;; bbWeight=2 PerfScore 17.50 G_M59809_IG08: popcnt ecx, ecx sub edx, ecx sub rax, rcx sub rax, rcx ;; bbWeight=2 PerfScore 5.50 G_M59809_IG09: mov ecx, r8d add rax, rcx add rdi, 16 add esi, -8 cmp esi, 8 jge G_M59809_IG06 ;; bbWeight=4 PerfScore 9.00 G_M59809_IG10: test esi, esi jle SHORT G_M59809_IG14 ;; bbWeight=0.50 PerfScore 0.63 G_M59809_IG11: movzx rcx, word ptr [rdi] cmp ecx, 127 jbe SHORT G_M59809_IG12 lea r8d, [rcx+0001F800H] shr r8d, 16 add rax, r8 add ecx, -0xD800 cmp ecx, 0x7FF ja SHORT G_M59809_IG12 add rax, -2 cmp esi, 1 je SHORT G_M59809_IG14 mov ecx, dword ptr [rdi] add ecx, 0xD1FFAB1E test ecx, 0xD1FFAB1E jne SHORT G_M59809_IG14 dec edx add rax, 2 add rdi, 2 dec esi ;; bbWeight=2 PerfScore 27.00 G_M59809_IG12: add rdi, 2 dec esi ;; bbWeight=2 PerfScore 1.00 G_M59809_IG13: test esi, esi jg SHORT G_M59809_IG11 ;; bbWeight=4 PerfScore 5.00 G_M59809_IG14: mov qword ptr [rbx], rax mov dword ptr [rbp], edx mov rax, rdi ;; bbWeight=0.50 PerfScore 1.13 G_M59809_IG15: vmovaps xmm6, qword ptr [rsp+20H] add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 3.63 RWD00 db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h RWD16 db 080h, 000h, 080h, 000h, 080h, 000h, 080h, 000h, 080h, 000h, 080h, 000h, 080h, 000h, 080h, 000h RWD32 db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h RWD48 db 000h, 0A8h, 000h, 0A8h, 000h, 0A8h, 000h, 0A8h, 000h, 0A8h, 000h, 0A8h, 000h, 0A8h, 000h, 0A8h RWD64 db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h RWD80 db 000h, 088h, 000h, 088h, 000h, 088h, 000h, 088h, 000h, 088h, 000h, 088h, 000h, 088h, 000h, 088h ; Total bytes of code 372, prolog size 28, PerfScore 174.44, (MethodHash=c4d2165e) for method Utf16Utility:GetPointerToFirstInvalidChar(long,int,byref,byref):long ; ============================================================ ; Assembly listing for method ASCIIUtility:GetIndexOfFirstNonAsciiChar_Sse2(long,long):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 34, 35.50) long -> rsi ; V01 arg1 [V01,T01] ( 17, 10 ) long -> rdx ;* V02 loc0 [V02,T13] ( 0, 0 ) int -> zero-ref ;* V03 loc1 [V03,T14] ( 0, 0 ) int -> zero-ref ; V04 loc2 [V04,T15] ( 11, 12.50) simd16 -> mm2 ; V05 loc3 [V05,T16] ( 3, 8.50) simd16 -> mm3 ; V06 loc4 [V06,T04] ( 6, 3 ) int -> rcx ; V07 loc5 [V07,T03] ( 8, 4 ) long -> rdi ; V08 loc6 [V08,T18] ( 5, 6 ) simd16 -> mm0 ; V09 loc7 [V09,T19] ( 3, 1.50) simd16 -> mm1 ; V10 loc8 [V10,T09] ( 3, 1.50) int -> rcx ; V11 loc9 [V11,T02] ( 2, 4.50) long -> rax ; V12 loc10 [V12,T17] ( 2, 8 ) simd16 -> mm4 ; V13 loc11 [V13,T05] ( 4, 2 ) long -> rcx ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V15 tmp1 [V15 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V16 tmp2 [V16 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V17 tmp3 [V17,T07] ( 2, 2 ) long -> rsi ld-addr-op "Inlining Arg" ;* V18 tmp4 [V18 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V19 tmp5 [V19 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V20 tmp6 [V20 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V21 tmp7 [V21,T08] ( 2, 2 ) long -> rax ld-addr-op "Inlining Arg" ;* V22 tmp8 [V22 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V23 tmp9 [V23 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V24 tmp10 [V24,T11] ( 2, 1 ) int -> rdx "Inline return value spill temp" ; V25 tmp11 [V25,T12] ( 2, 1 ) int -> rcx "Inline return value spill temp" ; V26 cse0 [V26,T10] ( 3, 1.50) long -> rcx "CSE - moderate" ; V27 cse1 [V27,T06] ( 4, 2 ) int -> rax "CSE - moderate" ; ; Lcl frame size = 40 G_M6297_IG01: push rdi push rsi sub rsp, 40 vzeroupper mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M6297_IG02: test rdx, rdx jne SHORT G_M6297_IG05 ;; bbWeight=1 PerfScore 1.25 G_M6297_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M6297_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M6297_IG05: mov rdi, rsi cmp rdx, 8 jb G_M6297_IG19 vmovupd xmm0, xmmword ptr [reloc @RWD16] vmovupd xmm1, xmmword ptr [reloc @RWD48] vmovdqu xmm2, xmmword ptr [rdi] vpaddusw xmm2, xmm2, xmm1 vpmovmskb ecx, xmm2 test ecx, 0xAAAA jne G_M6297_IG17 add rdx, rdx cmp rdx, 32 jb SHORT G_M6297_IG09 lea rsi, [rdi+16] and rsi, -16 add rdx, rdi sub rdx, rsi cmp rdx, 32 jb SHORT G_M6297_IG08 lea rax, [rsi+rdx] sub rax, 32 ;; bbWeight=0.50 PerfScore 8.42 G_M6297_IG06: vmovdqa xmm2, xmmword ptr [rsi] vmovdqa xmm3, xmmword ptr [rsi+16] vpor xmm4, xmm2, xmm3 vptest xmm4, xmm0 jne SHORT G_M6297_IG14 ;; bbWeight=4 PerfScore 33.33 G_M6297_IG07: add rsi, 32 cmp rsi, rax jbe SHORT G_M6297_IG06 ;; bbWeight=4 PerfScore 6.00 G_M6297_IG08: mov eax, edx test al, 16 je SHORT G_M6297_IG10 vmovdqa xmm2, xmmword ptr [rsi] vptest xmm2, xmm0 jne SHORT G_M6297_IG16 ;; bbWeight=0.50 PerfScore 3.75 G_M6297_IG09: add rsi, 16 ;; bbWeight=0.50 PerfScore 0.13 G_M6297_IG10: movzx rax, dl test al, 15 je SHORT G_M6297_IG12 mov rax, rdx and rax, 15 add rax, rsi mov rsi, rax sub rsi, 16 vmovdqu xmm2, xmmword ptr [rsi] vptest xmm2, xmm0 jne SHORT G_M6297_IG16 ;; bbWeight=0.50 PerfScore 4.38 G_M6297_IG11: add rsi, 16 ;; bbWeight=0.50 PerfScore 0.13 G_M6297_IG12: mov rax, rsi sub rax, rdi shr rax, 1 ;; bbWeight=0.50 PerfScore 0.50 G_M6297_IG13: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M6297_IG14: vptest xmm2, xmm0 jne SHORT G_M6297_IG16 ;; bbWeight=0.50 PerfScore 2.00 G_M6297_IG15: add rsi, 16 vmovaps xmm2, xmm3 ;; bbWeight=0.50 PerfScore 0.25 G_M6297_IG16: vpaddusw xmm0, xmm2, xmm1 vpmovmskb ecx, xmm0 ;; bbWeight=0.50 PerfScore 0.67 G_M6297_IG17: and ecx, 0xAAAA xor edx, edx tzcnt edx, ecx mov ecx, edx lea rsi, [rsi+rcx-1] jmp SHORT G_M6297_IG12 ;; bbWeight=0.50 PerfScore 2.88 G_M6297_IG18: call ASCIIUtility:FirstCharInUInt32IsAscii(int):bool test eax, eax je SHORT G_M6297_IG12 add rsi, 2 jmp SHORT G_M6297_IG12 ;; bbWeight=0.50 PerfScore 2.25 G_M6297_IG19: mov eax, edx test al, 4 je SHORT G_M6297_IG21 mov rcx, qword ptr [rdi] mov rdx, 0xD1FFAB1E and rcx, rdx je SHORT G_M6297_IG20 xor eax, eax tzcnt rax, rcx mov ecx, eax sar ecx, 3 movsxd rsi, ecx and rsi, -2 add rsi, rdi jmp SHORT G_M6297_IG12 ;; bbWeight=0.50 PerfScore 6.13 G_M6297_IG20: lea rsi, [rdi+8] ;; bbWeight=0.50 PerfScore 0.25 G_M6297_IG21: test al, 2 je SHORT G_M6297_IG22 mov ecx, dword ptr [rsi] test ecx, 0xD1FFAB1E jne SHORT G_M6297_IG18 add rsi, 4 ;; bbWeight=0.50 PerfScore 2.38 G_M6297_IG22: test al, 1 je G_M6297_IG12 cmp word ptr [rsi], 127 ja G_M6297_IG12 add rsi, 2 jmp G_M6297_IG12 ;; bbWeight=0.50 PerfScore 3.25 RWD00 db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h RWD16 db 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh RWD32 db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h RWD48 db 080h, 07Fh, 080h, 07Fh, 080h, 07Fh, 080h, 07Fh, 080h, 07Fh, 080h, 07Fh, 080h, 07Fh, 080h, 07Fh ; Total bytes of code 377, prolog size 12, PerfScore 123.19, (MethodHash=6495e766) for method ASCIIUtility:GetIndexOfFirstNonAsciiChar_Sse2(long,long):long ; ============================================================ ; Assembly listing for method UTF8Encoding:GetBytes(String,int,int,ref,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T06] ( 4, 3.50) ref -> rdi this class-hnd ; V01 arg1 [V01,T01] ( 6, 5 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 6, 5 ) int -> r8 ; V03 arg3 [V03,T00] ( 7, 6.50) int -> rsi ; V04 arg4 [V04,T09] ( 3, 3 ) ref -> rcx class-hnd ; V05 arg5 [V05,T10] ( 3, 3 ) int -> r9 ; V06 loc0 [V06,T16] ( 2, 2 ) long -> rdx ; V07 loc1 [V07 ] ( 2, 2 ) byref -> [rsp+0x50] must-init pinned ; V08 loc2 [V08,T13] ( 3, 2 ) long -> rbp ; V09 loc3 [V09 ] ( 4, 3 ) ref -> [rsp+0x48] must-init pinned class-hnd ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T19] ( 3, 0 ) int -> rcx ; V12 tmp2 [V12,T17] ( 2, 2 ) long -> rdx ; V13 tmp3 [V13,T20] ( 3, 0 ) int -> rcx ; V14 tmp4 [V14,T14] ( 3, 2 ) int -> rax "Inline return value spill temp" ; V15 tmp5 [V15,T03] ( 4, 7 ) long -> r14 "Inlining Arg" ; V16 tmp6 [V16,T04] ( 4, 7 ) long -> rbp "Inlining Arg" ; V17 tmp7 [V17,T07] ( 3, 5 ) int -> rbx "Inlining Arg" ; V18 tmp8 [V18,T12] ( 3, 2.50) int -> rcx ld-addr-op "Inline ldloca(s) first use temp" ; V19 tmp9 [V19,T15] ( 3, 2 ) int -> rax "Inline stloc first use temp" ; V20 tmp10 [V20 ] ( 2, 2 ) long -> [rsp+0x40] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V21 tmp11 [V21 ] ( 2, 2 ) long -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V22 tmp12 [V22,T08] ( 2, 4 ) long -> rdx "Cast away GC" ; V23 tmp13 [V23,T18] ( 2, 2 ) long -> rbp "Cast away GC" ; V24 cse0 [V24,T11] ( 3, 3 ) int -> rbx "CSE - aggressive" ; V25 rat0 [V25,T05] ( 3, 6 ) long -> rcx "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 88 G_M52176_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 88 xor rax, rax mov qword ptr [rsp+50H], rax mov qword ptr [rsp+48H], rax mov rdi, rcx mov esi, r9d mov rcx, gword ptr [rsp+B0H] mov r9d, dword ptr [rsp+B8H] ;; bbWeight=1 PerfScore 11.00 G_M52176_IG02: test rdx, rdx je G_M52176_IG14 test rcx, rcx je G_M52176_IG14 ;; bbWeight=1 PerfScore 2.50 G_M52176_IG03: mov eax, r8d or eax, esi jl G_M52176_IG17 ;; bbWeight=1 PerfScore 1.50 G_M52176_IG04: mov eax, dword ptr [rdx+8] sub eax, r8d cmp eax, esi jl G_M52176_IG20 ;; bbWeight=1 PerfScore 3.50 G_M52176_IG05: mov ebx, dword ptr [rcx+8] movsxd rax, ebx mov r10d, r9d cmp rax, r10 jl G_M52176_IG21 ;; bbWeight=1 PerfScore 3.75 G_M52176_IG06: add rdx, 12 mov bword ptr [rsp+50H], rdx mov rdx, bword ptr [rsp+50H] mov gword ptr [rsp+48H], rcx mov rcx, gword ptr [rsp+48H] cmp dword ptr [rcx+8], 0 jne SHORT G_M52176_IG08 ;; bbWeight=1 PerfScore 7.25 G_M52176_IG07: xor rbp, rbp jmp SHORT G_M52176_IG09 ;; bbWeight=0.50 PerfScore 1.13 G_M52176_IG08: mov rcx, gword ptr [rsp+48H] cmp dword ptr [rcx+8], 0 jbe G_M52176_IG22 mov rbp, gword ptr [rsp+48H] add rbp, 16 ;; bbWeight=0.50 PerfScore 2.63 G_M52176_IG09: movsxd rcx, r8d lea r14, [rdx+2*rcx] movsxd r15, r9d add rbp, r15 sub ebx, r9d cmp dword ptr [rdi], edi lea rcx, [rsp+40H] mov qword ptr [rsp+20H], rcx lea rcx, [rsp+38H] mov qword ptr [rsp+28H], rcx mov rcx, r14 mov edx, esi mov r8, rbp mov r9d, ebx call Utf8Utility:TranscodeToUtf8(long,int,long,int,byref,byref):int mov rcx, qword ptr [rsp+40H] sub rcx, r14 mov rdx, rcx shr rdx, 63 add rcx, rdx sar rcx, 1 mov rdx, qword ptr [rsp+38H] sub rdx, rbp mov eax, edx cmp ecx, esi jne SHORT G_M52176_IG11 ;; bbWeight=1 PerfScore 15.50 G_M52176_IG10: jmp SHORT G_M52176_IG12 ;; bbWeight=0.50 PerfScore 1.00 G_M52176_IG11: mov dword ptr [rsp+20H], ebx mov dword ptr [rsp+28H], ecx mov dword ptr [rsp+30H], eax mov rcx, rdi mov rdx, r14 mov r8d, esi mov r9, rbp call Encoding:GetBytesWithFallback(long,int,long,int,int,int):int:this ;; bbWeight=0.50 PerfScore 2.50 G_M52176_IG12: nop ;; bbWeight=1 PerfScore 0.25 G_M52176_IG13: add rsp, 88 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 G_M52176_IG14: test rdx, rdx je SHORT G_M52176_IG15 mov ecx, 10 jmp SHORT G_M52176_IG16 ;; bbWeight=0 PerfScore 0.00 G_M52176_IG15: mov ecx, 17 ;; bbWeight=0 PerfScore 0.00 G_M52176_IG16: mov edx, 46 call ThrowHelper:ThrowArgumentNullException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 G_M52176_IG17: test r8d, r8d jl SHORT G_M52176_IG18 mov ecx, 16 jmp SHORT G_M52176_IG19 ;; bbWeight=0 PerfScore 0.00 G_M52176_IG18: mov ecx, 15 ;; bbWeight=0 PerfScore 0.00 G_M52176_IG19: mov edx, 11 call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 G_M52176_IG20: mov ecx, 17 mov edx, 1 call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 G_M52176_IG21: mov ecx, 11 xor edx, edx call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 G_M52176_IG22: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 390, prolog size 24, PerfScore 95.75, (MethodHash=10b0342f) for method UTF8Encoding:GetBytes(String,int,int,ref,int):int:this ; ============================================================ ; Assembly listing for method Utf8Utility:TranscodeToUtf8(long,int,long,int,byref,byref):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 61, 8839.50) long -> rdi ; V01 arg1 [V01,T36] ( 12, 8 ) int -> rbp ; V02 arg2 [V02,T01] ( 62, 9811 ) long -> rsi ; V03 arg3 [V03,T03] ( 47, 8092 ) int -> rbx ; V04 arg4 [V04,T48] ( 2, 1 ) byref -> [rsp+0x80] ; V05 arg5 [V05,T49] ( 2, 1 ) byref -> [rsp+0x88] ; V06 loc0 [V06,T06] ( 10, 1629 ) long -> rax ; V07 loc1 [V07,T51] ( 2, 64.50) simd16 -> mm0 ld-addr-op ; V08 loc2 [V08,T00] ( 47,15504.50) int -> rdx ; V09 loc3 [V09,T40] ( 12, 6 ) int -> rax ; V10 loc4 [V10,T46] ( 5, 2.50) int -> rax ; V11 loc5 [V11,T41] ( 6, 5 ) long -> rax ; V12 loc6 [V12,T34] ( 2, 16 ) int -> rcx ; V13 loc7 [V13,T35] ( 2, 16 ) int -> rdx ; V14 loc8 [V14,T31] ( 3, 24 ) int -> rcx ; V15 loc9 [V15,T21] ( 3, 80 ) int -> rdx ; V16 loc10 [V16,T22] ( 8, 64 ) long -> rcx ; V17 loc11 [V17,T18] ( 6, 216 ) int -> r8 ; V18 loc12 [V18,T50] ( 11, 312 ) simd16 -> mm1 ;* V19 loc13 [V19 ] ( 0, 0 ) simd16 -> zero-ref ;* V20 loc14 [V20 ] ( 0, 0 ) bool -> zero-ref ;* V21 loc15 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ;* V22 loc16 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ;* V23 loc17 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ;* V24 loc18 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 loc19 [V25 ] ( 0, 0 ) int -> zero-ref ;* V26 loc20 [V26 ] ( 0, 0 ) int -> zero-ref ; V27 OutArgs [V27 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V28 tmp1 [V28,T47] ( 3, 2 ) int -> r8 "Inline return value spill temp" ;* V29 tmp2 [V29 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ; V30 tmp3 [V30,T32] ( 3, 24 ) long -> rcx "Inline return value spill temp" ; V31 tmp4 [V31,T28] ( 3, 48 ) long -> rdx "Inlining Arg" ; V32 tmp5 [V32,T29] ( 3, 48 ) long -> rcx "Inlining Arg" ;* V33 tmp6 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V34 tmp7 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V35 tmp8 [V35 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V36 tmp9 [V36,T23] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V37 tmp10 [V37,T24] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V38 tmp11 [V38,T13] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V39 tmp12 [V39,T07] ( 2, 1024 ) int -> rdx "Inline return value spill temp" ;* V40 tmp13 [V40,T08] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V41 tmp14 [V41,T25] ( 2, 64 ) int -> rcx "Inline return value spill temp" ; V42 tmp15 [V42,T19] ( 2, 128 ) int -> r8 "Inlining Arg" ; V43 tmp16 [V43,T26] ( 2, 64 ) int -> rcx "Inline stloc first use temp" ; V44 tmp17 [V44,T20] ( 2, 128 ) ushort -> rcx "Inlining Arg" ;* V45 tmp18 [V45,T27] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V46 tmp19 [V46,T16] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V47 tmp20 [V47,T14] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V48 tmp21 [V48,T17] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V49 tmp22 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V50 tmp23 [V50,T09] ( 2, 1024 ) int -> rcx "Inline stloc first use temp" ; V51 tmp24 [V51,T10] ( 2, 1024 ) int -> r8 "Inline stloc first use temp" ;* V52 tmp25 [V52 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V53 tmp26 [V53 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V54 tmp27 [V54 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V55 tmp28 [V55,T11] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V56 tmp29 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V57 tmp30 [V57,T04] ( 2, 2048 ) int -> rcx "Inline stloc first use temp" ; V58 tmp31 [V58,T05] ( 2, 2048 ) int -> r8 "Inline stloc first use temp" ;* V59 tmp32 [V59 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V60 tmp33 [V60,T15] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V61 tmp34 [V61,T12] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V62 tmp35 [V62,T42] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V63 tmp36 [V63,T43] ( 2, 4 ) int -> rdx "Inline return value spill temp" ; V64 tmp37 [V64,T33] ( 5, 20 ) int -> rdx "Inlining Arg" ; V65 tmp38 [V65,T37] ( 4, 8 ) int -> rcx "Inline stloc first use temp" ; V66 tmp39 [V66,T44] ( 2, 4 ) int -> r8 "Inline stloc first use temp" ; V67 tmp40 [V67,T38] ( 4, 8 ) int -> r9 "Inline stloc first use temp" ; V68 tmp41 [V68,T39] ( 4, 8 ) int -> rdx "Inline stloc first use temp" ;* V69 tmp42 [V69 ] ( 0, 0 ) long -> zero-ref V21._00(offs=0x00) P-INDEP "field V21._00 (fldOffset=0x0)" ;* V70 tmp43 [V70 ] ( 0, 0 ) long -> zero-ref V22._00(offs=0x00) P-INDEP "field V22._00 (fldOffset=0x0)" ;* V71 tmp44 [V71 ] ( 0, 0 ) long -> zero-ref V23._00(offs=0x00) P-INDEP "field V23._00 (fldOffset=0x0)" ; V72 rat0 [V72,T30] ( 3, 48 ) long -> rdx "ReplaceWithLclVar is creating a new local variable" ; V73 rat1 [V73,T45] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 40 G_M37992_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 vzeroupper mov rdi, rcx mov ebp, edx mov rsi, r8 mov ebx, r9d ;; bbWeight=1 PerfScore 8.25 G_M37992_IG02: cmp ebp, ebx jle SHORT G_M37992_IG04 ;; bbWeight=1 PerfScore 1.25 G_M37992_IG03: mov r8d, ebx jmp SHORT G_M37992_IG05 ;; bbWeight=0.50 PerfScore 1.13 G_M37992_IG04: mov r8d, ebp ;; bbWeight=0.50 PerfScore 0.13 G_M37992_IG05: mov r8d, r8d mov rcx, rdi mov rdx, rsi call ASCIIUtility:NarrowUtf16ToAscii(long,long,long):long lea rdi, [rdi+2*rax] add rsi, rax cmp eax, ebp jne SHORT G_M37992_IG08 ;; bbWeight=1 PerfScore 3.75 G_M37992_IG06: mov r14, bword ptr [rsp+80H] mov qword ptr [r14], rdi mov r15, bword ptr [rsp+88H] mov qword ptr [r15], rsi xor eax, eax ;; bbWeight=0.50 PerfScore 2.13 G_M37992_IG07: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M37992_IG08: sub ebp, eax sub ebx, eax cmp ebp, 2 jl G_M37992_IG35 mov eax, ebp lea rax, [rdi+2*rax-4] vmovupd xmm0, xmmword ptr [reloc @RWD16] ;; bbWeight=0.50 PerfScore 3.00 G_M37992_IG09: mov edx, dword ptr [rdi] ;; bbWeight=4 PerfScore 8.00 G_M37992_IG10: test edx, 0xD1FFAB1E jne G_M37992_IG18 ;; bbWeight=32 PerfScore 40.00 G_M37992_IG11: cmp ebx, 2 jl G_M37992_IG37 mov ecx, edx shr ecx, 8 or ecx, edx mov word ptr [rsi], cx add rdi, 4 add rsi, 2 add ebx, -2 mov rdx, rax sub rdx, rdi mov rcx, rdx shr rcx, 63 add rdx, rcx sar rdx, 1 add edx, 2 movsxd rcx, ebx cmp rdx, rcx jle SHORT G_M37992_IG12 jmp SHORT G_M37992_IG13 ;; bbWeight=8 PerfScore 102.00 G_M37992_IG12: mov rcx, rdx ;; bbWeight=8 PerfScore 2.00 G_M37992_IG13: mov edx, ecx shr edx, 3 xor r8d, r8d test edx, edx jbe SHORT G_M37992_IG15 ;; bbWeight=8 PerfScore 30.00 G_M37992_IG14: vmovupd xmm1, xmmword ptr [rdi] vptest xmm1, xmm0 jne SHORT G_M37992_IG16 vpackuswb xmm1, xmm1, xmm1 vmovq xmmword ptr [rsi], xmm1 add rdi, 16 add rsi, 8 inc r8d cmp r8d, edx jb SHORT G_M37992_IG14 ;; bbWeight=64 PerfScore 768.00 G_M37992_IG15: shl r8d, 3 sub ebx, r8d test cl, 4 je G_M37992_IG33 mov rcx, qword ptr [rdi] mov rdx, 0xD1FFAB1E test rcx, rdx jne SHORT G_M37992_IG17 vmovd xmm1, rcx vpackuswb xmm1, xmm1, xmm1 vmovd ecx, xmm1 mov dword ptr [rsi], ecx add rdi, 8 add rsi, 4 add ebx, -4 jmp G_M37992_IG33 ;; bbWeight=8 PerfScore 110.00 G_M37992_IG16: mov edx, r8d shl edx, 3 sub ebx, edx vmovd rcx, xmm1 mov rdx, 0xD1FFAB1E test rcx, rdx jne SHORT G_M37992_IG17 vpackuswb xmm2, xmm1, xmm1 vmovd ecx, xmm2 mov dword ptr [rsi], ecx add rdi, 8 add rsi, 4 add ebx, -4 vpextrq ecx, xmm1, 1 ;; bbWeight=8 PerfScore 86.00 G_M37992_IG17: mov edx, ecx test edx, 0xD1FFAB1E jne SHORT G_M37992_IG18 mov r8d, edx shr r8d, 8 or r8d, edx mov word ptr [rsi], r8w add rdi, 4 add rsi, 2 add ebx, -2 shr rcx, 32 mov edx, ecx ;; bbWeight=8 PerfScore 64.00 G_M37992_IG18: test edx, 0xFF80 jne SHORT G_M37992_IG20 ;; bbWeight=128 PerfScore 160.00 G_M37992_IG19: test ebx, ebx je G_M37992_IG45 mov byte ptr [rsi], dl add rdi, 2 inc rsi dec ebx cmp rdi, rax ja G_M37992_IG34 mov edx, dword ptr [rdi] ;; bbWeight=32 PerfScore 200.00 G_M37992_IG20: test edx, 0xF800 jne G_M37992_IG26 ;; bbWeight=128 PerfScore 160.00 G_M37992_IG21: lea ecx, [rdx+D1FFAB1EH] cmp ecx, 0xD1FFAB1E ja SHORT G_M37992_IG23 ;; bbWeight=512 PerfScore 896.00 G_M37992_IG22: cmp ebx, 4 jl G_M37992_IG37 mov ecx, edx shr ecx, 6 and ecx, 0xD1FFAB1E shl edx, 8 and edx, 0xD1FFAB1E lea edx, [rcx+rdx+D1FFAB1EH] mov dword ptr [rsi], edx add rdi, 4 add rsi, 4 add ebx, -4 cmp rdi, rax ja G_M37992_IG34 mov edx, dword ptr [rdi] lea ecx, [rdx-128] and ecx, 0xFFFF cmp ecx, 0x780 jb SHORT G_M37992_IG21 jmp G_M37992_IG10 ;; bbWeight=512 PerfScore 8192.00 G_M37992_IG23: cmp ebx, 2 jl G_M37992_IG45 mov ecx, edx shl ecx, 2 and ecx, 0x1F00 mov r8d, edx and r8d, 63 lea ecx, [rcx+r8+C080H] movzx rcx, cx ror cx, 8 movzx rcx, cx movzx rcx, cx mov word ptr [rsi], cx cmp edx, 0xD1FFAB1E jae SHORT G_M37992_IG25 ;; bbWeight=32 PerfScore 328.00 G_M37992_IG24: cmp ebx, 3 jl G_M37992_IG36 shr edx, 16 mov byte ptr [rsi+2], dl add rdi, 4 add rsi, 3 add ebx, -3 jmp G_M37992_IG33 ;; bbWeight=32 PerfScore 224.00 G_M37992_IG25: add rdi, 2 add rsi, 2 add ebx, -2 cmp rdi, rax ja G_M37992_IG34 mov edx, dword ptr [rdi] ;; bbWeight=32 PerfScore 128.00 G_M37992_IG26: lea ecx, [rdx-D800H] test ecx, 0xF800 je G_M37992_IG31 test edx, 0xD1FFAB1E je G_M37992_IG28 ;; bbWeight=1024 PerfScore 3072.00 G_M37992_IG27: lea ecx, [rdx+D1FFAB1EH] cmp ecx, 0xD1FFAB1E jb G_M37992_IG28 cmp ebx, 6 jl G_M37992_IG28 mov ecx, edx shl ecx, 2 and ecx, 0x3F00 mov r8d, edx and r8d, 63 shl r8d, 16 or ecx, r8d mov r8d, edx shr r8d, 4 and r8d, 0xD1FFAB1E mov r9d, edx shr r9d, 12 and r9d, 15 or r8d, r9d add ecx, r8d add ecx, 0xD1FFAB1E mov dword ptr [rsi], ecx mov ecx, edx shr ecx, 22 and ecx, 63 shr edx, 8 and edx, 0x3F00 add edx, ecx add edx, 0x8080 mov word ptr [rsi+4], dx add rdi, 4 add rsi, 6 add ebx, -6 cmp rdi, rax ja G_M37992_IG34 mov edx, dword ptr [rdi] test edx, 0xF800 jne G_M37992_IG26 jmp G_M37992_IG10 ;; bbWeight=512 PerfScore 14592.00 G_M37992_IG28: cmp ebx, 3 jl G_M37992_IG45 mov ecx, edx shl ecx, 2 and ecx, 0x3F00 movzx r8, dx shr r8d, 12 add ecx, r8d add ecx, 0x80E0 mov word ptr [rsi], cx mov ecx, edx and ecx, 63 or ecx, -128 mov byte ptr [rsi+2], cl add rdi, 2 add rsi, 3 add ebx, -3 cmp edx, 0xD1FFAB1E jae SHORT G_M37992_IG30 ;; bbWeight=1024 PerfScore 11520.00 G_M37992_IG29: test ebx, ebx je G_M37992_IG45 shr edx, 16 mov byte ptr [rsi], dl add rdi, 2 inc rsi dec ebx cmp rdi, rax ja G_M37992_IG34 mov edx, dword ptr [rdi] test edx, 0xF800 jne G_M37992_IG26 jmp G_M37992_IG10 ;; bbWeight=512 PerfScore 5888.00 G_M37992_IG30: cmp rdi, rax ja SHORT G_M37992_IG34 mov edx, dword ptr [rdi] jmp G_M37992_IG18 ;; bbWeight=16 PerfScore 84.00 G_M37992_IG31: lea ecx, [rdx+D1FFAB1EH] test ecx, 0xD1FFAB1E jne G_M37992_IG46 ;; bbWeight=2 PerfScore 3.50 G_M37992_IG32: cmp ebx, 4 jl G_M37992_IG45 add edx, 64 mov ecx, edx and ecx, 0xD1FFAB1E bswap ecx rol ecx, 16 mov r8d, edx and r8d, 252 shl r8d, 6 mov r9d, edx shr r9d, 6 and r9d, 0xD1FFAB1E or r9d, r8d and edx, 3 shl edx, 20 or edx, 0xD1FFAB1E or edx, ecx or edx, r9d mov dword ptr [rsi], edx add rdi, 4 add rsi, 4 add ebx, -4 ;; bbWeight=2 PerfScore 29.00 G_M37992_IG33: cmp rdi, rax jbe G_M37992_IG09 ;; bbWeight=4 PerfScore 5.00 G_M37992_IG34: sub rax, rdi mov rdx, rax shr rdx, 63 add rax, rdx sar rax, 1 mov ebp, eax add ebp, 2 ;; bbWeight=0.50 PerfScore 1.88 G_M37992_IG35: test ebp, ebp je G_M37992_IG43 movzx rax, word ptr [rdi] jmp SHORT G_M37992_IG38 ;; bbWeight=0.50 PerfScore 2.63 G_M37992_IG36: add rdi, 2 add rsi, 2 jmp G_M37992_IG45 ;; bbWeight=0.50 PerfScore 1.25 G_M37992_IG37: mov eax, edx and eax, 0xFFFF ;; bbWeight=0.50 PerfScore 0.25 G_M37992_IG38: cmp eax, 127 ja SHORT G_M37992_IG39 test ebx, ebx je G_M37992_IG45 mov byte ptr [rsi], al add rdi, 2 inc rsi jmp SHORT G_M37992_IG42 ;; bbWeight=0.50 PerfScore 3.00 G_M37992_IG39: cmp eax, 0x800 jae SHORT G_M37992_IG40 cmp ebx, 2 jl SHORT G_M37992_IG45 mov edx, eax and edx, 63 or edx, -128 mov byte ptr [rsi+1], dl shr eax, 6 or eax, -64 mov byte ptr [rsi], al add rdi, 2 add rsi, 2 jmp SHORT G_M37992_IG42 ;; bbWeight=0.50 PerfScore 5.00 G_M37992_IG40: lea edx, [rax-D800H] cmp edx, 0x7FF jbe SHORT G_M37992_IG41 cmp ebx, 3 jl SHORT G_M37992_IG45 mov edx, eax and edx, 63 or edx, -128 mov byte ptr [rsi+2], dl mov edx, eax shr edx, 6 and edx, 63 or edx, -128 mov byte ptr [rsi+1], dl shr eax, 12 or eax, -32 mov byte ptr [rsi], al add rdi, 2 add rsi, 3 jmp SHORT G_M37992_IG42 ;; bbWeight=0.50 PerfScore 7.13 G_M37992_IG41: cmp eax, 0xDBFF ja SHORT G_M37992_IG46 jmp SHORT G_M37992_IG44 ;; bbWeight=0.50 PerfScore 1.63 G_M37992_IG42: cmp ebp, 1 jg SHORT G_M37992_IG45 ;; bbWeight=0.50 PerfScore 0.63 G_M37992_IG43: xor eax, eax jmp SHORT G_M37992_IG47 ;; bbWeight=0.50 PerfScore 1.13 G_M37992_IG44: mov eax, 2 jmp SHORT G_M37992_IG47 ;; bbWeight=0.50 PerfScore 1.13 G_M37992_IG45: mov eax, 1 jmp SHORT G_M37992_IG47 ;; bbWeight=0.50 PerfScore 1.13 G_M37992_IG46: mov eax, 3 ;; bbWeight=0.50 PerfScore 0.13 G_M37992_IG47: mov r14, bword ptr [rsp+80H] mov qword ptr [r14], rdi mov r15, bword ptr [rsp+88H] mov qword ptr [r15], rsi ;; bbWeight=0.50 PerfScore 2.00 G_M37992_IG48: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 RWD00 db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h RWD16 db 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh ; Total bytes of code 1360, prolog size 26, PerfScore 46881.15, (MethodHash=750d6b97) for method Utf8Utility:TranscodeToUtf8(long,int,long,int,byref,byref):int ; ============================================================ ; Assembly listing for method ASCIIUtility:NarrowUtf16ToAscii(long,long,long):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 7, 8 ) long -> rdi ; V01 arg1 [V01,T02] ( 8, 8.50) long -> rsi ; V02 arg2 [V02,T05] ( 5, 4 ) long -> rbx ; V03 loc0 [V03,T00] ( 24, 30.50) long -> rbp ; V04 loc1 [V04,T04] ( 14, 7 ) int -> r15 ;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref ; V06 loc3 [V06,T01] ( 7, 14 ) long -> r14 ; V07 loc4 [V07,T09] ( 5, 2.50) long -> rbx ;* V08 loc5 [V08 ] ( 0, 0 ) int -> zero-ref ;* V09 loc6 [V09 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op ;* V10 loc7 [V10 ] ( 0, 0 ) long -> zero-ref ;* V11 loc8 [V11 ] ( 0, 0 ) simd32 -> zero-ref ;* V12 loc9 [V12 ] ( 0, 0 ) simd32 -> zero-ref ;* V13 loc10 [V13 ] ( 0, 0 ) simd32 -> zero-ref ; V14 loc11 [V14,T06] ( 2, 4.50) long -> rax ; V15 OutArgs [V15 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V16 tmp1 [V16 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V17 tmp2 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V18 tmp3 [V18,T10] ( 3, 12 ) simd16 -> mm0 "Inline stloc first use temp" ; V19 tmp4 [V19,T11] ( 2, 8 ) simd16 -> mm0 "Inline stloc first use temp" ;* V20 tmp5 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V21 tmp6 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V22 tmp7 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V23 tmp8 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V24 tmp9 [V24,T07] ( 3, 3 ) byref -> rax "Inlining Arg" ; V25 tmp10 [V25,T08] ( 3, 3 ) byref -> rcx "Inlining Arg" ; ; Lcl frame size = 40 G_M50167_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 vzeroupper mov rdi, rcx mov rsi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 8.00 G_M50167_IG02: xor rbp, rbp cmp rbx, 32 jb SHORT G_M50167_IG05 ;; bbWeight=1 PerfScore 1.50 G_M50167_IG03: mov r14, qword ptr [rdi] mov rcx, 0xD1FFAB1E test r14, rcx jne G_M50167_IG11 ;; bbWeight=0.50 PerfScore 1.75 G_M50167_IG04: mov rcx, rdi mov rdx, rsi mov r8, rbx call ASCIIUtility:NarrowUtf16ToAscii_Sse2(long,long,long):long mov rbp, rax ;; bbWeight=0.50 PerfScore 1.00 G_M50167_IG05: sub rbx, rbp cmp rbx, 4 jb SHORT G_M50167_IG07 lea rax, [rbp+rbx-4] ;; bbWeight=0.50 PerfScore 1.75 G_M50167_IG06: mov r14, qword ptr [rdi+2*rbp] mov rcx, 0xD1FFAB1E test r14, rcx jne SHORT G_M50167_IG11 vmovd xmm0, r14 vpackuswb xmm0, xmm0, xmm0 vmovd ecx, xmm0 mov dword ptr [rsi+rbp], ecx add rbp, 4 cmp rbp, rax jbe SHORT G_M50167_IG06 ;; bbWeight=4 PerfScore 36.00 G_M50167_IG07: test bl, 2 je SHORT G_M50167_IG08 mov r15d, dword ptr [rdi+2*rbp] test r15d, 0xD1FFAB1E jne SHORT G_M50167_IG12 lea rax, [rsi+rbp] mov byte ptr [rax], r15b shr r15d, 16 mov byte ptr [rax+1], r15b add rbp, 2 ;; bbWeight=0.50 PerfScore 4.63 G_M50167_IG08: test bl, 1 je SHORT G_M50167_IG09 movzx r15, word ptr [rdi+2*rbp] cmp r15d, 127 ja SHORT G_M50167_IG09 mov byte ptr [rsi+rbp], r15b inc rbp ;; bbWeight=0.50 PerfScore 2.88 G_M50167_IG09: mov rax, rbp ;; bbWeight=1 PerfScore 0.25 G_M50167_IG10: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 G_M50167_IG11: mov r15d, r14d test r15d, 0xD1FFAB1E jne SHORT G_M50167_IG12 lea rcx, [rsi+rbp] mov byte ptr [rcx], r15b mov eax, r15d shr eax, 16 mov byte ptr [rcx+1], al shr r14, 32 mov r15d, r14d add rbp, 2 ;; bbWeight=0.50 PerfScore 4.38 G_M50167_IG12: mov ecx, r15d call ASCIIUtility:FirstCharInUInt32IsAscii(int):bool test eax, eax je SHORT G_M50167_IG09 mov byte ptr [rsi+rbp], r15b inc rbp jmp SHORT G_M50167_IG09 ;; bbWeight=0.50 PerfScore 2.88 ; Total bytes of code 265, prolog size 24, PerfScore 95.95, (MethodHash=90d73c08) for method ASCIIUtility:NarrowUtf16ToAscii(long,long,long):long ; ============================================================ ; Assembly listing for method EventProvider:.ctor(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T00] ( 4, 3.50) int -> rdx ; V02 loc0 [V02,T03] ( 4, 2.50) ref -> rdx class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 2 ) ref -> rdx class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T02] ( 3, 3 ) ref -> rdx class-hnd exact "NewObj constructor temp" ; V06 tmp3 [V06,T05] ( 2, 2 ) ref -> rdx class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 32 G_M21191_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M21191_IG02: cmp edx, 1 je SHORT G_M21191_IG04 ;; bbWeight=1 PerfScore 1.25 G_M21191_IG03: cmp edx, 2 je SHORT G_M21191_IG05 jmp SHORT G_M21191_IG06 ;; bbWeight=0.50 PerfScore 1.63 G_M21191_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdx, rax jmp SHORT G_M21191_IG07 ;; bbWeight=0.50 PerfScore 1.75 G_M21191_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdx, rax xor rcx, rcx mov qword ptr [rdx+8], rcx jmp SHORT G_M21191_IG07 ;; bbWeight=0.50 PerfScore 2.38 G_M21191_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdx, rax ;; bbWeight=0.50 PerfScore 0.75 G_M21191_IG07: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M21191_IG08: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 100, prolog size 5, PerfScore 22.75, (MethodHash=50caad38) for method EventProvider:.ctor(int):this ; ============================================================ ; Assembly listing for method EventProvider:Register(EventSource):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 loc0 [V02,T03] ( 3, 2 ) int -> rsi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T04] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V07 tmp4 [V07,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M64520_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M64520_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax test rsi, rsi je SHORT G_M64520_IG05 ;; bbWeight=1 PerfScore 2.75 G_M64520_IG03: lea rcx, bword ptr [rbx+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx lea rcx, bword ptr [rsi+16] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov r8, gword ptr [rsi+16] mov rcx, rsi mov rdx, rdi call EventProvider:EventRegister(EventSource,EtwEnableCallback):int:this mov esi, eax test esi, esi jne SHORT G_M64520_IG06 ;; bbWeight=1 PerfScore 9.75 G_M64520_IG04: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M64520_IG05: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 G_M64520_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, esi xor rdx, rdx call Kernel32:GetMessage(int,long):String mov rdx, rax mov rcx, rdi call ArgumentException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 156, prolog size 7, PerfScore 34.60, (MethodHash=a1c103f7) for method EventProvider:Register(EventSource):this ; ============================================================ ; Assembly listing for method EventProvider:EventRegister(EventSource,EtwEnableCallback):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 5, 5 ) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 4, 4 ) ref -> rbx class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 48 G_M9039_IG01: push rdi push rsi push rbx sub rsp, 48 vzeroupper mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M9039_IG02: mov rdx, gword ptr [rdi+8] lea rcx, bword ptr [rsi+32] call CORINFO_HELP_ASSIGN_REF vmovdqu xmm0, xmmword ptr [rdi+160] vmovdqu xmmword ptr [rsi+72], xmm0 lea rcx, bword ptr [rsi+16] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+40] mov bword ptr [rsp+20H], rcx mov rcx, gword ptr [rsi+8] mov rdx, rdi mov r8, rbx mov r11, 0xD1FFAB1E xor r9, r9 call [IEventProvider:EventRegister(EventSource,EtwEnableCallback,long,byref):int:this] nop ;; bbWeight=1 PerfScore 16.00 G_M9039_IG03: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 104, prolog size 10, PerfScore 34.35, (MethodHash=8706dcb0) for method EventProvider:EventRegister(EventSource,EtwEnableCallback):int:this ; ============================================================ ; Assembly listing for method EtwEventProvider:System.Diagnostics.Tracing.IEventProvider.EventRegister(EventSource,EtwEnableCallback,long,byref):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T01] ( 3, 3 ) ref -> r8 class-hnd ; V03 arg3 [V03,T02] ( 3, 3 ) long -> r9 ; V04 arg4 [V04,T03] ( 1, 1 ) byref -> [rbp+0x30] ; V05 loc0 [V05 ] ( 2, 2 ) struct (16) [rbp-0x10] do-not-enreg[XSB] addr-exposed ld-addr-op ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 48 G_M39192_IG01: push rbp sub rsp, 48 vzeroupper lea rbp, [rsp+30H] ;; bbWeight=1 PerfScore 2.75 G_M39192_IG02: vmovdqu xmm0, xmmword ptr [rdx+160] vmovdqu xmmword ptr [rbp-10H], xmm0 lea rcx, [rbp-10H] mov rdx, r8 mov r8, r9 mov r9, bword ptr [rbp+30H] call Advapi32:EventRegister(byref,EtwEnableCallback,long,byref):int nop ;; bbWeight=1 PerfScore 6.25 G_M39192_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 52, prolog size 13, PerfScore 16.40, (MethodHash=cb5666e7) for method EtwEventProvider:System.Diagnostics.Tracing.IEventProvider.EventRegister(EventSource,EtwEnableCallback,long,byref):int:this ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(byref,EtwEnableCallback,long,byref):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 3 ) byref -> rdi ; V01 arg1 [V01,T00] ( 6, 4.50) ref -> [rbp+0x18] EH do-not-enreg[] class-hnd EH-live ; V02 arg2 [V02,T04] ( 3, 3 ) long -> rbx ; V03 arg3 [V03,T02] ( 4, 4 ) byref -> rsi ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref ; V05 loc1 [V05 ] ( 2, 2 ) byref -> [rbp-0x40] must-init pinned ; V06 loc2 [V06,T13] ( 3, 2.50) long -> rdx ;* V07 loc3 [V07 ] ( 0, 0 ) long -> zero-ref ; V08 loc4 [V08 ] ( 1, 1 ) byref -> [rbp-0x48] must-init pinned ;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref ; V10 loc6 [V10,T14] ( 2, 2 ) int -> rax ; V11 loc7 [V11,T15] ( 2, 2 ) int -> rax ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V13 tmp1 [V13 ] ( 3, 3 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "stub argument" ; V14 tmp2 [V14,T05] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V15 tmp3 [V15,T06] ( 2, 4 ) int -> rax "Single return block return value" ; V16 FramesRoot [V16,T01] ( 6, 6 ) long -> r14 "Pinvoke FrameListRoot" ; V17 PInvokeFrame [V17 ] ( 8, 8 ) blk (72) [rbp-0x98] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V18 tmp6 [V18,T07] ( 2, 4 ) long -> rcx "Cast away GC" ; V19 tmp7 [V19,T08] ( 2, 4 ) long -> r9 "Cast away GC" ; V20 tmp8 [V20,T09] ( 2, 4 ) long -> rcx "argument with side effect" ; V21 tmp9 [V21,T10] ( 2, 4 ) long -> rdx "argument with side effect" ; V22 tmp10 [V22,T11] ( 2, 4 ) long -> r8 "argument with side effect" ; V23 tmp11 [V23,T12] ( 2, 4 ) long -> r9 "argument with side effect" ; V24 PSPSym [V24 ] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[X] addr-exposed "PSPSym" ;* V25 tmp13 [V25 ] ( 0, 0 ) ref -> zero-ref "optAddCopies" ; ; Lcl frame size = 136 G_M57742_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] mov qword ptr [rbp-50H], r10 xor rbx, rbx mov qword ptr [rbp-40H], rbx mov qword ptr [rbp-48H], rbx mov qword ptr [rbp-A0H], rsp mov gword ptr [rbp+18H], rdx mov rdi, rcx mov rbx, r8 mov rsi, r9 ;; bbWeight=1 PerfScore 14.75 G_M57742_IG02: lea rcx, [rbp-90H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r14, rax mov rcx, rsp mov qword ptr [rbp-70H], rcx mov rcx, rbp mov qword ptr [rbp-60H], rcx lea rcx, bword ptr [rbp-90H] mov qword ptr [r14+16], rcx ;; bbWeight=1 PerfScore 6.00 G_M57742_IG03: mov bword ptr [rbp-40H], rdi xor rdx, rdx cmp gword ptr [rbp+18H], 0 je SHORT G_M57742_IG05 ;; bbWeight=1 PerfScore 3.25 G_M57742_IG04: mov rcx, gword ptr [rbp+18H] call Marshal:GetFunctionPointerForDelegate(Delegate):long mov rdx, rax ;; bbWeight=0.50 PerfScore 1.13 G_M57742_IG05: mov bword ptr [rbp-48H], rsi mov rcx, qword ptr [rbp-50H] mov rcx, qword ptr [rcx+32] mov rax, qword ptr [rcx] mov rcx, bword ptr [rbp-40H] mov r8, rbx mov r9, rsi mov r10, qword ptr [rbp-50H] mov qword ptr [rbp-80H], r10 lea r10, G_M57742_IG07 mov qword ptr [rbp-68H], r10 mov byte ptr [r14+12], 0 ;; bbWeight=1 PerfScore 12.50 G_M57742_IG06: call rax ;; bbWeight=1 PerfScore 3.00 G_M57742_IG07: mov byte ptr [r14+12], 1 cmp dword ptr [(reloc)], 0 je SHORT G_M57742_IG08 call [CORINFO_HELP_STOP_FOR_GC] ;; bbWeight=1 PerfScore 7.00 G_M57742_IG08: nop ;; bbWeight=1 PerfScore 0.25 G_M57742_IG09: mov rdx, bword ptr [rbp-88H] mov qword ptr [r14+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M57742_IG10: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M57742_IG11: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+C0H] ;; bbWeight=0 PerfScore 0.00 G_M57742_IG12: add rsp, 40 pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 278, prolog size 61, PerfScore 83.18, (MethodHash=61921e71) for method ILStubClass:IL_STUB_PInvoke(byref,EtwEnableCallback,long,byref):int ; ============================================================ ; Assembly listing for method Marshal:GetFunctionPointerForDelegate(Delegate):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rcx class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M47341_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M47341_IG02: test rcx, rcx je SHORT G_M47341_IG04 ;; bbWeight=1 PerfScore 1.25 G_M47341_IG03: add rsp, 32 pop rsi jmp Marshal:GetFunctionPointerForDelegateInternal(Delegate):long ;; bbWeight=1 PerfScore 2.75 G_M47341_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1BEC mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 78, prolog size 5, PerfScore 13.05, (MethodHash=4c944712) for method Marshal:GetFunctionPointerForDelegate(Delegate):long ; ============================================================ ; Assembly listing for method EventListener:get_EventListenersLock():Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 3, 3 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 32 G_M7775_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M7775_IG02: mov rcx, 0xD1FFAB1E mov edx, 0x74B call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E cmp gword ptr [rcx], 0 jne SHORT G_M7775_IG04 ;; bbWeight=1 PerfScore 4.75 G_M7775_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi mov edx, 2 call List`1:.ctor(int):this mov rdx, rsi mov rcx, 0xD1FFAB1E xor r8, r8 call Interlocked:CompareExchange(byref,Object,Object):Object ;; bbWeight=0.50 PerfScore 2.38 G_M7775_IG04: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=1 PerfScore 2.25 G_M7775_IG05: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 112, prolog size 5, PerfScore 23.58, (MethodHash=4befe1a0) for method EventListener:get_EventListenersLock():Object ; ============================================================ ; Assembly listing for method EventListener:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M1236_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M1236_IG02: mov rcx, 0xD1FFAB1E mov edx, 0x767 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] call GC:KeepAlive(Object) nop ;; bbWeight=1 PerfScore 5.00 G_M1236_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 55, prolog size 10, PerfScore 14.25, (MethodHash=c455fb2b) for method EventListener:.cctor() ; ============================================================ ; Assembly listing for method NativeRuntimeEventSource:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3146_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3146_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call NativeRuntimeEventSource:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3146_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=0d48f3b5) for method NativeRuntimeEventSource:.cctor() ; ============================================================ ; Assembly listing for method NativeRuntimeEventSource:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 13, 26 ) struct (16) [rsp+0x48] do-not-enreg[SFB] "NewObj constructor temp" ; V03 tmp2 [V03,T03] ( 2, 4 ) struct (16) [rsp+0x38] do-not-enreg[SB] "Inlining Arg" ; V04 tmp3 [V04 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V05 tmp4 [V05,T02] ( 2, 4 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 88 G_M46805_IG01: sub rsp, 88 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M46805_IG02: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+48H], xmm0 mov dword ptr [rsp+48H], 0xD1FFAB1E mov word ptr [rsp+4CH], -0x4404 mov word ptr [rsp+4EH], 0x5662 mov byte ptr [rsp+50H], 5 mov byte ptr [rsp+51H], 72 mov byte ptr [rsp+52H], 29 mov byte ptr [rsp+53H], 68 mov byte ptr [rsp+54H], 250 mov byte ptr [rsp+55H], 217 mov byte ptr [rsp+56H], 187 mov byte ptr [rsp+57H], 86 vmovupd xmm0, xmmword ptr [rsp+48H] vmovupd xmmword ptr [rsp+38H], xmm0 vmovupd xmm0, xmmword ptr [rsp+38H] vmovupd xmmword ptr [rsp+28H], xmm0 xor rdx, rdx mov gword ptr [rsp+20H], rdx lea rdx, bword ptr [rsp+28H] mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov r9d, 4 call EventSource:.ctor(Guid,String,int,ref):this nop ;; bbWeight=1 PerfScore 27.83 G_M46805_IG03: add rsp, 88 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 145, prolog size 7, PerfScore 45.43, (MethodHash=5e24492a) for method NativeRuntimeEventSource:.ctor():this ; ============================================================ ; Assembly listing for method List`1:.ctor(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 4 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 5, 4.50) int -> rsi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V04 tmp2 [V04,T04] ( 3, 2 ) long -> [rsp+0x28] "spilling Runtime Lookup tree" ; V05 tmp3 [V05,T03] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V06 tmp4 [V06,T05] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V07 cse0 [V07,T06] ( 3, 1.25) long -> rdx "CSE - moderate" ; V08 cse1 [V08,T07] ( 3, 1.25) long -> rdx "CSE - moderate" ; ; Lcl frame size = 56 G_M12153_IG01: push rdi push rsi sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rdi, rcx mov esi, edx ;; bbWeight=1 PerfScore 3.75 G_M12153_IG02: test esi, esi jl G_M12153_IG14 ;; bbWeight=1 PerfScore 1.25 G_M12153_IG03: test esi, esi jne SHORT G_M12153_IG09 ;; bbWeight=1 PerfScore 1.25 G_M12153_IG04: mov rcx, qword ptr [rdi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M12153_IG06 ;; bbWeight=0.50 PerfScore 4.63 G_M12153_IG05: jmp SHORT G_M12153_IG07 ;; bbWeight=0.25 PerfScore 0.50 G_M12153_IG06: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M12153_IG07: mov rcx, rdx call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov rdx, gword ptr [rax] lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 2.50 G_M12153_IG08: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M12153_IG09: mov rcx, qword ptr [rdi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M12153_IG11 ;; bbWeight=0.50 PerfScore 4.63 G_M12153_IG10: mov qword ptr [rsp+28H], rdx jmp SHORT G_M12153_IG12 ;; bbWeight=0.25 PerfScore 0.75 G_M12153_IG11: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+28H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M12153_IG12: movsxd rdx, esi mov rcx, qword ptr [rsp+28H] call CORINFO_HELP_NEWARR_1_OBJ lea rcx, bword ptr [rdi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 2.13 G_M12153_IG13: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M12153_IG14: mov ecx, 22 mov edx, 11 call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 190, prolog size 11, PerfScore 43.56, (MethodHash=b98bd086) for method List`1:.ctor(int):this ; ============================================================ ; Assembly listing for method EventPipeEventProvider:System.Diagnostics.Tracing.IEventProvider.EventRegister(EventSource,EtwEnableCallback,long,byref):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r8 class-hnd ;* V03 arg3 [V03 ] ( 0, 0 ) long -> zero-ref ; V04 arg4 [V04,T05] ( 1, 0.50) byref -> [rbp+0x30] ; V05 loc0 [V05,T04] ( 3, 2.50) int -> rdi ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T03] ( 2, 4 ) long -> rax ld-addr-op "Inlining Arg" ;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; ; Lcl frame size = 32 G_M19262_IG01: push rbp push rdi push rsi sub rsp, 32 lea rbp, [rsp+30H] mov rsi, rcx ;; bbWeight=1 PerfScore 4.00 G_M19262_IG02: xor edi, edi mov rcx, gword ptr [rdx+8] mov rdx, r8 call EventPipeInternal:CreateProvider(String,EtwEnableCallback):long mov qword ptr [rsi+8], rax mov rax, qword ptr [rsi+8] test rax, rax je SHORT G_M19262_IG04 ;; bbWeight=1 PerfScore 7.75 G_M19262_IG03: mov rsi, bword ptr [rbp+30H] mov qword ptr [rsi], 1 jmp SHORT G_M19262_IG05 ;; bbWeight=0.50 PerfScore 2.00 G_M19262_IG04: mov edi, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M19262_IG05: mov eax, edi ;; bbWeight=1 PerfScore 0.25 G_M19262_IG06: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 ; Total bytes of code 70, prolog size 12, PerfScore 24.13, (MethodHash=2972b4c1) for method EventPipeEventProvider:System.Diagnostics.Tracing.IEventProvider.EventRegister(EventSource,EtwEnableCallback,long,byref):int:this ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(String,EtwEnableCallback):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 5, 4 ) ref -> rsi class-hnd ; V01 arg1 [V01,T00] ( 6, 4.50) ref -> [rbp+0x18] EH do-not-enreg[] class-hnd EH-live ;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ; V03 loc1 [V03,T05] ( 3, 2.50) long -> rbx ; V04 loc2 [V04 ] ( 1, 0.50) ref -> [rbp-0x40] must-init pinned class-hnd ; V05 loc3 [V05,T06] ( 3, 2.50) long -> rdx ;* V06 loc4 [V06 ] ( 0, 0 ) long -> zero-ref ; V07 loc5 [V07,T07] ( 2, 2 ) long -> rax ; V08 loc6 [V08,T08] ( 2, 2 ) long -> rax ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10 ] ( 3, 3 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "stub argument" ; V11 tmp2 [V11,T03] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V12 tmp3 [V12,T04] ( 2, 4 ) long -> rax "Single return block return value" ; V13 FramesRoot [V13,T01] ( 6, 6 ) long -> rdi "Pinvoke FrameListRoot" ; V14 PInvokeFrame [V14 ] ( 8, 8 ) blk (72) [rbp-0x90] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V15 PSPSym [V15 ] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[X] addr-exposed "PSPSym" ;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref "optAddCopies" ; ; Lcl frame size = 136 G_M63912_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] mov qword ptr [rbp-48H], r10 xor rbx, rbx mov qword ptr [rbp-40H], rbx mov qword ptr [rbp-A0H], rsp mov gword ptr [rbp+18H], rdx mov rsi, rcx ;; bbWeight=1 PerfScore 13.25 G_M63912_IG02: lea rcx, [rbp-88H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rcx, rsp mov qword ptr [rbp-68H], rcx mov rcx, rbp mov qword ptr [rbp-58H], rcx lea rcx, bword ptr [rbp-88H] mov qword ptr [rdi+16], rcx ;; bbWeight=1 PerfScore 6.00 G_M63912_IG03: xor rbx, rbx test rsi, rsi je SHORT G_M63912_IG05 ;; bbWeight=1 PerfScore 1.50 G_M63912_IG04: mov gword ptr [rbp-40H], rsi lea rbx, bword ptr [rsi+12] ;; bbWeight=0.50 PerfScore 0.75 G_M63912_IG05: xor rdx, rdx cmp gword ptr [rbp+18H], 0 je SHORT G_M63912_IG07 ;; bbWeight=1 PerfScore 2.25 G_M63912_IG06: mov rcx, gword ptr [rbp+18H] call Marshal:GetFunctionPointerForDelegate(Delegate):long mov rdx, rax ;; bbWeight=0.50 PerfScore 1.13 G_M63912_IG07: mov rcx, qword ptr [rbp-48H] mov rcx, qword ptr [rcx+32] mov rax, qword ptr [rcx] mov rcx, rbx mov r8, qword ptr [rbp-48H] mov qword ptr [rbp-78H], r8 lea r8, G_M63912_IG09 mov qword ptr [rbp-60H], r8 mov byte ptr [rdi+12], 0 ;; bbWeight=1 PerfScore 10.25 G_M63912_IG08: call rax ;; bbWeight=1 PerfScore 3.00 G_M63912_IG09: mov byte ptr [rdi+12], 1 cmp dword ptr [(reloc)], 0 je SHORT G_M63912_IG10 call [CORINFO_HELP_STOP_FOR_GC] ;; bbWeight=1 PerfScore 7.00 G_M63912_IG10: nop ;; bbWeight=1 PerfScore 0.25 G_M63912_IG11: mov rdx, bword ptr [rbp-80H] mov qword ptr [rdi+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M63912_IG12: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M63912_IG13: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+C0H] ;; bbWeight=0 PerfScore 0.00 G_M63912_IG14: add rsp, 40 pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 263, prolog size 51, PerfScore 79.18, (MethodHash=a0c40657) for method ILStubClass:IL_STUB_PInvoke(String,EtwEnableCallback):long ; ============================================================ ; Assembly listing for method EventListener:AddEventSource(EventSource) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T05] ( 6, 8 ) ref -> rsi class-hnd ; V01 loc0 [V01,T15] ( 4, 2.50) ref -> [rbp-0x30] EH do-not-enreg[] class-hnd EH-live ; V02 loc1 [V02 ] ( 5, 4 ) bool -> [rbp-0x28] do-not-enreg[XF] addr-exposed ld-addr-op ; V03 loc2 [V03,T11] ( 5, 4 ) int -> rdi ; V04 loc3 [V04,T00] ( 9, 25.50) int -> rbx ; V05 loc4 [V05,T04] ( 4, 12.50) ref -> r14 class-hnd ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd ; V07 loc6 [V07,T03] ( 6, 18 ) ref -> rbx class-hnd ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T12] ( 4, 4 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V10 tmp2 [V10,T09] ( 7, 7 ) ref -> rbx class-hnd "impAppendStmt" ; V11 tmp3 [V11,T10] ( 6, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V12 tmp4 [V12,T14] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ;* V13 tmp5 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V14 tmp6 [V14,T13] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" ; V15 tmp7 [V15,T18] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V16 tmp8 [V16,T01] ( 3, 24 ) ref -> rcx class-hnd "Inlining Arg" ; V17 tmp9 [V17,T08] ( 2, 8 ) bool -> rcx "Inline return value spill temp" ; V18 tmp10 [V18,T07] ( 2, 8 ) ref -> rax class-hnd "Inline stloc first use temp" ; V19 tmp11 [V19,T19] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V20 tmp12 [V20,T20] ( 3, 1.50) ref -> rcx class-hnd "Inline stloc first use temp" ; V21 tmp13 [V21,T17] ( 4, 2 ) int -> rdx "Inline stloc first use temp" ; V22 tmp14 [V22,T02] ( 3, 24 ) ref -> rcx "arr expr" ; V23 PSPSym [V23 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ; V24 cse0 [V24,T21] ( 3, 1.50) ref -> rbx "CSE - moderate" ; V25 cse1 [V25,T16] ( 3, 2.50) ref -> rcx "CSE - moderate" ; V26 rat0 [V26,T06] ( 4, 8 ) int -> rax "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 64 G_M3762_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 lea rbp, [rsp+60H] mov qword ptr [rbp-40H], rsp mov rsi, rcx ;; bbWeight=1 PerfScore 7.00 G_M3762_IG02: mov rcx, 0xD1FFAB1E mov edx, 0x74B call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE call EventListener:get_EventListenersLock():Object mov gword ptr [rbp-30H], rax xor edx, edx mov dword ptr [rbp-28H], edx ;; bbWeight=1 PerfScore 4.75 G_M3762_IG03: cmp byte ptr [rbp-28H], 0 jne G_M3762_IG23 ;; bbWeight=1 PerfScore 2.00 G_M3762_IG04: lea rdx, [rbp-28H] mov rcx, gword ptr [rbp-30H] call Monitor:ReliableEnter(Object,byref) ;; bbWeight=1 PerfScore 2.50 G_M3762_IG05: mov rcx, 0xD1FFAB1E cmp gword ptr [rcx], 0 jne SHORT G_M3762_IG07 ;; bbWeight=1 PerfScore 3.25 G_M3762_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov edx, 2 call List`1:.ctor(int):this mov rcx, 0xD1FFAB1E mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 2.25 G_M3762_IG07: cmp byte ptr [reloc classVar[0xd1ffab1e]], 0 jne SHORT G_M3762_IG09 ;; bbWeight=1 PerfScore 2.00 G_M3762_IG08: mov byte ptr [reloc classVar[0xd1ffab1e]], 1 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, 0xD1FFAB1E mov qword ptr [rdi+32], rcx mov rcx, rdi call AppContext:add_ProcessExit(EventHandler) ;; bbWeight=0.50 PerfScore 4.00 G_M3762_IG09: mov edi, -1 mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rax, rcx mov eax, dword ptr [rax+16] mov edx, eax sar edx, 31 and edx, 63 add edx, eax and edx, -64 sub eax, edx cmp eax, 63 jne SHORT G_M3762_IG17 ;; bbWeight=1 PerfScore 9.25 G_M3762_IG10: mov ebx, dword ptr [rcx+16] test ebx, ebx jle SHORT G_M3762_IG17 ;; bbWeight=0.50 PerfScore 1.63 G_M3762_IG11: dec ebx mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] cmp ebx, dword ptr [rcx+16] jae G_M3762_IG22 ;; bbWeight=4 PerfScore 22.00 G_M3762_IG12: mov rcx, gword ptr [rcx+8] cmp ebx, dword ptr [rcx+8] jae SHORT G_M3762_IG15 movsxd rax, ebx mov r14, gword ptr [rcx+8*rax+16] cmp dword ptr [r14], r14d mov rcx, r14 call WeakReference`1:get_Target():__Canon:this test rax, rax setne cl movzx rcx, cl test ecx, ecx je SHORT G_M3762_IG16 ;; bbWeight=4 PerfScore 53.00 G_M3762_IG13: test ebx, ebx jg SHORT G_M3762_IG11 ;; bbWeight=4 PerfScore 5.00 G_M3762_IG14: jmp SHORT G_M3762_IG17 ;; bbWeight=0.50 PerfScore 1.00 G_M3762_IG15: call CORINFO_HELP_RNGCHKFAIL ;; bbWeight=0 PerfScore 0.00 G_M3762_IG16: mov edi, ebx mov rcx, r14 mov rdx, rsi call WeakReference`1:set_Target(__Canon):this ;; bbWeight=0.50 PerfScore 0.88 G_M3762_IG17: test edi, edi jge SHORT G_M3762_IG19 ;; bbWeight=1 PerfScore 1.25 G_M3762_IG18: mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] mov rcx, rbx mov edi, dword ptr [rcx+16] mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWFAST mov r14, rax mov rcx, r14 mov rdx, rsi xor r8d, r8d call WeakReference`1:Create(__Canon,bool):this inc dword ptr [rbx+20] mov rcx, gword ptr [rbx+8] mov edx, dword ptr [rbx+16] cmp dword ptr [rcx+8], edx jbe SHORT G_M3762_IG24 lea r8d, [rdx+1] mov dword ptr [rbx+16], r8d mov r8, r14 call CORINFO_HELP_ARRADDR_ST ;; bbWeight=0.50 PerfScore 11.25 G_M3762_IG19: mov dword ptr [rsi+144], edi mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] test rbx, rbx je SHORT G_M3762_IG25 ;; bbWeight=1 PerfScore 4.50 G_M3762_IG20: mov rcx, rsi mov rdx, rbx call EventSource:AddListener(EventListener):this mov rbx, gword ptr [rbx+24] test rbx, rbx jne SHORT G_M3762_IG20 ;; bbWeight=4 PerfScore 19.00 G_M3762_IG21: jmp SHORT G_M3762_IG25 ;; bbWeight=0.50 PerfScore 1.00 G_M3762_IG22: call ThrowHelper:ThrowArgumentOutOfRange_IndexException() int3 ;; bbWeight=0 PerfScore 0.00 G_M3762_IG23: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M3762_IG24: mov rcx, rbx mov rdx, r14 call List`1:AddWithResize(__Canon):this jmp SHORT G_M3762_IG19 ;; bbWeight=0.50 PerfScore 1.75 G_M3762_IG25: cmp byte ptr [rbp-28H], 0 je SHORT G_M3762_IG27 ;; bbWeight=1 PerfScore 2.00 G_M3762_IG26: mov rcx, gword ptr [rbp-30H] call Monitor:Exit(Object) ;; bbWeight=0.50 PerfScore 1.00 G_M3762_IG27: nop ;; bbWeight=1 PerfScore 0.25 G_M3762_IG28: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M3762_IG29: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=0 PerfScore 0.00 G_M3762_IG30: cmp byte ptr [rbp-28H], 0 je SHORT G_M3762_IG31 mov rcx, gword ptr [rbp-30H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M3762_IG31: nop ;; bbWeight=0 PerfScore 0.00 G_M3762_IG32: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 600, prolog size 22, PerfScore 226.50, (MethodHash=d70ff14d) for method EventListener:AddEventSource(EventSource) ; ============================================================ ; Assembly listing for method AppContext:add_ProcessExit(EventHandler) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 4, 6 ) ref -> rsi class-hnd ; V01 loc0 [V01,T02] ( 4, 25 ) ref -> registers class-hnd ; V02 loc1 [V02,T01] ( 5, 34 ) ref -> rdi class-hnd ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1" ; V06 tmp2 [V06,T05] ( 3, 4.96) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V07 tmp3 [V07,T00] ( 5, 50.96) ref -> rax class-hnd "spilling QMark2" ; V08 tmp4 [V08,T03] ( 4, 12.48) ref -> rdx class-hnd "Inline return value spill temp" ; ; Lcl frame size = 40 G_M46398_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M46398_IG02: mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] ;; bbWeight=1 PerfScore 2.25 G_M46398_IG03: test rdi, rdi jne SHORT G_M46398_IG05 ;; bbWeight=8 PerfScore 10.00 G_M46398_IG04: mov rdx, rsi jmp SHORT G_M46398_IG06 ;; bbWeight=2 PerfScore 4.50 G_M46398_IG05: mov rcx, rdi mov rdx, rsi call [MulticastDelegate:CombineImpl(Delegate):Delegate:this] mov rdx, rax ;; bbWeight=2 PerfScore 7.50 G_M46398_IG06: mov rax, rdx test rax, rax je SHORT G_M46398_IG09 ;; bbWeight=8 PerfScore 12.00 G_M46398_IG07: mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx je SHORT G_M46398_IG09 ;; bbWeight=1 PerfScore 3.25 G_M46398_IG08: call CORINFO_HELP_CHKCASTCLASS_SPECIAL ;; bbWeight=0.48 PerfScore 0.48 G_M46398_IG09: mov r8, rdi mov rdx, rax mov rcx, 0xD1FFAB1E call Interlocked:CompareExchange(byref,Object,Object):Object cmp rax, rdi mov rdi, rax jne SHORT G_M46398_IG03 ;; bbWeight=8 PerfScore 26.00 G_M46398_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 111, prolog size 9, PerfScore 81.83, (MethodHash=b97c4ac1) for method AppContext:add_ProcessExit(EventHandler) ; ============================================================ ; Assembly listing for method String:Equals(String,String):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 4.50) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 6, 4.50) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V04 tmp2 [V04,T02] ( 2, 2 ) byref -> rcx "Inlining Arg" ; V05 tmp3 [V05,T03] ( 2, 2 ) byref -> rdx "Inlining Arg" ; V06 cse0 [V06,T04] ( 3, 1.50) int -> r8 "CSE - moderate" ; ; Lcl frame size = 0 G_M8275_IG01: ;; bbWeight=1 PerfScore 0.00 G_M8275_IG02: cmp rcx, rdx jne SHORT G_M8275_IG05 ;; bbWeight=1 PerfScore 1.25 G_M8275_IG03: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M8275_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M8275_IG05: test rcx, rcx je SHORT G_M8275_IG06 test rdx, rdx je SHORT G_M8275_IG06 mov r8d, dword ptr [rcx+8] cmp r8d, dword ptr [rdx+8] je SHORT G_M8275_IG08 ;; bbWeight=0.50 PerfScore 3.75 G_M8275_IG06: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M8275_IG07: ret ;; bbWeight=0.50 PerfScore 0.50 G_M8275_IG08: add rcx, 12 add rdx, 12 movsxd r8, r8d add r8, r8 ;; bbWeight=0.50 PerfScore 0.50 G_M8275_IG09: jmp SpanHelpers:SequenceEqual(byref,byref,long):bool ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 53, prolog size 0, PerfScore 13.05, (MethodHash=8d1edfac) for method String:Equals(String,String):bool ; ============================================================ ; Assembly listing for method GCHandle:.ctor(Object,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rbx this ; V01 arg1 [V01,T01] ( 4, 3.50) ref -> rdi class-hnd ; V02 arg2 [V02,T00] ( 6, 6 ) int -> rsi ; V03 loc0 [V03,T03] ( 4, 3 ) long -> rax ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T06] ( 2, 0 ) ref -> rcx "argument with side effect" ; V08 tmp4 [V08,T07] ( 2, 0 ) ref -> rdi "argument with side effect" ; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> r8 "argument with side effect" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> rcx "argument with side effect" ; V11 tmp7 [V11,T10] ( 2, 0 ) ref -> rdi "argument with side effect" ; V12 tmp8 [V12,T11] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 32 G_M18589_IG01: push rdi push rsi push rbx sub rsp, 32 mov rbx, rcx mov rdi, rdx mov esi, r8d ;; bbWeight=1 PerfScore 4.00 G_M18589_IG02: cmp esi, 3 ja SHORT G_M18589_IG09 ;; bbWeight=1 PerfScore 1.25 G_M18589_IG03: cmp esi, 3 jne SHORT G_M18589_IG05 ;; bbWeight=1 PerfScore 1.25 G_M18589_IG04: mov rcx, rdi call Marshal:IsPinnable(Object):bool test eax, eax je SHORT G_M18589_IG10 ;; bbWeight=0.50 PerfScore 1.25 G_M18589_IG05: mov rcx, rdi mov edx, esi call GCHandle:InternalAlloc(Object,int):long cmp esi, 3 jne SHORT G_M18589_IG07 ;; bbWeight=1 PerfScore 2.75 G_M18589_IG06: or rax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M18589_IG07: mov qword ptr [rbx], rax ;; bbWeight=1 PerfScore 1.00 G_M18589_IG08: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M18589_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 235 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x98D3 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M18589_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x8F09 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 773 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 255, prolog size 7, PerfScore 39.88, (MethodHash=b1e1b762) for method GCHandle:.ctor(Object,int):this ; ============================================================ ; Assembly listing for method GCHandle:AddrOfPinnedObject():long:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rcx this ; V01 loc0 [V01,T02] ( 4, 4 ) long -> rax ; V02 loc1 [V02,T01] ( 7, 4.50) ref -> rax class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V06 tmp3 [V06,T04] ( 2, 4 ) long -> rax "NewObj constructor temp" ;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V09 tmp6 [V09,T03] ( 2, 4 ) byref -> rax "Inlining Arg" ; V10 tmp7 [V10,T05] ( 2, 2 ) byref -> rcx "Inlining Arg" ; V11 tmp8 [V11,T06] ( 2, 2 ) byref -> rax "Inlining Arg" ;* V12 tmp9 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V13 tmp10 [V13 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V14 tmp11 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V15 tmp12 [V15,T07] ( 2, 2 ) byref -> rax "impAppendStmt" ; V16 tmp13 [V16,T09] ( 2, 2 ) long -> rdx "Inlining Arg" ;* V17 tmp14 [V17 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V18 tmp15 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V19 tmp16 [V19 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V20 tmp17 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V21 tmp18 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V22 tmp19 [V22 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V23 tmp20 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V24 tmp21 [V24,T08] ( 2, 2 ) byref -> rax "Inlining Arg" ;* V25 tmp22 [V25 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V26 tmp23 [V26 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V27 tmp24 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V28 tmp25 [V28,T10] ( 2, 2 ) long -> rax "Cast away GC" ; V29 tmp26 [V29,T11] ( 2, 2 ) long -> rax "Cast away GC" ; V30 tmp27 [V30,T12] ( 2, 2 ) long -> rax "Cast away GC" ; V31 cse0 [V31,T13] ( 3, 1.50) long -> rdx "CSE - moderate" ; ; Lcl frame size = 40 G_M30708_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M30708_IG02: mov rax, qword ptr [rcx] test rax, rax je SHORT G_M30708_IG13 ;; bbWeight=1 PerfScore 3.25 G_M30708_IG03: test al, 1 je SHORT G_M30708_IG14 ;; bbWeight=1 PerfScore 1.25 G_M30708_IG04: and rax, -2 mov rax, gword ptr [rax] test rax, rax jne SHORT G_M30708_IG07 ;; bbWeight=1 PerfScore 3.50 G_M30708_IG05: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M30708_IG06: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M30708_IG07: mov rdx, qword ptr [rax] mov rcx, rdx test dword ptr [rcx], 0xD1FFAB1E je SHORT G_M30708_IG11 mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx jne SHORT G_M30708_IG09 add rax, 12 ;; bbWeight=0.50 PerfScore 4.38 G_M30708_IG08: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M30708_IG09: add rax, 8 mov edx, dword ptr [rdx+4] add rdx, -16 add rax, rdx ;; bbWeight=0.50 PerfScore 1.38 G_M30708_IG10: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M30708_IG11: add rax, 8 ;; bbWeight=0.50 PerfScore 0.13 G_M30708_IG12: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M30708_IG13: call ThrowHelper:ThrowInvalidOperationException_HandleIsNotInitialized() int3 ;; bbWeight=0 PerfScore 0.00 G_M30708_IG14: call ThrowHelper:ThrowInvalidOperationException_HandleIsNotPinned() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 113, prolog size 4, PerfScore 28.05, (MethodHash=cdf0880b) for method GCHandle:AddrOfPinnedObject():long:this ; ============================================================ ; Assembly listing for method EventProvider:SetInformation(int,long,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) int -> rdx ; V02 arg2 [V02,T02] ( 3, 3 ) long -> r8 ; V03 arg3 [V03,T03] ( 3, 3 ) int -> r9 ; V04 loc0 [V04,T05] ( 3, 3 ) int -> [rbp-0x04] EH do-not-enreg[] EH-live ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T04] ( 2, 4 ) long -> rcx "impAppendStmt" ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V09 PSPSym [V09 ] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 48 G_M51677_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] mov qword ptr [rbp-10H], rsp ;; bbWeight=1 PerfScore 2.75 G_M51677_IG02: mov dword ptr [rbp-04H], 50 cmp byte ptr [reloc classVar[0xd1ffab1e]], 0 jne SHORT G_M51677_IG04 ;; bbWeight=1 PerfScore 3.00 G_M51677_IG03: mov rcx, qword ptr [rcx+40] call Advapi32:EventSetInformation(long,int,long,int):int mov dword ptr [rbp-04H], eax ;; bbWeight=1 PerfScore 4.00 G_M51677_IG04: mov eax, dword ptr [rbp-04H] ;; bbWeight=1 PerfScore 1.00 G_M51677_IG05: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 G_M51677_IG06: push rbp sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+30H] ;; bbWeight=0 PerfScore 0.00 G_M51677_IG07: mov byte ptr [reloc classVar[0xd1ffab1e]], 1 lea rax, G_M51677_IG04 ;; bbWeight=0 PerfScore 0.00 G_M51677_IG08: add rsp, 48 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 89, prolog size 14, PerfScore 21.65, (MethodHash=b8b83622) for method EventProvider:SetInformation(int,long,int):int:this ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(long,int,long,int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) long -> rsi ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi ; V02 arg2 [V02,T03] ( 3, 3 ) long -> rbx ; V03 arg3 [V03,T04] ( 3, 3 ) int -> r14 ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref ;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref ; V06 loc2 [V06,T07] ( 2, 2 ) long -> rdx ;* V07 loc3 [V07 ] ( 0, 0 ) long -> zero-ref ; V08 loc4 [V08,T08] ( 2, 2 ) long -> r9 ;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref ; V10 loc6 [V10,T09] ( 2, 2 ) int -> rax ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V12 tmp1 [V12 ] ( 3, 3 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "stub argument" ; V13 tmp2 [V13,T05] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V14 tmp3 [V14,T06] ( 2, 4 ) int -> rax "Single return block return value" ; V15 FramesRoot [V15,T00] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V16 PInvokeFrame [V16 ] ( 8, 8 ) blk (72) [rbp-0x88] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 120 G_M20810_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] mov qword ptr [rbp-40H], r10 mov rsi, rcx mov edi, edx mov rbx, r8 mov r14d, r9d ;; bbWeight=1 PerfScore 10.75 G_M20810_IG02: lea rcx, [rbp-80H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-60H], rcx mov rcx, rbp mov qword ptr [rbp-50H], rcx lea rcx, bword ptr [rbp-80H] mov qword ptr [r15+16], rcx movsxd rdx, edi movsxd r9, r14d mov rcx, qword ptr [rbp-40H] mov rcx, qword ptr [rcx+32] mov rax, qword ptr [rcx] mov rcx, rsi mov r8, rbx mov r10, qword ptr [rbp-40H] mov qword ptr [rbp-70H], r10 lea r10, G_M20810_IG04 mov qword ptr [rbp-58H], r10 mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 17.00 G_M20810_IG03: call rax ;; bbWeight=1 PerfScore 3.00 G_M20810_IG04: mov byte ptr [r15+12], 1 cmp dword ptr [(reloc)], 0 je SHORT G_M20810_IG05 call [CORINFO_HELP_STOP_FOR_GC] ;; bbWeight=1 PerfScore 7.00 G_M20810_IG05: mov rdx, bword ptr [rbp-78H] mov qword ptr [r15+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M20810_IG06: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 170, prolog size 28, PerfScore 62.25, (MethodHash=ae3eaeb5) for method ILStubClass:IL_STUB_PInvoke(long,int,long,int):int ; ============================================================ ; Assembly listing for method GCHandle:Free():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rcx this ; V01 loc0 [V01,T02] ( 3, 3 ) long -> rax ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V05 tmp3 [V05,T01] ( 2, 4 ) long -> rcx "NewObj constructor temp" ;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 40 G_M30375_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M30375_IG02: xor rdx, rdx call Interlocked:Exchange(byref,long):long test rax, rax je SHORT G_M30375_IG05 ;; bbWeight=1 PerfScore 2.50 G_M30375_IG03: mov rcx, rax and rcx, -2 call GCHandle:InternalFree(long) nop ;; bbWeight=1 PerfScore 1.75 G_M30375_IG04: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 G_M30375_IG05: call ThrowHelper:ThrowInvalidOperationException_HandleIsNotInitialized() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 40, prolog size 4, PerfScore 9.75, (MethodHash=e7df8958) for method GCHandle:Free():this ; ============================================================ ; Assembly listing for method GC:KeepAlive(Object) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M55292_IG01: ;; bbWeight=1 PerfScore 0.00 G_M55292_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=29f82803) for method GC:KeepAlive(Object) ; ============================================================ ; Assembly listing for method UniqueProgramName:Main(ref):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M17714_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M17714_IG02: call UniqueProgramName:AfterAssemblyLoadingAttached(ref):int nop ;; bbWeight=1 PerfScore 1.25 G_M17714_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 15, prolog size 4, PerfScore 4.25, (MethodHash=79bbbacd) for method UniqueProgramName:Main(ref):int ; ============================================================ ; Assembly listing for method UniqueProgramName:AfterAssemblyLoadingAttached(ref):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 5, 5 ) ref -> rsi class-hnd ; V01 loc0 [V01,T26] ( 13, 3 ) ref -> [rbp-0x68] EH do-not-enreg[] class-hnd exact EH-live ; V02 loc1 [V02,T31] ( 2, 2 ) ref -> rdi class-hnd ; V03 loc2 [V03,T39] ( 2, 2 ) int -> rsi ; V04 loc3 [V04,T32] ( 2, 2 ) ref -> rcx class-hnd ; V05 loc4 [V05,T30] ( 4, 2 ) int -> [rbp-0x24] EH do-not-enreg[] EH-live ; V06 loc5 [V06,T46] ( 5, 0 ) ref -> [rbp-0x70] EH do-not-enreg[] must-init class-hnd EH-live ; V07 loc6 [V07,T49] ( 3, 0 ) ref -> rcx class-hnd ;* V08 loc7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T13] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V11 tmp2 [V11,T03] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V12 tmp3 [V12,T14] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ;* V13 tmp4 [V13,T43] ( 0, 0 ) ref -> zero-ref ; V14 tmp5 [V14,T11] ( 4, 4 ) ref -> r8 ; V15 tmp6 [V15,T15] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V16 tmp7 [V16,T12] ( 4, 4 ) ref -> rdi ; V17 tmp8 [V17,T06] ( 3, 6 ) ref -> r14 class-hnd exact "Single-def Box Helper" ; V18 tmp9 [V18,T16] ( 2, 4 ) ref -> rbx class-hnd "impImportAndPushBox" ; V19 tmp10 [V19,T04] ( 4, 8 ) ref -> rbx class-hnd exact "dup spill" ; V20 tmp11 [V20,T07] ( 3, 6 ) ref -> rsi class-hnd "impAppendStmt" ; V21 tmp12 [V21,T00] ( 5, 10 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V22 tmp13 [V22,T50] ( 3, 0 ) ref -> rsi class-hnd "impSpillSpecialSideEff" ; V23 tmp14 [V23,T53] ( 2, 0 ) ref -> rdx class-hnd "impSpillSpecialSideEff" ; V24 tmp15 [V24,T54] ( 2, 0 ) ref -> rdx class-hnd "dup spill" ; V25 tmp16 [V25,T47] ( 4, 0 ) ref -> rdx ; V26 tmp17 [V26,T48] ( 4, 0 ) int -> rax ; V27 tmp18 [V27,T52] ( 3, 0 ) int -> rax ; V28 tmp19 [V28,T51] ( 3, 0 ) ref -> rcx class-hnd "spilling QMark2" ;* V29 tmp20 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ; V30 tmp21 [V30,T08] ( 3, 6 ) ref -> rdx class-hnd "Inlining Arg" ;* V31 tmp22 [V31 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V32 tmp23 [V32,T17] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ; V33 tmp24 [V33 ] ( 1, 1 ) bool -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V34 tmp25 [V34,T05] ( 4, 8 ) ref -> rax class-hnd "Inlining Arg" ;* V35 tmp26 [V35 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V36 tmp27 [V36 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V37 tmp28 [V37 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V38 tmp29 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V39 tmp30 [V39,T18] ( 2, 4 ) byref -> rdx "Inlining Arg" ;* V40 tmp31 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V41 tmp32 [V41,T25] ( 2, 4 ) int -> rax "Inlining Arg" ; V42 tmp33 [V42,T19] ( 2, 4 ) ref -> rbx class-hnd "Inlining Arg" ;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V44 tmp35 [V44 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ;* V45 tmp36 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V46 tmp37 [V46,T33] ( 2, 2 ) byref -> rdx V35._pointer(offs=0x00) P-INDEP "field V35._pointer (fldOffset=0x0)" ; V47 tmp38 [V47,T40] ( 2, 2 ) int -> rax V35._length(offs=0x08) P-INDEP "field V35._length (fldOffset=0x8)" ; V48 tmp39 [V48,T34] ( 2, 2 ) byref -> rdx V36._pointer(offs=0x00) P-INDEP "field V36._pointer (fldOffset=0x0)" ; V49 tmp40 [V49,T41] ( 2, 2 ) int -> rax V36._length(offs=0x08) P-INDEP "field V36._length (fldOffset=0x8)" ; V50 tmp41 [V50,T35] ( 2, 2 ) byref -> rdx V37._pointer(offs=0x00) P-INDEP "field V37._pointer (fldOffset=0x0)" ; V51 tmp42 [V51,T42] ( 2, 2 ) int -> rax V37._length(offs=0x08) P-INDEP "field V37._length (fldOffset=0x8)" ;* V52 tmp43 [V52 ] ( 0, 0 ) byref -> zero-ref V38._pointer(offs=0x00) P-INDEP "field V38._pointer (fldOffset=0x0)" ;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref V38._length(offs=0x08) P-INDEP "field V38._length (fldOffset=0x8)" ; V54 tmp45 [V54,T36] ( 2, 2 ) byref -> rdx V40._value(offs=0x00) P-INDEP "field V40._value (fldOffset=0x0)" ; V55 tmp46 [V55,T37] ( 2, 2 ) ref -> r14 V44._arg0(offs=0x00) P-INDEP "field V44._arg0 (fldOffset=0x0)" ;* V56 tmp47 [V56,T44] ( 0, 0 ) ref -> zero-ref V44._arg1(offs=0x08) P-INDEP "field V44._arg1 (fldOffset=0x8)" ; V57 tmp48 [V57,T27] ( 3, 3 ) ref -> rsi V44._arg2(offs=0x10) P-INDEP "field V44._arg2 (fldOffset=0x10)" ; V58 tmp49 [V58,T38] ( 2, 2 ) ref -> r8 V44._args(offs=0x18) P-INDEP "field V44._args (fldOffset=0x18)" ; V59 tmp50 [V59,T20] ( 2, 4 ) ref -> r8 "argument with side effect" ; V60 tmp51 [V60,T21] ( 2, 4 ) ref -> rdx "argument with side effect" ; V61 tmp52 [V61 ] ( 2, 4 ) struct (16) [rbp-0x40] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V62 tmp53 [V62,T09] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V63 tmp54 [V63,T22] ( 2, 4 ) ref -> r8 "argument with side effect" ; V64 tmp55 [V64 ] ( 2, 4 ) struct (32) [rbp-0x60] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V65 tmp56 [V65,T01] ( 5, 10 ) byref -> rcx stack-byref "BlockOp address local" ; V66 tmp57 [V66,T23] ( 2, 4 ) ref -> rdx "argument with side effect" ; V67 tmp58 [V67,T24] ( 2, 4 ) ref -> rdx "argument with side effect" ; V68 tmp59 [V68,T10] ( 3, 6 ) ref -> rbx "argument with side effect" ; V69 tmp60 [V69,T55] ( 2, 0 ) ref -> rdx "argument with side effect" ; V70 tmp61 [V70,T56] ( 2, 0 ) ref -> rdx "argument with side effect" ; V71 tmp62 [V71,T57] ( 2, 0 ) ref -> rdx "argument with side effect" ; V72 PSPSym [V72 ] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[X] addr-exposed "PSPSym" ;* V73 cse0 [V73,T45] ( 0, 0 ) long -> zero-ref "CSE - moderate" ; V74 cse1 [V74,T28] ( 3, 3 ) int -> rdx "CSE - moderate" ; V75 cse2 [V75,T29] ( 3, 3 ) int -> rax "CSE - moderate" ; ; Lcl frame size = 144 G_M16943_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 144 lea rbp, [rsp+B0H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-70H], xmm4 vmovdqa xmmword ptr [rbp-60H], xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 vmovdqa xmmword ptr [rbp-40H], xmm4 xor rax, rax mov qword ptr [rbp-30H], rax mov qword ptr [rbp-80H], rsp mov rsi, rcx ;; bbWeight=1 PerfScore 12.58 G_M16943_IG02: call Console:get_Out():TextWriter mov rdi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax call Console:get_In():TextReader mov r8, rax mov rdx, rdi mov rcx, rbx call ConsoleHost:.ctor(TextWriter,TextReader):this mov gword ptr [rbp-68H], rbx mov rcx, rbx mov edx, 1 call [ConsoleHost:SendSignal(int):this] nop ;; bbWeight=1 PerfScore 10.25 G_M16943_IG03: mov rcx, 0xD1FFAB1E mov edx, 3 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M16943_IG05 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M16943_IG12 ;; bbWeight=1 PerfScore 10.00 G_M16943_IG04: lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rdi ;; bbWeight=1 PerfScore 4.50 G_M16943_IG05: mov rdx, rsi mov rcx, 0xD1FFAB1E call Enumerable:SkipWhile(IEnumerable`1,Func`2):IEnumerable`1 mov rdx, rax mov rcx, 0xD1FFAB1E mov r8d, 1 call Enumerable:Skip(IEnumerable`1,int):IEnumerable`1 mov rdx, rax lea r8, [rbp-30H] mov rcx, 0xD1FFAB1E call Enumerable:TryGetFirst(IEnumerable`1,byref):__Canon mov rdi, rax test rdi, rdi jne SHORT G_M16943_IG06 mov rax, 0xD1FFAB1E mov rdi, gword ptr [rax] ;; bbWeight=1 PerfScore 9.00 G_M16943_IG06: mov eax, dword ptr [rsi+8] lea edx, [rax-1] cmp edx, eax jae SHORT G_M16943_IG08 movsxd rax, edx mov rax, gword ptr [rsi+8*rax+16] test rax, rax je G_M16943_IG11 ;; bbWeight=1 PerfScore 7.25 G_M16943_IG07: jmp G_M16943_IG13 ;; bbWeight=1 PerfScore 2.00 G_M16943_IG08: call CORINFO_HELP_RNGCHKFAIL ;; bbWeight=0 PerfScore 0.00 G_M16943_IG09: lea rcx, bword ptr [rbp-40H] mov bword ptr [rcx], rdx mov dword ptr [rcx+8], eax call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo mov r8, rax lea rcx, bword ptr [rbp-40H] mov edx, 7 call Number:ParseInt32(ReadOnlySpan`1,int,NumberFormatInfo):int mov esi, eax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rbx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rcx, rbx call RuntimeTypeHandle:GetAssembly(RuntimeType):RuntimeAssembly mov rbx, rax mov dword ptr [r14+8], esi xor rsi, rsi mov rcx, 0xD1FFAB1E mov edx, 374 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rbp-60H] mov gword ptr [rcx], r14 mov gword ptr [rcx+8], rsi mov gword ptr [rcx+16], rsi mov gword ptr [rcx+24], r8 lea r8, bword ptr [rbp-60H] xor rcx, rcx call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdx, rax mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+80] call gword ptr [rax+56]Assembly:GetType(String):Type:this mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, 24 cmp dword ptr [rcx], ecx call [Type:GetMethod(String,int):MethodInfo:this] mov rsi, rax mov rcx, 0xD1FFAB1E mov edx, 2 ;; bbWeight=1 PerfScore 39.75 G_M16943_IG10: call CORINFO_HELP_NEWARR_1_OBJ mov rbx, rax lea rcx, bword ptr [rbx+16] mov rdx, gword ptr [rbp-68H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov gword ptr [rsp+20H], rbx xor rcx, rcx mov gword ptr [rsp+28H], rcx mov rcx, rsi xor rdx, rdx xor r8d, r8d xor r9, r9 mov rax, qword ptr [rsi] mov rax, qword ptr [rax+88] call gword ptr [rax+56]MethodBase:Invoke(Object,int,Binder,ref,CultureInfo):Object:this xor ecx, ecx mov dword ptr [rbp-24H], ecx jmp SHORT G_M16943_IG16 ;; bbWeight=1 PerfScore 19.00 G_M16943_IG11: mov ecx, 17 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M16943_IG12: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 G_M16943_IG13: lea rdx, bword ptr [rax+12] mov eax, dword ptr [rax+8] jmp G_M16943_IG09 ;; bbWeight=1 PerfScore 4.50 G_M16943_IG14: jmp SHORT G_M16943_IG16 ;; bbWeight=0 PerfScore 0.00 G_M16943_IG15: nop ;; bbWeight=0 PerfScore 0.00 G_M16943_IG16: mov rcx, gword ptr [rbp-68H] mov edx, 4 call [ConsoleHost:SendSignal(int):this] mov eax, dword ptr [rbp-24H] ;; bbWeight=1 PerfScore 5.25 G_M16943_IG17: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M16943_IG18: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 mov rbp, qword ptr [rcx+48] mov qword ptr [rsp+30H], rbp lea rbp, [rbp+B0H] ;; bbWeight=0 PerfScore 0.00 G_M16943_IG19: mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS mov rdx, rax test rdx, rdx jne SHORT G_M16943_IG20 xor eax, eax jmp SHORT G_M16943_IG25 ;; bbWeight=0 PerfScore 0.00 G_M16943_IG20: mov gword ptr [rbp-70H], rdx mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax jne SHORT G_M16943_IG23 mov rcx, gword ptr [rbp-70H] mov rax, gword ptr [rbp-70H] mov rdx, 0xD1FFAB1E cmp qword ptr [rax], rdx je SHORT G_M16943_IG21 xor rcx, rcx ;; bbWeight=0 PerfScore 0.00 G_M16943_IG21: test rcx, rcx je SHORT G_M16943_IG22 call Exception:get_InnerException():Exception:this mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax setne al movzx rax, al jmp SHORT G_M16943_IG24 ;; bbWeight=0 PerfScore 0.00 G_M16943_IG22: xor eax, eax jmp SHORT G_M16943_IG24 ;; bbWeight=0 PerfScore 0.00 G_M16943_IG23: mov eax, 1 ;; bbWeight=0 PerfScore 0.00 G_M16943_IG24: test eax, eax setne al movzx rax, al ;; bbWeight=0 PerfScore 0.00 G_M16943_IG25: add rsp, 64 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M16943_IG26: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 mov rbp, qword ptr [rcx+48] mov qword ptr [rsp+30H], rbp lea rbp, [rbp+B0H] ;; bbWeight=0 PerfScore 0.00 G_M16943_IG27: mov rcx, gword ptr [rbp-68H] call [ConsoleHost:WriteLine():this] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp-68H] call [ConsoleHost:WriteLine(String):this] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp-68H] call [ConsoleHost:WriteLine(String):this] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp-68H] call [ConsoleHost:WriteLine(String):this] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp-68H] call [ConsoleHost:WriteLine(String):this] mov rcx, gword ptr [rbp-68H] call [ConsoleHost:WriteLine():this] mov rcx, gword ptr [rbp-70H] mov rax, gword ptr [rbp-70H] mov rax, qword ptr [rax] mov rax, qword ptr [rax+64] call gword ptr [rax+8]Object:ToString():String:this mov rdx, rax mov rcx, gword ptr [rbp-68H] call [ConsoleHost:WriteLine(String):this] mov dword ptr [rbp-24H], -1 lea rax, G_M16943_IG14 ;; bbWeight=0 PerfScore 0.00 G_M16943_IG28: add rsp, 64 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M16943_IG29: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 mov rbp, qword ptr [rcx+48] mov qword ptr [rsp+30H], rbp lea rbp, [rbp+B0H] ;; bbWeight=0 PerfScore 0.00 G_M16943_IG30: mov rsi, rdx mov rcx, gword ptr [rbp-68H] call [ConsoleHost:WriteLine():this] mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+8]Object:ToString():String:this mov rdx, rax mov rcx, gword ptr [rbp-68H] call [ConsoleHost:WriteLine(String):this] mov dword ptr [rbp-24H], -1 lea rax, G_M16943_IG15 ;; bbWeight=0 PerfScore 0.00 G_M16943_IG31: add rsp, 64 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M16943_IG32: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 mov rbp, qword ptr [rcx+48] mov qword ptr [rsp+30H], rbp lea rbp, [rbp+B0H] ;; bbWeight=0 PerfScore 0.00 G_M16943_IG33: mov rcx, gword ptr [rbp-68H] mov edx, 4 cmp dword ptr [rcx], ecx call [ConsoleHost:SendSignal(int):this] nop ;; bbWeight=0 PerfScore 0.00 G_M16943_IG34: add rsp, 64 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1235, prolog size 58, PerfScore 252.08, (MethodHash=f6d9bdd0) for method UniqueProgramName:AfterAssemblyLoadingAttached(ref):int ; ============================================================ ; Assembly listing for method Console:get_Out():TextWriter ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V02 tmp2 [V02,T01] ( 3, 2.50) ref -> rax ;* V03 tmp3 [V03 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; ; Lcl frame size = 40 G_M19641_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M19641_IG02: mov rcx, 0xD1FFAB1E mov edx, 23 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] test rax, rax jne SHORT G_M19641_IG04 ;; bbWeight=1 PerfScore 5.00 G_M19641_IG03: add rsp, 40 jmp Console:g__EnsureInitialized|25_0():TextWriter ;; bbWeight=0.50 PerfScore 1.13 G_M19641_IG04: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 56, prolog size 4, PerfScore 12.60, (MethodHash=0c51b346) for method Console:get_Out():TextWriter ; ============================================================ ; Assembly listing for method Console:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M43249_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M43249_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call Object:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M43249_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=dd78570e) for method Console:.cctor() ; ============================================================ ; Assembly listing for method Object:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M23468_IG01: ;; bbWeight=1 PerfScore 0.00 G_M23468_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=2994a453) for method Object:.ctor():this ; ============================================================ ; Assembly listing for method Console:g__EnsureInitialized|25_0():TextWriter ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T00] ( 4, 2.50) ref -> [rbp-0x18] EH do-not-enreg[] class-hnd exact EH-live ; V01 loc1 [V01 ] ( 5, 4 ) bool -> [rbp-0x10] do-not-enreg[XF] addr-exposed ld-addr-op ; V02 loc2 [V02,T01] ( 2, 2 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ; V05 PSPSym [V05 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 56 G_M56894_IG01: push rbp push rsi sub rsp, 56 lea rbp, [rsp+40H] mov qword ptr [rbp-20H], rsp ;; bbWeight=1 PerfScore 3.75 G_M56894_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-18H], rdx xor edx, edx mov dword ptr [rbp-10H], edx ;; bbWeight=1 PerfScore 4.50 G_M56894_IG03: cmp byte ptr [rbp-10H], 0 jne SHORT G_M56894_IG05 ;; bbWeight=1 PerfScore 2.00 G_M56894_IG04: lea rdx, [rbp-10H] mov rcx, gword ptr [rbp-18H] call Monitor:ReliableEnter(Object,byref) jmp SHORT G_M56894_IG06 ;; bbWeight=1 PerfScore 4.50 G_M56894_IG05: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M56894_IG06: mov rax, 0xD1FFAB1E cmp gword ptr [rax], 0 jne SHORT G_M56894_IG08 ;; bbWeight=1 PerfScore 3.25 G_M56894_IG07: call ConsolePal:OpenStandardOutput():Stream mov rcx, rax call Console:CreateOutputWriter(Stream):TextWriter mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 1.88 G_M56894_IG08: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=1 PerfScore 2.25 G_M56894_IG09: cmp byte ptr [rbp-10H], 0 je SHORT G_M56894_IG11 ;; bbWeight=1 PerfScore 2.00 G_M56894_IG10: mov rcx, gword ptr [rbp-18H] call Monitor:Exit(Object) ;; bbWeight=0.50 PerfScore 1.00 G_M56894_IG11: mov rax, rsi ;; bbWeight=1 PerfScore 0.25 G_M56894_IG12: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 G_M56894_IG13: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+40H] ;; bbWeight=0 PerfScore 0.00 G_M56894_IG14: cmp byte ptr [rbp-10H], 0 je SHORT G_M56894_IG15 mov rcx, gword ptr [rbp-18H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M56894_IG15: nop ;; bbWeight=0 PerfScore 0.00 G_M56894_IG16: add rsp, 40 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 191, prolog size 15, PerfScore 46.98, (MethodHash=2ed221c1) for method Console:g__EnsureInitialized|25_0():TextWriter ; ============================================================ ; Assembly listing for method ConsolePal:OpenStandardOutput():Stream ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T01] ( 2, 4 ) int -> rsi "impAppendStmt" ;* V02 tmp2 [V02,T05] ( 0, 0 ) int -> zero-ref ;* V03 tmp3 [V03,T06] ( 0, 0 ) int -> zero-ref ;* V04 tmp4 [V04,T03] ( 0, 0 ) int -> zero-ref ;* V05 tmp5 [V05,T04] ( 0, 0 ) int -> zero-ref ; V06 tmp6 [V06,T02] ( 3, 2 ) int -> rax ; V07 rat0 [V07,T00] ( 6, 12 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 32 G_M20573_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M20573_IG02: call Console:get_OutputEncoding():Encoding mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+96] call qword ptr [rax+56]Encoding:get_CodePage():int:this mov esi, eax mov rcx, 0xD1FFAB1E mov edx, 913 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+96] call qword ptr [rax+56]Encoding:get_CodePage():int:this cmp eax, esi jne SHORT G_M20573_IG04 ;; bbWeight=1 PerfScore 20.75 G_M20573_IG03: call Console:get_IsOutputRedirected():bool jmp SHORT G_M20573_IG05 ;; bbWeight=0.50 PerfScore 1.50 G_M20573_IG04: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M20573_IG05: mov ecx, -11 mov edx, 2 mov r8d, eax ;; bbWeight=1 PerfScore 0.75 G_M20573_IG06: add rsp, 32 pop rsi jmp ConsolePal:GetStandardFile(int,int,bool):Stream ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 110, prolog size 5, PerfScore 38.13, (MethodHash=8ad9afa2) for method ConsolePal:OpenStandardOutput():Stream ; ============================================================ ; Assembly listing for method Console:get_OutputEncoding():Encoding ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T00] ( 4, 3.50) ref -> rsi class-hnd ; V01 loc1 [V01,T02] ( 4, 1.50) ref -> [rbp-0x18] EH do-not-enreg[] class-hnd exact EH-live ; V02 loc2 [V02 ] ( 5, 2 ) bool -> [rbp-0x10] do-not-enreg[XF] addr-exposed ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ; V05 PSPSym [V05 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 56 G_M37434_IG01: push rbp push rsi sub rsp, 56 lea rbp, [rsp+40H] mov qword ptr [rbp-20H], rsp ;; bbWeight=1 PerfScore 3.75 G_M37434_IG02: mov rdx, 0xD1FFAB1E mov rsi, gword ptr [rdx] test rsi, rsi jne SHORT G_M37434_IG10 ;; bbWeight=1 PerfScore 3.50 G_M37434_IG03: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-18H], rdx xor edx, edx mov dword ptr [rbp-10H], edx ;; bbWeight=0.50 PerfScore 2.25 G_M37434_IG04: cmp byte ptr [rbp-10H], 0 jne SHORT G_M37434_IG06 ;; bbWeight=0.50 PerfScore 1.00 G_M37434_IG05: lea rdx, [rbp-10H] mov rcx, gword ptr [rbp-18H] call Monitor:ReliableEnter(Object,byref) jmp SHORT G_M37434_IG07 ;; bbWeight=0.50 PerfScore 2.25 G_M37434_IG06: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M37434_IG07: mov rax, 0xD1FFAB1E cmp gword ptr [rax], 0 jne SHORT G_M37434_IG08 call Kernel32:GetConsoleOutputCP():int mov ecx, eax call EncodingHelper:GetSupportedConsoleEncoding(int):Encoding mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 3.50 G_M37434_IG08: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0.50 PerfScore 1.13 G_M37434_IG09: cmp byte ptr [rbp-10H], 0 je SHORT G_M37434_IG10 mov rcx, gword ptr [rbp-18H] call Monitor:Exit(Object) ;; bbWeight=0.50 PerfScore 2.00 G_M37434_IG10: mov rax, rsi ;; bbWeight=1 PerfScore 0.25 G_M37434_IG11: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 G_M37434_IG12: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+40H] ;; bbWeight=0 PerfScore 0.00 G_M37434_IG13: cmp byte ptr [rbp-10H], 0 je SHORT G_M37434_IG14 mov rcx, gword ptr [rbp-18H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M37434_IG14: nop ;; bbWeight=0 PerfScore 0.00 G_M37434_IG15: add rsp, 40 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 208, prolog size 15, PerfScore 42.93, (MethodHash=270d6dc5) for method Console:get_OutputEncoding():Encoding ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke():int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref ;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref ; V02 loc2 [V02,T03] ( 2, 2 ) int -> rax ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04 ] ( 3, 3 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "stub argument" ; V05 tmp2 [V05,T01] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V06 tmp3 [V06,T02] ( 2, 4 ) int -> rax "Single return block return value" ; V07 FramesRoot [V07,T00] ( 6, 6 ) long -> rsi "Pinvoke FrameListRoot" ; V08 PInvokeFrame [V08 ] ( 8, 8 ) blk (72) [rbp-0x88] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 120 G_M36390_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] mov qword ptr [rbp-40H], r10 ;; bbWeight=1 PerfScore 9.75 G_M36390_IG02: lea rcx, [rbp-80H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rsi, rax mov rax, rsp mov qword ptr [rbp-60H], rax mov rax, rbp mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-80H] mov qword ptr [rsi+16], rax mov rax, qword ptr [rbp-40H] mov rax, qword ptr [rax+32] mov rax, qword ptr [rax] mov rdx, qword ptr [rbp-40H] mov qword ptr [rbp-70H], rdx lea rdx, G_M36390_IG04 mov qword ptr [rbp-58H], rdx mov byte ptr [rsi+12], 0 ;; bbWeight=1 PerfScore 16.00 G_M36390_IG03: call rax ;; bbWeight=1 PerfScore 3.00 G_M36390_IG04: mov byte ptr [rsi+12], 1 cmp dword ptr [(reloc)], 0 je SHORT G_M36390_IG05 call [CORINFO_HELP_STOP_FOR_GC] ;; bbWeight=1 PerfScore 7.00 G_M36390_IG05: mov rdx, bword ptr [rbp-78H] mov qword ptr [rsi+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M36390_IG06: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 145, prolog size 28, PerfScore 57.75, (MethodHash=a66071d9) for method ILStubClass:IL_STUB_PInvoke():int ; ============================================================ ; Assembly listing for method NativeLibrary:LoadLibraryCallbackStub(String,Assembly,bool,int):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 2.50) ref -> rdi class-hnd ; V01 arg1 [V01,T00] ( 4, 3 ) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 3, 2.50) bool -> rbx ; V03 arg3 [V03,T03] ( 3, 2.50) int -> rbp ; V04 loc0 [V04 ] ( 2, 1 ) ref -> [rsp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ;* V05 loc1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T10] ( 3, 1.50) ref -> rax ; V08 tmp2 [V08,T11] ( 3, 1.50) ref -> rdi ; V09 tmp3 [V09,T12] ( 3, 1.50) ref -> rsi ;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V11 tmp5 [V11,T13] ( 3, 1.50) ref -> rax ; V12 tmp6 [V12,T14] ( 3, 1.50) ref -> rdx ; V13 tmp7 [V13,T15] ( 3, 1.50) ref -> r8 ;* V14 tmp8 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ; V15 tmp9 [V15,T18] ( 2, 1 ) bool -> rcx V05.hasValue(offs=0x00) P-INDEP "field V05.hasValue (fldOffset=0x0)" ;* V16 tmp10 [V16,T21] ( 0, 0 ) int -> zero-ref V05.value(offs=0x04) P-INDEP "field V05.value (fldOffset=0x4)" ; V17 tmp11 [V17,T19] ( 2, 1 ) bool -> rcx V10.hasValue(offs=0x00) P-INDEP "field V10.hasValue (fldOffset=0x0)" ; V18 tmp12 [V18,T20] ( 2, 1 ) int -> r9 V10.value(offs=0x04) P-INDEP "field V10.value (fldOffset=0x4)" ; V19 tmp13 [V19,T16] ( 3, 1.50) bool -> rcx V14.hasValue(offs=0x00) P-INDEP "field V14.hasValue (fldOffset=0x0)" ; V20 tmp14 [V20,T17] ( 3, 1.50) int -> r9 V14.value(offs=0x04) P-INDEP "field V14.value (fldOffset=0x4)" ; V21 tmp15 [V21 ] ( 2, 2 ) struct ( 8) [rsp+0x28] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V22 tmp16 [V22,T04] ( 3, 3 ) byref -> r10 stack-byref "BlockOp address local" ; V23 tmp17 [V23,T07] ( 2, 2 ) ref -> rax "argument with side effect" ; V24 tmp18 [V24,T08] ( 2, 2 ) ref -> rdx "argument with side effect" ; V25 tmp19 [V25,T09] ( 2, 2 ) ref -> r8 "argument with side effect" ; V26 cse0 [V26,T06] ( 3, 2.50) ref -> rcx "CSE - aggressive" ; V27 rat0 [V27,T05] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 56 G_M42677_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 xor rax, rax mov qword ptr [rsp+30H], rax mov rdi, rcx mov rsi, rdx mov ebx, r8d mov ebp, r9d ;; bbWeight=1 PerfScore 6.50 G_M42677_IG02: mov rax, 0xD1FFAB1E mov rcx, gword ptr [rax] test rcx, rcx jne SHORT G_M42677_IG05 ;; bbWeight=1 PerfScore 3.50 G_M42677_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M42677_IG04: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M42677_IG05: lea r8, [rsp+30H] mov rdx, rsi cmp dword ptr [rcx], ecx call ConditionalWeakTable`2:TryGetValue(__Canon,byref):bool:this test eax, eax jne SHORT G_M42677_IG07 xor rax, rax ;; bbWeight=0.50 PerfScore 2.63 G_M42677_IG06: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M42677_IG07: mov rax, gword ptr [rsp+30H] test bl, bl jne SHORT G_M42677_IG08 xor ecx, ecx mov rdx, rdi mov r8, rsi xor r9d, r9d jmp SHORT G_M42677_IG09 ;; bbWeight=0.50 PerfScore 2.63 G_M42677_IG08: mov r9d, ebp mov ecx, 1 mov rdx, rdi mov r8, rsi ;; bbWeight=0.50 PerfScore 0.50 G_M42677_IG09: lea r10, bword ptr [rsp+28H] mov byte ptr [r10], cl mov dword ptr [r10+4], r9d mov rcx, gword ptr [rax+8] mov r9, qword ptr [rsp+28H] call qword ptr [rax+24]DllImportResolver:Invoke(String,Assembly,Nullable`1):long:this nop ;; bbWeight=0.50 PerfScore 4.38 G_M42677_IG10: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 156, prolog size 15, PerfScore 40.73, (MethodHash=f198594a) for method NativeLibrary:LoadLibraryCallbackStub(String,Assembly,bool,int):long ; ============================================================ ; Assembly listing for method EncodingHelper:GetSupportedConsoleEncoding(int):Encoding ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 7, 5 ) int -> rsi ; V01 loc0 [V01,T04] ( 3, 2.50) int -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 6, 6 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 4, 4 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V05 rat0 [V05,T02] ( 3, 6 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 40 G_M55586_IG01: push rdi push rsi sub rsp, 40 mov esi, ecx ;; bbWeight=1 PerfScore 2.50 G_M55586_IG02: xor ecx, ecx call Encoding:GetEncoding(int):Encoding mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+96] call qword ptr [rax+56]Encoding:get_CodePage():int:this mov edi, eax cmp edi, esi je SHORT G_M55586_IG04 ;; bbWeight=1 PerfScore 10.00 G_M55586_IG03: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] call [Encoding:get_CodePage():int:this] cmp eax, edi je SHORT G_M55586_IG06 ;; bbWeight=0.50 PerfScore 3.25 G_M55586_IG04: mov ecx, esi ;; bbWeight=0.50 PerfScore 0.13 G_M55586_IG05: add rsp, 40 pop rsi pop rdi jmp Encoding:GetEncoding(int):Encoding ;; bbWeight=0.50 PerfScore 1.63 G_M55586_IG06: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] call [Encoding:get_CodePage():int:this] cmp eax, esi je SHORT G_M55586_IG08 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov edx, esi call Encoding:.ctor(int):this mov dword ptr [rdi+48], esi mov rax, rdi ;; bbWeight=0.50 PerfScore 5.38 G_M55586_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M55586_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov byte ptr [rsi+36], 1 mov dword ptr [rsi+32], 0xFDE9 mov rcx, rsi call [UTF8Encoding:SetDefaultFallbacks():this] mov byte ptr [rsi+37], 0 mov rax, rsi ;; bbWeight=0.50 PerfScore 4.00 G_M55586_IG09: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 186, prolog size 6, PerfScore 47.73, (MethodHash=eb9626dd) for method EncodingHelper:GetSupportedConsoleEncoding(int):Encoding ; ============================================================ ; Assembly listing for method Encoding:GetEncoding(int):Encoding ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 21, 9.50) int -> rsi ; V01 loc0 [V01,T02] ( 3, 2.50) ref -> rax class-hnd ; V02 loc1 [V02,T13] ( 2, 0 ) ref -> rsi class-hnd ; V03 loc2 [V03,T14] ( 2, 0 ) ref -> rsi class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T06] ( 3, 0 ) ref -> rsi class-hnd exact "Single-def Box Helper" ; V07 tmp3 [V07,T15] ( 2, 0 ) ref -> rdi class-hnd "impImportAndPushBox" ; V08 tmp4 [V08,T07] ( 3, 0 ) ref -> rbx class-hnd exact "Single-def Box Helper" ; V09 tmp5 [V09,T08] ( 3, 0 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V10 tmp6 [V10,T09] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V11 tmp7 [V11,T16] ( 2, 0 ) ref -> rbx class-hnd "impImportAndPushBox" ; V12 tmp8 [V12,T10] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V13 tmp9 [V13,T11] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V14 tmp10 [V14,T17] ( 2, 0 ) ref -> rbx class-hnd "impImportAndPushBox" ; V15 tmp11 [V15,T12] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V16 tmp12 [V16,T03] ( 2, 1 ) bool -> rcx "Inline return value spill temp" ; V17 tmp13 [V17,T00] ( 11, 12 ) ref -> rax "Single return block return value" ; V18 tmp14 [V18,T18] ( 2, 0 ) ref -> rcx "argument with side effect" ; V19 tmp15 [V19,T19] ( 2, 0 ) ref -> rdi "argument with side effect" ; V20 tmp16 [V20,T20] ( 2, 0 ) ref -> r8 "argument with side effect" ; V21 tmp17 [V21,T21] ( 2, 0 ) ref -> rsi "argument with side effect" ; V22 tmp18 [V22,T22] ( 2, 0 ) ref -> rdi "argument with side effect" ; V23 tmp19 [V23,T23] ( 2, 0 ) ref -> r8 "argument with side effect" ; V24 tmp20 [V24,T24] ( 2, 0 ) ref -> rcx "argument with side effect" ; V25 tmp21 [V25,T25] ( 2, 0 ) ref -> rcx "argument with side effect" ; V26 tmp22 [V26,T26] ( 2, 0 ) ref -> rcx "argument with side effect" ; V27 tmp23 [V27,T27] ( 2, 0 ) ref -> r14 "argument with side effect" ; V28 tmp24 [V28,T28] ( 2, 0 ) ref -> r8 "argument with side effect" ; V29 tmp25 [V29,T29] ( 2, 0 ) ref -> rcx "argument with side effect" ; V30 tmp26 [V30,T30] ( 2, 0 ) ref -> rdx "argument with side effect" ; V31 cse0 [V31,T04] ( 3, 1.25) int -> rcx "CSE - moderate" ; ; Lcl frame size = 32 G_M43581_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 32 mov esi, ecx ;; bbWeight=1 PerfScore 5.50 G_M43581_IG02: mov ecx, esi call EncodingProvider:GetEncodingFromProvider(int):Encoding mov rcx, rax call Encoding:FilterDisallowedEncodings(Encoding):Encoding test rax, rax je SHORT G_M43581_IG04 ;; bbWeight=1 PerfScore 3.75 G_M43581_IG03: jmp G_M43581_IG20 ;; bbWeight=0.50 PerfScore 1.00 G_M43581_IG04: cmp esi, 0x4B1 jg SHORT G_M43581_IG08 cmp esi, 3 jg SHORT G_M43581_IG06 test esi, esi jne G_M43581_IG21 ;; bbWeight=0.50 PerfScore 1.88 G_M43581_IG05: mov rcx, 0xD1FFAB1E mov edx, 892 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp G_M43581_IG20 ;; bbWeight=0.50 PerfScore 2.88 G_M43581_IG06: cmp esi, 42 je G_M43581_IG22 cmp esi, 0x4B0 je G_M43581_IG12 cmp esi, 0x4B1 jne G_M43581_IG24 ;; bbWeight=0.50 PerfScore 1.88 G_M43581_IG07: mov rcx, 0xD1FFAB1E mov edx, 913 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp G_M43581_IG20 ;; bbWeight=0.50 PerfScore 2.88 G_M43581_IG08: cmp esi, 0x4E9F jg SHORT G_M43581_IG10 cmp esi, 0x2EE0 je G_M43581_IG13 cmp esi, 0x2EE1 je G_M43581_IG14 cmp esi, 0x4E9F jne G_M43581_IG24 ;; bbWeight=0.50 PerfScore 2.50 G_M43581_IG09: mov rcx, 0xD1FFAB1E mov edx, 868 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp G_M43581_IG20 ;; bbWeight=0.50 PerfScore 2.88 G_M43581_IG10: cmp esi, 0x6FAF je G_M43581_IG15 cmp esi, 0xFDE8 je G_M43581_IG16 cmp esi, 0xFDE9 jne G_M43581_IG24 ;; bbWeight=0.50 PerfScore 1.88 G_M43581_IG11: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] jmp G_M43581_IG20 ;; bbWeight=0.50 PerfScore 2.13 G_M43581_IG12: mov rcx, 0xD1FFAB1E mov edx, 913 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp G_M43581_IG20 ;; bbWeight=0.50 PerfScore 2.88 G_M43581_IG13: mov rcx, 0xD1FFAB1E mov edx, 916 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp G_M43581_IG20 ;; bbWeight=0.50 PerfScore 2.88 G_M43581_IG14: mov rcx, 0xD1FFAB1E mov edx, 916 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp G_M43581_IG20 ;; bbWeight=0.50 PerfScore 2.88 G_M43581_IG15: mov rcx, 0xD1FFAB1E mov edx, 900 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp SHORT G_M43581_IG20 ;; bbWeight=0.50 PerfScore 2.88 G_M43581_IG16: mov ecx, dword ptr [(reloc)] test ecx, ecx jl G_M43581_IG23 ;; bbWeight=0.50 PerfScore 1.63 G_M43581_IG17: test ecx, ecx jg SHORT G_M43581_IG19 ;; bbWeight=0.25 PerfScore 0.31 G_M43581_IG18: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, 0xD1FFAB1E call LocalAppContextSwitches:GetCachedSwitchValueInternal(String,byref):bool movzx rcx, al test ecx, ecx je G_M43581_IG23 ;; bbWeight=0.50 PerfScore 2.50 G_M43581_IG19: mov rcx, 0xD1FFAB1E mov edx, 918 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.88 G_M43581_IG20: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M43581_IG21: lea ecx, [rsi-1] cmp ecx, 2 ja G_M43581_IG24 ;; bbWeight=0 PerfScore 0.00 G_M43581_IG22: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x60FB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov dword ptr [rdi+8], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rdx, rdi mov rcx, rbx call SR:Format(String,Object):String mov rdi, rax mov ecx, 0x1A61F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M43581_IG23: mov rcx, 0xD1FFAB1E mov edx, 511 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] mov ecx, 0x1A631 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x1A677 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rcx, rsi mov rdx, rdi call String:Format(IFormatProvider,String,Object):String mov rsi, rax mov ecx, 0x12B3C mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, rsi call SR:Format(String,Object):String mov rsi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov rdx, rsi call NotSupportedException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M43581_IG24: test esi, esi jl SHORT G_M43581_IG25 cmp esi, 0xFFFF jle G_M43581_IG26 ;; bbWeight=0 PerfScore 0.00 G_M43581_IG25: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xA409 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax xor ecx, ecx mov dword ptr [rsi+8], ecx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov dword ptr [rbx+8], 0xFFFF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov ecx, 0x1A61F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r14, rax mov r8, rbx mov rdx, rsi mov rcx, rdi call SR:Format(String,Object,Object):String mov r8, rax mov rdx, r14 mov rcx, rbp call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rbp call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M43581_IG26: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0xED55 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov dword ptr [rdi+8], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rdx, rdi mov rcx, rbx call SR:Format(String,Object):String mov rdx, rax mov rcx, rsi call NotSupportedException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1144, prolog size 10, PerfScore 165.09, (MethodHash=647555c2) for method Encoding:GetEncoding(int):Encoding ; ============================================================ ; Assembly listing for method EncodingProvider:GetEncodingFromProvider(int):Encoding ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 6 ) int -> rsi ; V01 loc0 [V01,T06] ( 3, 2.50) ref -> rdi class-hnd ; V02 loc1 [V02,T04] ( 3, 5 ) ref -> rdi class-hnd ; V03 loc2 [V03,T00] ( 5, 16.50) int -> rbx ; V04 loc3 [V04,T01] ( 3, 12 ) ref -> rcx class-hnd ; V05 loc4 [V05,T02] ( 3, 8.50) ref -> rax class-hnd ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 cse0 [V07,T05] ( 3, 5 ) int -> rbp "CSE - aggressive" ; ; Lcl frame size = 40 G_M31979_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov esi, ecx ;; bbWeight=1 PerfScore 4.50 G_M31979_IG02: mov rcx, 0xD1FFAB1E mov edx, 899 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rdi, gword ptr [rax] test rdi, rdi jne SHORT G_M31979_IG05 ;; bbWeight=1 PerfScore 5.00 G_M31979_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M31979_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M31979_IG05: xor ebx, ebx mov ebp, dword ptr [rdi+8] test ebp, ebp jle SHORT G_M31979_IG08 ;; bbWeight=0.50 PerfScore 1.75 G_M31979_IG06: movsxd rcx, ebx mov rcx, gword ptr [rdi+8*rcx+16] mov edx, esi mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call gword ptr [rax+40]EncodingProvider:GetEncoding(int):Encoding:this test rax, rax jne SHORT G_M31979_IG10 ;; bbWeight=4 PerfScore 43.00 G_M31979_IG07: inc ebx cmp ebp, ebx jg SHORT G_M31979_IG06 ;; bbWeight=4 PerfScore 6.00 G_M31979_IG08: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M31979_IG09: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M31979_IG10: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 119, prolog size 8, PerfScore 77.28, (MethodHash=613f8314) for method EncodingProvider:GetEncodingFromProvider(int):Encoding ; ============================================================ ; Assembly listing for method EncodingProvider:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M28676_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M28676_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call Object:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M28676_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=eab58ffb) for method EncodingProvider:.cctor() ; ============================================================ ; Assembly listing for method Encoding:FilterDisallowedEncodings(Encoding):Encoding ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 7, 4.50) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V03 cse0 [V03,T01] ( 3, 2.25) int -> rcx "CSE - aggressive" ; ; Lcl frame size = 32 G_M718_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M718_IG02: mov ecx, dword ptr [(reloc)] test ecx, ecx jl SHORT G_M718_IG07 ;; bbWeight=1 PerfScore 3.25 G_M718_IG03: test ecx, ecx jg SHORT G_M718_IG05 ;; bbWeight=0.25 PerfScore 0.31 G_M718_IG04: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, 0xD1FFAB1E call LocalAppContextSwitches:GetCachedSwitchValueInternal(String,byref):bool movzx rax, al test eax, eax je SHORT G_M718_IG07 ;; bbWeight=0.50 PerfScore 2.50 G_M718_IG05: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M718_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M718_IG07: test rsi, rsi je SHORT G_M718_IG08 mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+96] call qword ptr [rax+56]Encoding:get_CodePage():int:this cmp eax, 0xFDE8 je SHORT G_M718_IG10 ;; bbWeight=0.50 PerfScore 4.88 G_M718_IG08: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M718_IG09: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M718_IG10: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M718_IG11: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 108, prolog size 5, PerfScore 26.24, (MethodHash=a5a1fd31) for method Encoding:FilterDisallowedEncodings(Encoding):Encoding ; ============================================================ ; Assembly listing for method LocalAppContextSwitches:GetCachedSwitchValueInternal(String,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 3.50) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 3, 2.50) byref -> rdi ; V02 loc0 [V02,T02] ( 2, 2 ) bool -> rax ; V03 loc1 [V03 ] ( 4, 3 ) bool -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op ; V04 loc2 [V04 ] ( 2, 2 ) bool -> [rsp+0x28] do-not-enreg[X] addr-exposed ld-addr-op ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 3, 1.50) byref -> rdi ; V07 tmp2 [V07,T04] ( 3, 1.50) byref -> rdi ; V08 tmp3 [V08,T05] ( 3, 1.50) int -> rax ; ; Lcl frame size = 56 G_M33457_IG01: push rdi push rsi sub rsp, 56 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 2.75 G_M33457_IG02: lea rdx, [rsp+30H] mov rcx, rsi call AppContext:TryGetSwitch(String,byref):bool test eax, eax jne SHORT G_M33457_IG04 ;; bbWeight=1 PerfScore 3.00 G_M33457_IG03: mov rcx, rsi call LocalAppContextSwitches:GetSwitchDefaultValue(String):bool mov dword ptr [rsp+30H], eax ;; bbWeight=0.50 PerfScore 1.13 G_M33457_IG04: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] lea rdx, [rsp+28H] call AppContext:TryGetSwitch(String,byref):bool cmp byte ptr [rsp+28H], 0 jne SHORT G_M33457_IG08 ;; bbWeight=1 PerfScore 5.75 G_M33457_IG05: cmp byte ptr [rsp+30H], 0 jne SHORT G_M33457_IG06 mov eax, -1 jmp SHORT G_M33457_IG07 ;; bbWeight=0.50 PerfScore 2.13 G_M33457_IG06: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M33457_IG07: mov dword ptr [rdi], eax ;; bbWeight=0.50 PerfScore 0.50 G_M33457_IG08: mov eax, dword ptr [rsp+30H] movzx rax, al ;; bbWeight=1 PerfScore 1.25 G_M33457_IG09: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 106, prolog size 6, PerfScore 29.48, (MethodHash=331a7d4e) for method LocalAppContextSwitches:GetCachedSwitchValueInternal(String,byref):bool ; ============================================================ ; Assembly listing for method LocalAppContextSwitches:GetSwitchDefaultValue(String):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 3.50) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M2355_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M2355_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rsi call String:Equals(String,String):bool test eax, eax je SHORT G_M2355_IG05 ;; bbWeight=1 PerfScore 4.75 G_M2355_IG03: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M2355_IG04: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M2355_IG05: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rsi call String:Equals(String,String):bool test eax, eax je SHORT G_M2355_IG07 mov eax, 1 ;; bbWeight=0.50 PerfScore 2.50 G_M2355_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M2355_IG07: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M2355_IG08: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 88, prolog size 5, PerfScore 20.43, (MethodHash=6002f6cc) for method LocalAppContextSwitches:GetSwitchDefaultValue(String):bool ; ============================================================ ; Assembly listing for method Encoding:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M63973_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M63973_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] xor edx, edx call UTF8EncodingSealed:.ctor(bool):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 7.00 G_M63973_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 72, prolog size 16, PerfScore 19.20, (MethodHash=b33d061a) for method Encoding:.cctor() ; ============================================================ ; Assembly listing for method Encoding:get_CodePage():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M54016_IG01: ;; bbWeight=1 PerfScore 0.00 G_M54016_IG02: mov eax, dword ptr [rcx+32] ;; bbWeight=1 PerfScore 2.00 G_M54016_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 3.40, (MethodHash=14972cff) for method Encoding:get_CodePage():int:this ; ============================================================ ; Assembly listing for method Encoding:.ctor(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) int -> rdx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M37065_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M37065_IG02: mov byte ptr [rcx+36], 1 test edx, edx jl SHORT G_M37065_IG05 ;; bbWeight=1 PerfScore 2.25 G_M37065_IG03: mov dword ptr [rcx+32], edx mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+32] ;; bbWeight=1 PerfScore 7.00 G_M37065_IG04: add rsp, 32 pop rsi rex.jmp rax ;; bbWeight=1 PerfScore 2.75 G_M37065_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1A5DD mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 93, prolog size 5, PerfScore 22.55, (MethodHash=98c66f36) for method Encoding:.ctor(int):this ; ============================================================ ; Assembly listing for method Encoding:SetDefaultFallbacks():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M52968_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M52968_IG02: mov rcx, 0xD1FFAB1E mov edx, 890 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+16] call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 879 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+24] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 10.75 G_M52968_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 99, prolog size 5, PerfScore 23.90, (MethodHash=d6d83117) for method Encoding:SetDefaultFallbacks():this ; ============================================================ ; Assembly listing for method EncoderReplacementFallback:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M33600_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M33600_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call EncoderReplacementFallback:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M33600_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=cd2f7cbf) for method EncoderReplacementFallback:.cctor() ; ============================================================ ; Assembly listing for method EncoderReplacementFallback:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M19807_IG01: ;; bbWeight=1 PerfScore 0.00 G_M19807_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] ;; bbWeight=1 PerfScore 2.25 G_M19807_IG03: jmp EncoderReplacementFallback:.ctor(String):this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 18, prolog size 0, PerfScore 6.05, (MethodHash=dbb1b2a0) for method EncoderReplacementFallback:.ctor():this ; ============================================================ ; Assembly listing for method DecoderReplacementFallback:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M58474_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M58474_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call DecoderReplacementFallback:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M58474_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=52b71b95) for method DecoderReplacementFallback:.cctor() ; ============================================================ ; Assembly listing for method DecoderReplacementFallback:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M40693_IG01: ;; bbWeight=1 PerfScore 0.00 G_M40693_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] ;; bbWeight=1 PerfScore 2.25 G_M40693_IG03: jmp DecoderReplacementFallback:.ctor(String):this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 18, prolog size 0, PerfScore 6.05, (MethodHash=5abd610a) for method DecoderReplacementFallback:.ctor():this ; ============================================================ ; Assembly listing for method UnicodeEncoding:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M39834_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax mov qword ptr [rbp-10H], rax ;; bbWeight=1 PerfScore 4.00 G_M39834_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] mov edx, 1 mov r8d, 1 call UnicodeEncoding:.ctor(bool,bool):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] xor edx, edx mov r8d, 1 call UnicodeEncoding:.ctor(bool,bool):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 14.25 G_M39834_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 140, prolog size 20, PerfScore 34.25, (MethodHash=acb06465) for method UnicodeEncoding:.cctor() ; ============================================================ ; Assembly listing for method UnicodeEncoding:.ctor(bool,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) bool -> rdi ; V02 arg2 [V02,T02] ( 3, 3 ) bool -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04,T05] ( 0, 0 ) ref -> zero-ref ;* V05 tmp2 [V05,T04] ( 0, 0 ) ref -> zero-ref ; V06 tmp3 [V06,T03] ( 3, 2 ) int -> rdx ; ; Lcl frame size = 32 G_M33225_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx mov ebx, r8d ;; bbWeight=1 PerfScore 4.00 G_M33225_IG02: test dil, dil jne SHORT G_M33225_IG04 ;; bbWeight=1 PerfScore 1.25 G_M33225_IG03: mov edx, 0x4B0 jmp SHORT G_M33225_IG05 ;; bbWeight=0.50 PerfScore 1.13 G_M33225_IG04: mov edx, 0x4B1 ;; bbWeight=0.50 PerfScore 0.13 G_M33225_IG05: mov rcx, rsi call Encoding:.ctor(int):this mov byte ptr [rsi+38], dil mov byte ptr [rsi+39], bl ;; bbWeight=1 PerfScore 3.25 G_M33225_IG06: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 55, prolog size 7, PerfScore 18.00, (MethodHash=15157e36) for method UnicodeEncoding:.ctor(bool,bool):this ; ============================================================ ; Assembly listing for method UnicodeEncoding:SetDefaultFallbacks():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 40 G_M57239_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M57239_IG02: cmp byte ptr [rsi+37], 0 je SHORT G_M57239_IG05 ;; bbWeight=1 PerfScore 3.00 G_M57239_IG03: mov rcx, 0xD1FFAB1E mov edx, 882 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+16] call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 873 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+24] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 5.38 G_M57239_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M57239_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi call EncoderReplacementFallback:.ctor(String):this lea rcx, bword ptr [rsi+16] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi call DecoderReplacementFallback:.ctor(String):this lea rcx, bword ptr [rsi+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 6.88 G_M57239_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 217, prolog size 6, PerfScore 41.70, (MethodHash=5b212068) for method UnicodeEncoding:SetDefaultFallbacks():this ; ============================================================ ; Assembly listing for method ConsolePal:GetStandardFile(int,int,bool):Stream ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 3 ) int -> rcx ; V01 arg1 [V01,T01] ( 4, 3 ) int -> rsi ; V02 arg2 [V02,T03] ( 3, 2.50) bool -> rdi ; V03 loc0 [V03,T04] ( 6, 4 ) long -> rbx ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T00] ( 6, 6 ) ref -> r14 class-hnd exact "NewObj constructor temp" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; ; Lcl frame size = 32 G_M20200_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 32 lea rbp, [rsp+40H] mov esi, edx mov edi, r8d ;; bbWeight=1 PerfScore 6.25 G_M20200_IG02: call Kernel32:GetStdHandle(int):long mov rbx, rax cmp dword ptr [(reloc)], 0 jne G_M20200_IG09 ;; bbWeight=1 PerfScore 4.25 G_M20200_IG03: test rbx, rbx je SHORT G_M20200_IG05 ;; bbWeight=1 PerfScore 1.25 G_M20200_IG04: cmp rbx, -1 je SHORT G_M20200_IG05 cmp esi, 1 je SHORT G_M20200_IG07 mov rcx, rbx call ConsolePal:ConsoleHandleIsWritable(long):bool test eax, eax jne SHORT G_M20200_IG07 ;; bbWeight=0.50 PerfScore 2.50 G_M20200_IG05: mov rcx, 0xD1FFAB1E mov edx, 0x68E call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.88 G_M20200_IG06: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M20200_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rcx, r14 mov edx, esi call ConsoleStream:.ctor(int):this mov qword ptr [r14+24], rbx mov rcx, rbx call Kernel32:GetFileType(long):int cmp eax, 3 sete al mov byte ptr [r14+18], al mov byte ptr [r14+19], dil mov rax, r14 ;; bbWeight=0.50 PerfScore 4.38 G_M20200_IG08: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M20200_IG09: call CORINFO_HELP_POLL_GC jmp G_M20200_IG03 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 191, prolog size 15, PerfScore 43.60, (MethodHash=97d6b117) for method ConsolePal:GetStandardFile(int,int,bool):Stream ; ============================================================ ; Assembly listing for method ConsolePal:GetStandardFile(int,int,bool):Stream ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 3 ) int -> rcx ; V01 arg1 [V01,T01] ( 4, 3 ) int -> rsi ; V02 arg2 [V02,T03] ( 3, 2.50) bool -> rdi ; V03 loc0 [V03,T04] ( 6, 4 ) long -> rbx ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T00] ( 6, 6 ) ref -> r14 class-hnd exact "NewObj constructor temp" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; ; Lcl frame size = 32 G_M20200_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 32 lea rbp, [rsp+40H] mov esi, edx mov edi, r8d ;; bbWeight=1 PerfScore 6.25 G_M20200_IG02: call Kernel32:GetStdHandle(int):long mov rbx, rax mov rcx, 0xD1FFAB1E cmp dword ptr [rcx], 0 jne G_M20200_IG09 ;; bbWeight=1 PerfScore 4.50 G_M20200_IG03: test rbx, rbx je SHORT G_M20200_IG05 ;; bbWeight=1 PerfScore 1.25 G_M20200_IG04: cmp rbx, -1 je SHORT G_M20200_IG05 cmp esi, 1 je SHORT G_M20200_IG07 mov rcx, rbx call ConsolePal:ConsoleHandleIsWritable(long):bool test eax, eax jne SHORT G_M20200_IG07 ;; bbWeight=0.50 PerfScore 2.50 G_M20200_IG05: mov rcx, 0xD1FFAB1E mov edx, 0x68E call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.88 G_M20200_IG06: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M20200_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rcx, r14 mov edx, esi call ConsoleStream:.ctor(int):this mov qword ptr [r14+24], rbx mov rcx, rbx call Kernel32:GetFileType(long):int cmp eax, 3 sete al mov byte ptr [r14+18], al mov byte ptr [r14+19], dil mov rax, r14 ;; bbWeight=0.50 PerfScore 4.38 G_M20200_IG08: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M20200_IG09: call CORINFO_HELP_POLL_GC jmp G_M20200_IG03 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 197, prolog size 15, PerfScore 44.45, (MethodHash=97d6b117) for method ConsolePal:GetStandardFile(int,int,bool):Stream ; ============================================================ ; Assembly listing for method ConsolePal:ConsoleHandleIsWritable(long):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) long -> rcx ; V01 loc0 [V01 ] ( 1, 1 ) int -> [rbp-0x08] do-not-enreg[X] addr-exposed ld-addr-op ; V02 loc1 [V02 ] ( 2, 2 ) ubyte -> [rbp-0x10] do-not-enreg[X] addr-exposed ld-addr-op ; V03 loc2 [V03,T01] ( 2, 2 ) int -> rax ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 64 G_M36608_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] ;; bbWeight=1 PerfScore 1.75 G_M36608_IG02: mov dword ptr [rbp-10H], 65 xor r9, r9 mov qword ptr [rsp+20H], r9 lea r9, [rbp-08H] lea rdx, [rbp-10H] xor r8d, r8d call Kernel32:WriteFile(long,long,int,byref,long):int test eax, eax setne al movzx rax, al ;; bbWeight=1 PerfScore 6.00 G_M36608_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 55, prolog size 10, PerfScore 15.25, (MethodHash=cf1c70ff) for method ConsolePal:ConsoleHandleIsWritable(long):bool ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(long,long,int,byref,long):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 3 ) long -> rdi ; V01 arg1 [V01,T03] ( 3, 3 ) long -> rbx ; V02 arg2 [V02,T04] ( 3, 3 ) int -> r14 ; V03 arg3 [V03,T01] ( 4, 4 ) byref -> rsi ; V04 arg4 [V04,T14] ( 1, 1 ) long -> [rbp+0x30] ;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref ;* V06 loc1 [V06 ] ( 0, 0 ) long -> zero-ref ;* V07 loc2 [V07 ] ( 0, 0 ) long -> zero-ref ; V08 loc3 [V08,T13] ( 2, 2 ) long -> r14 ; V09 loc4 [V09 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned ;* V10 loc5 [V10 ] ( 0, 0 ) long -> zero-ref ;* V11 loc6 [V11 ] ( 0, 0 ) int -> zero-ref ;* V12 loc7 [V12 ] ( 0, 0 ) int -> zero-ref ; V13 OutArgs [V13 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V14 tmp1 [V14 ] ( 3, 3 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "stub argument" ; V15 tmp2 [V15,T05] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V16 tmp3 [V16,T06] ( 2, 4 ) int -> rsi "impAppendStmt" ; V17 tmp4 [V17,T07] ( 2, 4 ) int -> rax "Single return block return value" ; V18 FramesRoot [V18,T00] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V19 PInvokeFrame [V19 ] ( 8, 8 ) blk (72) [rbp-0x90] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V20 tmp7 [V20,T08] ( 2, 4 ) long -> r9 "Cast away GC" ; V21 tmp8 [V21,T09] ( 2, 4 ) long -> rcx "argument with side effect" ; V22 tmp9 [V22,T10] ( 2, 4 ) long -> rdx "argument with side effect" ; V23 tmp10 [V23,T11] ( 2, 4 ) long -> r8 "argument with side effect" ; V24 tmp11 [V24,T12] ( 2, 4 ) long -> r9 "argument with side effect" ; ; Lcl frame size = 136 G_M60341_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] mov qword ptr [rbp-48H], r10 xor rbx, rbx mov qword ptr [rbp-40H], rbx mov rdi, rcx mov rbx, rdx mov r14d, r8d mov rsi, r9 ;; bbWeight=1 PerfScore 12.00 G_M60341_IG02: lea rcx, [rbp-88H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rax, rsp mov qword ptr [rbp-68H], rax mov rax, rbp mov qword ptr [rbp-58H], rax lea rax, bword ptr [rbp-88H] mov qword ptr [r15+16], rax movsxd r14, r14d mov bword ptr [rbp-40H], rsi call StubHelpers:ClearLastError() mov rcx, qword ptr [rbp-48H] mov rcx, qword ptr [rcx+32] mov rax, qword ptr [rcx] mov rcx, rdi mov rdx, rbx mov r8, r14 mov r9, rsi mov rsi, qword ptr [rbp+30H] mov qword ptr [rsp+20H], rsi mov r10, qword ptr [rbp-48H] mov qword ptr [rbp-78H], r10 lea r10, G_M60341_IG04 mov qword ptr [rbp-60H], r10 mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 21.25 G_M60341_IG03: call rax ;; bbWeight=1 PerfScore 3.00 G_M60341_IG04: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M60341_IG05 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M60341_IG05: mov esi, eax call StubHelpers:SetLastError() mov eax, esi ;; bbWeight=1 PerfScore 1.50 G_M60341_IG06: mov rdx, bword ptr [rbp-80H] mov qword ptr [r15+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M60341_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 228, prolog size 37, PerfScore 75.55, (MethodHash=e2ac144a) for method ILStubClass:IL_STUB_PInvoke(long,long,int,byref,long):int ; ============================================================ ; Assembly listing for method ConsoleStream:.ctor(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) int -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M56097_IG01: ;; bbWeight=1 PerfScore 0.00 G_M56097_IG02: test dl, 1 setne al mov byte ptr [rcx+16], al test dl, 2 setne al mov byte ptr [rcx+17], al ;; bbWeight=1 PerfScore 4.50 G_M56097_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 19, prolog size 0, PerfScore 7.40, (MethodHash=d17d24de) for method ConsoleStream:.ctor(int):this ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(long):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) long -> rsi ;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ;* V02 loc1 [V02 ] ( 0, 0 ) long -> zero-ref ;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref ;* V04 loc3 [V04 ] ( 0, 0 ) int -> zero-ref ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06 ] ( 3, 3 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "stub argument" ; V07 tmp2 [V07,T02] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V08 tmp3 [V08,T03] ( 2, 4 ) int -> rsi "impAppendStmt" ; V09 tmp4 [V09,T04] ( 2, 4 ) int -> rax "Single return block return value" ; V10 FramesRoot [V10,T00] ( 6, 6 ) long -> rdi "Pinvoke FrameListRoot" ; V11 PInvokeFrame [V11 ] ( 8, 8 ) blk (72) [rbp-0x88] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 120 G_M57132_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] mov qword ptr [rbp-40H], r10 mov rsi, rcx ;; bbWeight=1 PerfScore 10.00 G_M57132_IG02: lea rcx, [rbp-80H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rax, rsp mov qword ptr [rbp-60H], rax mov rax, rbp mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-80H] mov qword ptr [rdi+16], rax call StubHelpers:ClearLastError() mov rcx, qword ptr [rbp-40H] mov rcx, qword ptr [rcx+32] mov rax, qword ptr [rcx] mov rcx, rsi mov rdx, qword ptr [rbp-40H] mov qword ptr [rbp-70H], rdx lea rdx, G_M57132_IG04 mov qword ptr [rbp-58H], rdx mov byte ptr [rdi+12], 0 ;; bbWeight=1 PerfScore 17.25 G_M57132_IG03: call rax ;; bbWeight=1 PerfScore 3.00 G_M57132_IG04: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M57132_IG05 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M57132_IG05: mov esi, eax call StubHelpers:SetLastError() mov eax, esi ;; bbWeight=1 PerfScore 1.50 G_M57132_IG06: mov rdx, bword ptr [rbp-78H] mov qword ptr [rdi+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M57132_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 177, prolog size 28, PerfScore 64.45, (MethodHash=e59220d3) for method ILStubClass:IL_STUB_PInvoke(long):int ; ============================================================ ; Assembly listing for method Console:CreateOutputWriter(Stream):TextWriter ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 3, 2 ) ref -> rdi ; V03 tmp2 [V03,T00] ( 6, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp3 [V04,T03] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V05 tmp4 [V05,T05] ( 2, 1 ) int -> rcx "Inline stloc first use temp" ; V06 tmp5 [V06,T04] ( 2, 2 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M11254_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M11254_IG02: mov rcx, 0xD1FFAB1E mov edx, 0x68E call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E cmp rsi, gword ptr [rcx] je SHORT G_M11254_IG05 ;; bbWeight=1 PerfScore 4.75 G_M11254_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax call Console:get_OutputEncoding():Encoding mov rcx, rax call EncodingExtensions:RemovePreamble(Encoding):Encoding mov r8, rax mov dword ptr [rsp+20H], 1 mov rdx, rsi mov rcx, rdi mov r9d, 256 call StreamWriter:.ctor(Stream,Encoding,int,bool):this mov rcx, gword ptr [rdi+72] mov ecx, dword ptr [rcx+52] test ecx, 0xD1FFAB1E je SHORT G_M11254_IG08 ;; bbWeight=0.50 PerfScore 6.00 G_M11254_IG04: mov byte ptr [rdi+88], 1 mov rcx, rdi mov edx, 1 xor r8d, r8d call StreamWriter:Flush(bool,bool):this jmp SHORT G_M11254_IG06 ;; bbWeight=0.50 PerfScore 2.38 G_M11254_IG05: mov rcx, 0xD1FFAB1E mov edx, 0x6C4 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] ;; bbWeight=0.50 PerfScore 1.88 G_M11254_IG06: mov rcx, rdi ;; bbWeight=1 PerfScore 0.25 G_M11254_IG07: add rsp, 40 pop rsi pop rdi jmp TextWriter:Synchronized(TextWriter):TextWriter ;; bbWeight=1 PerfScore 3.25 G_M11254_IG08: call StreamWriter:ThrowAsyncIOInProgress() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 193, prolog size 9, PerfScore 40.30, (MethodHash=9c65d409) for method Console:CreateOutputWriter(Stream):TextWriter ; ============================================================ ; Assembly listing for method Stream:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M27290_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M27290_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call NullStream:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M27290_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=341d9565) for method Stream:.cctor() ; ============================================================ ; Assembly listing for method NullStream:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M64222_IG01: ;; bbWeight=1 PerfScore 0.00 G_M64222_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=17580521) for method NullStream:.ctor():this ; ============================================================ ; Assembly listing for method EncodingExtensions:RemovePreamble(Encoding):Encoding ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 6, 5 ) ref -> rsi class-hnd ; V01 loc0 [V01 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 7, 7 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04 ] ( 1, 1 ) byref -> [rsp+0x28] do-not-enreg[X] addr-exposed V01._pointer(offs=0x00) P-DEP "field V01._pointer (fldOffset=0x0)" ; V05 tmp3 [V05 ] ( 2, 2 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed V01._length(offs=0x08) P-DEP "field V01._length (fldOffset=0x8)" ; ; Lcl frame size = 56 G_M14708_IG01: push rdi push rsi sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 3.75 G_M14708_IG02: lea rdx, bword ptr [rsp+28H] mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+48]Encoding:get_Preamble():ReadOnlySpan`1:this cmp dword ptr [rsp+30H], 0 jne SHORT G_M14708_IG05 ;; bbWeight=1 PerfScore 9.75 G_M14708_IG03: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M14708_IG04: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M14708_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov byte ptr [rdi+36], 1 xor edx, edx mov dword ptr [rdi+32], edx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rdi+16] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rdi+24] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+40] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 6.63 G_M14708_IG06: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 144, prolog size 13, PerfScore 36.90, (MethodHash=581bc68b) for method EncodingExtensions:RemovePreamble(Encoding):Encoding ; ============================================================ ; Assembly listing for method Encoding:get_Preamble():ReadOnlySpan`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) ref -> rcx this class-hnd ; V01 RetBuf [V01,T00] ( 5, 5 ) byref -> rsi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 4, 6 ) ref -> rax class-hnd "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V06 tmp4 [V06,T03] ( 3, 2 ) byref -> rdx V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ; V07 tmp5 [V07,T04] ( 3, 2 ) int -> rcx V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V08 tmp6 [V08,T05] ( 2, 1 ) byref -> rdx V05._value(offs=0x00) P-INDEP "field V05._value (fldOffset=0x0)" ; ; Lcl frame size = 32 G_M6838_IG01: push rsi sub rsp, 32 mov rsi, rdx ;; bbWeight=1 PerfScore 1.50 G_M6838_IG02: mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call gword ptr [rax+40]Encoding:GetPreamble():ref:this test rax, rax jne SHORT G_M6838_IG04 ;; bbWeight=1 PerfScore 8.25 G_M6838_IG03: xor rdx, rdx xor ecx, ecx jmp SHORT G_M6838_IG05 ;; bbWeight=0.50 PerfScore 1.25 G_M6838_IG04: lea rdx, bword ptr [rax+16] mov ecx, dword ptr [rax+8] ;; bbWeight=0.50 PerfScore 1.25 G_M6838_IG05: mov bword ptr [rsi], rdx mov dword ptr [rsi+8], ecx mov rax, rsi ;; bbWeight=1 PerfScore 2.25 G_M6838_IG06: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 51, prolog size 5, PerfScore 21.35, (MethodHash=468fe549) for method Encoding:get_Preamble():ReadOnlySpan`1:this ; ============================================================ ; Assembly listing for method Encoding:GetPreamble():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M45443_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M45443_IG02: mov rcx, 0xD1FFAB1E mov edx, 3 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=1 PerfScore 3.75 G_M45443_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 42, prolog size 4, PerfScore 9.45, (MethodHash=cf1c4e7c) for method Encoding:GetPreamble():ref:this ; ============================================================ ; Assembly listing for method EmptyArray`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M47611_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M47611_IG02: mov rcx, 0xD1FFAB1E xor rdx, rdx call CORINFO_HELP_NEWARR_1_VC mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 3.25 G_M47611_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 52, prolog size 10, PerfScore 12.20, (MethodHash=aece4604) for method EmptyArray`1:.cctor() ; ============================================================ ; Assembly listing for method StreamWriter:.ctor(Stream,Encoding,int,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 18, 17 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 6, 6 ) ref -> rbx class-hnd ; V02 arg2 [V02,T04] ( 5, 4.50) ref -> rbp class-hnd ; V03 arg3 [V03,T02] ( 10, 8.50) int -> rdi ; V04 arg4 [V04,T06] ( 1, 1 ) bool -> [rsp+0x70] ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T07] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp3 [V08,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp4 [V09,T10] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp5 [V10,T11] ( 2, 0 ) ref -> rcx "argument with side effect" ; V11 tmp6 [V11,T12] ( 2, 0 ) ref -> rdx "argument with side effect" ; V12 tmp7 [V12,T13] ( 2, 0 ) ref -> rcx "argument with side effect" ; V13 tmp8 [V13,T14] ( 2, 0 ) ref -> rdi "argument with side effect" ; V14 tmp9 [V14,T15] ( 2, 0 ) ref -> r8 "argument with side effect" ; V15 tmp10 [V15,T05] ( 2, 4 ) long -> rdx "argument with side effect" ; V16 rat0 [V16,T00] ( 12, 21 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 40 G_M34500_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rbx, rdx mov rbp, r8 mov edi, r9d ;; bbWeight=1 PerfScore 5.25 G_M34500_IG02: mov rcx, 0xD1FFAB1E mov edx, 793 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+72] call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 0x6D2 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+16] call CORINFO_HELP_ASSIGN_REF xor rcx, rcx mov gword ptr [rsi+24], rcx test rbx, rbx je G_M34500_IG15 ;; bbWeight=1 PerfScore 16.75 G_M34500_IG03: test rbp, rbp jne SHORT G_M34500_IG05 ;; bbWeight=1 PerfScore 1.25 G_M34500_IG04: mov rcx, 0xD1FFAB1E mov edx, 0x6A4 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] ;; bbWeight=0.50 PerfScore 1.88 G_M34500_IG05: mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+72] call qword ptr [rax]Stream:get_CanWrite():bool:this test eax, eax je G_M34500_IG16 ;; bbWeight=1 PerfScore 8.50 G_M34500_IG06: cmp edi, -1 jne SHORT G_M34500_IG08 ;; bbWeight=1 PerfScore 1.25 G_M34500_IG07: mov edi, 0x400 jmp SHORT G_M34500_IG09 ;; bbWeight=0.50 PerfScore 1.13 G_M34500_IG08: test edi, edi jle G_M34500_IG17 ;; bbWeight=0.50 PerfScore 0.63 G_M34500_IG09: lea rcx, bword ptr [rsi+32] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+40] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rsi+40] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+104] call gword ptr [rax+16]Encoding:GetEncoder():Encoder:this lea rcx, bword ptr [rsi+48] mov rdx, rax call CORINFO_HELP_ASSIGN_REF cmp edi, 128 jge SHORT G_M34500_IG11 ;; bbWeight=1 PerfScore 15.50 G_M34500_IG10: mov edi, 128 ;; bbWeight=0.50 PerfScore 0.13 G_M34500_IG11: movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+64] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rsi+40] mov edx, edi mov rax, qword ptr [rcx] mov rax, qword ptr [rax+104] call qword ptr [rax+24]Encoding:GetMaxByteCount(int):int:this movsxd rdx, eax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+56] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+84], edi mov rcx, gword ptr [rsi+32] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+48]Stream:get_CanSeek():bool:this test eax, eax je SHORT G_M34500_IG13 ;; bbWeight=1 PerfScore 27.00 G_M34500_IG12: mov rcx, gword ptr [rsi+32] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+72] call qword ptr [rax+16]Stream:get_Position():long:this test rax, rax jle SHORT G_M34500_IG13 mov byte ptr [rsi+89], 1 ;; bbWeight=0.50 PerfScore 5.63 G_M34500_IG13: cmp byte ptr [rsp+70H], 0 sete cl mov byte ptr [rsi+90], cl ;; bbWeight=1 PerfScore 3.00 G_M34500_IG14: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M34500_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1B988 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M34500_IG16: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x89CB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M34500_IG17: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1CE22 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA119 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 640, prolog size 8, PerfScore 155.13, (MethodHash=d07b793b) for method StreamWriter:.ctor(Stream,Encoding,int,bool):this ; ============================================================ ; Assembly listing for method Task:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00 ] ( 1, 1 ) struct ( 8) [rbp-0x08] do-not-enreg[SB] ld-addr-op ; V01 loc1 [V01 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[SB] must-init ld-addr-op ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init class-hnd exact "NewObj constructor temp" ; V05 tmp3 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] must-init class-hnd exact "NewObj constructor temp" ; V06 tmp4 [V06 ] ( 1, 1 ) ref -> [rbp-0x30] must-init class-hnd exact "NewObj constructor temp" ; V07 tmp5 [V07 ] ( 1, 1 ) ref -> [rbp-0x38] must-init "argument with side effect" ; ; Lcl frame size = 96 G_M8011_IG01: push rbp sub rsp, 96 lea rbp, [rsp+60H] xor rax, rax mov qword ptr [rbp-38H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-30H], xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 mov qword ptr [rbp-10H], rax ;; bbWeight=1 PerfScore 6.33 G_M8011_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-18H], rax mov rcx, gword ptr [rbp-18H] call Object:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-18H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-20H], rax mov rcx, gword ptr [rbp-20H] call TaskFactory:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-20H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov byte ptr [rbp-08H], 0 xor ecx, ecx mov qword ptr [rbp-10H], rcx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-28H], rax mov rcx, gword ptr [rbp-10H] mov gword ptr [rsp+20H], rcx mov rcx, gword ptr [rbp-28H] movsx r8, byte ptr [rbp-08H] xor edx, edx mov r9d, 0x4000 call Task`1:.ctor(bool,VoidTaskResult,int,CancellationToken):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-28H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-30H], rax mov rcx, 0xD1FFAB1E mov edx, 804 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-38H], rdx mov rdx, gword ptr [rbp-38H] mov r8, 0xD1FFAB1E mov rcx, gword ptr [rbp-30H] call MulticastDelegate:CtorClosed(Object,long):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-30H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 38.00 G_M8011_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 312, prolog size 34, PerfScore 77.83, (MethodHash=d6a0e0b4) for method Task:.cctor() ; ============================================================ ; Assembly listing for method TaskFactory:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03,T01] ( 0, 0 ) ref -> zero-ref V01._source(offs=0x00) P-INDEP "field V01._source (fldOffset=0x0)" ; ; Lcl frame size = 40 G_M27296_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M27296_IG02: xor rdx, rdx mov gword ptr [rsp+20H], rdx xor r8d, r8d xor r9d, r9d call TaskFactory:.ctor(CancellationToken,int,int,TaskScheduler):this nop ;; bbWeight=1 PerfScore 3.00 G_M27296_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 28, prolog size 4, PerfScore 7.30, (MethodHash=ce48955f) for method TaskFactory:.ctor():this ; ============================================================ ; Assembly listing for method TaskFactory:.ctor(CancellationToken,int,int,TaskScheduler):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ; V02 arg2 [V02,T01] ( 4, 4 ) int -> rdi ; V03 arg3 [V03,T02] ( 4, 4 ) int -> rbx ; V04 arg4 [V04,T04] ( 1, 1 ) ref -> [rsp+0x70] class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 2, 2 ) ref -> rbp V01._source(offs=0x00) P-INDEP "field V01._source (fldOffset=0x0)" ; ; Lcl frame size = 40 G_M31642_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rbp, rdx mov edi, r8d mov ebx, r9d ;; bbWeight=1 PerfScore 5.25 G_M31642_IG02: mov ecx, ebx call TaskFactory:CheckMultiTaskContinuationOptions(int) test edi, -96 jne SHORT G_M31642_IG05 ;; bbWeight=1 PerfScore 2.50 G_M31642_IG03: lea rcx, bword ptr [rsi+24] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+8] mov rdx, gword ptr [rsp+70H] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+16], edi mov dword ptr [rsi+20], ebx ;; bbWeight=1 PerfScore 6.25 G_M31642_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M31642_IG05: mov ecx, 45 call ThrowHelper:ThrowArgumentOutOfRangeException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 87, prolog size 8, PerfScore 25.95, (MethodHash=63c58465) for method TaskFactory:.ctor(CancellationToken,int,int,TaskScheduler):this ; ============================================================ ; Assembly listing for method TaskFactory:CheckMultiTaskContinuationOptions(int) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 5 ) int -> rcx ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp3 [V04,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp4 [V05,T04] ( 2, 0 ) ref -> rcx "argument with side effect" ; V06 tmp5 [V06,T05] ( 2, 0 ) ref -> rdi "argument with side effect" ; V07 tmp6 [V07,T06] ( 2, 0 ) ref -> r8 "argument with side effect" ; V08 tmp7 [V08,T07] ( 2, 0 ) ref -> rdx "argument with side effect" ; V09 tmp8 [V09,T08] ( 2, 0 ) ref -> rcx "argument with side effect" ; V10 tmp9 [V10,T09] ( 2, 0 ) ref -> rdi "argument with side effect" ; V11 tmp10 [V11,T10] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M43744_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M43744_IG02: mov eax, ecx and eax, 0xD1FFAB1E cmp eax, 0xD1FFAB1E je SHORT G_M43744_IG06 ;; bbWeight=1 PerfScore 1.75 G_M43744_IG03: test ecx, 0xD1FFAB1E jne SHORT G_M43744_IG07 ;; bbWeight=1 PerfScore 1.25 G_M43744_IG04: test ecx, 0xD1FFAB1E jne G_M43744_IG08 ;; bbWeight=1 PerfScore 1.25 G_M43744_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M43744_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1310E mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x10785 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M43744_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1310E mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M43744_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1310E mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x10969 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 291, prolog size 6, PerfScore 37.85, (MethodHash=ecef551f) for method TaskFactory:CheckMultiTaskContinuationOptions(int) ; ============================================================ ; Assembly listing for method Task`1:.ctor(bool,VoidTaskResult,int,CancellationToken):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) bool -> rdx ; V02 arg2 [V02,T04] ( 3, 2.50) struct ( 8) [rsp+0x60] do-not-enreg[SB] ; V03 arg3 [V03,T03] ( 3, 3 ) int -> r9 ;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 3, 2 ) int -> r9 "Inline stloc first use temp" ; V07 tmp2 [V07,T01] ( 5, 5 ) ref -> rbp class-hnd exact "NewObj constructor temp" ;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ; V09 tmp4 [V09,T08] ( 1, 1 ) ref -> [rsp+0x70] V04._source(offs=0x00) P-INDEP "field V04._source (fldOffset=0x0)" ; V10 tmp5 [V10,T07] ( 2, 1.50) ref -> rdi V08._source(offs=0x00) P-INDEP "field V08._source (fldOffset=0x0)" ; V11 cse0 [V11,T05] ( 3, 3 ) int -> rbx "CSE - aggressive" ; ; Lcl frame size = 40 G_M27592_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+60H], r8 mov rsi, rcx ;; bbWeight=1 PerfScore 5.50 G_M27592_IG02: mov rdi, gword ptr [rsp+70H] movzx rbx, dl test ebx, ebx je SHORT G_M27592_IG04 ;; bbWeight=1 PerfScore 2.50 G_M27592_IG03: or r9d, 0xD1FFAB1E mov dword ptr [rsi+52], r9d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov dword ptr [rbp+60], 1 lea rcx, bword ptr [rbp+64] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbp+56], 1 lea rcx, bword ptr [rsi+40] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF jmp SHORT G_M27592_IG05 ;; bbWeight=0.50 PerfScore 5.13 G_M27592_IG04: mov eax, r9d or eax, 0xD1FFAB1E mov dword ptr [rsi+52], eax ;; bbWeight=0.50 PerfScore 0.75 G_M27592_IG05: test ebx, ebx jne SHORT G_M27592_IG07 ;; bbWeight=1 PerfScore 1.25 G_M27592_IG06: mov al, byte ptr [rsp+60H] mov byte ptr [rsi+56], al ;; bbWeight=0.50 PerfScore 1.00 G_M27592_IG07: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 128, prolog size 8, PerfScore 32.18, (MethodHash=3c0a9437) for method Task`1:.ctor(bool,VoidTaskResult,int,CancellationToken):this ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method MulticastDelegate:CtorClosed(Object,long):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) long -> rdi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M10085_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov rdi, r8 ;; bbWeight=1 PerfScore 2.75 G_M10085_IG02: test rdx, rdx je SHORT G_M10085_IG05 ;; bbWeight=1 PerfScore 1.25 G_M10085_IG03: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF mov qword ptr [rsi+24], rdi ;; bbWeight=1 PerfScore 2.50 G_M10085_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M10085_IG05: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 43, prolog size 6, PerfScore 13.05, (MethodHash=355cd89a) for method MulticastDelegate:CtorClosed(Object,long):this ; ============================================================ ; Assembly listing for method TextWriter:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M39572_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M39572_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call NullTextWriter:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] call String:ToCharArray():ref:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 11.50 G_M39572_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 106, prolog size 16, PerfScore 27.10, (MethodHash=c928656b) for method TextWriter:.cctor() ; ============================================================ ; Assembly listing for method NullTextWriter:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdi class-hnd "Inlining Arg" ; ; Lcl frame size = 40 G_M17040_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M17040_IG02: mov rcx, 0xD1FFAB1E mov edx, 511 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov edx, 0x6D2 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+16] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 14.75 G_M17040_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 126, prolog size 6, PerfScore 32.10, (MethodHash=5104bd6f) for method NullTextWriter:.ctor():this ; ============================================================ ; Assembly listing for method CultureInfo:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init "argument with side effect" ; ; Lcl frame size = 48 G_M15844_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax mov qword ptr [rbp-10H], rax ;; bbWeight=1 PerfScore 4.00 G_M15844_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax call CultureData:get_Invariant():CultureData mov gword ptr [rbp-10H], rax mov rdx, gword ptr [rbp-10H] mov rcx, gword ptr [rbp-08H] mov r8d, 1 call CultureInfo:.ctor(CultureData,bool):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF call CultureInfo:GetUserDefaultLocaleName():String mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 12.50 G_M15844_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 116, prolog size 20, PerfScore 30.10, (MethodHash=853fc21b) for method CultureInfo:.cctor() ; ============================================================ ; Assembly listing for method CultureData:get_Invariant():CultureData ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V02 tmp2 [V02,T01] ( 4, 3.50) ref -> rax ; V03 tmp3 [V03,T02] ( 3, 3 ) ref -> rsi class-hnd "dup spill" ;* V04 cse0 [V04,T03] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 32 G_M42786_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M42786_IG02: mov rcx, 0xD1FFAB1E mov edx, 505 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] test rax, rax jne SHORT G_M42786_IG04 ;; bbWeight=1 PerfScore 5.00 G_M42786_IG03: call CultureData:CreateCultureWithInvariantData():CultureData mov rsi, rax mov rcx, 0xD1FFAB1E mov rdx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, rsi ;; bbWeight=0.50 PerfScore 1.50 G_M42786_IG04: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 78, prolog size 5, PerfScore 17.30, (MethodHash=6a2858dd) for method CultureData:get_Invariant():CultureData ; ============================================================ ; Assembly listing for method CultureData:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M16474_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M16474_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call Object:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M16474_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=c7ccbfa5) for method CultureData:.cctor() ; ============================================================ ; Assembly listing for method CultureData:CreateCultureWithInvariantData():CultureData ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T00] ( 73, 70 ) ref -> rsi class-hnd exact ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 3, 6 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T03] ( 3, 6 ) ref -> rax class-hnd exact "dup spill" ; V04 tmp3 [V04,T04] ( 3, 6 ) ref -> rax class-hnd exact "dup spill" ; V05 tmp4 [V05,T05] ( 3, 6 ) ref -> rdi class-hnd exact "dup spill" ; V06 tmp5 [V06,T01] ( 6, 12 ) ref -> rdi class-hnd exact "dup spill" ; V07 tmp6 [V07,T06] ( 3, 6 ) ref -> rdi class-hnd exact "dup spill" ; V08 tmp7 [V08,T07] ( 3, 6 ) ref -> rax class-hnd exact "dup spill" ; V09 tmp8 [V09,T08] ( 2, 2 ) ref -> r8 "argument with side effect" ; V10 tmp9 [V10,T09] ( 2, 2 ) ref -> rdi "argument with side effect" ;* V11 cse0 [V11,T10] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 40 G_M36433_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M36433_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call CultureData:.ctor():this mov byte ptr [rsi+456], 0 mov byte ptr [rsi+457], 0 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+16] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+24] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+32] call CORINFO_HELP_ASSIGN_REF mov byte ptr [rsi+458], 0 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+48] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+56] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+64] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+72] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+80] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+88] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+96] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+104] ;; bbWeight=1 PerfScore 49.75 G_M36433_IG03: call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+112] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+120] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+384], 127 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+128] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+144] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+152] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+160] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+168] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+388], 244 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+176] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+184] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+392], 2 mov dword ptr [rsi+396], 1 mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_VC mov dword ptr [rax+16], 3 lea rcx, bword ptr [rsi+192] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+200] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+208] ;; bbWeight=1 PerfScore 49.50 G_M36433_IG04: call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+216] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+224] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+232] call CORINFO_HELP_ASSIGN_REF xor edx, edx mov dword ptr [rsi+400], edx mov dword ptr [rsi+404], edx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+240] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+248] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+256] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+264] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+272] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+280] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+408], 2 xor ecx, ecx mov dword ptr [rsi+412], ecx mov dword ptr [rsi+416], ecx mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_VC mov dword ptr [rax+16], 3 lea rcx, bword ptr [rsi+288] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+296] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 48.50 G_M36433_IG05: mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+304] call CORINFO_HELP_ASSIGN_REF xor edx, edx mov dword ptr [rsi+420], edx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+312] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+336] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+320] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+328] call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+344] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 4 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+24] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+32] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+40] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+352] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 1 ;; bbWeight=1 PerfScore 46.00 G_M36433_IG06: call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+360] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF xor ecx, ecx mov dword ptr [rsi+424], ecx mov dword ptr [rsi+428], ecx mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_VC mov word ptr [rax+16], 1 lea rcx, bword ptr [rsi+368] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 528 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E cmp byte ptr [rcx], 0 jne SHORT G_M36433_IG08 ;; bbWeight=1 PerfScore 18.00 G_M36433_IG07: mov rcx, 0xD1FFAB1E mov edx, 23 call CORINFO_HELP_NEWARR_1_OBJ lea rcx, bword ptr [rsi+376] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rdi, gword ptr [rsi+376] mov rcx, 0xD1FFAB1E mov edx, 490 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, rdi xor edx, edx call CORINFO_HELP_ARRADDR_ST ;; bbWeight=0.50 PerfScore 5.25 G_M36433_IG08: xor edx, edx mov dword ptr [rsi+432], edx mov dword ptr [rsi+452], 127 mov dword ptr [rsi+436], 0x4E4 mov dword ptr [rsi+440], 437 mov dword ptr [rsi+444], 0x2710 mov dword ptr [rsi+448], 37 mov rdx, 0xD1FFAB1E cmp byte ptr [rdx], 0 je SHORT G_M36433_IG10 ;; bbWeight=1 PerfScore 9.50 G_M36433_IG09: mov rdx, gword ptr [rsi+56] lea rcx, bword ptr [rsi+40] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsi+152] lea rcx, bword ptr [rsi+136] call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 3.50 G_M36433_IG10: mov rax, rsi ;; bbWeight=1 PerfScore 0.25 G_M36433_IG11: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 1667, prolog size 6, PerfScore 401.45, (MethodHash=f34571ae) for method CultureData:CreateCultureWithInvariantData():CultureData ; ============================================================ ; Assembly listing for method CultureData:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 14, 14 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M61125_IG01: ;; bbWeight=1 PerfScore 0.00 G_M61125_IG02: mov dword ptr [rcx+384], -1 mov dword ptr [rcx+388], -1 mov dword ptr [rcx+400], -1 mov dword ptr [rcx+404], -1 mov dword ptr [rcx+420], -1 mov dword ptr [rcx+424], -1 mov dword ptr [rcx+428], -1 mov dword ptr [rcx+432], -1 mov dword ptr [rcx+436], -1 mov dword ptr [rcx+440], -1 mov dword ptr [rcx+444], -1 mov dword ptr [rcx+448], -1 ;; bbWeight=1 PerfScore 12.00 G_M61125_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 121, prolog size 0, PerfScore 25.10, (MethodHash=178f113a) for method CultureData:.ctor():this ; ============================================================ ; Assembly listing for method GlobalizationMode:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) int -> [rbp-0x04] ; ; Lcl frame size = 48 G_M41568_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] ;; bbWeight=1 PerfScore 1.75 G_M41568_IG02: call GlobalizationMode:GetInvariantSwitchValue():bool mov rdx, 0xD1FFAB1E mov byte ptr [rdx], al call GlobalizationMode:get_Invariant():bool test eax, eax jne SHORT G_M41568_IG04 mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call GlobalizationMode:GetSwitchValue(String,String):bool test eax, eax jne SHORT G_M41568_IG03 call GlobalizationMode:LoadIcu():bool test eax, eax sete al movzx rax, al mov dword ptr [rbp-04H], eax jmp SHORT G_M41568_IG05 ;; bbWeight=1 PerfScore 16.75 G_M41568_IG03: mov dword ptr [rbp-04H], 1 jmp SHORT G_M41568_IG05 ;; bbWeight=1 PerfScore 3.00 G_M41568_IG04: xor eax, eax mov dword ptr [rbp-04H], eax ;; bbWeight=1 PerfScore 1.25 G_M41568_IG05: mov rax, 0xD1FFAB1E mov edx, dword ptr [rbp-04H] mov byte ptr [rax], dl ;; bbWeight=1 PerfScore 2.25 G_M41568_IG06: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 124, prolog size 10, PerfScore 39.40, (MethodHash=949b5d9f) for method GlobalizationMode:.cctor() ; ============================================================ ; Assembly listing for method GlobalizationMode:GetInvariantSwitchValue():bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M16972_IG01: ;; bbWeight=1 PerfScore 0.00 G_M16972_IG02: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] ;; bbWeight=1 PerfScore 4.50 G_M16972_IG03: jmp GlobalizationMode:GetSwitchValue(String,String):bool ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 31, prolog size 0, PerfScore 9.60, (MethodHash=cfd1bdb3) for method GlobalizationMode:GetInvariantSwitchValue():bool ; ============================================================ ; Assembly listing for method GlobalizationMode:GetSwitchValue(String,String):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 3, 2.50) ref -> rsi class-hnd ; V02 loc0 [V02 ] ( 3, 2.50) bool -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V03 loc1 [V03,T03] ( 5, 2.50) ref -> rsi class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V06 tmp2 [V06,T06] ( 3, 1.50) int -> rax ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V10 tmp6 [V10,T04] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V11 tmp7 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V12 tmp8 [V12,T05] ( 2, 2 ) int -> rax "Inlining Arg" ; V13 tmp9 [V13,T07] ( 2, 1 ) byref -> rcx V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ; V14 tmp10 [V14,T11] ( 2, 1 ) int -> rax V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ; V15 tmp11 [V15,T08] ( 2, 1 ) byref -> rcx V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V16 tmp12 [V16,T12] ( 2, 1 ) int -> rax V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V17 tmp13 [V17,T09] ( 2, 1 ) byref -> rcx V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ; V18 tmp14 [V18,T13] ( 2, 1 ) int -> rax V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ; V21 tmp17 [V21,T10] ( 2, 1 ) byref -> rcx V11._value(offs=0x00) P-INDEP "field V11._value (fldOffset=0x0)" ; V22 tmp18 [V22 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V23 tmp19 [V23,T02] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; ; Lcl frame size = 64 G_M45488_IG01: push rsi sub rsp, 64 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rdx ;; bbWeight=1 PerfScore 2.75 G_M45488_IG02: lea rdx, [rsp+38H] call AppContext:TryGetSwitch(String,byref):bool test eax, eax jne SHORT G_M45488_IG06 ;; bbWeight=1 PerfScore 2.75 G_M45488_IG03: mov rcx, rsi call Environment:GetEnvironmentVariable(String):String mov rsi, rax test rsi, rsi je SHORT G_M45488_IG06 lea rcx, bword ptr [rsi+12] mov eax, dword ptr [rsi+8] lea rdx, bword ptr [rsp+28H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], eax lea rcx, bword ptr [rsp+28H] call Boolean:IsTrueStringIgnoreCase(ReadOnlySpan`1):bool test eax, eax jne SHORT G_M45488_IG04 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rsi mov rax, 0xD1FFAB1E call qword ptr [rax]String:Equals(String):bool:this jmp SHORT G_M45488_IG05 ;; bbWeight=0.50 PerfScore 9.13 G_M45488_IG04: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M45488_IG05: mov dword ptr [rsp+38H], eax ;; bbWeight=0.50 PerfScore 0.50 G_M45488_IG06: mov eax, dword ptr [rsp+38H] movzx rax, al ;; bbWeight=1 PerfScore 1.25 G_M45488_IG07: add rsp, 64 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 129, prolog size 12, PerfScore 31.15, (MethodHash=06ed4e4f) for method GlobalizationMode:GetSwitchValue(String,String):bool ; ============================================================ ; Assembly listing for method Environment:GetEnvironmentVariable(String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rcx class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M62123_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M62123_IG02: test rcx, rcx je SHORT G_M62123_IG04 ;; bbWeight=1 PerfScore 1.25 G_M62123_IG03: add rsp, 32 pop rsi jmp Environment:GetEnvironmentVariableCore(String):String ;; bbWeight=1 PerfScore 2.75 G_M62123_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 821 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 78, prolog size 5, PerfScore 13.05, (MethodHash=b1220d54) for method Environment:GetEnvironmentVariable(String):String ; ============================================================ ; Assembly listing for method Environment:GetEnvironmentVariableCore(String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 4, 3.50) ref -> rsi class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V02 loc1 [V02,T00] ( 11, 6.50) int -> registers ; V03 loc2 [V03,T10] ( 6, 2.50) ref -> [rbp+0x18] EH do-not-enreg[] class-hnd EH-live ;* V04 loc3 [V04 ] ( 0, 0 ) struct (16) zero-ref ; V05 loc4 [V05,T17] ( 3, 1.50) ref -> r14 class-hnd ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V12 tmp6 [V12,T06] ( 2, 4 ) long -> rdi "Inlining Arg" ;* V13 tmp7 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V15 tmp9 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V17 tmp11 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V19 tmp13 [V19 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V20 tmp14 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V21 tmp15 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V22 tmp16 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V23 tmp17 [V23 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V24 tmp18 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V25 tmp19 [V25 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V26 tmp20 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V27 tmp21 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V28 tmp22 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V29 tmp23 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V30 tmp24 [V30 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V31 tmp25 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V32 tmp26 [V32 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V33 tmp27 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V34 tmp28 [V34,T03] ( 6, 4 ) byref -> rdi V01._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ; V35 tmp29 [V35,T04] ( 6, 4 ) int -> rbx V01._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ; V36 tmp30 [V36,T11] ( 2, 2 ) byref -> rdi V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ;* V37 tmp31 [V37,T31] ( 0, 0 ) int -> zero-ref V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V38 tmp32 [V38,T12] ( 2, 2 ) byref -> rdi V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ;* V39 tmp33 [V39,T32] ( 0, 0 ) int -> zero-ref V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ;* V40 tmp34 [V40 ] ( 0, 0 ) byref -> zero-ref V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ;* V41 tmp35 [V41 ] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ; V42 tmp36 [V42,T20] ( 2, 1 ) byref -> rdx V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ; V43 tmp37 [V43,T27] ( 2, 1 ) int -> rcx V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ;* V44 tmp38 [V44 ] ( 0, 0 ) byref -> zero-ref V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ;* V45 tmp39 [V45 ] ( 0, 0 ) int -> zero-ref V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ; V46 tmp40 [V46,T21] ( 2, 1 ) byref -> rdi V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ; V47 tmp41 [V47,T28] ( 2, 1 ) int -> rbx V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ; V48 tmp42 [V48,T13] ( 2, 2 ) byref -> rdi V13._value(offs=0x00) P-INDEP "field V13._value (fldOffset=0x0)" ;* V49 tmp43 [V49 ] ( 0, 0 ) byref -> zero-ref V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ;* V50 tmp44 [V50 ] ( 0, 0 ) int -> zero-ref V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ;* V51 tmp45 [V51 ] ( 0, 0 ) byref -> zero-ref V17._value(offs=0x00) P-INDEP "field V17._value (fldOffset=0x0)" ;* V52 tmp46 [V52 ] ( 0, 0 ) byref -> zero-ref V18._pointer(offs=0x00) P-INDEP "field V18._pointer (fldOffset=0x0)" ;* V53 tmp47 [V53 ] ( 0, 0 ) int -> zero-ref V18._length(offs=0x08) P-INDEP "field V18._length (fldOffset=0x8)" ; V54 tmp48 [V54,T22] ( 2, 1 ) byref -> rdi V19._pointer(offs=0x00) P-INDEP "field V19._pointer (fldOffset=0x0)" ; V55 tmp49 [V55,T29] ( 2, 1 ) int -> rbx V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)" ; V56 tmp50 [V56,T23] ( 2, 1 ) byref -> rdi V21._value(offs=0x00) P-INDEP "field V21._value (fldOffset=0x0)" ; V57 tmp51 [V57,T18] ( 3, 1.50) byref -> rdi V23._pointer(offs=0x00) P-INDEP "field V23._pointer (fldOffset=0x0)" ; V58 tmp52 [V58,T19] ( 3, 1.50) int -> rbx V23._length(offs=0x08) P-INDEP "field V23._length (fldOffset=0x8)" ; V59 tmp53 [V59,T24] ( 2, 1 ) byref -> rdi V24._value(offs=0x00) P-INDEP "field V24._value (fldOffset=0x0)" ;* V60 tmp54 [V60 ] ( 0, 0 ) byref -> zero-ref V25._pointer(offs=0x00) P-INDEP "field V25._pointer (fldOffset=0x0)" ;* V61 tmp55 [V61 ] ( 0, 0 ) int -> zero-ref V25._length(offs=0x08) P-INDEP "field V25._length (fldOffset=0x8)" ;* V62 tmp56 [V62 ] ( 0, 0 ) byref -> zero-ref V28._value(offs=0x00) P-INDEP "field V28._value (fldOffset=0x0)" ;* V63 tmp57 [V63 ] ( 0, 0 ) byref -> zero-ref V29._pointer(offs=0x00) P-INDEP "field V29._pointer (fldOffset=0x0)" ;* V64 tmp58 [V64 ] ( 0, 0 ) int -> zero-ref V29._length(offs=0x08) P-INDEP "field V29._length (fldOffset=0x8)" ; V65 tmp59 [V65,T25] ( 2, 1 ) byref -> rdx V30._pointer(offs=0x00) P-INDEP "field V30._pointer (fldOffset=0x0)" ; V66 tmp60 [V66,T30] ( 2, 1 ) int -> rcx V30._length(offs=0x08) P-INDEP "field V30._length (fldOffset=0x8)" ; V67 tmp61 [V67,T26] ( 2, 1 ) byref -> rdx V32._value(offs=0x00) P-INDEP "field V32._value (fldOffset=0x0)" ; V68 tmp62 [V68 ] ( 4, 6 ) struct (16) [rbp+0x30] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V69 tmp63 [V69,T01] ( 3, 6 ) byref -> rdx stack-byref "BlockOp address local" ; V70 tmp64 [V70,T05] ( 2, 4 ) ref -> rcx "argument with side effect" ; V71 tmp65 [V71 ] ( 4, 4 ) struct (16) [rbp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V72 tmp66 [V72,T07] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V73 tmp67 [V73,T14] ( 2, 2 ) ref -> rcx "argument with side effect" ; V74 tmp68 [V74,T08] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V75 tmp69 [V75,T15] ( 2, 2 ) ref -> rcx "argument with side effect" ; V76 tmp70 [V76,T09] ( 3, 3 ) byref -> rax stack-byref "BlockOp address local" ; V77 tmp71 [V77,T16] ( 2, 2 ) ref -> rcx "argument with side effect" ; V78 tmp72 [V78,T34] ( 2, 0 ) ref -> rcx "argument with side effect" ; V79 GsCookie [V79 ] ( 1, 1 ) long -> [rbp+0x10] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V80 PSPSym [V80 ] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[X] addr-exposed "PSPSym" ;* V81 cse0 [V81,T33] ( 0, 0 ) long -> zero-ref "CSE - moderate" ; ; Lcl frame size = 96 G_M62032_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 96 lea rbp, [rsp+20H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp+20H], xmm4 vmovdqa xmmword ptr [rbp+30H], xmm4 mov qword ptr [rbp], rsp mov rax, 0xD1FFAB1E mov qword ptr [rbp+10H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 10.58 G_M62032_IG02: add rsp, 32 test dword ptr [rsp], esp sub rsp, 256 sub rsp, 32 lea rdi, [rsp+20H] mov ebx, 128 mov rcx, rsi lea rdx, bword ptr [rbp+30H] mov bword ptr [rdx], rdi mov dword ptr [rdx+8], ebx lea rdx, bword ptr [rbp+30H] call Kernel32:GetEnvironmentVariable(String,Span`1):int mov ebx, eax test ebx, ebx jne SHORT G_M62032_IG06 ;; bbWeight=1 PerfScore 9.25 G_M62032_IG03: call Marshal:GetLastWin32Error():int cmp eax, 203 jne SHORT G_M62032_IG06 xor rax, rax mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+10H], rcx je SHORT G_M62032_IG04 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 2.88 G_M62032_IG04: nop ;; bbWeight=0.50 PerfScore 0.13 G_M62032_IG05: lea rsp, [rbp+40H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M62032_IG06: cmp ebx, 128 jg SHORT G_M62032_IG10 mov edx, ebx cmp rdx, 128 ja G_M62032_IG22 ;; bbWeight=0.50 PerfScore 1.38 G_M62032_IG07: lea rdx, bword ptr [rbp+20H] mov bword ptr [rdx], rdi mov dword ptr [rdx+8], ebx lea rdx, bword ptr [rbp+20H] xor rcx, rcx call String:.ctor(ReadOnlySpan`1):this mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+10H], rcx je SHORT G_M62032_IG08 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 3.75 G_M62032_IG08: nop ;; bbWeight=0.50 PerfScore 0.13 G_M62032_IG09: lea rsp, [rbp+40H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M62032_IG10: mov rcx, 0xD1FFAB1E mov edx, 5 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov edx, ebx mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]TlsOverPerCoreLockedStacksArrayPool`1:Rent(int):ref:this mov gword ptr [rbp+18H], rax ;; bbWeight=0.50 PerfScore 5.13 G_M62032_IG11: cmp gword ptr [rbp+18H], 0 jne SHORT G_M62032_IG12 xor rdi, rdi xor ebx, ebx jmp SHORT G_M62032_IG13 ;; bbWeight=0.50 PerfScore 2.25 G_M62032_IG12: mov rdi, gword ptr [rbp+18H] add rdi, 16 mov rcx, gword ptr [rbp+18H] mov ebx, dword ptr [rcx+8] ;; bbWeight=0.50 PerfScore 2.13 G_M62032_IG13: mov rcx, rsi lea rdx, bword ptr [rbp+30H] mov bword ptr [rdx], rdi mov dword ptr [rdx+8], ebx lea rdx, bword ptr [rbp+30H] call Kernel32:GetEnvironmentVariable(String,Span`1):int mov esi, eax test esi, esi jne SHORT G_M62032_IG14 call Marshal:GetLastWin32Error():int cmp eax, 203 je SHORT G_M62032_IG15 ;; bbWeight=0.50 PerfScore 4.00 G_M62032_IG14: cmp esi, ebx jle SHORT G_M62032_IG17 ;; bbWeight=0.50 PerfScore 0.63 G_M62032_IG15: xor r14, r14 jmp SHORT G_M62032_IG19 ;; bbWeight=0.50 PerfScore 1.13 G_M62032_IG16: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 G_M62032_IG17: mov edx, esi mov ecx, ebx cmp rdx, rcx ja SHORT G_M62032_IG16 ;; bbWeight=0.50 PerfScore 0.88 G_M62032_IG18: mov rdx, rdi mov ecx, esi lea rax, bword ptr [rbp+20H] mov bword ptr [rax], rdx mov dword ptr [rax+8], ecx lea rdx, bword ptr [rbp+20H] xor rcx, rcx call String:.ctor(ReadOnlySpan`1):this mov r14, rax ;; bbWeight=0.50 PerfScore 2.50 G_M62032_IG19: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, gword ptr [rbp+18H] xor r8d, r8d mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]TlsOverPerCoreLockedStacksArrayPool`1:Return(ref,bool):this mov rax, r14 mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+10H], rcx je SHORT G_M62032_IG20 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 6.13 G_M62032_IG20: nop ;; bbWeight=0.50 PerfScore 0.13 G_M62032_IG21: lea rsp, [rbp+40H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M62032_IG22: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 G_M62032_IG23: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+20H] ;; bbWeight=0 PerfScore 0.00 G_M62032_IG24: mov rcx, 0xD1FFAB1E mov edx, 5 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, gword ptr [rbp+18H] xor r8d, r8d mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]TlsOverPerCoreLockedStacksArrayPool`1:Return(ref,bool):this nop ;; bbWeight=0 PerfScore 0.00 G_M62032_IG25: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 569, prolog size 50, PerfScore 116.16, (MethodHash=720d0daf) for method Environment:GetEnvironmentVariableCore(String):String ; ============================================================ ; Assembly listing for method Kernel32:GetEnvironmentVariable(String,Span`1):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T00] ( 4, 8 ) byref -> rdx ld-addr-op ;* V02 loc0 [V02 ] ( 0, 0 ) long -> zero-ref ; V03 loc1 [V03 ] ( 1, 1 ) byref -> [rbp-0x08] pinned ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref V10._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref V10._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ; V08 tmp4 [V08,T03] ( 3, 3 ) byref -> r8 V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V11 tmp7 [V11,T02] ( 2, 4 ) long -> [rbp-0x10] "Cast away GC" ; ; Lcl frame size = 48 G_M5523_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] ;; bbWeight=1 PerfScore 1.75 G_M5523_IG02: mov r8, bword ptr [rdx] mov bword ptr [rbp-08H], r8 mov qword ptr [rbp-10H], r8 mov r8d, dword ptr [rdx+8] mov rdx, qword ptr [rbp-10H] call Kernel32:GetEnvironmentVariable(String,long,int):int nop ;; bbWeight=1 PerfScore 8.25 G_M5523_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 41, prolog size 10, PerfScore 16.10, (MethodHash=18b8ea6c) for method Kernel32:GetEnvironmentVariable(String,Span`1):int ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(String,long,int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 4 ) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) long -> rdi ; V02 arg2 [V02,T03] ( 3, 3 ) int -> rbx ;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref ; V04 loc1 [V04,T07] ( 3, 2.50) long -> r15 ; V05 loc2 [V05 ] ( 1, 0.50) ref -> [rbp-0x40] must-init pinned class-hnd ;* V06 loc3 [V06 ] ( 0, 0 ) long -> zero-ref ; V07 loc4 [V07,T08] ( 2, 2 ) long -> rsi ;* V08 loc5 [V08 ] ( 0, 0 ) int -> zero-ref ;* V09 loc6 [V09 ] ( 0, 0 ) int -> zero-ref ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11 ] ( 3, 3 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "stub argument" ; V12 tmp2 [V12,T04] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V13 tmp3 [V13,T05] ( 2, 4 ) int -> rsi "impAppendStmt" ; V14 tmp4 [V14,T06] ( 2, 4 ) int -> rax "Single return block return value" ; V15 FramesRoot [V15,T00] ( 6, 6 ) long -> r14 "Pinvoke FrameListRoot" ; V16 PInvokeFrame [V16 ] ( 8, 8 ) blk (72) [rbp-0x90] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 120 G_M23498_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] mov qword ptr [rbp-48H], r10 xor rbx, rbx mov qword ptr [rbp-40H], rbx mov rsi, rcx mov rdi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 11.75 G_M23498_IG02: lea rcx, [rbp-88H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r14, rax mov rax, rsp mov qword ptr [rbp-68H], rax mov rax, rbp mov qword ptr [rbp-58H], rax lea rax, bword ptr [rbp-88H] mov qword ptr [r14+16], rax xor r15, r15 test rsi, rsi je SHORT G_M23498_IG04 ;; bbWeight=1 PerfScore 7.50 G_M23498_IG03: mov gword ptr [rbp-40H], rsi lea r15, bword ptr [rsi+12] ;; bbWeight=0.50 PerfScore 0.75 G_M23498_IG04: movsxd rsi, ebx call StubHelpers:ClearLastError() mov rcx, qword ptr [rbp-48H] mov rcx, qword ptr [rcx+32] mov rax, qword ptr [rcx] mov rcx, r15 mov rdx, rdi mov r8, rsi mov r9, qword ptr [rbp-48H] mov qword ptr [rbp-78H], r9 lea r9, G_M23498_IG06 mov qword ptr [rbp-60H], r9 mov byte ptr [r14+12], 0 ;; bbWeight=1 PerfScore 12.00 G_M23498_IG05: call rax ;; bbWeight=1 PerfScore 3.00 G_M23498_IG06: mov byte ptr [r14+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M23498_IG07 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M23498_IG07: mov esi, eax call StubHelpers:SetLastError() mov eax, esi ;; bbWeight=1 PerfScore 1.50 G_M23498_IG08: mov rdx, bword ptr [rbp-80H] mov qword ptr [r14+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M23498_IG09: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 222, prolog size 34, PerfScore 73.70, (MethodHash=c990a435) for method ILStubClass:IL_STUB_PInvoke(String,long,int):int ; ============================================================ ; Assembly listing for method GlobalizationMode:get_Invariant():bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M49034_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M49034_IG02: mov rcx, 0xD1FFAB1E mov edx, 528 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E movzx rax, byte ptr [rax] ;; bbWeight=1 PerfScore 3.75 G_M49034_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 42, prolog size 4, PerfScore 9.45, (MethodHash=d2504075) for method GlobalizationMode:get_Invariant():bool ; ============================================================ ; Assembly listing for method GlobalizationMode:LoadIcu():bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00 ] ( 2, 1.50) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 4 ) int -> rsi "Single return block return value" ; V03 FramesRoot [V03,T00] ( 6, 4 ) long -> rsi "Pinvoke FrameListRoot" ; V04 PInvokeFrame [V04 ] ( 8, 6 ) blk (72) [rbp-0x88] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 120 G_M54666_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] xor rcx, rcx mov qword ptr [rbp-40H], rcx ;; bbWeight=1 PerfScore 10.00 G_M54666_IG02: lea rcx, [rbp-80H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rsi, rax mov rcx, rsp mov qword ptr [rbp-60H], rcx mov rcx, rbp mov qword ptr [rbp-50H], rcx lea rcx, [rbp-40H] call GlobalizationMode:TryGetAppLocalIcuSwitchValue(byref):bool test eax, eax jne SHORT G_M54666_IG08 ;; bbWeight=1 PerfScore 7.25 G_M54666_IG03: mov rax, 0xD1FFAB1E mov qword ptr [rbp-70H], rax lea rax, G_M54666_IG06 mov qword ptr [rbp-58H], rax lea rax, bword ptr [rbp-80H] mov qword ptr [rsi+16], rax mov byte ptr [rsi+12], 0 ;; bbWeight=0.50 PerfScore 2.88 G_M54666_IG04: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M54666_IG05: call qword ptr [rax]Globalization:LoadICU():int ;; bbWeight=0.50 PerfScore 1.50 G_M54666_IG06: mov byte ptr [rsi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M54666_IG07 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M54666_IG07: mov rcx, bword ptr [rbp-78H] mov qword ptr [rsi+16], rcx test eax, eax setne sil movzx rsi, sil jmp SHORT G_M54666_IG09 ;; bbWeight=0.50 PerfScore 2.75 G_M54666_IG08: mov rcx, gword ptr [rbp-40H] call GlobalizationMode:LoadAppLocalIcu(String) mov esi, 1 ;; bbWeight=0.50 PerfScore 1.13 G_M54666_IG09: movzx rax, sil ;; bbWeight=1 PerfScore 0.25 G_M54666_IG10: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 207, prolog size 30, PerfScore 55.83, (MethodHash=55f12a75) for method GlobalizationMode:LoadIcu():bool ; ============================================================ ; Assembly listing for method GlobalizationMode:TryGetAppLocalIcuSwitchValue(byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r8 ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M23066_IG01: mov r8, rcx ;; bbWeight=1 PerfScore 0.25 G_M23066_IG02: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] ;; bbWeight=1 PerfScore 4.50 G_M23066_IG03: jmp GlobalizationMode:TryGetStringValue(String,String,byref):bool ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 34, prolog size 3, PerfScore 10.15, (MethodHash=319ca5e5) for method GlobalizationMode:TryGetAppLocalIcuSwitchValue(byref):bool ; ============================================================ ; Assembly listing for method GlobalizationMode:TryGetStringValue(String,String,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T03] ( 3, 2.50) ref -> rdi class-hnd ; V02 arg2 [V02,T00] ( 6, 5 ) byref -> rsi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T05] ( 2, 4 ) ref -> rdx "CASTCLASS eval op1" ; V05 tmp2 [V05,T01] ( 5, 6.74) ref -> rdx class-hnd "spilling QMark2" ;* V06 tmp3 [V06,T07] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V07 tmp4 [V07,T04] ( 3, 4.50) ref -> rcx class-hnd "Inlining Arg" ;* V08 tmp5 [V08,T08] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V09 tmp6 [V09,T06] ( 3, 2.50) ref -> rax class-hnd "Inlining Arg" ; ; Lcl frame size = 40 G_M13614_IG01: push rdi push rsi sub rsp, 40 mov rdi, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 2.75 G_M13614_IG02: call AppContext:GetData(String):Object mov rdx, rax test rdx, rdx je SHORT G_M13614_IG05 ;; bbWeight=1 PerfScore 2.50 G_M13614_IG03: mov rcx, 0xD1FFAB1E cmp qword ptr [rdx], rcx je SHORT G_M13614_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M13614_IG04: xor rdx, rdx ;; bbWeight=0.12 PerfScore 0.03 G_M13614_IG05: mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, gword ptr [rsi] test rcx, rcx je SHORT G_M13614_IG07 ;; bbWeight=1 PerfScore 4.50 G_M13614_IG06: cmp dword ptr [rcx+8], 0 ja SHORT G_M13614_IG11 ;; bbWeight=0.25 PerfScore 0.75 G_M13614_IG07: mov rcx, rdi call Environment:GetEnvironmentVariable(String):String mov rdx, rax mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, gword ptr [rsi] test rax, rax je SHORT G_M13614_IG09 ;; bbWeight=0.50 PerfScore 3.00 G_M13614_IG08: cmp dword ptr [rax+8], 0 ja SHORT G_M13614_IG11 ;; bbWeight=0.25 PerfScore 0.75 G_M13614_IG09: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M13614_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M13614_IG11: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M13614_IG12: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 118, prolog size 6, PerfScore 29.39, (MethodHash=57dccad1) for method GlobalizationMode:TryGetStringValue(String,String,byref):bool ; ============================================================ ; Assembly listing for method CalendarData:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M50468_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M50468_IG02: call CalendarData:CreateInvariant():CalendarData mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 2.75 G_M50468_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 40, prolog size 10, PerfScore 10.50, (MethodHash=b5873adb) for method CalendarData:.cctor() ; ============================================================ ; Assembly listing for method CalendarData:CreateInvariant():CalendarData ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 24, 48 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T06] ( 4, 8 ) ref -> rdi class-hnd exact "dup spill" ; V04 tmp3 [V04,T07] ( 3, 6 ) ref -> rdi class-hnd exact "dup spill" ; V05 tmp4 [V05,T08] ( 3, 6 ) ref -> rdi class-hnd exact "dup spill" ; V06 tmp5 [V06,T09] ( 3, 6 ) ref -> rdi class-hnd exact "dup spill" ; V07 tmp6 [V07,T10] ( 3, 6 ) ref -> rdi class-hnd exact "dup spill" ; V08 tmp7 [V08,T11] ( 3, 6 ) ref -> rdi class-hnd exact "dup spill" ; V09 tmp8 [V09,T03] ( 9, 18 ) ref -> rdi class-hnd exact "dup spill" ; V10 tmp9 [V10,T04] ( 9, 18 ) ref -> rdi class-hnd exact "dup spill" ; V11 tmp10 [V11,T05] ( 9, 18 ) ref -> rdi class-hnd exact "dup spill" ; V12 tmp11 [V12,T01] ( 15, 30 ) ref -> rdi class-hnd exact "dup spill" ; V13 tmp12 [V13,T02] ( 15, 30 ) ref -> rdi class-hnd exact "dup spill" ; V14 cse0 [V14,T12] ( 3, 3 ) ref -> rdi "CSE - aggressive" ; ; Lcl frame size = 40 G_M41487_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M41487_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov dword ptr [rsi+136], 0x7ED mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+136], 0x7ED mov dword ptr [rsi+140], 1 mov rcx, 0xD1FFAB1E mov edx, 2 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+24] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+40] call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF ;; bbWeight=1 PerfScore 43.00 G_M41487_IG03: lea rcx, bword ptr [rsi+48] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+56] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+64] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 7 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+24] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+32] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+40] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+48] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+56] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+64] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+72] ;; bbWeight=1 PerfScore 44.75 G_M41487_IG04: mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 7 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+24] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+32] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+40] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+48] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+56] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+64] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+80] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 7 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+24] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+32] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+40] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] ;; bbWeight=1 PerfScore 46.75 G_M41487_IG05: call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+48] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+56] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+64] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+88] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 13 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+24] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+32] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+40] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+48] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+56] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+64] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+72] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+80] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] ;; bbWeight=1 PerfScore 48.50 G_M41487_IG06: call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+88] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+96] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+104] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, rdi mov edx, 12 call CORINFO_HELP_ARRADDR_ST lea rcx, bword ptr [rsi+96] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 13 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+24] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+32] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+40] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+48] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+56] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+64] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+72] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] ;; bbWeight=1 PerfScore 48.50 G_M41487_IG07: call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+80] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+88] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+96] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+104] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, rdi mov edx, 12 call CORINFO_HELP_ARRADDR_ST lea rcx, bword ptr [rsi+104] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rdi, gword ptr [rsi+96] lea rcx, bword ptr [rsi+112] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsi+104] lea rcx, bword ptr [rsi+120] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+128] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov byte ptr [rsi+144], 0 mov rax, rsi ;; bbWeight=1 PerfScore 31.75 G_M41487_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 1740, prolog size 6, PerfScore 441.75, (MethodHash=6ffd5df0) for method CalendarData:CreateInvariant():CalendarData ; ============================================================ ; Assembly listing for method CultureInfo:.ctor(CultureData,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) bool -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M47205_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 4.00 G_M47205_IG02: lea rcx, bword ptr [rsi+48] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, rdi cmp dword ptr [rcx], ecx call CultureData:get_CultureName():String:this lea rcx, bword ptr [rsi+64] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov byte ptr [rsi+96], bl ;; bbWeight=1 PerfScore 7.75 G_M47205_IG03: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 61, prolog size 7, PerfScore 20.60, (MethodHash=8590479a) for method CultureInfo:.ctor(CultureData,bool):this ; ============================================================ ; Assembly listing for method CultureData:get_CultureName():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T01] ( 3, 2.50) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M6572_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M6572_IG02: mov rdi, gword ptr [rsi+24] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi call String:Equals(String,String):bool test eax, eax jne SHORT G_M6572_IG04 ;; bbWeight=1 PerfScore 6.75 G_M6572_IG03: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi call String:Equals(String,String):bool test eax, eax je SHORT G_M6572_IG06 ;; bbWeight=0.50 PerfScore 2.38 G_M6572_IG04: mov rax, gword ptr [rsi+24] ;; bbWeight=0.50 PerfScore 1.00 G_M6572_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M6572_IG06: mov rax, gword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.00 G_M6572_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 85, prolog size 6, PerfScore 24.38, (MethodHash=54d3e653) for method CultureData:get_CultureName():String:this ; ============================================================ ; Assembly listing for method CultureInfo:GetUserDefaultLocaleName():String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T01] ( 3, 2.50) ref -> rax ; V02 tmp2 [V02,T00] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; ; Lcl frame size = 40 G_M39311_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M39311_IG02: xor rcx, rcx mov edx, 92 call CultureData:GetLocaleInfoEx(String,int):String test rax, rax jne SHORT G_M39311_IG05 ;; bbWeight=1 PerfScore 2.75 G_M39311_IG03: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov edx, 92 ;; bbWeight=0.50 PerfScore 1.25 G_M39311_IG04: add rsp, 40 jmp CultureData:GetLocaleInfoEx(String,int):String ;; bbWeight=0.50 PerfScore 1.13 G_M39311_IG05: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 53, prolog size 4, PerfScore 11.30, (MethodHash=2b096670) for method CultureInfo:GetUserDefaultLocaleName():String ; ============================================================ ; Assembly listing for method CultureData:GetLocaleInfoEx(String,int):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) int -> rdx ; V02 loc0 [V02,T02] ( 3, 2.50) long -> rsi ; V03 loc1 [V03,T03] ( 2, 2 ) int -> rax ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 GsCookie [V05 ] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; ; Lcl frame size = 40 G_M2325_IG01: push rbp push rsi sub rsp, 40 lea rbp, [rsp+20H] mov rax, 0xD1FFAB1E mov qword ptr [rbp], rax ;; bbWeight=1 PerfScore 4.00 G_M2325_IG02: add rsp, 32 test dword ptr [rsp], esp sub rsp, 0x430 sub rsp, 32 lea rsi, [rsp+20H] mov r8, rsi mov r9d, 530 call Kernel32:GetLocaleInfoEx(String,int,long,int):int test eax, eax jle SHORT G_M2325_IG06 ;; bbWeight=1 PerfScore 6.00 G_M2325_IG03: mov rdx, rsi xor rcx, rcx call String:.ctor(long):this mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx je SHORT G_M2325_IG04 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 2.38 G_M2325_IG04: nop ;; bbWeight=0.50 PerfScore 0.13 G_M2325_IG05: lea rsp, [rbp+08H] pop rsi pop rbp ret ;; bbWeight=0.50 PerfScore 1.25 G_M2325_IG06: xor rax, rax mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx je SHORT G_M2325_IG07 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.75 G_M2325_IG07: nop ;; bbWeight=0.50 PerfScore 0.13 G_M2325_IG08: lea rsp, [rbp+08H] pop rsi pop rbp ret ;; bbWeight=0.50 PerfScore 1.25 ; Total bytes of code 136, prolog size 25, PerfScore 30.48, (MethodHash=8c45f6ea) for method CultureData:GetLocaleInfoEx(String,int):String ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(String,int,long,int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 4 ) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi ; V02 arg2 [V02,T03] ( 3, 3 ) long -> rbx ; V03 arg3 [V03,T04] ( 3, 3 ) int -> r14 ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref ; V05 loc1 [V05,T07] ( 3, 2.50) long -> rcx ; V06 loc2 [V06 ] ( 1, 0.50) ref -> [rbp-0x40] must-init pinned class-hnd ; V07 loc3 [V07,T08] ( 2, 2 ) long -> rdx ;* V08 loc4 [V08 ] ( 0, 0 ) long -> zero-ref ; V09 loc5 [V09,T09] ( 2, 2 ) long -> r9 ;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref ; V11 loc7 [V11,T10] ( 2, 2 ) int -> rax ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V13 tmp1 [V13 ] ( 3, 3 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "stub argument" ; V14 tmp2 [V14,T05] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V15 tmp3 [V15,T06] ( 2, 4 ) int -> rax "Single return block return value" ; V16 FramesRoot [V16,T00] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V17 PInvokeFrame [V17 ] ( 8, 8 ) blk (72) [rbp-0x90] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 120 G_M26005_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] mov qword ptr [rbp-48H], r10 xor rbx, rbx mov qword ptr [rbp-40H], rbx mov rsi, rcx mov edi, edx mov rbx, r8 mov r14d, r9d ;; bbWeight=1 PerfScore 12.00 G_M26005_IG02: lea rcx, [rbp-88H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-68H], rcx mov rcx, rbp mov qword ptr [rbp-58H], rcx lea rcx, bword ptr [rbp-88H] mov qword ptr [r15+16], rcx xor rcx, rcx test rsi, rsi je SHORT G_M26005_IG04 ;; bbWeight=1 PerfScore 7.50 G_M26005_IG03: mov gword ptr [rbp-40H], rsi lea rcx, bword ptr [rsi+12] ;; bbWeight=0.50 PerfScore 0.75 G_M26005_IG04: mov edx, edi movsxd r9, r14d mov r8, qword ptr [rbp-48H] mov r8, qword ptr [r8+32] mov rax, qword ptr [r8] mov r8, rbx mov r10, qword ptr [rbp-48H] mov qword ptr [rbp-78H], r10 lea r10, G_M26005_IG06 mov qword ptr [rbp-60H], r10 mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 10.75 G_M26005_IG05: call rax ;; bbWeight=1 PerfScore 3.00 G_M26005_IG06: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M26005_IG07 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M26005_IG07: mov rdx, bword ptr [rbp-80H] mov qword ptr [r15+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M26005_IG08: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 205, prolog size 34, PerfScore 69.50, (MethodHash=c3839a6a) for method ILStubClass:IL_STUB_PInvoke(String,int,long,int):int ; ============================================================ ; Assembly listing for method String:ToCharArray():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> rsi this class-hnd ; V01 loc0 [V01,T05] ( 3, 1.50) ref -> rbx class-hnd exact ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 2 ) byref -> rcx "Inlining Arg" ; V04 tmp2 [V04,T03] ( 2, 2 ) byref -> rdx "Inlining Arg" ;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V06 tmp4 [V06,T04] ( 2, 2 ) long -> r8 "Inlining Arg" ;* V07 tmp5 [V07 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V08 tmp6 [V08 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V09 tmp7 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V10 tmp8 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V11 cse0 [V11,T01] ( 4, 3 ) int -> rdi "CSE - aggressive" ; ; Lcl frame size = 32 G_M14649_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M14649_IG02: mov edi, dword ptr [rsi+8] test edi, edi jne SHORT G_M14649_IG05 ;; bbWeight=1 PerfScore 3.25 G_M14649_IG03: mov rcx, 0xD1FFAB1E mov edx, 7 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.88 G_M14649_IG04: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M14649_IG05: movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbx, rax lea rcx, bword ptr [rbx+16] lea rdx, bword ptr [rsi+12] mov r8d, edi add r8, r8 call Buffer:Memmove(byref,byref,long) mov rax, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M14649_IG06: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 109, prolog size 7, PerfScore 24.53, (MethodHash=99aec6c6) for method String:ToCharArray():ref:this ; ============================================================ ; Assembly listing for method ConsoleStream:get_CanWrite():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M37050_IG01: ;; bbWeight=1 PerfScore 0.00 G_M37050_IG02: movzx rax, byte ptr [rcx+17] ;; bbWeight=1 PerfScore 2.00 G_M37050_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=02896f45) for method ConsoleStream:get_CanWrite():bool:this ; ============================================================ ; Assembly listing for method OSEncoding:GetEncoder():Encoder:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 40 G_M14894_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M14894_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov word ptr [rdi+32], 0 mov rax, rdi ;; bbWeight=1 PerfScore 4.50 G_M14894_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 55, prolog size 6, PerfScore 14.75, (MethodHash=81dcc5d1) for method OSEncoding:GetEncoder():Encoder:this ; ============================================================ ; Assembly listing for method OSEncoding:GetMaxByteCount(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 4, 4 ) int -> rdx ; V02 loc0 [V02,T01] ( 3, 3 ) long -> rax ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp3 [V06,T04] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp4 [V07,T05] ( 2, 0 ) ref -> rdi "argument with side effect" ; V08 tmp5 [V08,T06] ( 2, 0 ) ref -> r8 "argument with side effect" ; V09 tmp6 [V09,T07] ( 2, 0 ) ref -> rcx "argument with side effect" ; V10 tmp7 [V10,T08] ( 2, 0 ) ref -> rdi "argument with side effect" ; V11 tmp8 [V11,T09] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M46195_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M46195_IG02: test edx, edx jl SHORT G_M46195_IG05 ;; bbWeight=1 PerfScore 1.25 G_M46195_IG03: movsxd rax, edx imul rax, rax, 14 cmp rax, 0xD1FFAB1E jg SHORT G_M46195_IG06 ;; bbWeight=1 PerfScore 3.50 G_M46195_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M46195_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC37 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 605 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M46195_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC37 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xAA5 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 219, prolog size 6, PerfScore 31.15, (MethodHash=46a14b8c) for method OSEncoding:GetMaxByteCount(int):int:this ; ============================================================ ; Assembly listing for method ConsoleStream:get_CanSeek():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M24383_IG01: ;; bbWeight=1 PerfScore 0.00 G_M24383_IG02: xor eax, eax ;; bbWeight=1 PerfScore 0.25 G_M24383_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 3, prolog size 0, PerfScore 1.55, (MethodHash=b3a9a0c0) for method ConsoleStream:get_CanSeek():bool:this ; ============================================================ ; Assembly listing for method StreamWriter:Flush(bool,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 17, 10 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 4, 3.50) bool -> rdi ; V02 arg2 [V02,T03] ( 4, 3.50) bool -> rbx ; V03 loc0 [V03,T06] ( 3, 1.50) int -> rax ; V04 loc1 [V04 ] ( 4, 2 ) struct (16) [rsp+0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06 ] ( 2, 1 ) byref -> [rsp+0x50] do-not-enreg[X] addr-exposed V04._pointer(offs=0x00) P-DEP "field V04._pointer (fldOffset=0x0)" ; V07 tmp2 [V07 ] ( 3, 1.50) int -> [rsp+0x58] do-not-enreg[X] addr-exposed V04._length(offs=0x08) P-DEP "field V04._length (fldOffset=0x8)" ; V08 tmp3 [V08 ] ( 2, 2 ) struct (16) [rsp+0x40] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V09 tmp4 [V09,T04] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V10 tmp5 [V10,T05] ( 3, 3 ) ref -> rcx "argument with side effect" ; V11 rat0 [V11,T01] ( 12, 12 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 96 G_M60102_IG01: push rdi push rsi push rbx sub rsp, 96 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 vmovdqa xmmword ptr [rsp+50H], xmm4 mov rsi, rcx mov edi, edx mov ebx, r8d ;; bbWeight=1 PerfScore 6.33 G_M60102_IG02: cmp byte ptr [rsi+91], 0 jne G_M60102_IG10 ;; bbWeight=1 PerfScore 3.00 G_M60102_IG03: movzx rcx, dil or ecx, dword ptr [rsi+80] movzx rdx, bl or ecx, edx jne SHORT G_M60102_IG05 ;; bbWeight=1 PerfScore 3.75 G_M60102_IG04: add rsp, 96 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M60102_IG05: cmp byte ptr [rsi+89], 0 jne SHORT G_M60102_IG06 mov byte ptr [rsi+89], 1 mov rcx, gword ptr [rsi+40] lea rdx, bword ptr [rsp+50H] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+48]Encoding:get_Preamble():ReadOnlySpan`1:this cmp dword ptr [rsp+58H], 0 jle SHORT G_M60102_IG06 mov rcx, gword ptr [rsi+32] lea rdx, bword ptr [rsp+40H] mov rax, bword ptr [rsp+50H] mov bword ptr [rdx], rax mov eax, dword ptr [rsp+58H] mov dword ptr [rdx+8], eax lea rdx, bword ptr [rsp+40H] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+96] call qword ptr [rax+56]Stream:Write(ReadOnlySpan`1):this ;; bbWeight=0.50 PerfScore 14.75 G_M60102_IG06: mov rcx, gword ptr [rsi+56] mov gword ptr [rsp+20H], rcx xor ecx, ecx mov dword ptr [rsp+28H], ecx movzx rcx, bl mov dword ptr [rsp+30H], ecx mov rcx, gword ptr [rsi+48] mov rdx, gword ptr [rsi+64] mov r9d, dword ptr [rsi+80] xor r8d, r8d mov rax, qword ptr [rcx] mov rax, qword ptr [rax+72] call qword ptr [rax]Encoder:GetBytes(ref,int,int,ref,int,bool):int:this xor ecx, ecx mov dword ptr [rsi+80], ecx test eax, eax jle SHORT G_M60102_IG07 mov rcx, gword ptr [rsi+32] mov rdx, gword ptr [rsi+56] mov r9d, eax xor r8d, r8d mov rax, qword ptr [rcx] mov rax, qword ptr [rax+96] call qword ptr [rax+48]Stream:Write(ref,int,int):this ;; bbWeight=0.50 PerfScore 16.38 G_M60102_IG07: test dil, dil je SHORT G_M60102_IG08 mov rcx, gword ptr [rsi+32] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+80] call qword ptr [rax+48]Stream:Flush():this ;; bbWeight=0.50 PerfScore 5.13 G_M60102_IG08: nop ;; bbWeight=0.50 PerfScore 0.13 G_M60102_IG09: add rsp, 96 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M60102_IG10: mov rcx, rsi call StreamWriter:g__ThrowObjectDisposedException|75_0():this int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 254, prolog size 23, PerfScore 77.91, (MethodHash=36bc1539) for method StreamWriter:Flush(bool,bool):this ; ============================================================ ; Assembly listing for method OSEncoder:GetBytes(ref,int,int,ref,int,bool):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 4, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 6, 4.50) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 6, 4.50) int -> r8 ; V03 arg3 [V03,T00] ( 6, 5 ) int -> [rsp+0x78] ; V04 arg4 [V04,T06] ( 3, 2.50) ref -> r11 class-hnd ; V05 arg5 [V05,T05] ( 4, 3 ) int -> r10 ; V06 arg6 [V06,T11] ( 2, 1 ) bool -> [rsp+0x90] ; V07 loc0 [V07,T07] ( 4, 2 ) long -> rdx ; V08 loc1 [V08 ] ( 4, 2 ) ref -> [rsp+0x40] must-init pinned class-hnd ; V09 loc2 [V09,T12] ( 2, 1 ) long -> rax ; V10 loc3 [V10 ] ( 2, 1 ) byref -> [rsp+0x38] must-init pinned ; V11 loc4 [V11 ] ( 1, 0.50) ushort -> [rsp+0x34] do-not-enreg[X] addr-exposed ld-addr-op ;* V12 loc5 [V12 ] ( 0, 0 ) long -> zero-ref ; V13 OutArgs [V13 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V14 tmp1 [V14,T13] ( 3, 0 ) ref -> rsi ; V15 tmp2 [V15,T14] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V16 tmp3 [V16,T15] ( 3, 0 ) ref -> rsi ; V17 tmp4 [V17,T16] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V18 tmp5 [V18,T17] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V19 tmp6 [V19,T10] ( 3, 1.50) long -> rdx ; V20 tmp7 [V20,T18] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V21 tmp8 [V21,T19] ( 2, 0 ) ref -> rcx "argument with side effect" ; V22 tmp9 [V22,T20] ( 2, 0 ) ref -> r8 "argument with side effect" ; V23 tmp10 [V23,T21] ( 2, 0 ) ref -> rcx "argument with side effect" ; V24 tmp11 [V24,T22] ( 2, 0 ) ref -> r8 "argument with side effect" ; V25 tmp12 [V25,T23] ( 2, 0 ) ref -> rcx "argument with side effect" ; V26 tmp13 [V26,T24] ( 2, 0 ) ref -> rdi "argument with side effect" ; V27 tmp14 [V27,T25] ( 2, 0 ) ref -> r8 "argument with side effect" ; V28 tmp15 [V28,T26] ( 2, 0 ) ref -> rcx "argument with side effect" ; V29 tmp16 [V29,T27] ( 2, 0 ) ref -> rdi "argument with side effect" ; V30 tmp17 [V30,T28] ( 2, 0 ) ref -> r8 "argument with side effect" ; V31 tmp18 [V31,T08] ( 2, 2 ) long -> rdx "Cast away GC" ; V32 tmp19 [V32,T09] ( 2, 2 ) long -> rax "Cast away GC" ; V33 cse0 [V33,T04] ( 5, 4 ) int -> rsi "CSE - aggressive" ; ; Lcl frame size = 72 G_M2178_IG01: push rdi push rsi sub rsp, 72 xor rax, rax mov qword ptr [rsp+40H], rax mov qword ptr [rsp+38H], rax mov r11, gword ptr [rsp+80H] mov r10d, dword ptr [rsp+88H] ;; bbWeight=1 PerfScore 6.50 G_M2178_IG02: test rdx, rdx je G_M2178_IG19 test r11, r11 je G_M2178_IG19 ;; bbWeight=1 PerfScore 2.50 G_M2178_IG03: test r8d, r8d jl G_M2178_IG22 test r9d, r9d jl G_M2178_IG22 ;; bbWeight=1 PerfScore 2.50 G_M2178_IG04: mov eax, dword ptr [rdx+8] sub eax, r8d cmp eax, r9d jl G_M2178_IG25 ;; bbWeight=1 PerfScore 3.50 G_M2178_IG05: test r10d, r10d jl G_M2178_IG26 mov esi, dword ptr [r11+8] cmp esi, r10d jl G_M2178_IG26 ;; bbWeight=1 PerfScore 4.50 G_M2178_IG06: test esi, esi jne SHORT G_M2178_IG09 ;; bbWeight=1 PerfScore 1.25 G_M2178_IG07: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M2178_IG08: add rsp, 72 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M2178_IG09: mov dword ptr [rsp+78H], r9d test r9d, r9d jne SHORT G_M2178_IG12 cmp word ptr [rcx+32], 0 je SHORT G_M2178_IG10 movzx rdi, byte ptr [rsp+90H] test dil, dil mov dword ptr [rsp+90H], edi jne SHORT G_M2178_IG12 ;; bbWeight=0.50 PerfScore 4.25 G_M2178_IG10: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M2178_IG11: add rsp, 72 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M2178_IG12: mov gword ptr [rsp+40H], rdx mov rdx, gword ptr [rsp+40H] cmp dword ptr [rdx+8], 0 jne SHORT G_M2178_IG14 ;; bbWeight=0.50 PerfScore 2.50 G_M2178_IG13: xor rdx, rdx jmp SHORT G_M2178_IG15 ;; bbWeight=0.50 PerfScore 1.13 G_M2178_IG14: mov rdx, gword ptr [rsp+40H] cmp dword ptr [rdx+8], 0 jbe G_M2178_IG27 mov rdx, gword ptr [rsp+40H] add rdx, 16 ;; bbWeight=0.50 PerfScore 2.63 G_M2178_IG15: cmp esi, 0 jbe G_M2178_IG27 add r11, 16 mov bword ptr [rsp+38H], r11 mov rax, bword ptr [rsp+38H] test rdx, rdx je SHORT G_M2178_IG16 movsxd r8, r8d lea rdx, [rdx+2*r8] jmp SHORT G_M2178_IG17 ;; bbWeight=0.50 PerfScore 3.75 G_M2178_IG16: lea rdx, [rsp+34H] ;; bbWeight=0.50 PerfScore 0.25 G_M2178_IG17: sub esi, r10d mov dword ptr [rsp+20H], esi mov edi, dword ptr [rsp+90H] movzx r8, dil mov dword ptr [rsp+28H], r8d movsxd r8, r10d lea r9, [rax+r8] mov r8d, dword ptr [rsp+78H] mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]OSEncoder:GetBytes(long,int,long,int,bool):int:this nop ;; bbWeight=0.50 PerfScore 5.38 G_M2178_IG18: add rsp, 72 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M2178_IG19: test rdx, rdx je SHORT G_M2178_IG20 mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] jmp SHORT G_M2178_IG21 ;; bbWeight=0 PerfScore 0.00 G_M2178_IG20: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0 PerfScore 0.00 G_M2178_IG21: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x925 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rsi mov rcx, rdi call ArgumentNullException:.ctor(String,String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M2178_IG22: test r8d, r8d jl SHORT G_M2178_IG23 mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] jmp SHORT G_M2178_IG24 ;; bbWeight=0 PerfScore 0.00 G_M2178_IG23: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0 PerfScore 0.00 G_M2178_IG24: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 605 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rsi mov rcx, rdi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M2178_IG25: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC03 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x94B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M2178_IG26: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC5F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x9CF mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M2178_IG27: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 709, prolog size 18, PerfScore 115.15, (MethodHash=c5f5f77d) for method OSEncoder:GetBytes(ref,int,int,ref,int,bool):int:this ; ============================================================ ; Assembly listing for method WindowsConsoleStream:Flush():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) long -> rax ld-addr-op "Inlining Arg" ;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V04 tmp3 [V04,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp4 [V05,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp5 [V06,T04] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp6 [V07,T05] ( 2, 0 ) ref -> r8 "argument with side effect" ; V08 tmp7 [V08,T06] ( 2, 0 ) ref -> rcx "argument with side effect" ; V09 tmp8 [V09,T07] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M59437_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M59437_IG02: mov rax, qword ptr [rcx+24] test rax, rax je SHORT G_M59437_IG05 ;; bbWeight=1 PerfScore 3.25 G_M59437_IG03: cmp byte ptr [rcx+17], 0 je SHORT G_M59437_IG06 ;; bbWeight=1 PerfScore 3.00 G_M59437_IG04: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M59437_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 877 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rcx, rsi xor rdx, rdx call ObjectDisposedException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M59437_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 929 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call NotSupportedException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 163, prolog size 5, PerfScore 25.55, (MethodHash=5cc617d2) for method WindowsConsoleStream:Flush():this ; ============================================================ ; Assembly listing for method TextWriter:Synchronized(TextWriter):TextWriter ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 6 ) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 2, 4 ) ref -> rcx class-hnd "spilling QMark2" ; V03 tmp2 [V03,T01] ( 6, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp3 [V04,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp4 [V05,T03] ( 2, 2 ) ref -> rbx class-hnd "Inlining Arg" ; V06 tmp5 [V06,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M44231_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M44231_IG02: test rsi, rsi je G_M44231_IG08 ;; bbWeight=1 PerfScore 1.25 G_M44231_IG03: mov rcx, rsi mov rax, 0xD1FFAB1E cmp qword ptr [rcx], rax je SHORT G_M44231_IG06 ;; bbWeight=1 PerfScore 3.50 G_M44231_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+40]TextWriter:get_FormatProvider():IFormatProvider:this mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rdi+16] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+32] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 10.13 G_M44231_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M44231_IG06: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M44231_IG07: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M44231_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x19D6B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 219, prolog size 7, PerfScore 43.15, (MethodHash=bf985338) for method TextWriter:Synchronized(TextWriter):TextWriter ; ============================================================ ; Assembly listing for method TextWriter:get_FormatProvider():IFormatProvider:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 cse0 [V02,T01] ( 3, 2.50) ref -> rax "CSE - aggressive" ; ; Lcl frame size = 0 G_M55669_IG01: ;; bbWeight=1 PerfScore 0.00 G_M55669_IG02: mov rax, gword ptr [rcx+24] test rax, rax jne SHORT G_M55669_IG04 ;; bbWeight=1 PerfScore 3.25 G_M55669_IG03: jmp CultureInfo:get_CurrentCulture():CultureInfo ;; bbWeight=0.50 PerfScore 1.00 G_M55669_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 15, prolog size 0, PerfScore 6.25, (MethodHash=7c30268a) for method TextWriter:get_FormatProvider():IFormatProvider:this ; ============================================================ ; Assembly listing for method CultureInfo:get_CurrentCulture():CultureInfo ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T01] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V02 tmp2 [V02,T00] ( 7, 4.50) ref -> rax ; V03 tmp3 [V03,T02] ( 2, 2 ) ref -> rax class-hnd "dup spill" ; V04 tmp4 [V04,T03] ( 2, 2 ) ref -> rax class-hnd "dup spill" ; ; Lcl frame size = 40 G_M21399_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M21399_IG02: mov rcx, 0xD1FFAB1E mov edx, 511 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rax, gword ptr [rax+8] test rax, rax jne SHORT G_M21399_IG05 ;; bbWeight=1 PerfScore 4.75 G_M21399_IG03: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] test rax, rax jne SHORT G_M21399_IG05 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] test rax, rax jne SHORT G_M21399_IG05 ;; bbWeight=0.50 PerfScore 3.50 G_M21399_IG04: add rsp, 40 jmp CultureInfo:InitializeUserDefaultCulture():CultureInfo ;; bbWeight=0.50 PerfScore 1.13 G_M21399_IG05: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 83, prolog size 4, PerfScore 18.55, (MethodHash=2484ac68) for method CultureInfo:get_CurrentCulture():CultureInfo ; ============================================================ ; Assembly listing for method CultureInfo:InitializeUserDefaultCulture():CultureInfo ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ; ; Lcl frame size = 40 G_M26693_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M26693_IG02: call CultureInfo:GetUserDefaultCulture():CultureInfo mov rdx, rax mov rcx, 0xD1FFAB1E xor r8, r8 call Interlocked:CompareExchange(byref,Object,Object):Object mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=1 PerfScore 5.00 G_M26693_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 48, prolog size 4, PerfScore 11.30, (MethodHash=458b97ba) for method CultureInfo:InitializeUserDefaultCulture():CultureInfo ; ============================================================ ; Assembly listing for method CultureInfo:GetUserDefaultCulture():CultureInfo ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T00] ( 3, 2.50) ref -> rcx class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M40795_IG01: ;; bbWeight=1 PerfScore 0.00 G_M40795_IG02: mov rax, 0xD1FFAB1E mov rcx, gword ptr [rax] test rcx, rcx jne SHORT G_M40795_IG05 ;; bbWeight=1 PerfScore 3.50 G_M40795_IG03: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M40795_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M40795_IG05: jmp CultureInfo:GetCultureByName(String):CultureInfo ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 37, prolog size 0, PerfScore 9.83, (MethodHash=80a960a4) for method CultureInfo:GetUserDefaultCulture():CultureInfo ; ============================================================ ; Assembly listing for method CultureInfo:GetCultureByName(String):CultureInfo ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rsi class-hnd ; V01 loc0 [V01,T02] ( 3, 2 ) ref -> [rbp-0x18] EH do-not-enreg[] class-hnd EH-live ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ; V05 PSPSym [V05 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 48 G_M39912_IG01: push rbp push rdi push rsi sub rsp, 48 lea rbp, [rsp+40H] mov qword ptr [rbp-20H], rsp mov rsi, rcx ;; bbWeight=1 PerfScore 5.00 G_M39912_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov rdx, rsi mov r8d, 1 call CultureInfo:.ctor(String,bool):this mov byte ptr [rdi+96], 1 mov gword ptr [rbp-18H], rdi ;; bbWeight=1 PerfScore 5.25 G_M39912_IG03: mov rax, gword ptr [rbp-18H] ;; bbWeight=1 PerfScore 1.00 G_M39912_IG04: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 G_M39912_IG05: push rbp push rdi push rsi sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+40H] ;; bbWeight=0 PerfScore 0.00 G_M39912_IG06: call CultureInfo:get_InvariantCulture():CultureInfo mov gword ptr [rbp-18H], rax lea rax, G_M39912_IG03 ;; bbWeight=0 PerfScore 0.00 G_M39912_IG07: add rsp, 48 pop rsi pop rdi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 118, prolog size 19, PerfScore 26.05, (MethodHash=79426417) for method CultureInfo:GetCultureByName(String):CultureInfo ; ============================================================ ; Assembly listing for method CultureInfo:.ctor(String,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) bool -> r8 ; V03 loc0 [V03,T03] ( 3, 3 ) ref -> rax class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 4, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T05] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T06] ( 2, 0 ) ref -> rbx class-hnd "Inlining Arg" ; V08 tmp4 [V08,T07] ( 2, 0 ) ref -> rdx "argument with side effect" ; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> rcx "argument with side effect" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 32 G_M39916_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M39916_IG02: test rdi, rdi je SHORT G_M39916_IG06 ;; bbWeight=1 PerfScore 1.25 G_M39916_IG03: movzx rdx, r8b mov rcx, rdi call CultureData:GetCultureData(String,bool):CultureData test rax, rax je SHORT G_M39916_IG07 ;; bbWeight=1 PerfScore 2.75 G_M39916_IG04: lea rcx, bword ptr [rsi+48] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rsi+48] cmp dword ptr [rcx], ecx call CultureData:get_CultureName():String:this lea rcx, bword ptr [rsi+64] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E cmp qword ptr [rsi], rcx setne cl mov byte ptr [rsi+97], cl ;; bbWeight=1 PerfScore 12.75 G_M39916_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M39916_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 839 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rdi call ArgumentNullException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M39916_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x6431 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov ecx, 839 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rbx mov rcx, rsi call ArgumentException:.ctor(String,String):this lea rcx, bword ptr [rsi+128] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 263, prolog size 7, PerfScore 49.55, (MethodHash=51e86413) for method CultureInfo:.ctor(String,bool):this ; ============================================================ ; Assembly listing for method CultureData:GetCultureData(String,bool):CultureData ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 7, 4.75) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 4, 3 ) bool -> rdi ; V02 loc0 [V02,T07] ( 3, 1.50) ref -> rbx class-hnd ; V03 loc1 [V03,T02] ( 7, 3.50) ref -> r14 class-hnd ; V04 loc2 [V04,T04] ( 4, 2 ) ref -> rsi class-hnd ; V05 loc3 [V05,T09] ( 2, 1 ) bool -> r15 ; V06 loc4 [V06 ] ( 3, 1.50) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V07 loc5 [V07,T05] ( 4, 1.50) ref -> [rbp-0x48] EH do-not-enreg[] class-hnd exact EH-live ; V08 loc6 [V08 ] ( 5, 2 ) bool -> [rbp-0x38] do-not-enreg[XF] addr-exposed ld-addr-op ; V09 loc7 [V09,T06] ( 4, 1.50) ref -> [rbp-0x50] EH do-not-enreg[] class-hnd exact EH-live ; V10 loc8 [V10 ] ( 5, 2 ) bool -> [rbp-0x40] do-not-enreg[XF] addr-exposed ld-addr-op ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V12 tmp1 [V12,T08] ( 3, 1.50) ref -> rax ; V13 tmp2 [V13,T03] ( 3, 3 ) ref -> r14 class-hnd exact "NewObj constructor temp" ;* V14 tmp3 [V14,T10] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V15 tmp4 [V15 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; V16 PSPSym [V16 ] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 88 G_M39078_IG01: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 88 lea rbp, [rsp+80H] xor rax, rax mov qword ptr [rbp-30H], rax mov qword ptr [rbp-60H], rsp mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 9.50 G_M39078_IG02: test rsi, rsi je SHORT G_M39078_IG04 ;; bbWeight=1 PerfScore 1.25 G_M39078_IG03: cmp dword ptr [rsi+8], 0 ja SHORT G_M39078_IG06 ;; bbWeight=0.25 PerfScore 0.75 G_M39078_IG04: call CultureData:get_Invariant():CultureData nop ;; bbWeight=0.50 PerfScore 0.63 G_M39078_IG05: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.25 G_M39078_IG06: test dil, dil jne SHORT G_M39078_IG07 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rsi call String:Concat(String,String):String jmp SHORT G_M39078_IG08 ;; bbWeight=0.50 PerfScore 3.38 G_M39078_IG07: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M39078_IG08: mov rcx, rax call TextInfo:ToLowerAsciiInvariant(String):String mov rbx, rax mov rcx, 0xD1FFAB1E mov r14, gword ptr [rcx] test r14, r14 jne SHORT G_M39078_IG09 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rcx, r14 xor edx, edx xor r8, r8 call Dictionary`2:.ctor(int,IEqualityComparer`1):this jmp SHORT G_M39078_IG17 ;; bbWeight=0.50 PerfScore 5.13 G_M39078_IG09: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-48H], rdx xor edx, edx mov dword ptr [rbp-38H], edx ;; bbWeight=0.50 PerfScore 2.25 G_M39078_IG10: cmp byte ptr [rbp-38H], 0 jne SHORT G_M39078_IG12 ;; bbWeight=0.50 PerfScore 1.00 G_M39078_IG11: lea rdx, [rbp-38H] mov rcx, gword ptr [rbp-48H] call Monitor:ReliableEnter(Object,byref) jmp SHORT G_M39078_IG13 ;; bbWeight=0.50 PerfScore 2.25 G_M39078_IG12: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M39078_IG13: lea r8, [rbp-30H] mov rcx, r14 mov rdx, rbx mov rax, 0xD1FFAB1E call qword ptr [rax]Dictionary`2:TryGetValue(__Canon,byref):bool:this mov r15d, eax ;; bbWeight=0.50 PerfScore 2.25 G_M39078_IG14: cmp byte ptr [rbp-38H], 0 je SHORT G_M39078_IG15 mov rcx, gword ptr [rbp-48H] call Monitor:Exit(Object) ;; bbWeight=0.50 PerfScore 2.00 G_M39078_IG15: test r15d, r15d je SHORT G_M39078_IG17 cmp gword ptr [rbp-30H], 0 je SHORT G_M39078_IG17 mov rax, gword ptr [rbp-30H] ;; bbWeight=0.50 PerfScore 2.13 G_M39078_IG16: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.25 G_M39078_IG17: movzx rdx, dil mov rcx, rsi call CultureData:CreateCultureData(String,bool):CultureData mov rsi, rax test rsi, rsi jne SHORT G_M39078_IG19 xor rax, rax ;; bbWeight=0.50 PerfScore 1.63 G_M39078_IG18: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.25 G_M39078_IG19: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-50H], rdx xor edx, edx mov dword ptr [rbp-40H], edx ;; bbWeight=0.50 PerfScore 2.25 G_M39078_IG20: cmp byte ptr [rbp-40H], 0 jne SHORT G_M39078_IG22 ;; bbWeight=0.50 PerfScore 1.00 G_M39078_IG21: lea rdx, [rbp-40H] mov rcx, gword ptr [rbp-50H] call Monitor:ReliableEnter(Object,byref) jmp SHORT G_M39078_IG23 ;; bbWeight=0.50 PerfScore 2.25 G_M39078_IG22: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M39078_IG23: cmp dword ptr [r14], r14d mov rcx, r14 mov rdx, rbx mov r8, rsi mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=0.50 PerfScore 2.13 G_M39078_IG24: cmp byte ptr [rbp-40H], 0 je SHORT G_M39078_IG25 mov rcx, gword ptr [rbp-50H] call Monitor:Exit(Object) ;; bbWeight=0.50 PerfScore 2.00 G_M39078_IG25: mov rcx, 0xD1FFAB1E mov rdx, r14 call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, rsi ;; bbWeight=0.50 PerfScore 0.88 G_M39078_IG26: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.25 G_M39078_IG27: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+80H] ;; bbWeight=0 PerfScore 0.00 G_M39078_IG28: cmp byte ptr [rbp-38H], 0 je SHORT G_M39078_IG29 mov rcx, gword ptr [rbp-48H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M39078_IG29: nop ;; bbWeight=0 PerfScore 0.00 G_M39078_IG30: add rsp, 40 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M39078_IG31: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+80H] ;; bbWeight=0 PerfScore 0.00 G_M39078_IG32: cmp byte ptr [rbp-40H], 0 je SHORT G_M39078_IG33 mov rcx, gword ptr [rbp-50H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M39078_IG33: nop ;; bbWeight=0 PerfScore 0.00 G_M39078_IG34: add rsp, 40 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 547, prolog size 35, PerfScore 108.45, (MethodHash=90886759) for method CultureData:GetCultureData(String,bool):CultureData ; ============================================================ ; Assembly listing for method TextInfo:ToLowerAsciiInvariant(String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T08] ( 5, 4 ) ref -> rcx class-hnd ; V01 loc0 [V01,T03] ( 5, 13 ) long -> rdi ; V02 loc1 [V02 ] ( 2, 1 ) byref -> [rsp+0x28] must-init pinned ; V03 loc2 [V03,T00] ( 17, 40 ) int -> rbx ; V04 loc3 [V04,T09] ( 4, 2 ) ref -> rax class-hnd ; V05 loc4 [V05,T07] ( 4, 9 ) long -> rdx ; V06 loc5 [V06 ] ( 3, 1.50) byref -> [rsp+0x20] must-init pinned ; V07 loc6 [V07,T02] ( 5, 16.50) int -> rcx ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T13] ( 2, 1 ) long -> rdi ; V10 tmp2 [V10,T12] ( 3, 1.50) long -> rdx ; V11 tmp3 [V11,T01] ( 5, 28 ) ushort -> r8 "Inlining Arg" ; V12 tmp4 [V12,T10] ( 2, 2 ) long -> rdi "Cast away GC" ; V13 tmp5 [V13,T11] ( 2, 2 ) long -> rdx "Cast away GC" ; V14 cse0 [V14,T04] ( 8, 12 ) int -> rsi "CSE - aggressive" ; V15 cse1 [V15,T05] ( 3, 12 ) long -> r8 "CSE - aggressive" ; V16 cse2 [V16,T06] ( 3, 12 ) long -> rcx "CSE - aggressive" ; ; Lcl frame size = 48 G_M30513_IG01: push rdi push rsi push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov qword ptr [rsp+20H], rax ;; bbWeight=1 PerfScore 5.50 G_M30513_IG02: mov esi, dword ptr [rcx+8] test esi, esi jne SHORT G_M30513_IG05 ;; bbWeight=1 PerfScore 3.25 G_M30513_IG03: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M30513_IG04: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M30513_IG05: lea rax, bword ptr [rcx+12] mov bword ptr [rsp+28H], rax mov rdi, bword ptr [rsp+28H] xor ebx, ebx test esi, esi jle SHORT G_M30513_IG07 ;; bbWeight=0.50 PerfScore 2.00 G_M30513_IG06: movsxd rax, ebx movzx rax, word ptr [rdi+2*rax] add eax, -65 cmp eax, 25 jbe SHORT G_M30513_IG07 inc ebx cmp esi, ebx jg SHORT G_M30513_IG06 ;; bbWeight=4 PerfScore 21.00 G_M30513_IG07: cmp esi, ebx jg SHORT G_M30513_IG09 mov rax, rcx ;; bbWeight=0.50 PerfScore 0.75 G_M30513_IG08: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M30513_IG09: mov ecx, esi call String:FastAllocateString(int):String test rax, rax jne SHORT G_M30513_IG10 xor rdx, rdx jmp SHORT G_M30513_IG11 ;; bbWeight=0.50 PerfScore 2.38 G_M30513_IG10: lea rdx, bword ptr [rax+12] mov bword ptr [rsp+20H], rdx mov rdx, bword ptr [rsp+20H] ;; bbWeight=0.50 PerfScore 1.25 G_M30513_IG11: xor ecx, ecx test ebx, ebx jle SHORT G_M30513_IG13 ;; bbWeight=0.50 PerfScore 0.75 G_M30513_IG12: movsxd r8, ecx movzx r9, word ptr [rdi+2*r8] mov word ptr [rdx+2*r8], r9w inc ecx cmp ecx, ebx jl SHORT G_M30513_IG12 ;; bbWeight=4 PerfScore 19.00 G_M30513_IG13: movsxd rcx, ebx movzx rcx, word ptr [rdi+2*rcx] or ecx, 32 movsxd r8, ebx mov word ptr [rdx+2*r8], cx inc ebx cmp esi, ebx jle SHORT G_M30513_IG17 ;; bbWeight=0.50 PerfScore 2.63 G_M30513_IG14: movsxd rcx, ebx movzx r8, word ptr [rdi+2*rcx] lea r9d, [r8-65] cmp r9d, 25 ja SHORT G_M30513_IG16 ;; bbWeight=4 PerfScore 16.00 G_M30513_IG15: or r8d, 32 movzx r8, r8b ;; bbWeight=1 PerfScore 0.50 G_M30513_IG16: mov word ptr [rdx+2*rcx], r8w inc ebx cmp esi, ebx jg SHORT G_M30513_IG14 ;; bbWeight=4 PerfScore 10.00 G_M30513_IG17: xor rdx, rdx mov bword ptr [rsp+20H], rdx ;; bbWeight=0.50 PerfScore 0.63 G_M30513_IG18: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 234, prolog size 19, PerfScore 114.28, (MethodHash=5dbd88ce) for method TextInfo:ToLowerAsciiInvariant(String):String ; ============================================================ ; Assembly listing for method CultureData:CreateCultureData(String,bool):CultureData ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 4, 3 ) bool -> rdi ; V02 loc0 [V02,T02] ( 7, 3.50) ref -> rbx class-hnd exact ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 3, 3 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T05] ( 2, 2 ) ref -> rax "Single return block return value" ; V07 cse0 [V07,T06] ( 3, 1.50) int -> rax "CSE - moderate" ; V08 cse1 [V08,T04] ( 3, 2.50) int -> rax "CSE - aggressive" ; ; Lcl frame size = 32 G_M34452_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M34452_IG02: mov eax, dword ptr [rsi+8] cmp eax, 1 jne SHORT G_M34452_IG05 ;; bbWeight=1 PerfScore 3.25 G_M34452_IG03: cmp eax, 0 jbe G_M34452_IG09 movzx rax, word ptr [rsi+12] cmp eax, 67 je SHORT G_M34452_IG04 cmp eax, 99 jne SHORT G_M34452_IG05 ;; bbWeight=0.50 PerfScore 2.88 G_M34452_IG04: add rsp, 32 pop rbx pop rsi pop rdi jmp CultureData:get_Invariant():CultureData ;; bbWeight=0.50 PerfScore 1.88 G_M34452_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, rbx call CultureData:.ctor():this lea rcx, bword ptr [rbx+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov byte ptr [rbx+457], dil mov rcx, rbx call CultureData:InitCultureDataCore():bool:this test eax, eax jne SHORT G_M34452_IG07 mov rcx, rbx call CultureData:InitCompatibilityCultureData():bool:this test eax, eax jne SHORT G_M34452_IG07 xor rax, rax ;; bbWeight=0.50 PerfScore 5.38 G_M34452_IG06: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M34452_IG07: movzx rdx, dil mov rcx, rbx call CultureData:InitUserOverride(bool):this mov rax, rbx ;; bbWeight=0.50 PerfScore 0.88 G_M34452_IG08: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M34452_IG09: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 163, prolog size 12, PerfScore 37.05, (MethodHash=101f796b) for method CultureData:CreateCultureData(String,bool):CultureData ; ============================================================ ; Assembly listing for method CultureData:InitCultureDataCore():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 15, 9 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T02] ( 10, 6 ) int -> r9 ; V02 loc1 [V02,T01] ( 13, 7.50) ref -> rdi class-hnd ; V03 loc2 [V03,T03] ( 9, 5.50) long -> rbx ; V04 loc3 [V04,T05] ( 3, 1.50) int -> rax ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 2, 1 ) bool -> rcx "Inline return value spill temp" ; V07 tmp2 [V07,T04] ( 3, 3 ) int -> rcx "Inlining Arg" ; V08 GsCookie [V08 ] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; ; Lcl frame size = 40 G_M54216_IG01: push rbp push rdi push rsi push rbx sub rsp, 40 lea rbp, [rsp+20H] mov rax, 0xD1FFAB1E mov qword ptr [rbp], rax mov rsi, rcx ;; bbWeight=1 PerfScore 6.25 G_M54216_IG02: mov rdi, gword ptr [rsi+8] add rsp, 32 test dword ptr [rsp], esp sub rsp, 176 sub rsp, 32 lea rbx, [rsp+20H] mov rcx, rdi mov r8, rbx mov edx, 92 mov r9d, 85 call Kernel32:GetLocaleInfoEx(String,int,long,int):int mov r9d, eax test r9d, r9d je G_M54216_IG07 ;; bbWeight=1 PerfScore 8.75 G_M54216_IG03: dec r9d mov rdx, rbx xor rcx, rcx xor r8d, r8d call String:.ctor(long,int,int):this lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rdi, gword ptr [rsi+8] mov rcx, rdi mov r8, rbx mov edx, 0xD1FFAB1E mov r9d, 2 call Kernel32:GetLocaleInfoEx(String,int,long,int):int mov r9d, eax test r9d, r9d je G_M54216_IG07 ;; bbWeight=0.50 PerfScore 4.63 G_M54216_IG04: cmp dword ptr [rbx], 0 setne dl mov byte ptr [rsi+458], dl lea rcx, bword ptr [rsi+16] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF cmp byte ptr [rsi+458], 0 je SHORT G_M54216_IG06 lea rcx, bword ptr [rsi+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, rdi mov rdx, rbx mov r8d, 85 call Kernel32:ResolveLocaleName(String,long,int):int mov r9d, eax test r9d, r9d jle SHORT G_M54216_IG07 ;; bbWeight=0.50 PerfScore 6.88 G_M54216_IG05: dec r9d mov rdx, rbx xor rcx, rcx xor r8d, r8d call String:.ctor(long,int,int):this lea rcx, bword ptr [rsi+64] mov rdx, rax call CORINFO_HELP_ASSIGN_REF jmp G_M54216_IG11 ;; bbWeight=0.50 PerfScore 2.88 G_M54216_IG06: lea rcx, bword ptr [rsi+64] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, rdi mov r8, rbx mov edx, 0xD1FFAB1E mov r9d, 2 call Kernel32:GetLocaleInfoEx(String,int,long,int):int mov r9d, eax test r9d, r9d jne SHORT G_M54216_IG10 ;; bbWeight=0.50 PerfScore 3.50 G_M54216_IG07: xor eax, eax mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx je SHORT G_M54216_IG08 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.75 G_M54216_IG08: nop ;; bbWeight=0.50 PerfScore 0.13 G_M54216_IG09: lea rsp, [rbp+08H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.75 G_M54216_IG10: mov ecx, dword ptr [rbx] mov dword ptr [rsi+452], ecx mov ecx, dword ptr [rsi+452] cmp ecx, 0xC00 je SHORT G_M54216_IG11 cmp ecx, 0x1000 sete cl movzx rcx, cl test ecx, ecx jne SHORT G_M54216_IG11 lea rcx, bword ptr [rdi+12] mov r8d, dword ptr [rdi+8] mov edx, 95 call SpanHelpers:IndexOf(byref,ushort,int):int test eax, eax jle SHORT G_M54216_IG11 mov rcx, rdi mov r8d, eax xor edx, edx call String:Substring(int,int):String:this lea rcx, bword ptr [rsi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 8.75 G_M54216_IG11: mov eax, 1 mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx je SHORT G_M54216_IG12 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.75 G_M54216_IG12: nop ;; bbWeight=0.50 PerfScore 0.13 G_M54216_IG13: lea rsp, [rbp+08H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.75 ; Total bytes of code 468, prolog size 27, PerfScore 95.68, (MethodHash=cedf2c37) for method CultureData:InitCultureDataCore():bool:this ; ============================================================ ; Assembly listing for method String:Ctor(long,int,int):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 5, 4.50) long -> rdx ; V02 arg2 [V02,T02] ( 4, 4 ) int -> r8 ; V03 arg3 [V03,T01] ( 5, 4.50) int -> r9 ; V04 loc0 [V04,T03] ( 3, 2.50) long -> rsi ; V05 loc1 [V05,T04] ( 4, 2 ) ref -> rdi class-hnd ; V06 loc2 [V06,T07] ( 2, 1 ) long -> r8 ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp2 [V09,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp3 [V10,T10] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V11 tmp4 [V11,T11] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V12 tmp5 [V12,T05] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V13 tmp6 [V13 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V14 tmp7 [V14 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V15 tmp8 [V15 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V16 tmp9 [V16,T06] ( 2, 2 ) byref -> rdx "impAppendStmt" ;* V17 tmp10 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V18 tmp11 [V18,T12] ( 2, 0 ) ref -> rcx "argument with side effect" ; V19 tmp12 [V19,T13] ( 2, 0 ) ref -> rdi "argument with side effect" ; V20 tmp13 [V20,T14] ( 2, 0 ) ref -> r8 "argument with side effect" ; V21 tmp14 [V21,T15] ( 2, 0 ) ref -> rcx "argument with side effect" ; V22 tmp15 [V22,T16] ( 2, 0 ) ref -> rdi "argument with side effect" ; V23 tmp16 [V23,T17] ( 2, 0 ) ref -> r8 "argument with side effect" ; V24 tmp17 [V24,T18] ( 2, 0 ) ref -> rcx "argument with side effect" ; V25 tmp18 [V25,T19] ( 2, 0 ) ref -> rdi "argument with side effect" ; V26 tmp19 [V26,T20] ( 2, 0 ) ref -> r8 "argument with side effect" ; V27 tmp20 [V27,T21] ( 2, 0 ) ref -> rcx "argument with side effect" ; V28 tmp21 [V28,T22] ( 2, 0 ) ref -> rdi "argument with side effect" ; V29 tmp22 [V29,T23] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M36519_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M36519_IG02: test r9d, r9d jl SHORT G_M36519_IG11 ;; bbWeight=1 PerfScore 1.25 G_M36519_IG03: test r8d, r8d jl G_M36519_IG12 ;; bbWeight=1 PerfScore 1.25 G_M36519_IG04: movsxd rax, r8d lea rsi, [rdx+2*rax] cmp rsi, rdx jb G_M36519_IG13 ;; bbWeight=1 PerfScore 2.00 G_M36519_IG05: test r9d, r9d jne SHORT G_M36519_IG08 ;; bbWeight=1 PerfScore 1.25 G_M36519_IG06: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M36519_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M36519_IG08: test rdx, rdx je G_M36519_IG14 ;; bbWeight=0.50 PerfScore 0.63 G_M36519_IG09: mov ecx, r9d call String:FastAllocateString(int):String mov rdi, rax mov r8d, dword ptr [rdi+8] lea rcx, bword ptr [rdi+12] mov rdx, rsi add r8, r8 call Buffer:Memmove(byref,byref,long) mov rax, rdi ;; bbWeight=0.50 PerfScore 2.88 G_M36519_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M36519_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 89 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA21D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M36519_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x194A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA509 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M36519_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x194A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA31D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M36519_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1960 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA31D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 483, prolog size 6, PerfScore 63.18, (MethodHash=1fda7158) for method String:Ctor(long,int,int):String:this ; ============================================================ ; Assembly listing for method CultureData:InitUserOverride(bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) bool -> rdx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T05] ( 2, 1.50) ref -> rcx ;* V04 tmp2 [V04,T06] ( 0, 0 ) ref -> zero-ref ; V05 tmp3 [V05,T02] ( 3, 2 ) int -> rax ; V06 tmp4 [V06,T03] ( 2, 2 ) ref -> rcx class-hnd "impAppendStmt" ; V07 tmp5 [V07,T04] ( 2, 2 ) ref -> rdx class-hnd "Inlining Arg" ; ; Lcl frame size = 32 G_M38128_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M38128_IG02: mov rcx, rsi test dl, dl je SHORT G_M38128_IG04 ;; bbWeight=1 PerfScore 1.50 G_M38128_IG03: mov rcx, gword ptr [rcx+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call String:Equals(String,String):bool jmp SHORT G_M38128_IG05 ;; bbWeight=0.50 PerfScore 3.63 G_M38128_IG04: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M38128_IG05: mov byte ptr [rsi+456], al ;; bbWeight=1 PerfScore 1.00 G_M38128_IG06: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 53, prolog size 5, PerfScore 14.80, (MethodHash=41f56b0f) for method CultureData:InitUserOverride(bool):this ; ============================================================ ; Assembly listing for method SpanHelpers:SequenceEqual(byref,byref,long):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 13, 14.50) byref -> rcx ; V01 arg1 [V01,T03] ( 13, 14.50) byref -> rdx ; V02 arg2 [V02,T04] ( 12, 7.50) long -> r8 ; V03 loc0 [V03,T08] ( 4, 2 ) bool -> rax ; V04 loc1 [V04,T07] ( 7, 3.50) int -> rax ; V05 loc2 [V05,T09] ( 4, 2 ) long -> r9 ; V06 loc3 [V06,T17] ( 3, 1.50) long -> r8 ; V07 loc4 [V07,T10] ( 4, 2 ) int -> rax ; V08 loc5 [V08,T23] ( 4, 9 ) simd32 -> mm0 ; V09 loc6 [V09,T00] ( 6, 20.50) long -> rax ; V10 loc7 [V10,T05] ( 5, 6 ) long -> r8 ; V11 loc8 [V11,T24] ( 4, 9 ) simd16 -> mm0 ; V12 loc9 [V12,T01] ( 6, 20.50) long -> rax ; V13 loc10 [V13,T06] ( 5, 6 ) long -> r8 ;* V14 loc11 [V14 ] ( 0, 0 ) long -> zero-ref ;* V15 loc12 [V15 ] ( 0, 0 ) long -> zero-ref ; V16 loc13 [V16,T18] ( 3, 1.50) long -> rax ; V17 loc14 [V17,T11] ( 4, 2 ) long -> r8 ;* V18 loc15 [V18 ] ( 0, 0 ) long -> zero-ref ;* V19 loc16 [V19 ] ( 0, 0 ) long -> zero-ref ;# V20 OutArgs [V20 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V21 tmp1 [V21,T12] ( 2, 2 ) long -> r8 "impAppendStmt" ; V22 tmp2 [V22,T13] ( 2, 2 ) long -> rcx "impAppendStmt" ; V23 tmp3 [V23,T25] ( 2, 2 ) simd16 -> mm0 "impAppendStmt" ; V24 tmp4 [V24,T26] ( 2, 2 ) simd16 -> mm1 "struct address for call/obj" ; V25 tmp5 [V25,T19] ( 2, 16 ) simd16 -> mm0 "impAppendStmt" ; V26 tmp6 [V26,T20] ( 2, 16 ) simd16 -> mm1 "struct address for call/obj" ; V27 tmp7 [V27,T27] ( 2, 2 ) simd32 -> mm0 "impAppendStmt" ; V28 tmp8 [V28,T28] ( 2, 2 ) simd32 -> mm1 "struct address for call/obj" ; V29 tmp9 [V29,T21] ( 2, 16 ) simd32 -> mm0 "impAppendStmt" ; V30 tmp10 [V30,T22] ( 2, 16 ) simd32 -> mm1 "struct address for call/obj" ; V31 tmp11 [V31,T14] ( 2, 2 ) int -> rax "impAppendStmt" ; V32 tmp12 [V32,T15] ( 2, 2 ) int -> rcx "impAppendStmt" ; V33 tmp13 [V33,T16] ( 2, 2 ) int -> rcx "impAppendStmt" ;* V34 tmp14 [V34 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V35 tmp15 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V36 tmp16 [V36 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V37 tmp17 [V37 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V38 tmp18 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V39 tmp19 [V39 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V40 tmp20 [V40 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V41 tmp21 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V42 tmp22 [V42 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V43 tmp23 [V43 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V44 tmp24 [V44 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V45 tmp25 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V46 tmp26 [V46 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V47 tmp27 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V48 tmp28 [V48 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V49 tmp29 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V50 tmp30 [V50 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V51 tmp31 [V51 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V52 tmp32 [V52 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V53 tmp33 [V53 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V54 tmp34 [V54 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V55 tmp35 [V55 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V56 tmp36 [V56 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V57 tmp37 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V58 tmp38 [V58 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V59 tmp39 [V59 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V60 tmp40 [V60 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V61 tmp41 [V61 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V62 tmp42 [V62 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V63 tmp43 [V63 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V64 tmp44 [V64 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V65 tmp45 [V65 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V66 tmp46 [V66 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V67 tmp47 [V67 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V68 tmp48 [V68 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V69 tmp49 [V69 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V70 tmp50 [V70 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V71 tmp51 [V71 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V72 tmp52 [V72 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V73 tmp53 [V73 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V74 tmp54 [V74 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V75 tmp55 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V76 tmp56 [V76 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V77 tmp57 [V77 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V78 tmp58 [V78 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V79 tmp59 [V79 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V80 tmp60 [V80 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V81 tmp61 [V81 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V82 tmp62 [V82 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V83 tmp63 [V83 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V84 tmp64 [V84 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V85 tmp65 [V85 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V86 tmp66 [V86 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V87 tmp67 [V87 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; ; Lcl frame size = 0 G_M37173_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M37173_IG02: cmp r8, 8 jae SHORT G_M37173_IG07 ;; bbWeight=1 PerfScore 1.25 G_M37173_IG03: cmp r8, 4 jae SHORT G_M37173_IG06 xor eax, eax mov r9, r8 and r9, 2 je SHORT G_M37173_IG04 movzx rax, word ptr [rcx] movzx r10, word ptr [rdx] sub eax, r10d ;; bbWeight=0.50 PerfScore 3.63 G_M37173_IG04: test r8b, 1 je SHORT G_M37173_IG05 movzx rcx, byte ptr [rcx+r9] movzx rdx, byte ptr [rdx+r9] sub ecx, edx or ecx, eax mov eax, ecx ;; bbWeight=0.50 PerfScore 3.00 G_M37173_IG05: test eax, eax sete al movzx rax, al jmp SHORT G_M37173_IG08 ;; bbWeight=0.50 PerfScore 1.75 G_M37173_IG06: add r8, -4 mov eax, dword ptr [rcx] sub eax, dword ptr [rdx] mov ecx, dword ptr [rcx+r8] sub ecx, dword ptr [rdx+r8] or eax, ecx sete al movzx rax, al jmp SHORT G_M37173_IG08 ;; bbWeight=0.50 PerfScore 5.88 G_M37173_IG07: cmp rcx, rdx je SHORT G_M37173_IG09 jmp SHORT G_M37173_IG11 ;; bbWeight=0.50 PerfScore 1.63 G_M37173_IG08: vzeroupper ret ;; bbWeight=0.50 PerfScore 1.00 G_M37173_IG09: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M37173_IG10: vzeroupper ret ;; bbWeight=0.50 PerfScore 1.00 G_M37173_IG11: cmp r8, 32 jb SHORT G_M37173_IG14 xor rax, rax add r8, -32 je SHORT G_M37173_IG13 ;; bbWeight=0.50 PerfScore 1.38 G_M37173_IG12: vmovupd ymm0, ymmword ptr[rcx+rax] vmovupd ymm1, ymmword ptr[rdx+rax] vpcmpeqb ymm0, ymm0, ymm1 vpmovmskb r9d, ymm0 cmp r9d, -1 jne G_M37173_IG18 add rax, 32 cmp r8, rax ja SHORT G_M37173_IG12 ;; bbWeight=4 PerfScore 49.00 G_M37173_IG13: vmovupd ymm0, ymmword ptr[rcx+r8] vmovupd ymm1, ymmword ptr[rdx+r8] vpcmpeqb ymm0, ymm0, ymm1 vpmovmskb ecx, ymm0 cmp ecx, -1 jne SHORT G_M37173_IG18 jmp SHORT G_M37173_IG09 ;; bbWeight=0.50 PerfScore 6.38 G_M37173_IG14: cmp r8, 16 jb SHORT G_M37173_IG17 xor rax, rax add r8, -16 je SHORT G_M37173_IG16 ;; bbWeight=0.50 PerfScore 1.38 G_M37173_IG15: vmovupd xmm0, xmmword ptr [rcx+rax] vmovupd xmm1, xmmword ptr [rdx+rax] vpcmpeqb xmm0, xmm0, xmm1 vpmovmskb r9d, xmm0 cmp r9d, 0xFFFF jne SHORT G_M37173_IG18 add rax, 16 cmp r8, rax ja SHORT G_M37173_IG15 ;; bbWeight=4 PerfScore 49.00 G_M37173_IG16: vmovupd xmm0, xmmword ptr [rcx+r8] vmovupd xmm1, xmmword ptr [rdx+r8] vpcmpeqb xmm0, xmm0, xmm1 vpmovmskb ecx, xmm0 cmp ecx, 0xFFFF jne SHORT G_M37173_IG18 jmp G_M37173_IG09 ;; bbWeight=0.50 PerfScore 6.38 G_M37173_IG17: lea rax, [r8-8] mov r8, qword ptr [rcx] sub r8, qword ptr [rdx] mov rcx, qword ptr [rcx+rax] sub rcx, qword ptr [rdx+rax] or r8, rcx sete al movzx rax, al jmp G_M37173_IG08 ;; bbWeight=0.50 PerfScore 6.00 G_M37173_IG18: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M37173_IG19: vzeroupper ret ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 313, prolog size 3, PerfScore 173.38, (MethodHash=63986eca) for method SpanHelpers:SequenceEqual(byref,byref,long):bool ; ============================================================ ; Assembly listing for method Console:get_In():TextReader ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V02 tmp2 [V02,T01] ( 3, 2.50) ref -> rax ; ; Lcl frame size = 0 G_M42554_IG01: ;; bbWeight=1 PerfScore 0.00 G_M42554_IG02: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] test rax, rax jne SHORT G_M42554_IG04 ;; bbWeight=1 PerfScore 3.50 G_M42554_IG03: jmp Console:g__EnsureInitialized|13_0():TextReader ;; bbWeight=0.50 PerfScore 1.00 G_M42554_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 24, prolog size 0, PerfScore 7.40, (MethodHash=14ed59c5) for method Console:get_In():TextReader ; ============================================================ ; Assembly listing for method Console:g__EnsureInitialized|13_0():TextReader ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T00] ( 4, 2.50) ref -> [rbp-0x18] EH do-not-enreg[] class-hnd exact EH-live ; V01 loc1 [V01 ] ( 5, 4 ) bool -> [rbp-0x10] do-not-enreg[XF] addr-exposed ld-addr-op ; V02 loc2 [V02,T01] ( 2, 2 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ; V05 PSPSym [V05 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 56 G_M41464_IG01: push rbp push rsi sub rsp, 56 lea rbp, [rsp+40H] mov qword ptr [rbp-20H], rsp ;; bbWeight=1 PerfScore 3.75 G_M41464_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-18H], rdx xor edx, edx mov dword ptr [rbp-10H], edx ;; bbWeight=1 PerfScore 4.50 G_M41464_IG03: cmp byte ptr [rbp-10H], 0 jne SHORT G_M41464_IG05 ;; bbWeight=1 PerfScore 2.00 G_M41464_IG04: lea rdx, [rbp-10H] mov rcx, gword ptr [rbp-18H] call Monitor:ReliableEnter(Object,byref) jmp SHORT G_M41464_IG06 ;; bbWeight=1 PerfScore 4.50 G_M41464_IG05: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M41464_IG06: mov rax, 0xD1FFAB1E cmp gword ptr [rax], 0 jne SHORT G_M41464_IG08 ;; bbWeight=1 PerfScore 3.25 G_M41464_IG07: call ConsolePal:GetOrCreateReader():TextReader mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 1.25 G_M41464_IG08: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=1 PerfScore 2.25 G_M41464_IG09: cmp byte ptr [rbp-10H], 0 je SHORT G_M41464_IG11 ;; bbWeight=1 PerfScore 2.00 G_M41464_IG10: mov rcx, gword ptr [rbp-18H] call Monitor:Exit(Object) ;; bbWeight=0.50 PerfScore 1.00 G_M41464_IG11: mov rax, rsi ;; bbWeight=1 PerfScore 0.25 G_M41464_IG12: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 G_M41464_IG13: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+40H] ;; bbWeight=0 PerfScore 0.00 G_M41464_IG14: cmp byte ptr [rbp-10H], 0 je SHORT G_M41464_IG15 mov rcx, gword ptr [rbp-18H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M41464_IG15: nop ;; bbWeight=0 PerfScore 0.00 G_M41464_IG16: add rsp, 40 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 183, prolog size 15, PerfScore 45.55, (MethodHash=e90f5e07) for method Console:g__EnsureInitialized|13_0():TextReader ; ============================================================ ; Assembly listing for method ConsolePal:GetOrCreateReader():TextReader ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T02] ( 3, 2.50) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T03] ( 3, 2 ) ref -> rbx ; V03 tmp2 [V03,T00] ( 7, 7 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp3 [V04,T01] ( 3, 3 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V05 tmp4 [V05,T04] ( 2, 2 ) ref -> rbx class-hnd "Inlining Arg" ; ; Lcl frame size = 48 G_M14467_IG01: push rdi push rsi push rbx sub rsp, 48 ;; bbWeight=1 PerfScore 3.25 G_M14467_IG02: call ConsolePal:OpenStandardInput():Stream mov rsi, rax mov rcx, 0xD1FFAB1E cmp rsi, gword ptr [rcx] je G_M14467_IG04 ;; bbWeight=1 PerfScore 4.50 G_M14467_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax call Console:get_InputEncoding():Encoding mov rbx, rax mov byte ptr [rdi+36], 1 xor edx, edx mov dword ptr [rdi+32], edx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rdi+16] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rdi+24] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+40] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov dword ptr [rsp+20H], 0x1000 mov dword ptr [rsp+28H], 1 mov rcx, rbx mov rdx, rsi mov r8, rdi xor r9d, r9d call StreamReader:.ctor(Stream,Encoding,bool,int,bool):this jmp SHORT G_M14467_IG05 ;; bbWeight=0.50 PerfScore 10.88 G_M14467_IG04: mov rcx, 0xD1FFAB1E mov edx, 0x6BE call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] ;; bbWeight=0.50 PerfScore 1.88 G_M14467_IG05: mov rcx, rbx ;; bbWeight=1 PerfScore 0.25 G_M14467_IG06: add rsp, 48 pop rbx pop rsi pop rdi jmp SyncTextReader:GetSynchronizedTextReader(TextReader):SyncTextReader ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 226, prolog size 7, PerfScore 47.10, (MethodHash=c1d4c77c) for method ConsolePal:GetOrCreateReader():TextReader ; ============================================================ ; Assembly listing for method ConsolePal:OpenStandardInput():Stream ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T01] ( 2, 4 ) int -> rsi "impAppendStmt" ;* V02 tmp2 [V02,T05] ( 0, 0 ) int -> zero-ref ;* V03 tmp3 [V03,T06] ( 0, 0 ) int -> zero-ref ;* V04 tmp4 [V04,T03] ( 0, 0 ) int -> zero-ref ;* V05 tmp5 [V05,T04] ( 0, 0 ) int -> zero-ref ; V06 tmp6 [V06,T02] ( 3, 2 ) int -> rax ; V07 rat0 [V07,T00] ( 3, 6 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 32 G_M948_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M948_IG02: call Console:get_InputEncoding():Encoding mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+96] call qword ptr [rax+56]Encoding:get_CodePage():int:this mov esi, eax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rax, 0xD1FFAB1E call qword ptr [rax]Encoding:get_CodePage():int:this cmp eax, esi jne SHORT G_M948_IG04 ;; bbWeight=1 PerfScore 15.25 G_M948_IG03: call Console:get_IsInputRedirected():bool jmp SHORT G_M948_IG05 ;; bbWeight=0.50 PerfScore 1.50 G_M948_IG04: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M948_IG05: mov ecx, -10 mov edx, 1 mov r8d, eax ;; bbWeight=1 PerfScore 0.75 G_M948_IG06: add rsp, 32 pop rsi jmp ConsolePal:GetStandardFile(int,int,bool):Stream ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 89, prolog size 5, PerfScore 30.53, (MethodHash=f634fc4b) for method ConsolePal:OpenStandardInput():Stream ; ============================================================ ; Assembly listing for method Console:get_InputEncoding():Encoding ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T00] ( 4, 3.50) ref -> rsi class-hnd ; V01 loc1 [V01,T02] ( 4, 1.50) ref -> [rbp-0x18] EH do-not-enreg[] class-hnd exact EH-live ; V02 loc2 [V02 ] ( 5, 2 ) bool -> [rbp-0x10] do-not-enreg[XF] addr-exposed ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ; V05 PSPSym [V05 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 56 G_M10291_IG01: push rbp push rsi sub rsp, 56 lea rbp, [rsp+40H] mov qword ptr [rbp-20H], rsp ;; bbWeight=1 PerfScore 3.75 G_M10291_IG02: mov rdx, 0xD1FFAB1E mov rsi, gword ptr [rdx] test rsi, rsi jne SHORT G_M10291_IG10 ;; bbWeight=1 PerfScore 3.50 G_M10291_IG03: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-18H], rdx xor edx, edx mov dword ptr [rbp-10H], edx ;; bbWeight=0.50 PerfScore 2.25 G_M10291_IG04: cmp byte ptr [rbp-10H], 0 jne SHORT G_M10291_IG06 ;; bbWeight=0.50 PerfScore 1.00 G_M10291_IG05: lea rdx, [rbp-10H] mov rcx, gword ptr [rbp-18H] call Monitor:ReliableEnter(Object,byref) jmp SHORT G_M10291_IG07 ;; bbWeight=0.50 PerfScore 2.25 G_M10291_IG06: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M10291_IG07: mov rax, 0xD1FFAB1E cmp gword ptr [rax], 0 jne SHORT G_M10291_IG08 call Kernel32:GetConsoleCP():int mov ecx, eax call EncodingHelper:GetSupportedConsoleEncoding(int):Encoding mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 3.50 G_M10291_IG08: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0.50 PerfScore 1.13 G_M10291_IG09: cmp byte ptr [rbp-10H], 0 je SHORT G_M10291_IG10 mov rcx, gword ptr [rbp-18H] call Monitor:Exit(Object) ;; bbWeight=0.50 PerfScore 2.00 G_M10291_IG10: mov rax, rsi ;; bbWeight=1 PerfScore 0.25 G_M10291_IG11: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 G_M10291_IG12: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+40H] ;; bbWeight=0 PerfScore 0.00 G_M10291_IG13: cmp byte ptr [rbp-10H], 0 je SHORT G_M10291_IG14 mov rcx, gword ptr [rbp-18H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M10291_IG14: nop ;; bbWeight=0 PerfScore 0.00 G_M10291_IG15: add rsp, 40 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 208, prolog size 15, PerfScore 42.93, (MethodHash=5615d7cc) for method Console:get_InputEncoding():Encoding ; ============================================================ ; Assembly listing for method StreamReader:.ctor(Stream,Encoding,bool,int,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 13, 13 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 6, 6 ) ref -> rbx class-hnd ; V02 arg2 [V02,T01] ( 11, 10.50) ref -> rdi class-hnd ; V03 arg3 [V03,T04] ( 3, 3 ) bool -> r14 ; V04 arg4 [V04,T03] ( 7, 5.50) int -> rbp ; V05 arg5 [V05,T05] ( 1, 1 ) bool -> [rsp+0x88] ; V06 loc0 [V06 ] ( 2, 2 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp2 [V09,T07] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp3 [V10,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V11 tmp4 [V11 ] ( 1, 1 ) byref -> [rsp+0x20] do-not-enreg[X] addr-exposed V06._pointer(offs=0x00) P-DEP "field V06._pointer (fldOffset=0x0)" ; V12 tmp5 [V12 ] ( 2, 2 ) int -> [rsp+0x28] do-not-enreg[X] addr-exposed V06._length(offs=0x08) P-DEP "field V06._length (fldOffset=0x8)" ; V13 tmp6 [V13,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V14 tmp7 [V14,T10] ( 2, 0 ) ref -> rcx "argument with side effect" ; V15 tmp8 [V15,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; V16 tmp9 [V16,T12] ( 2, 0 ) ref -> rcx "argument with side effect" ; V17 tmp10 [V17,T13] ( 2, 0 ) ref -> rdi "argument with side effect" ; V18 tmp11 [V18,T14] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 48 G_M9100_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, rcx mov rbx, rdx mov rdi, r8 mov r14d, r9d mov ebp, dword ptr [rsp+80H] ;; bbWeight=1 PerfScore 8.50 G_M9100_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+48] call CORINFO_HELP_ASSIGN_REF test rbx, rbx je G_M9100_IG13 ;; bbWeight=1 PerfScore 5.00 G_M9100_IG03: test rdi, rdi jne SHORT G_M9100_IG05 ;; bbWeight=1 PerfScore 1.25 G_M9100_IG04: mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] ;; bbWeight=0.50 PerfScore 1.13 G_M9100_IG05: mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+64] call qword ptr [rax+40]Stream:get_CanRead():bool:this test eax, eax je G_M9100_IG14 ;; bbWeight=1 PerfScore 8.50 G_M9100_IG06: cmp ebp, -1 jne SHORT G_M9100_IG08 ;; bbWeight=1 PerfScore 1.25 G_M9100_IG07: mov ebp, 0x400 jmp SHORT G_M9100_IG09 ;; bbWeight=0.50 PerfScore 1.13 G_M9100_IG08: test ebp, ebp jle G_M9100_IG15 ;; bbWeight=0.50 PerfScore 0.63 G_M9100_IG09: lea rcx, bword ptr [rsi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+104] call gword ptr [rax+8]Encoding:GetDecoder():Decoder:this lea rcx, bword ptr [rsi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF cmp ebp, 128 jge SHORT G_M9100_IG11 ;; bbWeight=1 PerfScore 13.75 G_M9100_IG10: mov ebp, 128 ;; bbWeight=0.50 PerfScore 0.13 G_M9100_IG11: movsxd rdx, ebp mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+32] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rdi mov edx, ebp mov rax, qword ptr [rdi] mov rax, qword ptr [rax+104] call qword ptr [rax+32]Encoding:GetMaxCharCount(int):int:this mov dword ptr [rsi+72], eax mov edx, dword ptr [rsi+72] movsxd rdx, edx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+40] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov byte ptr [rsi+77], r14b lea rdx, bword ptr [rsp+20H] mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+64] call qword ptr [rax+48]Encoding:get_Preamble():ReadOnlySpan`1:this cmp dword ptr [rsp+28H], 0 setg cl mov byte ptr [rsi+78], cl cmp byte ptr [rsp+88H], 0 sete cl mov byte ptr [rsi+80], cl ;; bbWeight=1 PerfScore 31.75 G_M9100_IG12: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M9100_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1B988 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M9100_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x8995 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M9100_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1CE22 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA119 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 545, prolog size 17, PerfScore 131.25, (MethodHash=3877dc73) for method StreamReader:.ctor(Stream,Encoding,bool,int,bool):this ; ============================================================ ; Assembly listing for method ConsoleStream:get_CanRead():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M47125_IG01: ;; bbWeight=1 PerfScore 0.00 G_M47125_IG02: movzx rax, byte ptr [rcx+16] ;; bbWeight=1 PerfScore 2.00 G_M47125_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=8e1947ea) for method ConsoleStream:get_CanRead():bool:this ; ============================================================ ; Assembly listing for method ConsoleEncoding:GetDecoder():Decoder:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 rat0 [V02,T00] ( 3, 6 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 0 G_M14053_IG01: ;; bbWeight=1 PerfScore 0.00 G_M14053_IG02: mov rcx, gword ptr [rcx+40] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+104] mov rax, qword ptr [rax+8] ;; bbWeight=1 PerfScore 8.00 G_M14053_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 18, prolog size 0, PerfScore 11.80, (MethodHash=ad1cc91a) for method ConsoleEncoding:GetDecoder():Decoder:this ; ============================================================ ; Assembly listing for method OSEncoding:GetDecoder():Decoder:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 4 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T00] ( 15, 8.50) int -> rcx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 40 G_M55022_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M55022_IG02: mov ecx, dword ptr [rsi+32] cmp ecx, 0x2713 jg SHORT G_M55022_IG05 ;; bbWeight=1 PerfScore 3.25 G_M55022_IG03: cmp ecx, 936 jg SHORT G_M55022_IG04 cmp ecx, 932 je SHORT G_M55022_IG07 cmp ecx, 936 je SHORT G_M55022_IG07 jmp G_M55022_IG09 ;; bbWeight=0.50 PerfScore 2.88 G_M55022_IG04: lea eax, [rcx-949] cmp eax, 1 jbe SHORT G_M55022_IG07 cmp ecx, 0x551 je SHORT G_M55022_IG07 add ecx, -0x2711 cmp ecx, 2 jbe SHORT G_M55022_IG07 jmp SHORT G_M55022_IG09 ;; bbWeight=0.50 PerfScore 3.25 G_M55022_IG05: cmp ecx, 0x4F25 jg SHORT G_M55022_IG06 cmp ecx, 0x2718 je SHORT G_M55022_IG07 lea eax, [rcx-4E20H] cmp eax, 5 jbe SHORT G_M55022_IG07 cmp ecx, 0x4F25 je SHORT G_M55022_IG07 jmp SHORT G_M55022_IG09 ;; bbWeight=0.50 PerfScore 3.75 G_M55022_IG06: cmp ecx, 0x51C4 je SHORT G_M55022_IG07 cmp ecx, 0x51C8 je SHORT G_M55022_IG07 cmp ecx, 0xCAED jne SHORT G_M55022_IG09 ;; bbWeight=0.50 PerfScore 1.88 G_M55022_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov rdx, rsi call DecoderDBCS:.ctor(Encoding):this mov rax, rdi ;; bbWeight=0.50 PerfScore 1.63 G_M55022_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M55022_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 1.75 G_M55022_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 221, prolog size 6, PerfScore 45.23, (MethodHash=84592911) for method OSEncoding:GetDecoder():Decoder:this ; ============================================================ ; Assembly listing for method ConsoleEncoding:GetMaxCharCount(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 rat0 [V03,T00] ( 3, 6 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 0 G_M35626_IG01: ;; bbWeight=1 PerfScore 0.00 G_M35626_IG02: mov rcx, gword ptr [rcx+40] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+104] mov rax, qword ptr [rax+32] ;; bbWeight=1 PerfScore 8.00 G_M35626_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 18, prolog size 0, PerfScore 11.80, (MethodHash=0fe374d5) for method ConsoleEncoding:GetMaxCharCount(int):int:this ; ============================================================ ; Assembly listing for method OSEncoding:GetMaxCharCount(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 4, 4 ) int -> rdx ; V02 loc0 [V02,T01] ( 3, 3 ) long -> rax ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp3 [V06,T04] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp4 [V07,T05] ( 2, 0 ) ref -> rdi "argument with side effect" ; V08 tmp5 [V08,T06] ( 2, 0 ) ref -> r8 "argument with side effect" ; V09 tmp6 [V09,T07] ( 2, 0 ) ref -> rcx "argument with side effect" ; V10 tmp7 [V10,T08] ( 2, 0 ) ref -> rdi "argument with side effect" ; V11 tmp8 [V11,T09] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M43169_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M43169_IG02: test edx, edx jl SHORT G_M43169_IG05 ;; bbWeight=1 PerfScore 1.25 G_M43169_IG03: shl edx, 2 movsxd rax, edx cmp rax, 0xD1FFAB1E jg SHORT G_M43169_IG06 ;; bbWeight=1 PerfScore 3.50 G_M43169_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M43169_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC73 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 605 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M43169_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC73 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xAF5 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 218, prolog size 6, PerfScore 31.05, (MethodHash=fbd1575e) for method OSEncoding:GetMaxCharCount(int):int:this ; ============================================================ ; Assembly listing for method ConsoleEncoding:GetPreamble():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M51796_IG01: ;; bbWeight=1 PerfScore 0.00 G_M51796_IG02: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=1 PerfScore 2.25 G_M51796_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 14, prolog size 0, PerfScore 4.65, (MethodHash=ae2635ab) for method ConsoleEncoding:GetPreamble():ref:this ; ============================================================ ; Assembly listing for method SyncTextReader:GetSynchronizedTextReader(TextReader):SyncTextReader ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 5, 6.74) ref -> rax class-hnd "spilling QMark2" ; V03 tmp2 [V03,T02] ( 4, 3.50) ref -> rax ; V04 tmp3 [V04,T03] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 40 G_M24899_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M24899_IG02: mov rax, rsi test rax, rax je SHORT G_M24899_IG05 ;; bbWeight=1 PerfScore 1.50 G_M24899_IG03: mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx je SHORT G_M24899_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M24899_IG04: xor rax, rax ;; bbWeight=0.12 PerfScore 0.03 G_M24899_IG05: test rax, rax jne SHORT G_M24899_IG07 ;; bbWeight=1 PerfScore 1.25 G_M24899_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 1.75 G_M24899_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 79, prolog size 6, PerfScore 17.99, (MethodHash=56259ebc) for method SyncTextReader:GetSynchronizedTextReader(TextReader):SyncTextReader ; ============================================================ ; Assembly listing for method ConsoleHost:.ctor(TextWriter,TextReader):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rdi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04,T05] ( 0, 0 ) ref -> zero-ref ; V05 tmp2 [V05,T03] ( 3, 3 ) ref -> rdx ;* V06 tmp3 [V06,T06] ( 0, 0 ) ref -> zero-ref ; V07 tmp4 [V07,T04] ( 3, 3 ) ref -> rdx ; V08 tmp5 [V08,T07] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp6 [V09,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp7 [V10,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 tmp8 [V11,T10] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M32360_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov rdi, r8 ;; bbWeight=1 PerfScore 2.75 G_M32360_IG02: test rdx, rdx je SHORT G_M32360_IG06 ;; bbWeight=1 PerfScore 1.25 G_M32360_IG03: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, rdi test rdx, rdx je SHORT G_M32360_IG07 ;; bbWeight=1 PerfScore 3.00 G_M32360_IG04: lea rcx, bword ptr [rsi+16] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M32360_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M32360_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xEF2B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M32360_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xEF3F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 166, prolog size 6, PerfScore 27.60, (MethodHash=31ee8197) for method ConsoleHost:.ctor(TextWriter,TextReader):this ; ============================================================ ; Assembly listing for method ConsoleHost:SendSignal(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi ; V02 loc0 [V02,T05] ( 3, 2 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T06] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T03] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ; V06 tmp3 [V06,T04] ( 2, 4 ) ref -> rcx "argument with side effect" ; V07 tmp4 [V07,T07] ( 2, 0 ) ref -> rcx "argument with side effect" ; V08 tmp5 [V08,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; V09 rat0 [V09,T00] ( 6, 12 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 40 G_M44091_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 2.75 G_M44091_IG02: mov rcx, 0xD1FFAB1E mov edx, 954 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov edx, edi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]Dictionary`2:get_Item(int):__Canon:this mov rdx, rax mov rcx, gword ptr [rsi+8] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+104] call qword ptr [rax+48]TextWriter:WriteLine(String):this mov rcx, gword ptr [rsi+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+72] call gword ptr [rax+56]TextReader:ReadLine():String:this mov rsi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rsi call String:Equals(String,String):bool test eax, eax je SHORT G_M44091_IG04 ;; bbWeight=1 PerfScore 32.50 G_M44091_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M44091_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0xEF51 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax mov rdx, rsi call String:Concat(String,String):String mov rdx, rax mov rcx, rdi call NotSupportedException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 195, prolog size 6, PerfScore 57.00, (MethodHash=ee2053c4) for method ConsoleHost:SendSignal(int):this ; ============================================================ ; Assembly listing for method Signals:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd "impAppendStmt" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init class-hnd exact "NewObj constructor temp" ; V05 tmp5 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] must-init "argument with side effect" ; V06 tmp6 [V06 ] ( 1, 1 ) ref -> [rbp-0x30] must-init "argument with side effect" ; ; Lcl frame size = 80 G_M47563_IG01: push rbp sub rsp, 80 lea rbp, [rsp+50H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-30H], xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 5.08 G_M47563_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call Dictionary`2:.ctor():this mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-08H] mov edx, 1 mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:Add(int,__Canon):this mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-08H] mov edx, 2 mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:Add(int,__Canon):this mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-08H] mov edx, 3 mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:Add(int,__Canon):this mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-08H] mov edx, 4 mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:Add(int,__Canon):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-18H], rcx mov rcx, 0xD1FFAB1E mov edx, 0x471 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-28H], rdx mov rdx, gword ptr [rbp-28H] mov r8, 0xD1FFAB1E mov rcx, gword ptr [rbp-10H] call MulticastDelegate:CtorClosed(Object,long):this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-20H], rax ;; bbWeight=1 PerfScore 57.25 G_M47563_IG03: mov rcx, 0xD1FFAB1E mov edx, 0x471 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-30H], rdx mov rdx, gword ptr [rbp-30H] mov r8, 0xD1FFAB1E mov rcx, gword ptr [rbp-20H] call MulticastDelegate:CtorClosed(Object,long):this mov r9, gword ptr [rbp-20H] mov rdx, gword ptr [rbp-18H] mov r8, gword ptr [rbp-10H] mov rcx, 0xD1FFAB1E call Enumerable:ToDictionary(IEnumerable`1,Func`2,Func`2):Dictionary`2 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 14.00 G_M47563_IG04: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 447, prolog size 29, PerfScore 123.43, (MethodHash=fead4634) for method Signals:.cctor() ; ============================================================ ; Assembly listing for method Dictionary`2:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5395_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5395_IG02: xor edx, edx xor r8, r8 ;; bbWeight=1 PerfScore 0.50 G_M5395_IG03: jmp Dictionary`2:.ctor(int,IEqualityComparer`1):this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 10, prolog size 0, PerfScore 3.50, (MethodHash=8404eaec) for method Dictionary`2:.ctor():this ; ============================================================ ; Assembly listing for method Dictionary`2:.ctor(int,IEqualityComparer`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 5, 4.50) int -> rdx ; V02 arg2 [V02,T01] ( 5, 4 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M17833_IG01: push rdi push rsi sub rsp, 40 mov rdi, rcx mov rsi, r8 ;; bbWeight=1 PerfScore 2.75 G_M17833_IG02: test edx, edx jl SHORT G_M17833_IG09 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG03: test edx, edx jle SHORT G_M17833_IG05 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG04: mov rcx, rdi call Dictionary`2:Initialize(int):int:this ;; bbWeight=0.50 PerfScore 0.63 G_M17833_IG05: test rsi, rsi je SHORT G_M17833_IG07 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG06: mov rcx, 0xD1FFAB1E mov edx, 8 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rdx, 0xD1FFAB1E cmp rsi, gword ptr [rdx] je SHORT G_M17833_IG07 lea rcx, bword ptr [rdi+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 3.25 G_M17833_IG07: nop ;; bbWeight=1 PerfScore 0.25 G_M17833_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M17833_IG09: mov ecx, 22 call ThrowHelper:ThrowArgumentOutOfRangeException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 99, prolog size 6, PerfScore 22.78, (MethodHash=4fbeba56) for method Dictionary`2:.ctor(int,IEqualityComparer`1):this ; ============================================================ ; Assembly listing for method Dictionary`2:Add(int,__Canon):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdx ; V02 arg2 [V02,T01] ( 3, 3 ) ref -> r8 class-hnd ;* V03 loc0 [V03 ] ( 0, 0 ) bool -> zero-ref ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M65188_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M65188_IG02: mov r9d, 2 call Dictionary`2:TryInsert(int,__Canon,ubyte):bool:this nop ;; bbWeight=1 PerfScore 1.50 G_M65188_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 21, prolog size 4, PerfScore 5.10, (MethodHash=704d015b) for method Dictionary`2:Add(int,__Canon):this ; ============================================================ ; Assembly listing for method Dictionary`2:TryInsert(int,__Canon,ubyte):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 20, 13.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T08] ( 8, 7.50) int -> rdi ld-addr-op ; V02 arg2 [V02,T10] ( 5, 3.50) ref -> [rsp+0x90] class-hnd ; V03 arg3 [V03,T12] ( 4, 3 ) ubyte -> rbp ; V04 loc0 [V04,T03] ( 11, 17 ) ref -> r14 class-hnd ; V05 loc1 [V05,T11] ( 5, 5.50) ref -> r15 class-hnd ; V06 loc2 [V06,T07] ( 6, 11 ) int -> r12 ; V07 loc3 [V07,T01] ( 7, 25 ) int -> r13 ; V08 loc4 [V08,T15] ( 5, 3.50) byref -> [rsp+0x28] ; V09 loc5 [V09,T00] ( 9, 26 ) int -> [rsp+0x34] ; V10 loc6 [V10,T16] ( 6, 3 ) int -> r13 ; V11 loc7 [V11,T22] ( 5, 2.50) byref -> rcx ;* V12 loc8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V13 loc9 [V13,T29] ( 3, 1.50) int -> r13 ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15,T23] ( 3, 2 ) int -> r12 ; V16 tmp2 [V16,T24] ( 2, 2 ) byref -> rax "Inline return value spill temp" ; V17 tmp3 [V17,T18] ( 3, 3 ) ref -> rdx class-hnd "Inline stloc first use temp" ; V18 tmp4 [V18,T13] ( 2, 4 ) long -> r11 "Inlining Arg" ; V19 tmp5 [V19,T14] ( 2, 4 ) int -> r8 "Inlining Arg" ; V20 tmp6 [V20,T19] ( 3, 3 ) int -> r8 "Inline stloc first use temp" ; V21 tmp7 [V21,T09] ( 2, 8 ) int -> rcx "Inlining Arg" ;* V22 tmp8 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V23 tmp9 [V23,T35] ( 2, 1 ) byref -> rax "Inline return value spill temp" ; V24 tmp10 [V24,T28] ( 3, 1.50) ref -> rdx class-hnd "Inline stloc first use temp" ; V25 tmp11 [V25,T25] ( 2, 2 ) long -> r8 "Inlining Arg" ; V26 tmp12 [V26,T26] ( 2, 2 ) int -> rax "Inlining Arg" ; V27 tmp13 [V27,T30] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V28 tmp14 [V28,T20] ( 3, 3 ) int -> rdx "index expr" ; V29 tmp15 [V29,T27] ( 2, 2 ) int -> rdx "argument with side effect" ; V30 cse0 [V30,T05] ( 4, 14 ) byref -> rdx "CSE - aggressive" ; V31 cse1 [V31,T06] ( 4, 14 ) byref -> [rsp+0x20] "CSE - aggressive" ; V32 cse2 [V32,T31] ( 3, 1.50) int -> rcx "CSE - moderate" ; V33 cse3 [V33,T32] ( 3, 1.50) int -> rdx "CSE - moderate" ; V34 cse4 [V34,T33] ( 3, 1.50) int -> rcx "CSE - moderate" ; V35 cse5 [V35,T34] ( 3, 1.50) int -> rcx "CSE - moderate" ; V36 cse6 [V36,T02] ( 8, 22 ) int -> [rsp+0x30] "CSE - aggressive" ; V37 cse7 [V37,T21] ( 3, 3 ) int -> rcx "CSE - moderate" ; V38 cse8 [V38,T17] ( 6, 3 ) int -> registers "CSE - moderate" ; ; Lcl frame size = 56 G_M22634_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 mov gword ptr [rsp+90H], r8 mov rsi, rcx mov edi, edx mov ebp, r9d ;; bbWeight=1 PerfScore 10.00 G_M22634_IG02: cmp gword ptr [rsi+8], 0 jne SHORT G_M22634_IG04 ;; bbWeight=1 PerfScore 3.00 G_M22634_IG03: mov rcx, rsi xor edx, edx call Dictionary`2:Initialize(int):int:this ;; bbWeight=0.50 PerfScore 0.75 G_M22634_IG04: mov r14, gword ptr [rsi+16] mov r15, gword ptr [rsi+24] test r15, r15 je SHORT G_M22634_IG06 ;; bbWeight=1 PerfScore 5.25 G_M22634_IG05: mov rcx, r15 mov edx, edi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEqualityComparer`1:GetHashCode(int):int:this mov r12d, eax jmp SHORT G_M22634_IG07 ;; bbWeight=0.50 PerfScore 3.13 G_M22634_IG06: mov r12d, edi ;; bbWeight=0.50 PerfScore 0.13 G_M22634_IG07: xor r13d, r13d mov rdx, gword ptr [rsi+8] mov ecx, dword ptr [rdx+8] mov r8d, ecx mov r11, qword ptr [rsi+48] mov eax, r12d imul r11, rax shr r11, 32 inc r11 mov r8d, r8d imul r8, r11 shr r8, 32 cmp r8d, ecx jae G_M22634_IG31 movsxd rcx, r8d lea rax, bword ptr [rdx+4*rcx+16] mov bword ptr [rsp+28H], rax mov r9d, dword ptr [rax] dec r9d test r15, r15 jne G_M22634_IG15 mov rbx, gword ptr [rsp+90H] mov r10d, dword ptr [r14+8] mov r15d, r10d ;; bbWeight=1 PerfScore 25.50 G_M22634_IG08: cmp r15d, r9d mov dword ptr [rsp+30H], r15d jbe G_M22634_IG23 movsxd rdx, r9d lea rdx, [rdx+2*rdx] lea rdx, bword ptr [r14+8*rdx+16] cmp dword ptr [rdx+8], r12d jne SHORT G_M22634_IG10 ;; bbWeight=4 PerfScore 28.00 G_M22634_IG09: mov ecx, dword ptr [rdx+16] cmp ecx, edi je SHORT G_M22634_IG11 ;; bbWeight=2 PerfScore 6.50 G_M22634_IG10: mov r9d, dword ptr [rdx+12] inc r13d mov r10d, dword ptr [rsp+30H] cmp r10d, r13d jb G_M22634_IG30 mov r15d, r10d jmp SHORT G_M22634_IG08 ;; bbWeight=4 PerfScore 27.00 G_M22634_IG11: movzx rdx, bpl cmp edx, 1 jne SHORT G_M22634_IG12 movsxd rdx, r9d lea rdx, [rdx+2*rdx] lea rcx, bword ptr [r14+8*rdx+16] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF jmp G_M22634_IG27 ;; bbWeight=0.50 PerfScore 3.25 G_M22634_IG12: cmp edx, 2 je G_M22634_IG29 ;; bbWeight=0.50 PerfScore 0.63 G_M22634_IG13: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M22634_IG14: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M22634_IG15: mov r10d, dword ptr [r14+8] mov dword ptr [rsp+30H], r10d cmp r10d, r9d jbe G_M22634_IG20 mov dword ptr [rsp+34H], r9d movsxd rdx, r9d lea rdx, [rdx+2*rdx] lea r11, bword ptr [r14+8*rdx+16] cmp dword ptr [r11+8], r12d jne SHORT G_M22634_IG19 ;; bbWeight=4 PerfScore 40.00 G_M22634_IG16: mov bword ptr [rsp+20H], r11 mov edx, dword ptr [r11+16] mov rcx, r15 mov r8d, edi mov r11, 0xD1FFAB1E mov rbx, 0xD1FFAB1E call qword ptr [rbx]IEqualityComparer`1:Equals(int,int):bool:this test eax, eax mov r11, bword ptr [rsp+20H] je SHORT G_M22634_IG18 ;; bbWeight=2 PerfScore 18.50 G_M22634_IG17: movzx rbx, bpl cmp ebx, 1 jne SHORT G_M22634_IG21 mov edi, dword ptr [rsp+34H] movsxd rdx, edi lea rdx, [rdx+2*rdx] lea rcx, bword ptr [r14+8*rdx+16] mov rdx, gword ptr [rsp+90H] call CORINFO_HELP_ASSIGN_REF jmp G_M22634_IG27 ;; bbWeight=0.50 PerfScore 4.13 G_M22634_IG18: mov rbx, gword ptr [rsp+90H] jmp SHORT G_M22634_IG22 ;; bbWeight=1 PerfScore 3.00 G_M22634_IG19: mov rbx, gword ptr [rsp+90H] jmp SHORT G_M22634_IG22 ;; bbWeight=2 PerfScore 6.00 G_M22634_IG20: mov rbx, gword ptr [rsp+90H] jmp SHORT G_M22634_IG23 ;; bbWeight=2 PerfScore 6.00 G_M22634_IG21: cmp ebx, 2 je G_M22634_IG29 jmp G_M22634_IG13 ;; bbWeight=0.50 PerfScore 1.63 G_M22634_IG22: mov ecx, dword ptr [r11+12] mov edx, ecx inc r13d cmp dword ptr [rsp+30H], r13d jb G_M22634_IG30 mov gword ptr [rsp+90H], rbx mov r9d, edx jmp G_M22634_IG15 ;; bbWeight=4 PerfScore 31.00 G_M22634_IG23: mov ecx, dword ptr [rsi+64] test ecx, ecx jle SHORT G_M22634_IG24 mov edx, dword ptr [rsi+60] mov r13d, edx cmp edx, dword ptr [rsp+30H] jae G_M22634_IG31 movsxd r10, edx lea rdx, [r10+2*r10] mov edx, dword ptr [r14+8*rdx+28] neg edx add edx, -3 mov dword ptr [rsi+60], edx dec ecx mov dword ptr [rsi+64], ecx jmp SHORT G_M22634_IG26 ;; bbWeight=0.50 PerfScore 7.50 G_M22634_IG24: mov ecx, dword ptr [rsi+56] mov r13d, ecx cmp dword ptr [rsp+30H], r13d jne SHORT G_M22634_IG25 call HashHelpers:ExpandPrime(int):int mov edx, eax mov rcx, rsi xor r8d, r8d call Dictionary`2:Resize(int,bool):this mov rdx, gword ptr [rsi+8] mov ecx, dword ptr [rdx+8] mov eax, ecx mov r8, qword ptr [rsi+48] mov r9d, r12d imul r8, r9 shr r8, 32 inc r8 mov eax, eax imul rax, r8 shr rax, 32 cmp eax, ecx jae SHORT G_M22634_IG31 movsxd rcx, eax lea rax, bword ptr [rdx+4*rcx+16] mov rbp, rax mov bword ptr [rsp+28H], rbp ;; bbWeight=0.50 PerfScore 12.88 G_M22634_IG25: lea edx, [r13+1] mov dword ptr [rsi+56], edx mov r14, gword ptr [rsi+16] ;; bbWeight=0.50 PerfScore 1.75 G_M22634_IG26: cmp r13d, dword ptr [r14+8] jae SHORT G_M22634_IG31 movsxd rdx, r13d lea rdx, [rdx+2*rdx] lea rcx, bword ptr [r14+8*rdx+16] mov dword ptr [rcx+8], r12d mov rax, bword ptr [rsp+28H] mov edx, dword ptr [rax] dec edx mov dword ptr [rcx+12], edx mov dword ptr [rcx+16], edi mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF inc r13d mov rbp, bword ptr [rsp+28H] mov dword ptr [rbp], r13d inc dword ptr [rsi+68] ;; bbWeight=0.50 PerfScore 9.75 G_M22634_IG27: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M22634_IG28: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M22634_IG29: mov ecx, edi call ThrowHelper:ThrowAddingDuplicateWithKeyArgumentException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M22634_IG30: call ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() int3 ;; bbWeight=0 PerfScore 0.00 G_M22634_IG31: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 779, prolog size 32, PerfScore 338.65, (MethodHash=6c8aa795) for method Dictionary`2:TryInsert(int,__Canon,ubyte):bool:this ; ============================================================ ; Assembly listing for method Dictionary`2:Initialize(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdx ; V02 loc0 [V02,T01] ( 5, 5 ) int -> rdi ; V03 loc1 [V03,T06] ( 2, 2 ) ref -> rbx class-hnd exact ; V04 loc2 [V04,T07] ( 2, 2 ) ref -> rbp class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V07 tmp2 [V07,T04] ( 3, 3 ) long -> [rsp+0x28] "spilling Runtime Lookup tree" ; V08 cse0 [V08,T05] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 56 G_M48741_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 5.50 G_M48741_IG02: mov ecx, edx call HashHelpers:GetPrime(int):int mov edi, eax movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbx, rax mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M48741_IG04 ;; bbWeight=1 PerfScore 12.50 G_M48741_IG03: mov qword ptr [rsp+28H], rdx jmp SHORT G_M48741_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M48741_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+28H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M48741_IG05: movsxd rdx, edi mov rcx, qword ptr [rsp+28H] call CORINFO_HELP_NEWARR_1_VC mov rbp, rax mov dword ptr [rsi+60], -1 mov rax, -1 mov ecx, edi xor rdx, rdx div rdx:rax, rcx inc rax mov qword ptr [rsi+48], rax lea rcx, bword ptr [rsi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov eax, edi ;; bbWeight=1 PerfScore 70.25 G_M48741_IG06: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 174, prolog size 13, PerfScore 110.21, (MethodHash=ab44419a) for method Dictionary`2:Initialize(int):int:this ; ============================================================ ; Assembly listing for method HashHelpers:ExpandPrime(int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 3.50) int -> rcx ; V01 loc0 [V01,T01] ( 3, 2.50) int -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M27801_IG01: ;; bbWeight=1 PerfScore 0.00 G_M27801_IG02: lea edx, [rcx+rcx] cmp edx, 0xD1FFAB1E jbe SHORT G_M27801_IG05 ;; bbWeight=1 PerfScore 1.75 G_M27801_IG03: cmp ecx, 0xD1FFAB1E jge SHORT G_M27801_IG05 mov eax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.75 G_M27801_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M27801_IG05: mov ecx, edx ;; bbWeight=0.50 PerfScore 0.13 G_M27801_IG06: jmp HashHelpers:GetPrime(int):int ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 32, prolog size 0, PerfScore 7.33, (MethodHash=74c59366) for method HashHelpers:ExpandPrime(int):int ; ============================================================ ; Assembly listing for method Dictionary`2:Resize(int,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 10, 12 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T07] ( 5, 5 ) int -> rdi ;* V02 arg2 [V02 ] ( 0, 0 ) bool -> zero-ref ; V03 loc0 [V03,T03] ( 5, 8 ) ref -> rbx class-hnd exact ; V04 loc1 [V04,T08] ( 4, 7 ) int -> rbp ;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref ; V06 loc3 [V06,T00] ( 7, 23 ) int -> rdi ;* V07 loc4 [V07 ] ( 0, 0 ) byref -> zero-ref ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T14] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V10 tmp2 [V10,T15] ( 3, 3 ) long -> [rsp+0x28] "spilling Runtime Lookup tree" ;* V11 tmp3 [V11 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V12 tmp4 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V13 tmp5 [V13,T09] ( 3, 6 ) byref -> rcx "Inline return value spill temp" ; V14 tmp6 [V14,T10] ( 3, 6 ) ref -> r8 class-hnd "Inline stloc first use temp" ; V15 tmp7 [V15,T04] ( 2, 8 ) int -> rcx "Inlining Arg" ; V16 tmp8 [V16,T05] ( 2, 8 ) long -> r11 "Inlining Arg" ; V17 tmp9 [V17,T06] ( 2, 8 ) int -> r10 "Inlining Arg" ; V18 tmp10 [V18,T11] ( 3, 6 ) int -> rcx "Inline stloc first use temp" ; V19 cse0 [V19,T02] ( 4, 12 ) byref -> rdx "CSE - aggressive" ; V20 cse1 [V20,T16] ( 3, 2.25) long -> rdx "CSE - moderate" ; V21 cse2 [V21,T13] ( 2, 5 ) int -> rax "CSE - aggressive" ; V22 cse3 [V22,T12] ( 3, 6 ) int -> r9 "CSE - aggressive" ; ; Lcl frame size = 56 G_M42708_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 5.75 G_M42708_IG02: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M42708_IG04 ;; bbWeight=1 PerfScore 9.25 G_M42708_IG03: mov qword ptr [rsp+28H], rdx jmp SHORT G_M42708_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M42708_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+28H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M42708_IG05: movsxd rdx, edi mov rcx, qword ptr [rsp+28H] call CORINFO_HELP_NEWARR_1_VC mov rbx, rax mov ebp, dword ptr [rsi+56] mov rcx, gword ptr [rsi+16] mov rdx, rbx mov r8d, ebp call Array:Copy(Array,Array,int) movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rax, -1 mov ecx, edi xor rdx, rdx div rdx:rax, rcx inc rax mov qword ptr [rsi+48], rax xor edi, edi test ebp, ebp jle SHORT G_M42708_IG09 mov eax, dword ptr [rbx+8] ;; bbWeight=1 PerfScore 77.75 G_M42708_IG06: cmp edi, eax jae SHORT G_M42708_IG11 movsxd rdx, edi lea rdx, [rdx+2*rdx] lea rdx, bword ptr [rbx+8*rdx+16] cmp dword ptr [rdx+12], -1 jl SHORT G_M42708_IG08 ;; bbWeight=4 PerfScore 24.00 G_M42708_IG07: mov ecx, dword ptr [rdx+8] mov r8, gword ptr [rsi+8] mov r9d, dword ptr [r8+8] mov r10d, r9d mov r11, qword ptr [rsi+48] mov ecx, ecx imul rcx, r11 shr rcx, 32 inc rcx mov r10d, r10d imul rcx, r10 shr rcx, 32 cmp ecx, r9d jae SHORT G_M42708_IG11 movsxd rcx, ecx lea rcx, bword ptr [r8+4*rcx+16] mov r8d, dword ptr [rcx] dec r8d mov dword ptr [rdx+12], r8d lea edx, [rdi+1] mov dword ptr [rcx], edx ;; bbWeight=2 PerfScore 48.50 G_M42708_IG08: inc edi cmp edi, ebp jl SHORT G_M42708_IG06 ;; bbWeight=4 PerfScore 6.00 G_M42708_IG09: lea rcx, bword ptr [rsi+16] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 2.00 G_M42708_IG10: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M42708_IG11: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 287, prolog size 18, PerfScore 206.51, (MethodHash=e780592b) for method Dictionary`2:Resize(int,bool):this ; ============================================================ ; Assembly listing for method Array:Copy(Array,Array,int) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 6 ) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 8, 6 ) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 4, 3 ) int -> rbx ; V03 loc0 [V03,T03] ( 5, 3.50) long -> rcx ; V04 loc1 [V04,T04] ( 5, 2.50) long -> r8 ; V05 loc2 [V05,T05] ( 4, 2 ) byref -> rdx ; V06 loc3 [V06,T06] ( 4, 2 ) byref -> rdi ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T08] ( 2, 2 ) int -> rbp "impAppendStmt" ;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V10 tmp3 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V12 tmp5 [V12 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V14 tmp7 [V14,T09] ( 2, 2 ) int -> r9 "argument with side effect" ; V15 cse0 [V15,T07] ( 4, 2 ) long -> r8 "CSE - aggressive" ; ; Lcl frame size = 56 G_M37550_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 mov rsi, rcx mov rdi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 5.00 G_M37550_IG02: test rsi, rsi je G_M37550_IG13 ;; bbWeight=1 PerfScore 1.25 G_M37550_IG03: test rdi, rdi je G_M37550_IG14 ;; bbWeight=1 PerfScore 1.25 G_M37550_IG04: mov rcx, qword ptr [rsi] cmp rcx, qword ptr [rdi] jne SHORT G_M37550_IG11 ;; bbWeight=1 PerfScore 5.00 G_M37550_IG05: cmp dword ptr [rcx+4], 24 ja SHORT G_M37550_IG11 mov r8d, ebx mov edx, dword ptr [rsi+8] cmp r8, rdx ja SHORT G_M37550_IG11 mov edx, dword ptr [rdi+8] cmp r8, rdx ja SHORT G_M37550_IG11 movzx rdx, word ptr [rcx] imul r8, rdx lea rdx, bword ptr [rsi+16] add rdi, 16 test dword ptr [rcx], 0xD1FFAB1E je SHORT G_M37550_IG09 cmp r8, 0x4000 ja SHORT G_M37550_IG07 mov rcx, rdi ;; bbWeight=0.50 PerfScore 9.50 G_M37550_IG06: add rsp, 56 pop rbx pop rbp pop rsi pop rdi jmp Buffer:__BulkMoveWithWriteBarrier(byref,byref,long) ;; bbWeight=0.50 PerfScore 2.13 G_M37550_IG07: mov rcx, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M37550_IG08: add rsp, 56 pop rbx pop rbp pop rsi pop rdi jmp Buffer:_BulkMoveWithWriteBarrier(byref,byref,long) ;; bbWeight=0.50 PerfScore 2.13 G_M37550_IG09: mov rcx, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M37550_IG10: add rsp, 56 pop rbx pop rbp pop rsi pop rdi jmp Buffer:Memmove(byref,byref,long) ;; bbWeight=0.50 PerfScore 2.13 G_M37550_IG11: mov rcx, rsi xor edx, edx call Array:GetLowerBound(int):int:this mov ebp, eax mov rcx, rdi xor edx, edx call Array:GetLowerBound(int):int:this mov r9d, eax mov dword ptr [rsp+20H], ebx xor edx, edx mov dword ptr [rsp+28H], edx mov edx, ebp mov r8, rdi mov rcx, rsi call Array:Copy(Array,int,Array,int,int,bool) nop ;; bbWeight=0.50 PerfScore 3.88 G_M37550_IG12: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M37550_IG13: mov ecx, 64 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M37550_IG14: mov ecx, 66 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 228, prolog size 17, PerfScore 56.93, (MethodHash=48d66d51) for method Array:Copy(Array,Array,int) ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method Enumerable:ToDictionary(IEnumerable`1,Func`2,Func`2):Dictionary`2 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 arg1 [V02,T02] ( 3, 3 ) ref -> rdi class-hnd ; V03 arg2 [V03,T03] ( 3, 3 ) ref -> rbx class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V06 cse0 [V06,T05] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M64650_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx mov rdi, r8 mov rbx, r9 ;; bbWeight=1 PerfScore 5.00 G_M64650_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+32] test rdx, rdx je SHORT G_M64650_IG04 ;; bbWeight=1 PerfScore 5.25 G_M64650_IG03: jmp SHORT G_M64650_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M64650_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M64650_IG05: xor rcx, rcx mov gword ptr [rsp+20H], rcx mov rcx, rdx mov rdx, rsi mov r8, rdi mov r9, rbx call Enumerable:ToDictionary(IEnumerable`1,Func`2,Func`2,IEqualityComparer`1):Dictionary`2 nop ;; bbWeight=1 PerfScore 3.50 G_M64650_IG06: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 87, prolog size 12, PerfScore 26.08, (MethodHash=256d0375) for method Enumerable:ToDictionary(IEnumerable`1,Func`2,Func`2):Dictionary`2 ; ============================================================ ; Assembly listing for method Enumerable:ToDictionary(IEnumerable`1,Func`2,Func`2,IEqualityComparer`1):Dictionary`2 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T12] ( 14, 6.50) long -> rbx ; V01 arg0 [V01,T15] ( 5, 4.50) ref -> r14 class-hnd ; V02 arg1 [V02,T07] ( 6, 8 ) ref -> rsi class-hnd ; V03 arg2 [V03,T08] ( 6, 8 ) ref -> rdi class-hnd ; V04 arg3 [V04,T27] ( 4, 2 ) ref -> r15 class-hnd ; V05 loc0 [V05,T26] ( 4, 2.50) int -> r12 ; V06 loc1 [V06,T17] ( 5, 3.50) ref -> [rbp-0x70] class-hnd ; V07 loc2 [V07,T16] ( 3, 5 ) ref -> r15 class-hnd exact ; V08 loc3 [V08,T37] ( 3, 1.50) ref -> [rbp-0x78] class-hnd ; V09 loc4 [V09,T38] ( 3, 1.50) ref -> [rbp-0x80] class-hnd ; V10 loc5 [V10,T10] ( 7, 9.50) ref -> [rbp-0x88] EH do-not-enreg[] class-hnd EH-live ; V11 loc6 [V11 ] ( 5, 20 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V13 tmp1 [V13,T22] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ; V14 tmp2 [V14,T20] ( 3, 3 ) ref -> [rbp-0x90] class-hnd exact "NewObj constructor temp" ; V15 tmp3 [V15,T28] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V16 tmp4 [V16,T18] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V17 tmp5 [V17 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V18 tmp6 [V18,T04] ( 4, 20 ) long -> r11 "spilling Runtime Lookup tree" ;* V19 tmp7 [V19 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V20 tmp8 [V20,T05] ( 2, 16 ) ref -> r14 class-hnd "non-inline candidate call" ; V21 tmp9 [V21,T23] ( 3, 2.80) long -> rcx "impRuntimeLookup indirectOffset" ; V22 tmp10 [V22,T19] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V23 tmp11 [V23 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V24 tmp12 [V24,T24] ( 3, 2.80) long -> rcx "impRuntimeLookup indirectOffset" ; V25 tmp13 [V25,T29] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V26 tmp14 [V26,T34] ( 2, 1.80) long -> rcx "impRuntimeLookup indirectOffset" ; V27 tmp15 [V27,T30] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V28 tmp16 [V28,T35] ( 2, 1.80) long -> rcx "impRuntimeLookup indirectOffset" ; V29 tmp17 [V29,T31] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V30 tmp18 [V30,T36] ( 2, 1.80) long -> r13 "impRuntimeLookup indirectOffset" ; V31 tmp19 [V31,T32] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V32 tmp20 [V32,T21] ( 3, 3 ) ref -> r13 class-hnd exact "NewObj constructor temp" ; V33 tmp21 [V33,T33] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V34 tmp22 [V34,T06] ( 2, 16 ) int -> r8 "Inlining Arg" ;* V35 tmp23 [V35 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; V36 tmp24 [V36 ] ( 3, 12 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed V11.value(offs=0x00) P-DEP "field V11.value (fldOffset=0x0)" ; V37 tmp25 [V37 ] ( 3, 12 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed V11.key(offs=0x08) P-DEP "field V11.key (fldOffset=0x8)" ; V38 tmp26 [V38 ] ( 4, 32 ) struct (16) [rbp-0x60] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V39 tmp27 [V39,T00] ( 3, 24 ) byref -> rcx stack-byref "BlockOp address local" ;* V40 tmp28 [V40,T13] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V41 tmp29 [V41,T01] ( 3, 24 ) byref -> rcx stack-byref "BlockOp address local" ;* V42 tmp30 [V42,T14] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V43 PSPSym [V43 ] ( 1, 1 ) long -> [rbp-0x98] do-not-enreg[X] addr-exposed "PSPSym" ; V44 tmp32 [V44,T47] ( 2, 1 ) ref -> rax "optAddCopies" ; V45 cse0 [V45,T11] ( 3, 9 ) long -> r11 "CSE - aggressive" ; V46 cse1 [V46,T39] ( 3, 1.25) long -> rcx "CSE - moderate" ; V47 cse2 [V47,T40] ( 3, 1.25) long -> rcx "CSE - moderate" ; V48 cse3 [V48,T41] ( 3, 1.25) long -> r11 "CSE - moderate" ; V49 cse4 [V49,T09] ( 12, 10.25) long -> r13 "CSE - aggressive" ; V50 cse5 [V50,T25] ( 5, 2.50) long -> [rbp-0x68] "CSE - moderate" ; V51 cse6 [V51,T42] ( 3, 1.20) long -> r11 "CSE - conservative" ; V52 cse7 [V52,T43] ( 3, 1.20) long -> rcx "CSE - conservative" ; V53 cse8 [V53,T44] ( 3, 1.20) long -> rcx "CSE - conservative" ; V54 cse9 [V54,T45] ( 3, 1.20) long -> rcx "CSE - conservative" ; V55 cse10 [V55,T46] ( 3, 1.20) long -> rcx "CSE - conservative" ; V56 rat0 [V56,T02] ( 3, 24 ) ref -> rax "delegate invoke call" ; V57 rat1 [V57,T03] ( 3, 24 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 136 G_M11555_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-60H], xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 mov qword ptr [rbp-98H], rsp mov qword ptr [rbp-40H], rcx mov rbx, rcx mov r14, rdx mov rsi, r8 mov rdi, r9 mov r15, gword ptr [rbp+30H] ;; bbWeight=1 PerfScore 15.08 G_M11555_IG02: test r14, r14 je G_M11555_IG53 ;; bbWeight=1 PerfScore 1.25 G_M11555_IG03: test rsi, rsi je G_M11555_IG54 ;; bbWeight=1 PerfScore 1.25 G_M11555_IG04: test rdi, rdi je G_M11555_IG55 ;; bbWeight=1 PerfScore 1.25 G_M11555_IG05: xor r12d, r12d mov r13, qword ptr [rbx+16] cmp qword ptr [r13+32], 0 je SHORT G_M11555_IG07 ;; bbWeight=1 PerfScore 5.25 G_M11555_IG06: mov rcx, qword ptr [r13+32] jmp SHORT G_M11555_IG08 ;; bbWeight=0.25 PerfScore 1.00 G_M11555_IG07: mov rcx, rbx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M11555_IG08: mov rdx, r14 call CORINFO_HELP_ISINSTANCEOFINTERFACE mov gword ptr [rbp-70H], rax test rax, rax je G_M11555_IG39 ;; bbWeight=1 PerfScore 3.50 G_M11555_IG09: mov rax, gword ptr [rbp-70H] mov rcx, r13 cmp qword ptr [rcx+24], 64 jle SHORT G_M11555_IG12 ;; bbWeight=0.50 PerfScore 2.13 G_M11555_IG10: mov r11, qword ptr [rcx+64] test r11, r11 je SHORT G_M11555_IG11 jmp SHORT G_M11555_IG14 ;; bbWeight=0.40 PerfScore 2.10 G_M11555_IG11: mov gword ptr [rbp-70H], rax jmp SHORT G_M11555_IG13 ;; bbWeight=0.20 PerfScore 0.60 G_M11555_IG12: mov gword ptr [rbp-70H], rax jmp SHORT G_M11555_IG13 ;; bbWeight=0.25 PerfScore 0.75 G_M11555_IG13: mov rcx, rbx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax mov rax, gword ptr [rbp-70H] ;; bbWeight=0.10 PerfScore 0.28 G_M11555_IG14: mov gword ptr [rbp-70H], rax mov rcx, rax call qword ptr [r11] mov r12d, eax test r12d, r12d jne SHORT G_M11555_IG19 mov rcx, qword ptr [r13+40] test rcx, rcx je SHORT G_M11555_IG16 ;; bbWeight=0.50 PerfScore 4.50 G_M11555_IG15: jmp SHORT G_M11555_IG17 ;; bbWeight=0.25 PerfScore 0.50 G_M11555_IG16: mov rcx, rbx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M11555_IG17: call CORINFO_HELP_NEWSFAST mov r13, rax mov rcx, r13 mov r8, r15 xor edx, edx call Dictionary`2:.ctor(int,IEqualityComparer`1):this mov rax, r13 ;; bbWeight=0.50 PerfScore 1.63 G_M11555_IG18: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M11555_IG19: mov rcx, r13 mov rax, qword ptr [rcx+24] mov qword ptr [rbp-68H], rax cmp rax, 72 jle SHORT G_M11555_IG21 ;; bbWeight=0.50 PerfScore 2.25 G_M11555_IG20: mov rcx, qword ptr [rcx+72] test rcx, rcx je SHORT G_M11555_IG21 jmp SHORT G_M11555_IG22 ;; bbWeight=0.40 PerfScore 2.10 G_M11555_IG21: mov rcx, rbx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.10 PerfScore 0.18 G_M11555_IG22: mov rdx, gword ptr [rbp-70H] call CORINFO_HELP_ISINSTANCEOFARRAY mov gword ptr [rbp-78H], rax test rax, rax je SHORT G_M11555_IG29 mov rax, gword ptr [rbp-78H] cmp qword ptr [rbp-68H], 96 jle SHORT G_M11555_IG25 ;; bbWeight=0.50 PerfScore 3.63 G_M11555_IG23: mov rcx, qword ptr [r13+96] test rcx, rcx je SHORT G_M11555_IG24 jmp SHORT G_M11555_IG27 ;; bbWeight=0.40 PerfScore 2.10 G_M11555_IG24: mov gword ptr [rbp-78H], rax jmp SHORT G_M11555_IG26 ;; bbWeight=0.20 PerfScore 0.60 G_M11555_IG25: mov gword ptr [rbp-78H], rax jmp SHORT G_M11555_IG26 ;; bbWeight=0.25 PerfScore 0.75 G_M11555_IG26: mov rcx, rbx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax mov rax, gword ptr [rbp-78H] ;; bbWeight=0.10 PerfScore 0.28 G_M11555_IG27: mov gword ptr [rsp+20H], r15 mov rdx, rax mov r8, rsi mov r9, rdi call Enumerable:ToDictionary(ref,Func`2,Func`2,IEqualityComparer`1):Dictionary`2 nop ;; bbWeight=0.50 PerfScore 1.50 G_M11555_IG28: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M11555_IG29: mov rcx, r13 cmp qword ptr [rbp-68H], 80 jle SHORT G_M11555_IG31 ;; bbWeight=0.50 PerfScore 1.13 G_M11555_IG30: mov rcx, qword ptr [rcx+80] test rcx, rcx je SHORT G_M11555_IG31 jmp SHORT G_M11555_IG32 ;; bbWeight=0.40 PerfScore 2.10 G_M11555_IG31: mov rcx, rbx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.10 PerfScore 0.18 G_M11555_IG32: mov rdx, gword ptr [rbp-70H] call CORINFO_HELP_ISINSTANCEOFCLASS mov gword ptr [rbp-80H], rax test rax, rax je SHORT G_M11555_IG39 mov rax, gword ptr [rbp-80H] mov rcx, r13 cmp qword ptr [rbp-68H], 88 jle SHORT G_M11555_IG35 ;; bbWeight=0.50 PerfScore 3.75 G_M11555_IG33: mov rcx, qword ptr [rcx+88] test rcx, rcx je SHORT G_M11555_IG34 jmp SHORT G_M11555_IG37 ;; bbWeight=0.40 PerfScore 2.10 G_M11555_IG34: mov gword ptr [rbp-80H], rax jmp SHORT G_M11555_IG36 ;; bbWeight=0.20 PerfScore 0.60 G_M11555_IG35: mov gword ptr [rbp-80H], rax jmp SHORT G_M11555_IG36 ;; bbWeight=0.25 PerfScore 0.75 G_M11555_IG36: mov rcx, rbx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax mov rax, gword ptr [rbp-80H] ;; bbWeight=0.10 PerfScore 0.28 G_M11555_IG37: mov gword ptr [rsp+20H], r15 mov rdx, rax mov r8, rsi mov r9, rdi call Enumerable:ToDictionary(List`1,Func`2,Func`2,IEqualityComparer`1):Dictionary`2 nop ;; bbWeight=0.50 PerfScore 1.50 G_M11555_IG38: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M11555_IG39: mov rcx, qword ptr [r13+40] test rcx, rcx je SHORT G_M11555_IG41 ;; bbWeight=0.50 PerfScore 1.63 G_M11555_IG40: jmp SHORT G_M11555_IG42 ;; bbWeight=0.25 PerfScore 0.50 G_M11555_IG41: mov rcx, rbx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M11555_IG42: call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-90H], rax mov rcx, rax mov edx, r12d mov r8, r15 call Dictionary`2:.ctor(int,IEqualityComparer`1):this mov r15, gword ptr [rbp-90H] mov r11, qword ptr [r13+48] test r11, r11 je SHORT G_M11555_IG44 ;; bbWeight=0.50 PerfScore 4.00 G_M11555_IG43: jmp SHORT G_M11555_IG45 ;; bbWeight=0.25 PerfScore 0.50 G_M11555_IG44: mov rcx, rbx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=0.25 PerfScore 0.44 G_M11555_IG45: mov rcx, r14 call gword ptr [r11] mov gword ptr [rbp-88H], rax ;; bbWeight=0.50 PerfScore 2.13 G_M11555_IG46: mov rcx, gword ptr [rbp-88H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M11555_IG51 ;; bbWeight=0.50 PerfScore 2.88 G_M11555_IG47: mov r11, qword ptr [r13+56] test r11, r11 je SHORT G_M11555_IG49 ;; bbWeight=4 PerfScore 13.00 G_M11555_IG48: jmp SHORT G_M11555_IG50 ;; bbWeight=1 PerfScore 2.00 G_M11555_IG49: mov rcx, rbx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=1 PerfScore 1.75 G_M11555_IG50: lea rdx, bword ptr [rbp-50H] mov rcx, gword ptr [rbp-88H] call qword ptr [r11] lea rcx, bword ptr [rbp-60H] mov rdx, gword ptr [rbp-50H] mov gword ptr [rcx], rdx mov edx, dword ptr [rbp-48H] mov dword ptr [rcx+8], edx mov rax, rsi mov rcx, gword ptr [rax+8] lea rdx, bword ptr [rbp-60H] call gword ptr [rax+24]Func`2:Invoke(KeyValuePair`2):__Canon:this mov r14, rax lea rcx, bword ptr [rbp-60H] mov rdx, gword ptr [rbp-50H] mov gword ptr [rcx], rdx mov edx, dword ptr [rbp-48H] mov dword ptr [rcx+8], edx mov rax, rdi mov rcx, gword ptr [rax+8] lea rdx, bword ptr [rbp-60H] call qword ptr [rax+24]Func`2:Invoke(KeyValuePair`2):int:this mov r8d, eax mov rcx, r15 mov rdx, r14 mov r9d, 2 call Dictionary`2:TryInsert(__Canon,int,ubyte):bool:this mov rcx, gword ptr [rbp-88H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne G_M11555_IG47 ;; bbWeight=4 PerfScore 132.00 G_M11555_IG51: mov rcx, gword ptr [rbp-88H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this mov rax, r15 ;; bbWeight=0.50 PerfScore 2.38 G_M11555_IG52: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M11555_IG53: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M11555_IG54: mov ecx, 9 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M11555_IG55: mov ecx, 2 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M11555_IG56: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 56 mov rbp, qword ptr [rcx+40] mov qword ptr [rsp+28H], rbp lea rbp, [rbp+C0H] ;; bbWeight=0 PerfScore 0.00 G_M11555_IG57: cmp gword ptr [rbp-88H], 0 je SHORT G_M11555_IG58 mov rcx, gword ptr [rbp-88H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M11555_IG58: nop ;; bbWeight=0 PerfScore 0.00 G_M11555_IG59: add rsp, 56 pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1118, prolog size 68, PerfScore 354.41, (MethodHash=ff3cd2dc) for method Enumerable:ToDictionary(IEnumerable`1,Func`2,Func`2,IEqualityComparer`1):Dictionary`2 ; ============================================================ ; Assembly listing for method CastHelpers:IsInstanceOfInterface(long,Object):Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 7, 18.50) long -> rcx ; V01 arg1 [V01,T08] ( 7, 5 ) ref -> rdx class-hnd ; V02 loc0 [V02,T09] ( 4, 2 ) long -> rax ; V03 loc1 [V03,T00] ( 14, 49 ) long -> r8 ; V04 loc2 [V04,T03] ( 5, 16.50) long -> r9 ; V05 loc3 [V05,T01] ( 7, 24.50) long -> r10 ;# V06 OutArgs [V06 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T04] ( 2, 16 ) long -> r8 "dup spill" ; V08 tmp2 [V08,T05] ( 2, 16 ) long -> r8 "dup spill" ; V09 tmp3 [V09,T06] ( 2, 16 ) long -> r8 "dup spill" ; V10 tmp4 [V10,T07] ( 2, 16 ) long -> r8 "dup spill" ; ; Lcl frame size = 0 G_M40402_IG01: ;; bbWeight=1 PerfScore 0.00 G_M40402_IG02: test rdx, rdx je SHORT G_M40402_IG06 ;; bbWeight=1 PerfScore 1.25 G_M40402_IG03: mov rax, qword ptr [rdx] movzx r8, word ptr [rax+14] test r8, r8 je SHORT G_M40402_IG05 mov r9, qword ptr [rax+56] xor r10, r10 ;; bbWeight=0.50 PerfScore 3.75 G_M40402_IG04: cmp qword ptr [r9+8*r10], rcx je SHORT G_M40402_IG06 dec r8 je SHORT G_M40402_IG05 cmp qword ptr [r9+8*r10+8], rcx je SHORT G_M40402_IG06 dec r8 je SHORT G_M40402_IG05 cmp qword ptr [r9+8*r10+16], rcx je SHORT G_M40402_IG06 dec r8 je SHORT G_M40402_IG05 cmp qword ptr [r9+8*r10+24], rcx je SHORT G_M40402_IG06 dec r8 je SHORT G_M40402_IG05 add r10, 4 jmp SHORT G_M40402_IG04 ;; bbWeight=4 PerfScore 77.00 G_M40402_IG05: test dword ptr [rax], 0xD1FFAB1E jne SHORT G_M40402_IG08 xor rdx, rdx ;; bbWeight=0.50 PerfScore 1.63 G_M40402_IG06: mov rax, rdx ;; bbWeight=0.50 PerfScore 0.13 G_M40402_IG07: ret ;; bbWeight=0.50 PerfScore 0.50 G_M40402_IG08: jmp CastHelpers:IsInstance_Helper(long,Object):Object ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 97, prolog size 0, PerfScore 94.95, (MethodHash=987d622d) for method CastHelpers:IsInstanceOfInterface(long,Object):Object ; ============================================================ ; Assembly listing for method Dictionary`2:get_Count():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M29204_IG01: ;; bbWeight=1 PerfScore 0.00 G_M29204_IG02: mov eax, dword ptr [rcx+56] sub eax, dword ptr [rcx+64] ;; bbWeight=1 PerfScore 4.00 G_M29204_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 7, prolog size 0, PerfScore 5.70, (MethodHash=69c88deb) for method Dictionary`2:get_Count():int:this ; ============================================================ ; Assembly listing for method CastHelpers:IsInstanceOfAny(long,Object):Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 6, 4.50) long -> r8 ; V01 arg1 [V01,T03] ( 7, 5 ) ref -> rdx class-hnd ; V02 loc0 [V02,T12] ( 3, 1.50) long -> rax ; V03 loc1 [V03,T13] ( 3, 1.50) int -> rax ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T06] ( 3, 6 ) long -> rax "impAppendStmt" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V07 tmp3 [V07,T11] ( 2, 2 ) long -> r9 "NewObj constructor temp" ; V08 tmp4 [V08,T14] ( 3, 1.50) int -> rax "Inline return value spill temp" ; V09 tmp5 [V09,T07] ( 4, 5 ) byref -> r10 "Inline stloc first use temp" ; V10 tmp6 [V10,T05] ( 4, 6.50) int -> rcx "Inline stloc first use temp" ; V11 tmp7 [V11,T00] ( 5, 8.50) int -> r9 "Inline stloc first use temp" ; V12 tmp8 [V12,T02] ( 5, 7.25) byref -> r11 "Inline stloc first use temp" ; V13 tmp9 [V13,T01] ( 5, 8.25) int -> rsi "Inline stloc first use temp" ; V14 tmp10 [V14,T09] ( 2, 4 ) long -> rdi "Inline stloc first use temp" ; V15 tmp11 [V15,T08] ( 5, 4.50) long -> rdi "Inline stloc first use temp" ; V16 tmp12 [V16,T10] ( 2, 2 ) ref -> r10 class-hnd "Inlining Arg" ; V17 tmp13 [V17,T15] ( 2, 1 ) int -> rcx "Inline stloc first use temp" ; V18 tmp14 [V18,T16] ( 2, 1 ) long -> r9 "Inline stloc first use temp" ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V21 tmp17 [V21 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; ; Lcl frame size = 40 G_M57921_IG01: push rdi push rsi sub rsp, 40 mov r8, rcx ;; bbWeight=1 PerfScore 2.50 G_M57921_IG02: test rdx, rdx je G_M57921_IG12 ;; bbWeight=1 PerfScore 1.25 G_M57921_IG03: mov rax, qword ptr [rdx] cmp rax, r8 je G_M57921_IG12 mov r9, r8 mov rcx, 0xD1FFAB1E mov r10, gword ptr [rcx] add r10, 16 mov ecx, dword ptr [r10] mov r11, rax rol r11, 32 xor r9, r11 mov r11, 0xD1FFAB1E imul r9, r11 shr r9, cl mov ecx, r9d xor r9d, r9d ;; bbWeight=0.50 PerfScore 7.63 G_M57921_IG04: lea r11d, [rcx+1] movsxd r11, r11d lea r11, [r11+2*r11] lea r11, bword ptr [r10+8*r11] mov esi, dword ptr [r11] mov rdi, qword ptr [r11+8] and esi, -2 cmp rdi, rax jne SHORT G_M57921_IG06 ;; bbWeight=2 PerfScore 14.50 G_M57921_IG05: mov rdi, qword ptr [r11+16] xor rdi, r8 cmp rdi, 1 jbe SHORT G_M57921_IG08 ;; bbWeight=1 PerfScore 3.50 G_M57921_IG06: test esi, esi je SHORT G_M57921_IG10 inc r9d add ecx, r9d and ecx, dword ptr [r10+4] cmp r9d, 8 jl SHORT G_M57921_IG04 ;; bbWeight=2 PerfScore 10.00 G_M57921_IG07: jmp SHORT G_M57921_IG10 ;; bbWeight=0.25 PerfScore 0.50 G_M57921_IG08: cmp esi, dword ptr [r11] jne SHORT G_M57921_IG10 ;; bbWeight=0.25 PerfScore 0.75 G_M57921_IG09: mov rax, rdi shr rax, 32 jne SHORT G_M57921_IG16 mov eax, edi jmp SHORT G_M57921_IG11 ;; bbWeight=0.50 PerfScore 2.75 G_M57921_IG10: mov eax, 2 ;; bbWeight=0.50 PerfScore 0.13 G_M57921_IG11: cmp eax, 1 je SHORT G_M57921_IG12 test eax, eax jne SHORT G_M57921_IG14 xor rdx, rdx ;; bbWeight=0.50 PerfScore 1.38 G_M57921_IG12: mov rax, rdx ;; bbWeight=0.50 PerfScore 0.13 G_M57921_IG13: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M57921_IG14: mov rcx, r8 call CastHelpers:IsInstanceOfAny_NoCacheLookup(long,Object):Object nop ;; bbWeight=0.50 PerfScore 0.75 G_M57921_IG15: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M57921_IG16: call CORINFO_HELP_OVERFLOW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 217, prolog size 9, PerfScore 69.70, (MethodHash=2b091dbe) for method CastHelpers:IsInstanceOfAny(long,Object):Object ; ============================================================ ; Assembly listing for method CastHelpers:IsInstanceOfClass(long,Object):Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 8, 19 ) long -> rcx ; V01 arg1 [V01,T02] ( 8, 5.50) ref -> rdx class-hnd ; V02 loc0 [V02,T00] ( 17, 64.50) long -> rax ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 2 ) byref -> r8 "Inlining Arg" ; V05 cse0 [V05,T03] ( 4, 2 ) long -> r8 "CSE - aggressive" ; ; Lcl frame size = 0 G_M33593_IG01: ;; bbWeight=1 PerfScore 0.00 G_M33593_IG02: test rdx, rdx je SHORT G_M33593_IG04 ;; bbWeight=1 PerfScore 1.25 G_M33593_IG03: mov r8, qword ptr [rdx] cmp r8, rcx jne SHORT G_M33593_IG06 ;; bbWeight=0.50 PerfScore 1.63 G_M33593_IG04: mov rax, rdx ;; bbWeight=0.50 PerfScore 0.13 G_M33593_IG05: ret ;; bbWeight=0.50 PerfScore 0.50 G_M33593_IG06: mov rax, qword ptr [r8+16] ;; bbWeight=0.50 PerfScore 1.00 G_M33593_IG07: cmp rax, rcx je SHORT G_M33593_IG09 test rax, rax je SHORT G_M33593_IG08 mov rax, qword ptr [rax+16] cmp rax, rcx je SHORT G_M33593_IG09 test rax, rax je SHORT G_M33593_IG08 mov rax, qword ptr [rax+16] cmp rax, rcx je SHORT G_M33593_IG09 test rax, rax je SHORT G_M33593_IG08 mov rax, qword ptr [rax+16] cmp rax, rcx je SHORT G_M33593_IG09 test rax, rax je SHORT G_M33593_IG08 mov rax, qword ptr [rax+16] jmp SHORT G_M33593_IG07 ;; bbWeight=4 PerfScore 80.00 G_M33593_IG08: test dword ptr [r8], 0x4000 jne SHORT G_M33593_IG11 xor rdx, rdx ;; bbWeight=0.50 PerfScore 1.63 G_M33593_IG09: mov rax, rdx ;; bbWeight=0.50 PerfScore 0.13 G_M33593_IG10: ret ;; bbWeight=0.50 PerfScore 0.50 G_M33593_IG11: jmp CastHelpers:IsInstance_Helper(long,Object):Object ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 99, prolog size 0, PerfScore 97.65, (MethodHash=73b07cc6) for method CastHelpers:IsInstanceOfClass(long,Object):Object ; ============================================================ ; Assembly listing for method Dictionary`2:.ctor(int,IEqualityComparer`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 9, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 5, 4.50) int -> rdx ; V02 arg2 [V02,T02] ( 5, 4 ) ref -> rdi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T08] ( 2, 1.50) long -> rcx "impRuntimeLookup slot" ; V05 tmp2 [V05,T07] ( 2, 2 ) ref -> rdi class-hnd exact "impAppendStmt" ; V06 tmp3 [V06,T05] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V07 tmp4 [V07,T04] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V08 tmp5 [V08,T06] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V09 cse0 [V09,T09] ( 3, 1.25) long -> rdx "CSE - moderate" ; V10 cse1 [V10,T10] ( 3, 1.25) long -> rdx "CSE - moderate" ; V11 cse2 [V11,T03] ( 5, 3.50) long -> rbx "CSE - aggressive" ; ; Lcl frame size = 48 G_M17833_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx mov rdi, r8 ;; bbWeight=1 PerfScore 4.75 G_M17833_IG02: test edx, edx jl G_M17833_IG17 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG03: test edx, edx jle SHORT G_M17833_IG05 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG04: mov rcx, rsi call Dictionary`2:Initialize(int):int:this ;; bbWeight=0.50 PerfScore 0.63 G_M17833_IG05: test rdi, rdi je SHORT G_M17833_IG10 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG06: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rbx, qword ptr [rdx] mov rdx, qword ptr [rbx+32] test rdx, rdx je SHORT G_M17833_IG08 ;; bbWeight=0.50 PerfScore 4.63 G_M17833_IG07: jmp SHORT G_M17833_IG09 ;; bbWeight=0.25 PerfScore 0.50 G_M17833_IG08: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M17833_IG09: mov rcx, rdx call EqualityComparer`1:get_Default():EqualityComparer`1 cmp rax, rdi je SHORT G_M17833_IG10 lea rcx, bword ptr [rsi+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 2.13 G_M17833_IG10: mov rcx, qword ptr [rsi] mov rcx, qword ptr [rcx+48] mov rbx, qword ptr [rcx] mov rcx, 0xD1FFAB1E cmp qword ptr [rbx], rcx jne SHORT G_M17833_IG15 ;; bbWeight=1 PerfScore 9.25 G_M17833_IG11: cmp gword ptr [rsi+24], 0 jne SHORT G_M17833_IG15 mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rbx+24] test rdx, rdx je SHORT G_M17833_IG13 ;; bbWeight=0.50 PerfScore 5.25 G_M17833_IG12: jmp SHORT G_M17833_IG14 ;; bbWeight=0.25 PerfScore 0.50 G_M17833_IG13: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M17833_IG14: mov rcx, rdx mov rdx, rdi call CORINFO_HELP_CHKCASTANY lea rcx, bword ptr [rsi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 1.63 G_M17833_IG15: nop ;; bbWeight=1 PerfScore 0.25 G_M17833_IG16: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M17833_IG17: mov ecx, 22 call ThrowHelper:ThrowArgumentOutOfRangeException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 227, prolog size 12, PerfScore 59.45, (MethodHash=4fbeba56) for method Dictionary`2:.ctor(int,IEqualityComparer`1):this ; ============================================================ ; Assembly listing for method Dictionary`2:Initialize(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdx ; V02 loc0 [V02,T01] ( 5, 5 ) int -> rdi ; V03 loc1 [V03,T06] ( 2, 2 ) ref -> rbx class-hnd exact ; V04 loc2 [V04,T07] ( 2, 2 ) ref -> rbp class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V07 tmp2 [V07,T04] ( 3, 3 ) long -> [rsp+0x28] "spilling Runtime Lookup tree" ; V08 cse0 [V08,T05] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 56 G_M48741_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 5.50 G_M48741_IG02: mov ecx, edx call HashHelpers:GetPrime(int):int mov edi, eax movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbx, rax mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+40] test rdx, rdx je SHORT G_M48741_IG04 ;; bbWeight=1 PerfScore 12.50 G_M48741_IG03: mov qword ptr [rsp+28H], rdx jmp SHORT G_M48741_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M48741_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+28H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M48741_IG05: movsxd rdx, edi mov rcx, qword ptr [rsp+28H] call CORINFO_HELP_NEWARR_1_VC mov rbp, rax mov dword ptr [rsi+60], -1 mov rax, -1 mov ecx, edi xor rdx, rdx div rdx:rax, rcx inc rax mov qword ptr [rsi+48], rax lea rcx, bword ptr [rsi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov eax, edi ;; bbWeight=1 PerfScore 70.25 G_M48741_IG06: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 174, prolog size 13, PerfScore 110.21, (MethodHash=ab44419a) for method Dictionary`2:Initialize(int):int:this ; ============================================================ ; Assembly listing for method Dictionary`2:System.Collections.Generic.IEnumerable>.GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 5 ) ref -> rbx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 6, 12 ) struct (40) [rsp+0x28] do-not-enreg[SFB] must-init "NewObj constructor temp" ; V03 tmp2 [V03,T03] ( 2, 4 ) long -> rdx "impRuntimeLookup slot" ;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V05 tmp4 [V05,T02] ( 3, 6 ) ref -> rbp class-hnd exact "Single-def Box Helper" ; V06 tmp5 [V06,T07] ( 2, 2.50) long -> rcx "impRuntimeLookup slot" ; V07 tmp6 [V07,T05] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V08 cse0 [V08,T04] ( 3, 2.25) long -> rdx "CSE - aggressive" ; V09 cse1 [V09,T06] ( 3, 3 ) long -> rcx "CSE - aggressive" ; ; Lcl frame size = 88 G_M59244_IG01: push rdi push rsi push rbp push rbx sub rsp, 88 vzeroupper xor rax, rax mov qword ptr [rsp+28H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 mov qword ptr [rsp+50H], rcx mov rbx, rcx ;; bbWeight=1 PerfScore 10.08 G_M59244_IG02: mov rcx, qword ptr [rbx] mov rdx, rcx mov rdx, qword ptr [rdx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+32] mov gword ptr [rsp+28H], rbx mov eax, dword ptr [rbx+68] mov dword ptr [rsp+30H], eax xor eax, eax mov dword ptr [rsp+34H], eax mov dword ptr [rsp+38H], 2 vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+40H], xmm0 test rdx, rdx je SHORT G_M59244_IG04 ;; bbWeight=1 PerfScore 17.08 G_M59244_IG03: jmp SHORT G_M59244_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M59244_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M59244_IG05: mov rcx, rdx call CORINFO_HELP_NEWSFAST mov rbp, rax lea rdi, bword ptr [rbp+8] lea rsi, bword ptr [rsp+28H] call CORINFO_HELP_ASSIGN_BYREF movsq movsq call CORINFO_HELP_ASSIGN_BYREF movsq mov rax, rbp ;; bbWeight=1 PerfScore 7.75 G_M59244_IG06: add rsp, 88 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 168, prolog size 39, PerfScore 56.34, (MethodHash=34a91893) for method Dictionary`2:System.Collections.Generic.IEnumerable>.GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method Enumerator:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 25.50) byref -> rcx this ; V01 TypeCtx [V01,T06] ( 4, 3.50) long -> rdx ; V02 loc0 [V02,T05] ( 4, 9 ) byref -> rax ; V03 loc1 [V03,T04] ( 4, 16 ) int -> rax ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T01] ( 3, 24 ) ref -> r8 class-hnd "impAppendStmt" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V07 tmp3 [V07,T09] ( 2, 2 ) int -> rsi "bubbling QMark1" ; V08 tmp4 [V08,T08] ( 2, 2 ) ref -> r9 class-hnd "bubbling QMark1" ;* V09 tmp5 [V09 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V10 tmp6 [V10,T10] ( 2, 1 ) ref -> rdx V06.value(offs=0x00) P-INDEP "field V06.value (fldOffset=0x0)" ; V11 tmp7 [V11,T11] ( 2, 1 ) int -> rsi V06.key(offs=0x08) P-INDEP "field V06.key (fldOffset=0x8)" ; V12 tmp8 [V12,T07] ( 3, 3 ) byref -> rdi "BlockOp address local" ; V13 cse0 [V13,T03] ( 3, 20 ) int -> rax "CSE - aggressive" ; V14 cse1 [V14,T02] ( 4, 20.50) ref -> r8 "CSE - aggressive" ; ; Lcl frame size = 40 G_M65171_IG01: push rdi push rsi sub rsp, 40 vzeroupper mov qword ptr [rsp+20H], rdx ;; bbWeight=1 PerfScore 4.25 G_M65171_IG02: mov eax, dword ptr [rcx+8] mov r8, gword ptr [rcx] cmp eax, dword ptr [r8+68] jne G_M65171_IG11 ;; bbWeight=1 PerfScore 7.00 G_M65171_IG03: mov eax, dword ptr [rcx+12] mov r8, gword ptr [rcx] cmp eax, dword ptr [r8+56] jae SHORT G_M65171_IG07 ;; bbWeight=8 PerfScore 56.00 G_M65171_IG04: mov r8, gword ptr [r8+16] lea r9d, [rax+1] mov dword ptr [rcx+12], r9d cmp eax, dword ptr [r8+8] jae SHORT G_M65171_IG12 movsxd rax, eax lea rax, [rax+2*rax] lea rax, bword ptr [r8+8*rax+16] cmp dword ptr [rax+12], -1 jl SHORT G_M65171_IG03 ;; bbWeight=4 PerfScore 45.00 G_M65171_IG05: mov esi, dword ptr [rax+16] mov r9, gword ptr [rax] mov rax, qword ptr [rdx+48] mov rax, qword ptr [rax] cmp qword ptr [rax+24], 0 je SHORT G_M65171_IG09 ;; bbWeight=0.50 PerfScore 5.50 G_M65171_IG06: jmp SHORT G_M65171_IG09 ;; bbWeight=0.25 PerfScore 0.50 G_M65171_IG07: mov eax, dword ptr [r8+56] inc eax mov dword ptr [rcx+12], eax vxorps xmm0, xmm0 vmovdqu xmmword ptr [rcx+24], xmm0 xor eax, eax ;; bbWeight=0.50 PerfScore 2.42 G_M65171_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M65171_IG09: mov rdx, r9 lea rdi, bword ptr [rcx+24] mov rcx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov dword ptr [rdi+8], esi mov eax, 1 ;; bbWeight=0.50 PerfScore 1.63 G_M65171_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M65171_IG11: call ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() int3 ;; bbWeight=0 PerfScore 0.00 G_M65171_IG12: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 169, prolog size 14, PerfScore 141.64, (MethodHash=94cf016c) for method Enumerator:MoveNext():bool:this ; ============================================================ ; Assembly listing for method Enumerator:get_Current():KeyValuePair`2:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) byref -> rcx this ; V01 RetBuf [V01,T00] ( 4, 4 ) byref -> rbx ;* V02 TypeCtx [V02 ] ( 0, 0 ) long -> zero-ref ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M41071_IG01: push rdi push rsi push rbx mov rbx, rdx ;; bbWeight=1 PerfScore 3.25 G_M41071_IG02: lea rsi, bword ptr [rcx+24] mov rdi, rbx call CORINFO_HELP_ASSIGN_BYREF movsq mov rax, rbx ;; bbWeight=1 PerfScore 3.00 G_M41071_IG03: pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.50 ; Total bytes of code 27, prolog size 3, PerfScore 11.45, (MethodHash=b0215f90) for method Enumerator:get_Current():KeyValuePair`2:this ; ============================================================ ; Assembly listing for method <>c:<.cctor>b__5_0(KeyValuePair`2):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 6 ) byref -> rdx ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref V05.value(offs=0x00) P-INDEP "field V01.value (fldOffset=0x0)" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref V05.key(offs=0x08) P-INDEP "field V01.key (fldOffset=0x8)" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; ; Lcl frame size = 0 G_M53194_IG01: ;; bbWeight=1 PerfScore 0.00 G_M53194_IG02: mov rax, gword ptr [rdx] ;; bbWeight=1 PerfScore 2.00 G_M53194_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 3.40, (MethodHash=8cb83035) for method <>c:<.cctor>b__5_0(KeyValuePair`2):String:this ; ============================================================ ; Assembly listing for method <>c:<.cctor>b__5_1(KeyValuePair`2):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 6 ) byref -> rdx ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref V05.value(offs=0x00) P-INDEP "field V01.value (fldOffset=0x0)" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref V05.key(offs=0x08) P-INDEP "field V01.key (fldOffset=0x8)" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; ; Lcl frame size = 0 G_M32781_IG01: ;; bbWeight=1 PerfScore 0.00 G_M32781_IG02: mov eax, dword ptr [rdx+8] ;; bbWeight=1 PerfScore 2.00 G_M32781_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 3.40, (MethodHash=2a667ff2) for method <>c:<.cctor>b__5_1(KeyValuePair`2):int:this ; ============================================================ ; Assembly listing for method Dictionary`2:TryInsert(__Canon,int,ubyte):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 27, 17.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T08] ( 11, 9 ) ref -> rdi ld-addr-op class-hnd ; V02 arg2 [V02,T16] ( 5, 3.50) int -> rbp ; V03 arg3 [V03,T15] ( 6, 4 ) ubyte -> rbx ; V04 loc0 [V04,T03] ( 12, 23.50) ref -> r14 class-hnd ; V05 loc1 [V05,T14] ( 6, 6 ) ref -> r15 class-hnd ; V06 loc2 [V06,T09] ( 6, 11 ) int -> r12 ; V07 loc3 [V07,T00] ( 8, 25.50) int -> r13 ; V08 loc4 [V08,T23] ( 5, 3.50) byref -> [rsp+0x50] ; V09 loc5 [V09,T02] ( 7, 25 ) int -> [rsp+0x5C] ; V10 loc6 [V10,T24] ( 6, 3 ) int -> rbx ; V11 loc7 [V11,T28] ( 5, 2.50) byref -> [rsp+0x48] ; V12 loc8 [V12,T18] ( 3, 4.50) ref -> [rsp+0x40] class-hnd ; V13 loc9 [V13,T38] ( 3, 1.50) int -> rbx ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15,T31] ( 3, 2 ) int -> r12 ; V16 tmp2 [V16,T22] ( 4, 3.50) ref -> r15 class-hnd "spilling QMark2" ; V17 tmp3 [V17,T10] ( 3, 10 ) long -> rcx "impRuntimeLookup slot" ; V18 tmp4 [V18,T13] ( 2, 8 ) ref -> [rsp+0x38] class-hnd "impAppendStmt" ;* V19 tmp5 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V20 tmp6 [V20,T07] ( 4, 12 ) long -> r11 "spilling Runtime Lookup tree" ;* V21 tmp7 [V21 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V22 tmp8 [V22,T47] ( 4, 0 ) long -> rcx "impRuntimeLookup slot" ;* V23 tmp9 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V24 tmp10 [V24,T49] ( 3, 0 ) long -> rcx "spilling Runtime Lookup tree" ; V25 tmp11 [V25,T29] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V26 tmp12 [V26,T32] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V27 tmp13 [V27,T48] ( 4, 0 ) long -> rcx "impRuntimeLookup slot" ;* V28 tmp14 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V29 tmp15 [V29,T50] ( 3, 0 ) long -> rcx "spilling Runtime Lookup tree" ; V30 tmp16 [V30,T30] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ;* V31 tmp17 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V32 tmp18 [V32,T25] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V33 tmp19 [V33 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V34 tmp20 [V34,T33] ( 2, 2 ) byref -> rax "Inline return value spill temp" ; V35 tmp21 [V35,T19] ( 4, 4 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V36 tmp22 [V36,T20] ( 2, 4 ) long -> rax "Inlining Arg" ; V37 tmp23 [V37,T21] ( 2, 4 ) int -> rdx "Inlining Arg" ; V38 tmp24 [V38,T26] ( 3, 3 ) int -> rdx "Inline stloc first use temp" ; V39 tmp25 [V39,T46] ( 2, 1 ) byref -> rax "Inline return value spill temp" ; V40 tmp26 [V40,T37] ( 3, 1.50) ref -> rdx class-hnd "Inline stloc first use temp" ; V41 tmp27 [V41,T34] ( 2, 2 ) long -> r8 "Inlining Arg" ; V42 tmp28 [V42,T35] ( 2, 2 ) int -> rax "Inlining Arg" ; V43 tmp29 [V43,T39] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V44 tmp30 [V44,T27] ( 3, 3 ) int -> rdx "index expr" ; V45 tmp31 [V45,T36] ( 2, 2 ) int -> rdx "argument with side effect" ; V46 cse0 [V46,T05] ( 4, 12.50) byref -> [rsp+0x30] "CSE - aggressive" ; V47 cse1 [V47,T06] ( 4, 12.50) byref -> [rsp+0x28] "CSE - aggressive" ; V48 cse2 [V48,T17] ( 3, 5 ) long -> r11 "CSE - moderate" ; V49 cse3 [V49,T44] ( 3, 1.25) long -> r11 "CSE - conservative" ; V50 cse4 [V50,T45] ( 3, 1.25) long -> rdx "CSE - conservative" ; V51 cse5 [V51,T11] ( 3, 10 ) long -> rdx "CSE - aggressive" ; V52 cse6 [V52,T12] ( 3, 10 ) long -> rcx "CSE - aggressive" ; V53 cse7 [V53,T40] ( 3, 1.50) int -> rcx "CSE - conservative" ; V54 cse8 [V54,T41] ( 3, 1.50) int -> rdx "CSE - conservative" ; V55 cse9 [V55,T42] ( 3, 1.50) int -> rcx "CSE - conservative" ; V56 cse10 [V56,T43] ( 3, 1.50) int -> rcx "CSE - conservative" ; V57 cse11 [V57,T01] ( 8, 25 ) int -> [rsp+0x58] "CSE - aggressive" ; ; Lcl frame size = 104 G_M30058_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 104 mov qword ptr [rsp+60H], rcx mov rsi, rcx mov rdi, rdx mov ebp, r8d mov ebx, r9d ;; bbWeight=1 PerfScore 10.25 G_M30058_IG02: test rdi, rdi je G_M30058_IG40 ;; bbWeight=1 PerfScore 1.25 G_M30058_IG03: cmp gword ptr [rsi+8], 0 jne SHORT G_M30058_IG05 ;; bbWeight=1 PerfScore 3.00 G_M30058_IG04: mov rcx, rsi xor edx, edx call Dictionary`2:Initialize(int):int:this ;; bbWeight=0.50 PerfScore 0.75 G_M30058_IG05: mov r14, gword ptr [rsi+16] mov r15, gword ptr [rsi+24] test r15, r15 je SHORT G_M30058_IG10 ;; bbWeight=1 PerfScore 5.25 G_M30058_IG06: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov r11, qword ptr [rdx+64] test r11, r11 je SHORT G_M30058_IG08 ;; bbWeight=0.50 PerfScore 4.63 G_M30058_IG07: jmp SHORT G_M30058_IG09 ;; bbWeight=0.25 PerfScore 0.50 G_M30058_IG08: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M30058_IG09: mov rcx, r15 mov rdx, rdi call qword ptr [r11] mov r12d, eax jmp SHORT G_M30058_IG11 ;; bbWeight=0.50 PerfScore 2.88 G_M30058_IG10: mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+64] call qword ptr [rax+24]Object:GetHashCode():int:this mov r12d, eax ;; bbWeight=0.50 PerfScore 3.75 G_M30058_IG11: xor r13d, r13d mov rcx, gword ptr [rsi+8] mov edx, dword ptr [rcx+8] mov rax, qword ptr [rsi+48] mov r8d, r12d imul rax, r8 shr rax, 32 inc rax mov edx, edx imul rdx, rax shr rdx, 32 cmp edx, dword ptr [rcx+8] jae G_M30058_IG48 movsxd rdx, edx lea rax, bword ptr [rcx+4*rdx+16] mov bword ptr [rsp+50H], rax mov r8d, dword ptr [rax] dec r8d mov dword ptr [rsp+5CH], r8d test r15, r15 jne G_M30058_IG23 ;; bbWeight=1 PerfScore 24.75 G_M30058_IG12: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+32] test rdx, rdx je SHORT G_M30058_IG14 ;; bbWeight=0.50 PerfScore 4.63 G_M30058_IG13: jmp SHORT G_M30058_IG15 ;; bbWeight=0.25 PerfScore 0.50 G_M30058_IG14: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M30058_IG15: mov rcx, rdx call EqualityComparer`1:get_Default():EqualityComparer`1 ;; bbWeight=0.50 PerfScore 0.63 G_M30058_IG16: mov r9d, dword ptr [r14+8] mov dword ptr [rsp+58H], r9d mov r10d, dword ptr [rsp+5CH] cmp r9d, r10d jbe G_M30058_IG31 movsxd rdx, r10d lea rdx, [rdx+2*rdx] lea r11, bword ptr [r14+8*rdx+16] mov bword ptr [rsp+30H], r11 cmp dword ptr [r11+8], r12d jne SHORT G_M30058_IG18 ;; bbWeight=4 PerfScore 44.00 G_M30058_IG17: mov rdx, gword ptr [r14+8*rdx+16] mov rcx, rax mov r8, rdi mov gword ptr [rsp+40H], rax mov r10, qword ptr [rax] mov r10, qword ptr [r10+64] call qword ptr [r10+48]EqualityComparer`1:Equals(__Canon,__Canon):bool:this test eax, eax mov rax, gword ptr [rsp+40H] jne SHORT G_M30058_IG19 ;; bbWeight=2 PerfScore 25.50 G_M30058_IG18: mov r11, bword ptr [rsp+30H] mov r10d, dword ptr [r11+12] mov r8d, r10d inc r13d cmp dword ptr [rsp+58H], r13d jb G_M30058_IG47 mov dword ptr [rsp+5CH], r8d jmp SHORT G_M30058_IG16 ;; bbWeight=4 PerfScore 34.00 G_M30058_IG19: cmp bl, 1 jne SHORT G_M30058_IG20 mov r11, bword ptr [rsp+30H] mov dword ptr [r11+16], ebp jmp G_M30058_IG38 ;; bbWeight=0.50 PerfScore 2.63 G_M30058_IG20: cmp bl, 2 je G_M30058_IG41 ;; bbWeight=0.50 PerfScore 0.63 G_M30058_IG21: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M30058_IG22: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M30058_IG23: mov r9d, dword ptr [r14+8] mov dword ptr [rsp+58H], r9d mov r8d, dword ptr [rsp+5CH] cmp r9d, r8d jbe G_M30058_IG31 movsxd rcx, r8d lea rcx, [rcx+2*rcx] lea r8, bword ptr [r14+8*rcx+16] mov bword ptr [rsp+28H], r8 cmp dword ptr [r8+8], r12d jne SHORT G_M30058_IG30 ;; bbWeight=4 PerfScore 44.00 G_M30058_IG24: mov r10, gword ptr [r14+8*rcx+16] mov gword ptr [rsp+38H], r10 mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov r11, qword ptr [rdx+48] test r11, r11 je SHORT G_M30058_IG26 ;; bbWeight=2 PerfScore 24.50 G_M30058_IG25: mov r10, gword ptr [rsp+38H] jmp SHORT G_M30058_IG27 ;; bbWeight=1 PerfScore 3.00 G_M30058_IG26: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax mov r10, gword ptr [rsp+38H] ;; bbWeight=1 PerfScore 2.50 G_M30058_IG27: mov rcx, r15 mov rdx, r10 mov r8, rdi call qword ptr [r11] test eax, eax je SHORT G_M30058_IG30 ;; bbWeight=2 PerfScore 10.00 G_M30058_IG28: cmp bl, 1 jne SHORT G_M30058_IG29 mov r13, bword ptr [rsp+28H] mov dword ptr [r13+16], ebp jmp G_M30058_IG38 ;; bbWeight=0.50 PerfScore 2.63 G_M30058_IG29: cmp bl, 2 je G_M30058_IG44 jmp G_M30058_IG21 ;; bbWeight=0.50 PerfScore 1.63 G_M30058_IG30: mov r8, bword ptr [rsp+28H] mov r8d, dword ptr [r8+12] mov ecx, r8d inc r13d cmp dword ptr [rsp+58H], r13d jb G_M30058_IG47 mov dword ptr [rsp+5CH], ecx jmp G_M30058_IG23 ;; bbWeight=4 PerfScore 34.00 G_M30058_IG31: mov ecx, dword ptr [rsi+64] test ecx, ecx jle SHORT G_M30058_IG32 mov edx, dword ptr [rsi+60] mov ebx, edx cmp edx, dword ptr [rsp+58H] jae G_M30058_IG48 movsxd r9, edx lea rdx, [r9+2*r9] mov edx, dword ptr [r14+8*rdx+28] neg edx add edx, -3 mov dword ptr [rsi+60], edx dec ecx mov dword ptr [rsi+64], ecx jmp SHORT G_M30058_IG34 ;; bbWeight=0.50 PerfScore 7.50 G_M30058_IG32: mov ecx, dword ptr [rsi+56] mov ebx, ecx cmp dword ptr [rsp+58H], ebx jne SHORT G_M30058_IG33 call HashHelpers:ExpandPrime(int):int mov edx, eax mov rcx, rsi xor r8d, r8d call Dictionary`2:Resize(int,bool):this mov rdx, gword ptr [rsi+8] mov ecx, dword ptr [rdx+8] mov eax, ecx mov r8, qword ptr [rsi+48] mov r9d, r12d imul r8, r9 shr r8, 32 inc r8 mov eax, eax imul rax, r8 shr rax, 32 cmp eax, ecx jae G_M30058_IG48 movsxd rcx, eax lea rax, bword ptr [rdx+4*rcx+16] mov r14, rax mov bword ptr [rsp+50H], r14 ;; bbWeight=0.50 PerfScore 12.88 G_M30058_IG33: lea edx, [rbx+1] mov dword ptr [rsi+56], edx mov r14, gword ptr [rsi+16] ;; bbWeight=0.50 PerfScore 1.75 G_M30058_IG34: cmp ebx, dword ptr [r14+8] jae G_M30058_IG48 movsxd rdx, ebx lea rdx, [rdx+2*rdx] lea r8, bword ptr [r14+8*rdx+16] mov dword ptr [r8+8], r12d mov rax, bword ptr [rsp+50H] mov edx, dword ptr [rax] dec edx mov dword ptr [r8+12], edx mov bword ptr [rsp+48H], r8 mov rcx, r8 mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdi, bword ptr [rsp+48H] mov dword ptr [rdi+16], ebp inc ebx mov rdi, bword ptr [rsp+50H] mov dword ptr [rdi], ebx inc dword ptr [rsi+68] cmp r13d, 100 jbe SHORT G_M30058_IG38 test r15, r15 je SHORT G_M30058_IG36 ;; bbWeight=0.50 PerfScore 12.13 G_M30058_IG35: mov rdx, 0xD1FFAB1E cmp qword ptr [r15], rdx jne SHORT G_M30058_IG38 ;; bbWeight=0.25 PerfScore 0.81 G_M30058_IG36: test r15, r15 je SHORT G_M30058_IG38 ;; bbWeight=0.50 PerfScore 0.63 G_M30058_IG37: xor rdx, rdx mov gword ptr [rsi+24], rdx mov edx, dword ptr [r14+8] mov rcx, rsi mov r8d, 1 call Dictionary`2:Resize(int,bool):this ;; bbWeight=0.50 PerfScore 2.38 G_M30058_IG38: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M30058_IG39: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M30058_IG40: mov ecx, 4 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M30058_IG41: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] cmp qword ptr [rdx+56], 0 je SHORT G_M30058_IG42 mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+56] jmp SHORT G_M30058_IG43 ;; bbWeight=0 PerfScore 0.00 G_M30058_IG42: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rcx, rax ;; bbWeight=0 PerfScore 0.00 G_M30058_IG43: mov rdx, rdi call ThrowHelper:ThrowAddingDuplicateWithKeyArgumentException(__Canon) int3 ;; bbWeight=0 PerfScore 0.00 G_M30058_IG44: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] cmp qword ptr [rdx+56], 0 je SHORT G_M30058_IG45 mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+56] jmp SHORT G_M30058_IG46 ;; bbWeight=0 PerfScore 0.00 G_M30058_IG45: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rcx, rax ;; bbWeight=0 PerfScore 0.00 G_M30058_IG46: mov rdx, rdi call ThrowHelper:ThrowAddingDuplicateWithKeyArgumentException(__Canon) int3 ;; bbWeight=0 PerfScore 0.00 G_M30058_IG47: call ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() int3 ;; bbWeight=0 PerfScore 0.00 G_M30058_IG48: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1057, prolog size 33, PerfScore 441.76, (MethodHash=f9b08a95) for method Dictionary`2:TryInsert(__Canon,int,ubyte):bool:this ; ============================================================ ; Assembly listing for method Enumerator:Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) byref -> zero-ref this ;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M6566_IG01: ;; bbWeight=1 PerfScore 0.00 G_M6566_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=aa1ce659) for method Enumerator:Dispose():this ; ============================================================ ; Assembly listing for method Dictionary`2:get_Item(int):__Canon:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 3 ) int -> rdi ; V02 loc0 [V02,T03] ( 3, 3 ) byref -> rax ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05,T02] ( 0, 0 ) long -> zero-ref "impRuntimeLookup slot" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; ; Lcl frame size = 40 G_M12047_IG01: push rdi push rsi sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M12047_IG02: mov rcx, rsi mov edx, edi call Dictionary`2:FindValue(int):byref:this mov rcx, qword ptr [rsi] test rax, rax je SHORT G_M12047_IG04 mov rax, gword ptr [rax] ;; bbWeight=1 PerfScore 6.75 G_M12047_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M12047_IG04: mov ecx, edi call ThrowHelper:ThrowKeyNotFoundException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 52, prolog size 11, PerfScore 17.95, (MethodHash=47ccd0f0) for method Dictionary`2:get_Item(int):__Canon:this ; ============================================================ ; Assembly listing for method Dictionary`2:FindValue(int):byref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T07] ( 11, 7.50) ref -> rdi this class-hnd ; V01 arg1 [V01,T06] ( 6, 9 ) int -> rsi ld-addr-op ; V02 loc0 [V02,T00] ( 9, 28.50) byref -> [rsp+0x28] ; V03 loc1 [V03,T16] ( 3, 2 ) byref -> rax ; V04 loc2 [V04,T14] ( 4, 3.50) ref -> rbx class-hnd ; V05 loc3 [V05,T15] ( 3, 3 ) int -> rcx ; V06 loc4 [V06,T01] ( 6, 13.50) int -> rdx ; V07 loc5 [V07,T11] ( 3, 5 ) ref -> r11 class-hnd ; V08 loc6 [V08,T03] ( 4, 12.50) int -> rax ;* V09 loc7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V10 loc8 [V10,T12] ( 3, 5 ) int -> r14 ; V11 loc9 [V11,T02] ( 6, 13.50) int -> r15 ; V12 loc10 [V12,T08] ( 3, 8.50) ref -> r12 class-hnd ; V13 loc11 [V13,T04] ( 4, 12.50) int -> r13 ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V15 tmp1 [V15,T13] ( 0, 0 ) long -> zero-ref "impRuntimeLookup slot" ;* V16 tmp2 [V16 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ;* V17 tmp3 [V17,T29] ( 0, 0 ) long -> zero-ref "impRuntimeLookup slot" ;* V18 tmp4 [V18 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V19 tmp5 [V19,T27] ( 2, 1 ) byref -> rdx "Inline return value spill temp" ; V20 tmp6 [V20,T21] ( 3, 1.50) ref -> rdx class-hnd "Inline stloc first use temp" ; V21 tmp7 [V21,T17] ( 2, 2 ) long -> r8 "Inlining Arg" ; V22 tmp8 [V22,T18] ( 2, 2 ) int -> rax "Inlining Arg" ; V23 tmp9 [V23,T23] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V24 tmp10 [V24,T10] ( 2, 8 ) int -> rdx "Inlining Arg" ;* V25 tmp11 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V26 tmp12 [V26,T28] ( 2, 1 ) byref -> rdx "Inline return value spill temp" ; V27 tmp13 [V27,T22] ( 3, 1.50) ref -> rdx class-hnd "Inline stloc first use temp" ; V28 tmp14 [V28,T19] ( 2, 2 ) long -> r11 "Inlining Arg" ; V29 tmp15 [V29,T20] ( 2, 2 ) int -> r8 "Inlining Arg" ; V30 tmp16 [V30,T24] ( 3, 1.50) int -> r8 "Inline stloc first use temp" ;* V31 cse0 [V31,T30] ( 0, 0 ) long -> zero-ref "CSE - moderate" ; V32 cse1 [V32,T25] ( 3, 1.50) int -> r11 "CSE - moderate" ; V33 cse2 [V33,T26] ( 3, 1.50) int -> rcx "CSE - moderate" ; V34 cse3 [V34,T09] ( 3, 8.50) int -> r8 "CSE - aggressive" ; V35 cse4 [V35,T05] ( 3, 12 ) int -> rbp "CSE - aggressive" ; ; Lcl frame size = 56 G_M25274_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rdi, rcx mov esi, edx ;; bbWeight=1 PerfScore 9.75 G_M25274_IG02: mov rcx, qword ptr [rdi] cmp gword ptr [rdi+8], 0 je G_M25274_IG15 ;; bbWeight=1 PerfScore 5.00 G_M25274_IG03: mov rbx, gword ptr [rdi+24] test rbx, rbx jne G_M25274_IG07 mov ecx, esi mov rdx, gword ptr [rdi+8] mov r11d, dword ptr [rdx+8] mov eax, r11d mov r8, qword ptr [rdi+48] mov r9d, ecx imul r8, r9 shr r8, 32 inc r8 mov eax, eax imul rax, r8 shr rax, 32 cmp eax, r11d jae G_M25274_IG17 movsxd r11, eax lea rdx, bword ptr [rdx+4*r11+16] mov edx, dword ptr [rdx] mov r11, gword ptr [rdi+16] xor eax, eax dec edx mov r8d, dword ptr [r11+8] ;; bbWeight=0.50 PerfScore 13.75 G_M25274_IG04: cmp r8d, edx jbe G_M25274_IG15 movsxd rdx, edx lea rdx, [rdx+2*rdx] lea rbp, bword ptr [r11+8*rdx+16] cmp dword ptr [rbp+8], esi jne SHORT G_M25274_IG06 ;; bbWeight=4 PerfScore 24.00 G_M25274_IG05: mov edx, dword ptr [rbp+16] cmp edx, ecx je G_M25274_IG13 ;; bbWeight=2 PerfScore 6.50 G_M25274_IG06: mov edx, dword ptr [rbp+12] inc eax cmp r8d, eax jb G_M25274_IG16 jmp SHORT G_M25274_IG04 ;; bbWeight=4 PerfScore 22.00 G_M25274_IG07: mov rcx, rbx mov edx, esi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEqualityComparer`1:GetHashCode(int):int:this mov r14d, eax mov rdx, gword ptr [rdi+8] mov ecx, dword ptr [rdx+8] mov r8d, ecx mov r11, qword ptr [rdi+48] mov eax, r14d imul r11, rax shr r11, 32 inc r11 mov r8d, r8d imul r8, r11 shr r8, 32 cmp r8d, ecx jae G_M25274_IG17 movsxd rcx, r8d lea rdx, bword ptr [rdx+4*rcx+16] mov r15d, dword ptr [rdx] mov r12, gword ptr [rdi+16] xor r13d, r13d dec r15d ;; bbWeight=0.50 PerfScore 13.13 G_M25274_IG08: mov ebp, dword ptr [r12+8] cmp ebp, r15d jbe SHORT G_M25274_IG15 movsxd rdx, r15d lea rdx, [rdx+2*rdx] lea rdx, bword ptr [r12+8*rdx+16] mov rax, rdx cmp dword ptr [rax+8], r14d jne SHORT G_M25274_IG11 ;; bbWeight=4 PerfScore 33.00 G_M25274_IG09: mov bword ptr [rsp+28H], rax mov edx, dword ptr [rax+16] mov rcx, rbx mov r8d, esi mov r11, 0xD1FFAB1E mov r9, 0xD1FFAB1E call qword ptr [r9]IEqualityComparer`1:Equals(int,int):bool:this test eax, eax jne SHORT G_M25274_IG12 ;; bbWeight=2 PerfScore 16.50 G_M25274_IG10: mov rax, bword ptr [rsp+28H] ;; bbWeight=1 PerfScore 1.00 G_M25274_IG11: mov r15d, dword ptr [rax+12] inc r13d cmp ebp, r13d jb SHORT G_M25274_IG16 jmp SHORT G_M25274_IG08 ;; bbWeight=4 PerfScore 22.00 G_M25274_IG12: mov rbp, bword ptr [rsp+28H] jmp SHORT G_M25274_IG13 ;; bbWeight=1 PerfScore 3.00 G_M25274_IG13: mov rax, rbp ;; bbWeight=0.50 PerfScore 0.13 G_M25274_IG14: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M25274_IG15: xor rax, rax jmp SHORT G_M25274_IG14 ;; bbWeight=0.50 PerfScore 1.13 G_M25274_IG16: call ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() int3 ;; bbWeight=0 PerfScore 0.00 G_M25274_IG17: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 411, prolog size 26, PerfScore 217.23, (MethodHash=38509d45) for method Dictionary`2:FindValue(int):byref:this ; ============================================================ ; Assembly listing for method SyncTextWriter:WriteLine(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03 ] ( 4, 6 ) ubyte -> [rbp-0x18] do-not-enreg[X] addr-exposed "Synchronized method monitor acquired boolean" ; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> [rbp-0x20] EH do-not-enreg[] must-init EH-live "Synchronized method monitor acquired boolean" ; V05 PSPSym [V05 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "PSPSym" ; V06 rat0 [V06,T01] ( 3, 6 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 64 G_M10190_IG01: push rbp push rdi push rsi sub rsp, 64 lea rbp, [rsp+50H] xor rax, rax mov qword ptr [rbp-20H], rax mov qword ptr [rbp-30H], rsp mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 6.50 G_M10190_IG02: xor edx, edx mov dword ptr [rbp-18H], edx ;; bbWeight=1 PerfScore 1.25 G_M10190_IG03: mov gword ptr [rbp-20H], rsi lea rdx, [rbp-18H] mov rcx, rsi call CORINFO_HELP_MON_ENTER mov rcx, gword ptr [rsi+32] mov rdx, rdi mov rax, qword ptr [rcx] mov rax, qword ptr [rax+104] call qword ptr [rax+48]TextWriter:WriteLine(String):this lea rdx, [rbp-18H] mov rcx, rsi call CORINFO_HELP_MON_EXIT nop ;; bbWeight=1 PerfScore 14.00 G_M10190_IG04: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 G_M10190_IG05: push rbp push rdi push rsi sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=0 PerfScore 0.00 G_M10190_IG06: lea rdx, [rbp-18H] mov rcx, gword ptr [rbp-20H] call CORINFO_HELP_MON_EXIT nop ;; bbWeight=0 PerfScore 0.00 G_M10190_IG07: add rsp, 48 pop rsi pop rdi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 129, prolog size 28, PerfScore 37.65, (MethodHash=7f3ed831) for method SyncTextWriter:WriteLine(String):this ; ============================================================ ; Assembly listing for method StreamWriter:WriteLine(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 25, 26.75) ref -> rsi this class-hnd ; V01 arg1 [V01,T15] ( 5, 4 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V04 tmp2 [V04,T20] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V05 tmp3 [V05,T32] ( 2, 2 ) int -> rcx "Inline stloc first use temp" ;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V09 tmp7 [V09,T30] ( 2, 2 ) byref -> rdi "Inlining Arg" ;* V10 tmp8 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V11 tmp9 [V11,T33] ( 2, 2 ) int -> rbx "Inlining Arg" ;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V13 tmp11 [V13,T18] ( 5, 4.75) ref -> r14 class-hnd "Inline stloc first use temp" ; V14 tmp12 [V14 ] ( 3, 1.50) byref -> [rsp+0x30] must-init pinned "Inline stloc first use temp" ;* V15 tmp13 [V15 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ; V16 tmp14 [V16 ] ( 4, 1.75) byref -> [rsp+0x28] must-init pinned "Inline stloc first use temp" ; V17 tmp15 [V17,T27] ( 2, 2.25) long -> rbp "Inline stloc first use temp" ; V18 tmp16 [V18,T14] ( 4, 6.25) long -> rdi "Inline stloc first use temp" ; V19 tmp17 [V19,T07] ( 7, 9.50) int -> rbx "Inline stloc first use temp" ; V20 tmp18 [V20,T05] ( 7, 11.25) int -> r15 "Inline stloc first use temp" ; V21 tmp19 [V21,T01] ( 6, 12 ) int -> r13 "Inline stloc first use temp" ; V22 tmp20 [V22,T22] ( 2, 4 ) int -> rcx "Inline stloc first use temp" ; V23 tmp21 [V23,T24] ( 3, 3 ) ref -> rdi class-hnd "Inline stloc first use temp" ; V24 tmp22 [V24,T08] ( 5, 8.50) int -> rbx "Inline stloc first use temp" ; V25 tmp23 [V25,T02] ( 3, 12 ) ref -> rcx class-hnd "Strict ordering of exceptions for Array store" ; V26 tmp24 [V26,T04] ( 3, 12 ) int -> r8 "Strict ordering of exceptions for Array store" ; V27 tmp25 [V27,T11] ( 2, 8 ) int -> rax "Strict ordering of exceptions for Array store" ; V28 tmp26 [V28,T09] ( 5, 8.25) int -> rbp "Inline stloc first use temp" ; V29 tmp27 [V29,T10] ( 4, 8 ) int -> rdx "Inline stloc first use temp" ; V30 tmp28 [V30,T03] ( 3, 12 ) ref -> rax class-hnd "impAppendStmt" ; V31 tmp29 [V31,T12] ( 2, 8 ) int -> rcx "Strict ordering of exceptions for Array store" ; V32 tmp30 [V32,T21] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V33 tmp31 [V33,T34] ( 2, 2 ) int -> rcx "Inline stloc first use temp" ;* V34 tmp32 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V35 tmp33 [V35,T19] ( 3, 4 ) int -> r13 "Inline return value spill temp" ; V36 tmp34 [V36,T06] ( 3, 10 ) int -> r12 "Inlining Arg" ; V37 tmp35 [V37,T13] ( 2, 8 ) long -> r8 "Inlining Arg" ;* V38 tmp36 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V39 tmp37 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V40 tmp38 [V40,T31] ( 2, 2 ) byref -> rdi V03._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ; V41 tmp39 [V41,T35] ( 2, 2 ) int -> rbx V03._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ; V42 tmp40 [V42,T28] ( 3, 2 ) byref -> rdi V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V43 tmp41 [V43,T29] ( 3, 2 ) int -> rbx V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V44 tmp42 [V44,T36] ( 2, 1 ) byref -> rdi V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V45 tmp43 [V45,T39] ( 2, 1 ) int -> rbx V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V46 tmp44 [V46,T37] ( 2, 1 ) byref -> rdi V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ;* V47 tmp45 [V47,T42] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ; V48 tmp46 [V48,T38] ( 2, 1 ) byref -> rdi V10._value(offs=0x00) P-INDEP "field V10._value (fldOffset=0x0)" ; V49 tmp47 [V49,T23] ( 4, 3.50) byref -> rdi V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ; V50 tmp48 [V50,T17] ( 6, 4.75) int -> rbx V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ;* V51 tmp49 [V51,T43] ( 0, 0 ) byref -> zero-ref V34._pointer(offs=0x00) P-INDEP "field V34._pointer (fldOffset=0x0)" ;* V52 tmp50 [V52 ] ( 0, 0 ) int -> zero-ref V34._length(offs=0x08) P-INDEP "field V34._length (fldOffset=0x8)" ; V53 tmp51 [V53,T40] ( 2, 1 ) long -> rdi "Cast away GC" ; V54 tmp52 [V54,T41] ( 2, 1 ) long -> rbp "Cast away GC" ; V55 cse0 [V55,T26] ( 4, 2.75) ref -> r14 "CSE - moderate" ; V56 cse1 [V56,T16] ( 3, 6 ) int -> rdx "CSE - moderate" ; V57 cse2 [V57,T25] ( 3, 3 ) int -> rbp "CSE - moderate" ; ; Lcl frame size = 56 G_M40072_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 xor rax, rax mov qword ptr [rsp+30H], rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 10.75 G_M40072_IG02: mov rcx, gword ptr [rsi+72] mov ecx, dword ptr [rcx+52] test ecx, 0xD1FFAB1E je G_M40072_IG29 ;; bbWeight=1 PerfScore 5.25 G_M40072_IG03: test rdx, rdx jne SHORT G_M40072_IG05 ;; bbWeight=1 PerfScore 1.25 G_M40072_IG04: xor rdi, rdi xor ebx, ebx jmp SHORT G_M40072_IG06 ;; bbWeight=0.50 PerfScore 1.25 G_M40072_IG05: lea rdi, bword ptr [rdx+12] mov ebx, dword ptr [rdx+8] ;; bbWeight=0.50 PerfScore 1.25 G_M40072_IG06: mov rcx, gword ptr [rsi+72] mov ecx, dword ptr [rcx+52] test ecx, 0xD1FFAB1E je G_M40072_IG29 ;; bbWeight=1 PerfScore 5.25 G_M40072_IG07: cmp ebx, 4 jg SHORT G_M40072_IG11 ;; bbWeight=1 PerfScore 1.25 G_M40072_IG08: mov ecx, dword ptr [rsi+84] sub ecx, dword ptr [rsi+80] cmp ecx, ebx jl SHORT G_M40072_IG11 xor ebp, ebp test ebx, ebx jle G_M40072_IG20 mov r14, gword ptr [rsi+64] ;; bbWeight=0.25 PerfScore 2.19 G_M40072_IG09: mov rax, r14 mov edx, dword ptr [rsi+80] lea ecx, [rdx+1] mov dword ptr [rsi+80], ecx movsxd rcx, ebp movzx rcx, word ptr [rdi+2*rcx] cmp edx, dword ptr [rax+8] jae G_M40072_IG31 movsxd rdx, edx mov word ptr [rax+2*rdx+16], cx inc ebp cmp ebp, ebx jl SHORT G_M40072_IG09 ;; bbWeight=2 PerfScore 23.50 G_M40072_IG10: jmp G_M40072_IG20 ;; bbWeight=0.25 PerfScore 0.50 G_M40072_IG11: cmp byte ptr [rsi+91], 0 jne G_M40072_IG30 ;; bbWeight=0.25 PerfScore 0.75 G_M40072_IG12: mov r14, gword ptr [rsi+64] mov bword ptr [rsp+30H], rdi cmp dword ptr [r14+8], 0 jbe G_M40072_IG31 lea rcx, bword ptr [r14+16] mov bword ptr [rsp+28H], rcx mov rbp, bword ptr [rsp+28H] mov r15d, dword ptr [rsi+80] test ebx, ebx jle SHORT G_M40072_IG19 ;; bbWeight=0.25 PerfScore 2.94 G_M40072_IG13: cmp dword ptr [r14+8], r15d jne SHORT G_M40072_IG15 ;; bbWeight=2 PerfScore 6.00 G_M40072_IG14: mov rcx, rsi xor edx, edx xor r8d, r8d call StreamWriter:Flush(bool,bool):this xor r15d, r15d ;; bbWeight=1 PerfScore 2.00 G_M40072_IG15: mov r12d, dword ptr [r14+8] sub r12d, r15d cmp r12d, ebx jle SHORT G_M40072_IG17 ;; bbWeight=2 PerfScore 7.00 G_M40072_IG16: mov r13d, ebx jmp SHORT G_M40072_IG18 ;; bbWeight=1 PerfScore 2.25 G_M40072_IG17: mov r13d, r12d ;; bbWeight=1 PerfScore 0.25 G_M40072_IG18: lea ecx, [r13+r13] movsxd r8, ecx movsxd rcx, r15d lea rcx, [rbp+2*rcx] test r8, r8 jl G_M40072_IG28 mov rdx, rdi call Buffer:Memmove(long,long,long) add dword ptr [rsi+80], r13d add r15d, r13d movsxd rcx, r13d lea rdi, [rdi+2*rcx] sub ebx, r13d test ebx, ebx jg SHORT G_M40072_IG13 ;; bbWeight=2 PerfScore 29.00 G_M40072_IG19: xor rcx, rcx mov bword ptr [rsp+28H], rcx mov bword ptr [rsp+30H], rcx ;; bbWeight=0.25 PerfScore 0.56 G_M40072_IG20: mov rdi, gword ptr [rsi+8] xor ebx, ebx mov ebp, dword ptr [rdi+8] test ebp, ebp jle SHORT G_M40072_IG24 ;; bbWeight=0.50 PerfScore 2.75 G_M40072_IG21: mov ecx, dword ptr [rsi+80] cmp ecx, dword ptr [rsi+84] jne SHORT G_M40072_IG23 ;; bbWeight=2 PerfScore 10.00 G_M40072_IG22: mov rcx, rsi xor edx, edx xor r8d, r8d call StreamWriter:Flush(bool,bool):this ;; bbWeight=1 PerfScore 1.75 G_M40072_IG23: mov rcx, gword ptr [rsi+64] mov edx, dword ptr [rsi+80] mov r8d, edx movsxd rax, ebx movzx rax, word ptr [rdi+2*rax+16] cmp r8d, dword ptr [rcx+8] jae SHORT G_M40072_IG31 movsxd r8, r8d mov word ptr [rcx+2*r8+16], ax inc edx mov dword ptr [rsi+80], edx inc ebx cmp ebp, ebx jg SHORT G_M40072_IG21 ;; bbWeight=2 PerfScore 27.00 G_M40072_IG24: cmp byte ptr [rsi+88], 0 je SHORT G_M40072_IG26 ;; bbWeight=0.50 PerfScore 1.50 G_M40072_IG25: mov rcx, rsi mov edx, 1 xor r8d, r8d call StreamWriter:Flush(bool,bool):this ;; bbWeight=0.25 PerfScore 0.44 G_M40072_IG26: xor rax, rax mov bword ptr [rsp+30H], rax mov bword ptr [rsp+28H], rax ;; bbWeight=1 PerfScore 2.25 G_M40072_IG27: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M40072_IG28: call CORINFO_HELP_OVERFLOW ;; bbWeight=0 PerfScore 0.00 G_M40072_IG29: call StreamWriter:ThrowAsyncIOInProgress() int3 ;; bbWeight=0 PerfScore 0.00 G_M40072_IG30: mov rcx, rsi call StreamWriter:g__ThrowObjectDisposedException|75_0():this int3 ;; bbWeight=0 PerfScore 0.00 G_M40072_IG31: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 478, prolog size 31, PerfScore 201.93, (MethodHash=577f6377) for method StreamWriter:WriteLine(String):this ; ============================================================ ; Assembly listing for method Buffer:Memmove(long,long,long) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 15, 19.50) long -> rcx ; V01 arg1 [V01,T01] ( 15, 19.50) long -> rdx ; V02 arg2 [V02,T02] ( 18, 10.50) long -> r8 ; V03 loc0 [V03,T04] ( 6, 3 ) long -> rax ; V04 loc1 [V04,T05] ( 6, 3 ) long -> r9 ; V05 loc2 [V05,T03] ( 4, 12.50) long -> r10 ;# V06 OutArgs [V06 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V09 tmp3 [V09 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V12 tmp6 [V12 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V13 cse0 [V13,T06] ( 4, 2 ) int -> r10 "CSE - aggressive" ; ; Lcl frame size = 0 G_M6879_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M6879_IG02: mov rax, rcx sub rax, rdx cmp rax, r8 jb G_M6879_IG15 ;; bbWeight=1 PerfScore 1.75 G_M6879_IG03: mov rax, rdx sub rax, rcx cmp rax, r8 jb G_M6879_IG15 lea rax, [rdx+r8] lea r9, [rcx+r8] cmp r8, 16 jbe SHORT G_M6879_IG06 cmp r8, 64 ja G_M6879_IG11 ;; bbWeight=0.50 PerfScore 2.63 G_M6879_IG04: vmovdqu xmm0, xmmword ptr [rdx] vmovdqu xmmword ptr [rcx], xmm0 cmp r8, 32 jbe SHORT G_M6879_IG05 vmovdqu xmm0, xmmword ptr [rdx+16] vmovdqu xmmword ptr [rcx+16], xmm0 cmp r8, 48 jbe SHORT G_M6879_IG05 vmovdqu xmm0, xmmword ptr [rdx+32] vmovdqu xmmword ptr [rcx+32], xmm0 ;; bbWeight=0.50 PerfScore 5.75 G_M6879_IG05: vmovdqu xmm0, xmmword ptr [rax-16] vmovdqu xmmword ptr [r9-16], xmm0 jmp G_M6879_IG14 ;; bbWeight=0.50 PerfScore 2.50 G_M6879_IG06: mov r10d, r8d test r10b, 24 je SHORT G_M6879_IG07 mov r10, qword ptr [rdx] mov qword ptr [rcx], r10 mov rdx, qword ptr [rax-8] mov qword ptr [r9-8], rdx jmp G_M6879_IG14 ;; bbWeight=0.50 PerfScore 4.75 G_M6879_IG07: test r10b, 4 je SHORT G_M6879_IG08 mov r8d, dword ptr [rdx] mov dword ptr [rcx], r8d mov edx, dword ptr [rax-4] mov dword ptr [r9-4], edx jmp G_M6879_IG14 ;; bbWeight=0.50 PerfScore 4.63 G_M6879_IG08: test r8, r8 je G_M6879_IG14 ;; bbWeight=0.50 PerfScore 0.63 G_M6879_IG09: movzx r8, byte ptr [rdx] mov byte ptr [rcx], r8b test r10b, 2 je SHORT G_M6879_IG14 ;; bbWeight=0.50 PerfScore 2.13 G_M6879_IG10: movsx rdx, word ptr [rax-2] mov word ptr [r9-2], dx jmp SHORT G_M6879_IG14 ;; bbWeight=0.50 PerfScore 2.50 G_M6879_IG11: cmp r8, 0x800 ja SHORT G_M6879_IG15 mov r10, r8 shr r10, 6 ;; bbWeight=0.50 PerfScore 1.75 G_M6879_IG12: vmovdqu xmm0, xmmword ptr [rdx] vmovdqu xmmword ptr [rcx], xmm0 vmovdqu xmm0, xmmword ptr [rdx+16] vmovdqu xmmword ptr [rcx+16], xmm0 vmovdqu xmm0, xmmword ptr [rdx+32] vmovdqu xmmword ptr [rcx+32], xmm0 vmovdqu xmm0, xmmword ptr [rdx+48] vmovdqu xmmword ptr [rcx+48], xmm0 add rcx, 64 add rdx, 64 dec r10 jne SHORT G_M6879_IG12 ;; bbWeight=4 PerfScore 55.00 G_M6879_IG13: and r8, 63 cmp r8, 16 ja G_M6879_IG04 vmovdqu xmm0, xmmword ptr [rax-16] vmovdqu xmmword ptr [r9-16], xmm0 ;; bbWeight=0.50 PerfScore 2.25 G_M6879_IG14: ret ;; bbWeight=0.50 PerfScore 0.50 G_M6879_IG15: jmp Buffer:_Memmove(long,long,long) ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 297, prolog size 3, PerfScore 120.05, (MethodHash=0977e520) for method Buffer:Memmove(long,long,long) ; ============================================================ ; Assembly listing for method OSEncoder:GetBytes(long,int,long,int,bool):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 8, 5 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T02] ( 7, 4.50) long -> rbx ; V02 arg2 [V02,T00] ( 11, 7 ) int -> rsi ; V03 arg3 [V03,T03] ( 5, 4 ) long -> rbp ; V04 arg4 [V04,T05] ( 5, 3 ) int -> r14 ; V05 arg5 [V05,T12] ( 2, 1 ) bool -> [rsp+0x98] ; V06 loc0 [V06,T04] ( 6, 3 ) ushort -> r12 ; V07 loc1 [V07,T13] ( 2, 1 ) int -> rax ; V08 loc2 [V08,T14] ( 2, 1 ) int -> rax ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T15] ( 3, 0 ) ref -> r14 ; V11 tmp2 [V11,T16] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V12 tmp3 [V12,T17] ( 3, 0 ) ref -> rsi ; V13 tmp4 [V13,T18] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V14 tmp5 [V14,T10] ( 3, 1.50) int -> rax ; V15 tmp6 [V15,T08] ( 2, 2 ) ushort -> rax "Inlining Arg" ; V16 tmp7 [V16,T07] ( 3, 3 ) int -> rax "Single return block return value" ; V17 tmp8 [V17,T19] ( 2, 0 ) ref -> rcx "argument with side effect" ; V18 tmp9 [V18,T20] ( 2, 0 ) ref -> r8 "argument with side effect" ; V19 tmp10 [V19,T21] ( 2, 0 ) ref -> rcx "argument with side effect" ; V20 tmp11 [V20,T22] ( 2, 0 ) ref -> r8 "argument with side effect" ; V21 tmp12 [V21,T09] ( 2, 2 ) int -> rcx "argument with side effect" ; V22 cse0 [V22,T11] ( 3, 1.50) int -> rcx "CSE - moderate" ; V23 rat0 [V23,T06] ( 3, 3 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 48 G_M37661_IG01: push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 48 mov rdi, rcx mov rbx, rdx mov esi, r8d mov rbp, r9 mov r14d, dword ptr [rsp+90H] ;; bbWeight=1 PerfScore 9.25 G_M37661_IG02: test rbx, rbx je G_M37661_IG17 test rbp, rbp je G_M37661_IG17 ;; bbWeight=1 PerfScore 2.50 G_M37661_IG03: test r14d, r14d jl G_M37661_IG20 test esi, esi jl G_M37661_IG20 ;; bbWeight=1 PerfScore 2.50 G_M37661_IG04: test r14d, r14d je G_M37661_IG13 ;; bbWeight=1 PerfScore 1.25 G_M37661_IG05: test esi, esi jle SHORT G_M37661_IG06 movzx r15, byte ptr [rsp+98H] test r15b, r15b jne SHORT G_M37661_IG07 lea ecx, [rsi-1] movsxd rcx, ecx movzx rcx, word ptr [rbx+2*rcx] mov eax, ecx add eax, -0xD800 cmp eax, 0x3FF mov dword ptr [rsp+98H], r15d jbe SHORT G_M37661_IG08 ;; bbWeight=0.50 PerfScore 4.50 G_M37661_IG06: xor eax, eax jmp SHORT G_M37661_IG09 ;; bbWeight=0.50 PerfScore 1.13 G_M37661_IG07: mov dword ptr [rsp+98H], r15d jmp SHORT G_M37661_IG06 ;; bbWeight=0.25 PerfScore 0.75 G_M37661_IG08: mov eax, ecx ;; bbWeight=0.50 PerfScore 0.13 G_M37661_IG09: movzx r12, ax test r12d, r12d je SHORT G_M37661_IG10 dec esi ;; bbWeight=0.50 PerfScore 0.88 G_M37661_IG10: cmp word ptr [rdi+32], 0 jne SHORT G_M37661_IG12 test esi, esi jg SHORT G_M37661_IG11 mov word ptr [rdi+32], r12w jmp SHORT G_M37661_IG13 ;; bbWeight=0.50 PerfScore 3.63 G_M37661_IG11: mov rcx, gword ptr [rdi+24] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+96] call qword ptr [rax+56]Encoding:get_CodePage():int:this mov ecx, eax mov dword ptr [rsp+20H], r14d mov rdx, rbx mov r8d, esi mov r9, rbp call OSEncoding:WideCharToMultiByte(int,long,int,long,int):int mov word ptr [rdi+32], r12w jmp SHORT G_M37661_IG16 ;; bbWeight=0.50 PerfScore 7.50 G_M37661_IG12: mov eax, esi or eax, r12d mov r15d, dword ptr [rsp+98H] movzx rcx, r15b or eax, ecx jne SHORT G_M37661_IG15 ;; bbWeight=0.50 PerfScore 1.50 G_M37661_IG13: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M37661_IG14: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.38 G_M37661_IG15: mov dword ptr [rsp+20H], r14d mov rcx, rdi mov rdx, rbx mov r8d, esi mov r9, rbp call OSEncoder:ConvertWithLeftOverChar(long,int,long,int):int:this mov word ptr [rdi+32], r12w ;; bbWeight=0.50 PerfScore 2.00 G_M37661_IG16: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.38 G_M37661_IG17: test rbx, rbx je SHORT G_M37661_IG18 mov rcx, 0xD1FFAB1E mov r14, gword ptr [rcx] jmp SHORT G_M37661_IG19 ;; bbWeight=0 PerfScore 0.00 G_M37661_IG18: mov rcx, 0xD1FFAB1E mov r14, gword ptr [rcx] ;; bbWeight=0 PerfScore 0.00 G_M37661_IG19: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x925 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, r14 mov rcx, rsi call ArgumentNullException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M37661_IG20: test r14d, r14d jl SHORT G_M37661_IG21 mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] jmp SHORT G_M37661_IG22 ;; bbWeight=0 PerfScore 0.00 G_M37661_IG21: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0 PerfScore 0.00 G_M37661_IG22: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 605 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rsi mov rcx, rdi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 502, prolog size 14, PerfScore 92.58, (MethodHash=be356ce2) for method OSEncoder:GetBytes(long,int,long,int,bool):int:this ; ============================================================ ; Assembly listing for method OSEncoding:WideCharToMultiByte(int,long,int,long,int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) int -> rsi ; V01 arg1 [V01,T02] ( 3, 3 ) long -> rdi ; V02 arg2 [V02,T03] ( 3, 3 ) int -> rbx ; V03 arg3 [V03,T04] ( 3, 3 ) long -> r14 ; V04 arg4 [V04,T07] ( 1, 1 ) int -> [rbp+0x30] ; V05 loc0 [V05,T06] ( 3, 3 ) int -> rax ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (64) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp2 [V08,T05] ( 2, 4 ) int -> rax "Single return block return value" ; V09 FramesRoot [V09,T00] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V10 PInvokeFrame [V10 ] ( 8, 8 ) blk (72) [rbp-0x80] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V11 tmp5 [V11,T09] ( 2, 0 ) ref -> rcx "argument with side effect" ; V12 tmp6 [V12,T10] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 136 G_M47131_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] mov esi, ecx mov rdi, rdx mov ebx, r8d mov r14, r9 ;; bbWeight=1 PerfScore 9.75 G_M47131_IG02: lea rcx, [rbp-78H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-58H], rcx mov rcx, rbp mov qword ptr [rbp-48H], rcx mov qword ptr [rsp+20H], r14 mov r14d, dword ptr [rbp+30H] mov dword ptr [rsp+28H], r14d xor rcx, rcx mov qword ptr [rsp+30H], rcx mov qword ptr [rsp+38H], rcx mov ecx, esi mov r8, rdi mov r9d, ebx xor edx, edx mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M47131_IG05 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [r15+16], rax mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 16.50 G_M47131_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M47131_IG04: call qword ptr [rax]Kernel32:WideCharToMultiByte(int,int,long,int,long,int,long,long):int ;; bbWeight=1 PerfScore 3.00 G_M47131_IG05: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M47131_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M47131_IG06: mov rcx, bword ptr [rbp-70H] mov qword ptr [r15+16], rcx test eax, eax jle SHORT G_M47131_IG08 ;; bbWeight=1 PerfScore 3.25 G_M47131_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M47131_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xB45 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 282, prolog size 27, PerfScore 73.95, (MethodHash=429747e4) for method OSEncoding:WideCharToMultiByte(int,long,int,long,int):int ; ============================================================ ; Assembly listing for method WindowsConsoleStream:Write(ref,int,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 4, 4 ) int -> rbx ; V03 arg3 [V03,T03] ( 4, 4 ) int -> rbp ; V04 loc0 [V04,T04] ( 3, 2 ) int -> rsi ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M1189_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov ebx, r8d mov ebp, r9d ;; bbWeight=1 PerfScore 5.25 G_M1189_IG02: mov rcx, rsi mov rdx, rdi mov r8d, ebx mov r9d, ebp call ConsoleStream:ValidateWrite(ref,int,int):this movzx rcx, byte ptr [rsi+19] mov dword ptr [rsp+20H], ecx mov rcx, qword ptr [rsi+24] mov rdx, rdi mov r8d, ebx mov r9d, ebp call WindowsConsoleStream:WriteFileNative(long,ref,int,int,bool):int mov esi, eax test esi, esi jne SHORT G_M1189_IG04 ;; bbWeight=1 PerfScore 10.25 G_M1189_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M1189_IG04: mov ecx, 153 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov ecx, esi call Win32Marshal:GetExceptionForWin32Error(int,String):Exception mov rcx, rax call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 117, prolog size 8, PerfScore 30.45, (MethodHash=903cfb5a) for method WindowsConsoleStream:Write(ref,int,int):this ; ============================================================ ; Assembly listing for method ConsoleStream:ValidateWrite(ref,int,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 arg2 [V02,T00] ( 5, 4 ) int -> r8 ; V03 arg3 [V03,T02] ( 4, 4 ) int -> r9 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 3, 0 ) ref -> rsi ; V06 tmp2 [V06,T05] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp4 [V08,T07] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp5 [V09,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 tmp7 [V11,T10] ( 2, 0 ) ref -> rcx "argument with side effect" ; V12 tmp8 [V12,T11] ( 2, 0 ) ref -> r8 "argument with side effect" ; V13 tmp9 [V13,T12] ( 2, 0 ) ref -> rcx "argument with side effect" ; V14 tmp10 [V14,T13] ( 2, 0 ) ref -> rdx "argument with side effect" ; V15 tmp11 [V15,T14] ( 2, 0 ) ref -> rcx "argument with side effect" ; V16 tmp12 [V16,T15] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M50140_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M50140_IG02: test rdx, rdx je SHORT G_M50140_IG07 ;; bbWeight=1 PerfScore 1.25 G_M50140_IG03: test r8d, r8d jl SHORT G_M50140_IG08 test r9d, r9d jl SHORT G_M50140_IG08 ;; bbWeight=1 PerfScore 2.50 G_M50140_IG04: mov eax, dword ptr [rdx+8] sub eax, r8d cmp eax, r9d jl G_M50140_IG11 ;; bbWeight=1 PerfScore 3.50 G_M50140_IG05: cmp byte ptr [rcx+17], 0 je G_M50140_IG12 ;; bbWeight=1 PerfScore 3.00 G_M50140_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M50140_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC9F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M50140_IG08: test r8d, r8d jl SHORT G_M50140_IG09 mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] jmp SHORT G_M50140_IG10 ;; bbWeight=0 PerfScore 0.00 G_M50140_IG09: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0 PerfScore 0.00 G_M50140_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 605 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rsi mov rcx, rdi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M50140_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 771 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M50140_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 929 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call NotSupportedException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 348, prolog size 6, PerfScore 49.55, (MethodHash=cfeb3c23) for method ConsoleStream:ValidateWrite(ref,int,int):this ; ============================================================ ; Assembly listing for method WindowsConsoleStream:WriteFileNative(long,ref,int,int,bool):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 4, 3 ) long -> rcx ; V01 arg1 [V01,T01] ( 4, 3.50) ref -> rdx class-hnd ; V02 arg2 [V02,T03] ( 4, 3 ) int -> [rbp+0x20] ; V03 arg3 [V03,T00] ( 5, 3.50) int -> rsi ; V04 arg4 [V04,T09] ( 1, 0.50) bool -> [rbp+0x30] ; V05 loc0 [V05,T07] ( 3, 1.50) bool -> rdi ; V06 loc1 [V06,T05] ( 4, 2 ) int -> rax ; V07 loc2 [V07,T08] ( 3, 1.50) long -> rdx ; V08 loc3 [V08 ] ( 3, 1.50) byref -> [rbp-0x18] must-init pinned ; V09 loc4 [V09 ] ( 1, 0.50) int -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op ; V10 loc5 [V10 ] ( 1, 0.50) int -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V12 tmp1 [V12,T06] ( 2, 2 ) long -> rax "Cast away GC" ; V13 cse0 [V13,T04] ( 3, 2.50) int -> r9 "CSE - aggressive" ; ; Lcl frame size = 64 G_M37715_IG01: push rbp push rdi push rsi sub rsp, 64 lea rbp, [rsp+50H] xor rax, rax mov qword ptr [rbp-18H], rax mov esi, r9d ;; bbWeight=1 PerfScore 5.25 G_M37715_IG02: mov r9d, dword ptr [rdx+8] test r9d, r9d jne SHORT G_M37715_IG05 ;; bbWeight=1 PerfScore 3.25 G_M37715_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M37715_IG04: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.50 G_M37715_IG05: cmp r9d, 0 jbe G_M37715_IG13 add rdx, 16 mov bword ptr [rbp-18H], rdx mov rax, bword ptr [rbp-18H] mov rdx, rax cmp byte ptr [rbp+30H], 0 je SHORT G_M37715_IG06 xor r9, r9 mov qword ptr [rsp+20H], r9 movsxd r9, r8d add rdx, r9 lea r9, [rbp-20H] mov r8d, esi call Kernel32:WriteFile(long,long,int,byref,long):int test eax, eax setne dil movzx rdi, dil jmp SHORT G_M37715_IG07 ;; bbWeight=0.50 PerfScore 6.38 G_M37715_IG06: mov dword ptr [rbp+20H], r8d xor r9, r9 mov qword ptr [rsp+20H], r9 mov r9d, esi shr r9d, 31 add esi, r9d mov r8d, esi sar r8d, 1 mov r9d, dword ptr [rbp+20H] movsxd r9, r9d add rdx, r9 lea r9, [rbp-28H] call Kernel32:WriteConsole(long,long,int,byref,long):bool mov edi, eax ;; bbWeight=0.50 PerfScore 4.38 G_M37715_IG07: xor rax, rax mov bword ptr [rbp-18H], rax test edi, edi je SHORT G_M37715_IG09 xor eax, eax ;; bbWeight=0.50 PerfScore 1.38 G_M37715_IG08: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.50 G_M37715_IG09: call Marshal:GetLastWin32Error():int cmp eax, 232 je SHORT G_M37715_IG10 cmp eax, 109 jne SHORT G_M37715_IG12 ;; bbWeight=0.50 PerfScore 1.75 G_M37715_IG10: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M37715_IG11: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.50 G_M37715_IG12: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.50 G_M37715_IG13: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 219, prolog size 18, PerfScore 50.53, (MethodHash=4a336cac) for method WindowsConsoleStream:WriteFileNative(long,ref,int,int,bool):int ; ============================================================ // BeforeAnythingElse ; Assembly listing for method SyncTextReader:ReadLine():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T02] ( 4, 2.50) ref -> [rbp-0x18] EH do-not-enreg[] class-hnd EH-live ; V02 loc1 [V02 ] ( 5, 4 ) bool -> [rbp-0x10] do-not-enreg[XF] addr-exposed ld-addr-op ; V03 loc2 [V03,T03] ( 2, 2 ) ref -> rsi class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 PSPSym [V05 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "PSPSym" ; V06 rat0 [V06,T01] ( 3, 6 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 56 G_M9393_IG01: push rbp push rsi sub rsp, 56 lea rbp, [rsp+40H] mov qword ptr [rbp-20H], rsp mov rsi, rcx ;; bbWeight=1 PerfScore 4.00 G_M9393_IG02: mov gword ptr [rbp-18H], rsi xor edx, edx mov dword ptr [rbp-10H], edx ;; bbWeight=1 PerfScore 2.25 G_M9393_IG03: cmp byte ptr [rbp-10H], 0 jne SHORT G_M9393_IG05 ;; bbWeight=1 PerfScore 2.00 G_M9393_IG04: lea rdx, [rbp-10H] mov rcx, gword ptr [rbp-18H] call Monitor:ReliableEnter(Object,byref) jmp SHORT G_M9393_IG06 ;; bbWeight=1 PerfScore 4.50 G_M9393_IG05: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M9393_IG06: mov rcx, gword ptr [rsi+8] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+72] call gword ptr [rax+56]TextReader:ReadLine():String:this mov rsi, rax ;; bbWeight=1 PerfScore 9.25 G_M9393_IG07: cmp byte ptr [rbp-10H], 0 je SHORT G_M9393_IG09 ;; bbWeight=1 PerfScore 2.00 G_M9393_IG08: mov rcx, gword ptr [rbp-18H] call Monitor:Exit(Object) ;; bbWeight=0.50 PerfScore 1.00 G_M9393_IG09: mov rax, rsi ;; bbWeight=1 PerfScore 0.25 G_M9393_IG10: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 G_M9393_IG11: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+40H] ;; bbWeight=0 PerfScore 0.00 G_M9393_IG12: cmp byte ptr [rbp-10H], 0 je SHORT G_M9393_IG13 mov rcx, gword ptr [rbp-18H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M9393_IG13: nop ;; bbWeight=0 PerfScore 0.00 G_M9393_IG14: add rsp, 40 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 138, prolog size 18, PerfScore 41.55, (MethodHash=0905db4e) for method SyncTextReader:ReadLine():String:this ; ============================================================ ; Assembly listing for method StreamReader:ReadLine():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 25, 71 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T06] ( 8, 12.50) ref -> rdi class-hnd ; V02 loc1 [V02,T01] ( 12,175.50) int -> rbx ; V03 loc2 [V03,T02] ( 4, 96.50) ushort -> rbp ; V04 loc3 [V04,T12] ( 3, 1.50) ref -> rdi class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T07] ( 3, 12 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T08] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V08 tmp3 [V08,T11] ( 2, 2 ) int -> rcx "Inline stloc first use temp" ;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V10 tmp5 [V10,T00] ( 3,192 ) ref -> rcx "arr expr" ; V11 tmp6 [V11,T09] ( 3, 3 ) ref -> rax "arr expr" ; V12 tmp7 [V12,T10] ( 3, 3 ) int -> rdx "index expr" ; V13 cse0 [V13,T04] ( 4, 37 ) ref -> rdx "CSE - aggressive" ; V14 cse1 [V14,T05] ( 7, 14 ) int -> r8 "CSE - aggressive" ; V15 cse2 [V15,T13] ( 3, 1.50) int -> rcx "CSE - moderate" ; ; Lcl frame size = 40 G_M44279_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 4.50 G_M44279_IG02: cmp byte ptr [rsi+76], 0 jne G_M44279_IG22 ;; bbWeight=1 PerfScore 3.00 G_M44279_IG03: mov rcx, gword ptr [rsi+48] mov ecx, dword ptr [rcx+52] test ecx, 0xD1FFAB1E je G_M44279_IG23 ;; bbWeight=1 PerfScore 5.25 G_M44279_IG04: mov ecx, dword ptr [rsi+56] cmp ecx, dword ptr [rsi+60] jne SHORT G_M44279_IG07 ;; bbWeight=1 PerfScore 5.00 G_M44279_IG05: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+88] call qword ptr [rax+8]StreamReader:ReadBuffer():int:this test eax, eax jne SHORT G_M44279_IG07 xor rax, rax ;; bbWeight=0.50 PerfScore 4.38 G_M44279_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M44279_IG07: xor rdi, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M44279_IG08: mov r8d, dword ptr [rsi+56] mov ebx, r8d mov rdx, gword ptr [rsi+40] ;; bbWeight=4 PerfScore 17.00 G_M44279_IG09: mov rcx, rdx cmp ebx, dword ptr [rcx+8] jae G_M44279_IG24 movsxd rax, ebx movzx rbp, word ptr [rcx+2*rax+16] cmp ebp, 13 je G_M44279_IG16 cmp ebp, 10 je SHORT G_M44279_IG16 ;; bbWeight=32 PerfScore 256.00 G_M44279_IG10: inc ebx cmp ebx, dword ptr [rsi+60] jl SHORT G_M44279_IG09 ;; bbWeight=32 PerfScore 104.00 G_M44279_IG11: mov ebx, dword ptr [rsi+60] sub ebx, r8d test rdi, rdi jne SHORT G_M44279_IG13 ;; bbWeight=4 PerfScore 14.00 G_M44279_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea edx, [rbx+80] mov rcx, rdi mov r8d, 0xD1FFAB1E call StringBuilder:.ctor(int,int):this ;; bbWeight=2 PerfScore 7.00 G_M44279_IG13: mov r8d, dword ptr [rsi+56] mov rdx, gword ptr [rsi+40] mov rcx, rdi mov r9d, ebx cmp dword ptr [rcx], ecx call StringBuilder:Append(ref,int,int):StringBuilder:this mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+88] call qword ptr [rax+8]StreamReader:ReadBuffer():int:this test eax, eax jg G_M44279_IG08 ;; bbWeight=4 PerfScore 64.00 G_M44279_IG14: mov rcx, rdi mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=0.50 PerfScore 1.25 G_M44279_IG15: add rsp, 40 pop rbx pop rbp pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 2.13 G_M44279_IG16: test rdi, rdi je SHORT G_M44279_IG17 mov r9d, ebx sub r9d, r8d mov rcx, rdi call StringBuilder:Append(ref,int,int):StringBuilder:this mov rcx, rdi mov rax, 0xD1FFAB1E call gword ptr [rax]StringBuilder:ToString():String:this mov rdi, rax jmp SHORT G_M44279_IG18 ;; bbWeight=0.50 PerfScore 4.38 G_M44279_IG17: mov r9d, ebx sub r9d, r8d xor rcx, rcx call String:.ctor(ref,int,int):this mov rdi, rax ;; bbWeight=0.50 PerfScore 1.00 G_M44279_IG18: lea ecx, [rbx+1] mov dword ptr [rsi+56], ecx cmp ebp, 13 jne SHORT G_M44279_IG20 mov ecx, dword ptr [rsi+56] cmp ecx, dword ptr [rsi+60] jl SHORT G_M44279_IG19 mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+88] call qword ptr [rax+8]StreamReader:ReadBuffer():int:this test eax, eax jle SHORT G_M44279_IG20 ;; bbWeight=0.50 PerfScore 8.13 G_M44279_IG19: mov rax, gword ptr [rsi+40] mov ecx, dword ptr [rsi+56] mov edx, ecx cmp edx, dword ptr [rax+8] jae SHORT G_M44279_IG24 movsxd rdx, edx cmp word ptr [rax+2*rdx+16], 10 jne SHORT G_M44279_IG20 inc ecx mov dword ptr [rsi+56], ecx ;; bbWeight=0.50 PerfScore 5.88 G_M44279_IG20: mov rax, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M44279_IG21: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M44279_IG22: mov rcx, rsi call StreamReader:g__ThrowObjectDisposedException|68_0():this int3 ;; bbWeight=0 PerfScore 0.00 G_M44279_IG23: call StreamReader:ThrowAsyncIOInProgress() int3 ;; bbWeight=0 PerfScore 0.00 G_M44279_IG24: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 399, prolog size 11, PerfScore 550.28, (MethodHash=d34e5308) for method StreamReader:ReadLine():String:this ; ============================================================ ; Assembly listing for method StreamReader:ReadBuffer():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 42, 75.50) ref -> rsi this class-hnd ; V01 loc0 [V01,T04] ( 3, 6 ) int -> rax ;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 8 ) int -> rdi "non-inline candidate call" ; V05 tmp2 [V05,T07] ( 2, 2 ) int -> rdi "non-inline candidate call" ; V06 cse0 [V06,T02] ( 6, 12 ) ref -> rdx "CSE - aggressive" ; V07 cse1 [V07,T05] ( 3, 6 ) int -> r8 "CSE - aggressive" ; V08 cse2 [V08,T06] ( 3, 6 ) int -> rcx "CSE - aggressive" ; V09 cse3 [V09,T08] ( 3, 1.50) int -> rcx "CSE - moderate" ; V10 rat0 [V10,T01] ( 12, 39 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 56 G_M42783_IG01: push rdi push rsi sub rsp, 56 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M42783_IG02: xor r9d, r9d mov dword ptr [rsi+60], r9d mov dword ptr [rsi+56], r9d cmp byte ptr [rsi+78], 0 jne SHORT G_M42783_IG04 ;; bbWeight=1 PerfScore 5.25 G_M42783_IG03: xor r9d, r9d mov dword ptr [rsi+64], r9d ;; bbWeight=0.50 PerfScore 0.63 G_M42783_IG04: cmp byte ptr [rsi+78], 0 je SHORT G_M42783_IG10 ;; bbWeight=8 PerfScore 24.00 G_M42783_IG05: mov rdx, gword ptr [rsi+32] mov r9d, dword ptr [rdx+8] mov r8d, dword ptr [rsi+68] sub r9d, r8d mov rcx, gword ptr [rsi+8] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+96] call qword ptr [rax+24]Stream:Read(ref,int,int):int:this test eax, eax jne SHORT G_M42783_IG09 ;; bbWeight=2 PerfScore 33.00 G_M42783_IG06: cmp dword ptr [rsi+64], 0 jle SHORT G_M42783_IG07 mov ecx, dword ptr [rsi+60] mov edi, ecx mov rdx, gword ptr [rsi+40] mov gword ptr [rsp+20H], rdx mov dword ptr [rsp+28H], ecx mov rcx, gword ptr [rsi+24] mov rdx, gword ptr [rsi+32] mov r9d, dword ptr [rsi+64] xor r8d, r8d mov rax, qword ptr [rcx] mov rax, qword ptr [rax+72] call qword ptr [rax+8]Decoder:GetChars(ref,int,int,ref,int):int:this add eax, edi mov dword ptr [rsi+60], eax xor eax, eax mov dword ptr [rsi+64], eax mov dword ptr [rsi+68], eax ;; bbWeight=0.50 PerfScore 13.00 G_M42783_IG07: mov eax, dword ptr [rsi+60] ;; bbWeight=0.50 PerfScore 1.00 G_M42783_IG08: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M42783_IG09: add dword ptr [rsi+64], eax jmp SHORT G_M42783_IG13 ;; bbWeight=2 PerfScore 14.00 G_M42783_IG10: mov rdx, gword ptr [rsi+32] mov r9d, dword ptr [rdx+8] mov rcx, gword ptr [rsi+8] xor r8d, r8d mov rax, qword ptr [rcx] mov rax, qword ptr [rax+96] call qword ptr [rax+24]Stream:Read(ref,int,int):int:this mov dword ptr [rsi+64], eax cmp dword ptr [rsi+64], 0 jne SHORT G_M42783_IG13 ;; bbWeight=2 PerfScore 34.50 G_M42783_IG11: mov eax, dword ptr [rsi+60] ;; bbWeight=0.50 PerfScore 1.00 G_M42783_IG12: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M42783_IG13: mov ecx, dword ptr [rsi+64] mov rax, gword ptr [rsi+32] cmp ecx, dword ptr [rax+8] setl cl mov byte ptr [rsi+79], cl mov rcx, rsi call StreamReader:IsPreamble():bool:this test eax, eax jne SHORT G_M42783_IG16 ;; bbWeight=4 PerfScore 42.00 G_M42783_IG14: cmp byte ptr [rsi+77], 0 je SHORT G_M42783_IG15 cmp dword ptr [rsi+64], 2 jl SHORT G_M42783_IG15 mov rcx, rsi call StreamReader:DetectEncoding():this ;; bbWeight=2 PerfScore 14.50 G_M42783_IG15: mov ecx, dword ptr [rsi+60] mov edi, ecx mov rdx, gword ptr [rsi+40] mov gword ptr [rsp+20H], rdx mov dword ptr [rsp+28H], ecx mov rcx, gword ptr [rsi+24] mov rdx, gword ptr [rsi+32] mov r9d, dword ptr [rsi+64] xor r8d, r8d mov rax, qword ptr [rcx] mov rax, qword ptr [rax+72] call qword ptr [rax+8]Decoder:GetChars(ref,int,int,ref,int):int:this add eax, edi mov dword ptr [rsi+60], eax ;; bbWeight=2 PerfScore 41.50 G_M42783_IG16: cmp dword ptr [rsi+60], 0 je G_M42783_IG04 ;; bbWeight=4 PerfScore 12.00 G_M42783_IG17: mov eax, dword ptr [rsi+60] ;; bbWeight=0.50 PerfScore 1.00 G_M42783_IG18: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 309, prolog size 6, PerfScore 274.15, (MethodHash=a6af58e0) for method StreamReader:ReadBuffer():int:this ; ============================================================ ; Assembly listing for method WindowsConsoleStream:Read(ref,int,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 4, 4 ) int -> rbx ; V03 arg3 [V03,T03] ( 4, 4 ) int -> rbp ; V04 loc0 [V04 ] ( 2, 2 ) int -> [rsp+0x40] do-not-enreg[X] addr-exposed ld-addr-op ; V05 loc1 [V05,T04] ( 3, 2 ) int -> rsi ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 72 G_M16291_IG01: push rdi push rsi push rbp push rbx sub rsp, 72 mov rsi, rcx mov rdi, rdx mov ebx, r8d mov ebp, r9d ;; bbWeight=1 PerfScore 5.25 G_M16291_IG02: mov rcx, rsi mov rdx, rdi mov r8d, ebx mov r9d, ebp call ConsoleStream:ValidateRead(ref,int,int):this movzx rcx, byte ptr [rsi+18] mov dword ptr [rsp+20H], ecx lea rcx, [rsp+40H] mov qword ptr [rsp+28H], rcx movzx rcx, byte ptr [rsi+19] mov dword ptr [rsp+30H], ecx mov rcx, qword ptr [rsi+24] mov rdx, rdi mov r8d, ebx mov r9d, ebp call WindowsConsoleStream:ReadFileNative(long,ref,int,int,bool,byref,bool):int mov esi, eax test esi, esi jne SHORT G_M16291_IG05 ;; bbWeight=1 PerfScore 14.75 G_M16291_IG03: mov eax, dword ptr [rsp+40H] ;; bbWeight=1 PerfScore 1.00 G_M16291_IG04: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M16291_IG05: mov ecx, 153 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov ecx, esi call Win32Marshal:GetExceptionForWin32Error(int,String):Exception mov rcx, rax call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 139, prolog size 8, PerfScore 38.15, (MethodHash=1926c05c) for method WindowsConsoleStream:Read(ref,int,int):int:this ; ============================================================ ; Assembly listing for method ConsoleStream:ValidateRead(ref,int,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 arg2 [V02,T00] ( 5, 4 ) int -> r8 ; V03 arg3 [V03,T02] ( 4, 4 ) int -> r9 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 3, 0 ) ref -> rsi ; V06 tmp2 [V06,T05] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp4 [V08,T07] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp5 [V09,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 tmp7 [V11,T10] ( 2, 0 ) ref -> rcx "argument with side effect" ; V12 tmp8 [V12,T11] ( 2, 0 ) ref -> r8 "argument with side effect" ; V13 tmp9 [V13,T12] ( 2, 0 ) ref -> rcx "argument with side effect" ; V14 tmp10 [V14,T13] ( 2, 0 ) ref -> rdx "argument with side effect" ; V15 tmp11 [V15,T14] ( 2, 0 ) ref -> rcx "argument with side effect" ; V16 tmp12 [V16,T15] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M5715_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M5715_IG02: test rdx, rdx je SHORT G_M5715_IG07 ;; bbWeight=1 PerfScore 1.25 G_M5715_IG03: test r8d, r8d jl SHORT G_M5715_IG08 test r9d, r9d jl SHORT G_M5715_IG08 ;; bbWeight=1 PerfScore 2.50 G_M5715_IG04: mov eax, dword ptr [rdx+8] sub eax, r8d cmp eax, r9d jl G_M5715_IG11 ;; bbWeight=1 PerfScore 3.50 G_M5715_IG05: cmp byte ptr [rcx+16], 0 je G_M5715_IG12 ;; bbWeight=1 PerfScore 3.00 G_M5715_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M5715_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC9F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M5715_IG08: test r8d, r8d jl SHORT G_M5715_IG09 mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] jmp SHORT G_M5715_IG10 ;; bbWeight=0 PerfScore 0.00 G_M5715_IG09: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0 PerfScore 0.00 G_M5715_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 605 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rsi mov rcx, rdi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M5715_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 771 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M5715_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 989 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call NotSupportedException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 348, prolog size 6, PerfScore 49.55, (MethodHash=0202e9ac) for method ConsoleStream:ValidateRead(ref,int,int):this ; ============================================================ ; Assembly listing for method WindowsConsoleStream:ReadFileNative(long,ref,int,int,bool,byref,bool):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 4, 3 ) long -> rcx ; V01 arg1 [V01,T02] ( 4, 3.50) ref -> rdx class-hnd ; V02 arg2 [V02,T01] ( 5, 4 ) int -> [rbp+0x20] ; V03 arg3 [V03,T00] ( 6, 4.50) int -> r9 ;* V04 arg4 [V04 ] ( 0, 0 ) bool -> zero-ref ; V05 arg5 [V05,T07] ( 3, 1.50) byref -> rsi ; V06 arg6 [V06,T10] ( 1, 0.50) bool -> [rbp+0x40] ; V07 loc0 [V07,T08] ( 3, 1.50) bool -> rdi ; V08 loc1 [V08,T05] ( 4, 2 ) int -> rax ; V09 loc2 [V09,T09] ( 3, 1.50) long -> rdx ; V10 loc3 [V10 ] ( 3, 1.50) byref -> [rbp-0x18] must-init pinned ; V11 loc4 [V11 ] ( 2, 1 ) int -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V13 tmp1 [V13,T11] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V14 tmp2 [V14,T12] ( 2, 0 ) ref -> rcx "argument with side effect" ; V15 tmp3 [V15,T13] ( 2, 0 ) ref -> rdx "argument with side effect" ; V16 tmp4 [V16,T06] ( 2, 2 ) long -> rax "Cast away GC" ; V17 cse0 [V17,T04] ( 4, 3.50) int -> r10 "CSE - aggressive" ; ; Lcl frame size = 64 G_M14712_IG01: push rbp push rdi push rsi sub rsp, 64 lea rbp, [rsp+50H] xor rax, rax mov qword ptr [rbp-18H], rax mov rsi, bword ptr [rbp+38H] ;; bbWeight=1 PerfScore 6.00 G_M14712_IG02: mov r10d, dword ptr [rdx+8] mov eax, r10d sub eax, r8d cmp eax, r9d jl G_M14712_IG14 ;; bbWeight=1 PerfScore 3.75 G_M14712_IG03: test r10d, r10d jne SHORT G_M14712_IG06 ;; bbWeight=1 PerfScore 1.25 G_M14712_IG04: xor eax, eax mov dword ptr [rsi], eax ;; bbWeight=0.50 PerfScore 0.63 G_M14712_IG05: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.50 G_M14712_IG06: cmp r10d, 0 jbe G_M14712_IG15 add rdx, 16 mov bword ptr [rbp-18H], rdx mov rax, bword ptr [rbp-18H] mov rdx, rax cmp byte ptr [rbp+40H], 0 je SHORT G_M14712_IG07 xor rax, rax mov qword ptr [rsp+20H], rax movsxd r8, r8d add rdx, r8 mov r8d, r9d mov r9, rsi call Kernel32:ReadFile(long,long,int,byref,long):int test eax, eax setne dil movzx rdi, dil jmp SHORT G_M14712_IG08 ;; bbWeight=0.50 PerfScore 6.25 G_M14712_IG07: mov dword ptr [rbp+20H], r8d xor rax, rax mov qword ptr [rsp+20H], rax mov eax, r9d shr eax, 31 add r9d, eax mov r8d, r9d sar r8d, 1 mov r9d, dword ptr [rbp+20H] movsxd r9, r9d add rdx, r9 lea r9, [rbp-20H] call Kernel32:ReadConsole(long,long,int,byref,long):bool mov edi, eax mov eax, dword ptr [rbp-20H] add eax, eax mov dword ptr [rsi], eax ;; bbWeight=0.50 PerfScore 5.50 G_M14712_IG08: xor rax, rax mov bword ptr [rbp-18H], rax test edi, edi je SHORT G_M14712_IG10 xor eax, eax ;; bbWeight=0.50 PerfScore 1.38 G_M14712_IG09: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.50 G_M14712_IG10: call Marshal:GetLastWin32Error():int cmp eax, 232 je SHORT G_M14712_IG11 cmp eax, 109 jne SHORT G_M14712_IG13 ;; bbWeight=0.50 PerfScore 1.75 G_M14712_IG11: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M14712_IG12: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.50 G_M14712_IG13: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.50 G_M14712_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x63B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call IndexOutOfRangeException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M14712_IG15: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 307, prolog size 18, PerfScore 63.33, (MethodHash=5d66c687) for method WindowsConsoleStream:ReadFileNative(long,ref,int,int,bool,byref,bool):int ; ============================================================ ; Assembly listing for method StreamReader:IsPreamble():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 19, 18 ) ref -> rsi this class-hnd ; V01 loc0 [V01 ] ( 7, 10.50) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V02 loc1 [V02,T08] ( 3, 5 ) int -> rax ; V03 loc2 [V03,T06] ( 4, 12.50) int -> rdi ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T12] ( 2, 2 ) int -> rcx "impAppendStmt" ; V06 tmp2 [V06,T14] ( 3, 1.50) int -> rax ; V07 tmp3 [V07,T04] ( 2, 16 ) int -> r10 "Span.get_Item index" ; V08 tmp4 [V08,T05] ( 2, 16 ) int -> rcx "impAppendStmt" ; V09 tmp5 [V09,T13] ( 2, 2 ) int -> rcx "impAppendStmt" ; V10 tmp6 [V10 ] ( 2, 4.50) byref -> [rsp+0x28] do-not-enreg[X] addr-exposed V01._pointer(offs=0x00) P-DEP "field V01._pointer (fldOffset=0x0)" ; V11 tmp7 [V11 ] ( 6, 6.50) int -> [rsp+0x30] do-not-enreg[X] addr-exposed V01._length(offs=0x08) P-DEP "field V01._length (fldOffset=0x8)" ; V12 tmp8 [V12,T00] ( 3, 24 ) ref -> rcx "arr expr" ; V13 tmp9 [V13,T01] ( 3, 24 ) int -> r9 "index expr" ; V14 cse0 [V14,T11] ( 3, 2.50) int -> rax "CSE - aggressive" ; V15 cse1 [V15,T03] ( 4, 16 ) int -> r8 "CSE - aggressive" ; V16 cse2 [V16,T09] ( 2, 4.50) ref -> rdx "CSE - aggressive" ; V17 cse3 [V17,T15] ( 3, 1.50) int -> rax "CSE - moderate" ; V18 cse4 [V18,T07] ( 3, 12 ) long -> r9 "CSE - aggressive" ; V19 rat0 [V19,T10] ( 3, 3 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 56 G_M5802_IG01: push rdi push rsi sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 3.75 G_M5802_IG02: movzx rax, byte ptr [rsi+78] test eax, eax jne SHORT G_M5802_IG04 ;; bbWeight=1 PerfScore 3.25 G_M5802_IG03: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M5802_IG04: mov rcx, gword ptr [rsi+16] lea rdx, bword ptr [rsp+28H] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+48]Encoding:get_Preamble():ReadOnlySpan`1:this mov eax, dword ptr [rsi+64] mov ecx, eax cmp ecx, dword ptr [rsp+30H] jge SHORT G_M5802_IG05 sub eax, dword ptr [rsi+68] jmp SHORT G_M5802_IG06 ;; bbWeight=0.50 PerfScore 8.88 G_M5802_IG05: mov eax, dword ptr [rsp+30H] sub eax, dword ptr [rsi+68] ;; bbWeight=0.50 PerfScore 1.50 G_M5802_IG06: xor edi, edi test eax, eax jle SHORT G_M5802_IG11 mov rdx, gword ptr [rsi+32] ;; bbWeight=0.50 PerfScore 1.75 G_M5802_IG07: mov rcx, rdx mov r8d, dword ptr [rsi+68] mov r9d, r8d cmp r9d, dword ptr [rcx+8] jae SHORT G_M5802_IG14 movsxd r9, r9d movzx rcx, byte ptr [rcx+r9+16] mov r10d, r8d cmp r10d, dword ptr [rsp+30H] jae SHORT G_M5802_IG14 mov r10, bword ptr [rsp+28H] movzx r9, byte ptr [r10+r9] cmp r9d, ecx jne SHORT G_M5802_IG10 ;; bbWeight=4 PerfScore 57.00 G_M5802_IG08: inc edi inc r8d mov dword ptr [rsi+68], r8d cmp edi, eax jl SHORT G_M5802_IG07 ;; bbWeight=4 PerfScore 11.00 G_M5802_IG09: jmp SHORT G_M5802_IG11 ;; bbWeight=0.50 PerfScore 1.00 G_M5802_IG10: xor eax, eax mov dword ptr [rsi+68], eax mov byte ptr [rsi+78], 0 ;; bbWeight=0.50 PerfScore 1.13 G_M5802_IG11: cmp byte ptr [rsi+78], 0 je SHORT G_M5802_IG12 mov ecx, dword ptr [rsi+68] cmp ecx, dword ptr [rsp+30H] jne SHORT G_M5802_IG12 mov rcx, rsi mov edx, dword ptr [rsp+30H] call StreamReader:CompressBuffer(int):this xor eax, eax mov dword ptr [rsi+68], eax mov byte ptr [rsi+78], 0 mov byte ptr [rsi+77], 0 ;; bbWeight=0.50 PerfScore 6.25 G_M5802_IG12: movzx rax, byte ptr [rsi+78] ;; bbWeight=0.50 PerfScore 1.00 G_M5802_IG13: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M5802_IG14: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 214, prolog size 16, PerfScore 120.15, (MethodHash=1704e955) for method StreamReader:IsPreamble():bool:this ; ============================================================ ; Assembly listing for method DefaultDecoder:GetChars(ref,int,int,ref,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) int -> r8 ; V03 arg3 [V03,T04] ( 3, 3 ) int -> r9 ; V04 arg4 [V04,T05] ( 1, 1 ) ref -> [rsp+0x28] class-hnd ; V05 arg5 [V05,T06] ( 1, 1 ) int -> [rsp+0x30] ;# V06 OutArgs [V06 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V07 rat0 [V07,T00] ( 3, 6 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 0 G_M62223_IG01: ;; bbWeight=1 PerfScore 0.00 G_M62223_IG02: mov rax, gword ptr [rsp+28H] mov gword ptr [rsp+28H], rax mov eax, dword ptr [rsp+30H] mov dword ptr [rsp+30H], eax mov rcx, gword ptr [rcx+24] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+96] mov rax, qword ptr [rax+32] ;; bbWeight=1 PerfScore 12.00 G_M62223_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 36, prolog size 0, PerfScore 17.60, (MethodHash=56f30cf0) for method DefaultDecoder:GetChars(ref,int,int,ref,int):int:this ; ============================================================ ; Assembly listing for method OSEncoding:GetChars(ref,int,int,ref,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 2.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 6, 4.50) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 6, 4.50) int -> r8 ; V03 arg3 [V03,T00] ( 6, 5.50) int -> [rsp+0x68] ; V04 arg4 [V04,T06] ( 3, 2.50) ref -> r11 class-hnd ; V05 arg5 [V05,T05] ( 4, 3 ) int -> r10 ; V06 loc0 [V06,T09] ( 3, 1.50) long -> rdx ; V07 loc1 [V07 ] ( 4, 2 ) ref -> [rsp+0x30] must-init pinned class-hnd ;* V08 loc2 [V08 ] ( 0, 0 ) long -> zero-ref ; V09 loc3 [V09 ] ( 2, 1 ) byref -> [rsp+0x28] must-init pinned ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T10] ( 3, 0 ) ref -> rsi ; V12 tmp2 [V12,T11] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V13 tmp3 [V13,T12] ( 3, 0 ) ref -> rsi ; V14 tmp4 [V14,T13] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V15 tmp5 [V15,T14] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V16 tmp6 [V16,T15] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V17 tmp7 [V17,T16] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V18 tmp8 [V18,T17] ( 2, 0 ) ref -> rcx "argument with side effect" ; V19 tmp9 [V19,T18] ( 2, 0 ) ref -> r8 "argument with side effect" ; V20 tmp10 [V20,T19] ( 2, 0 ) ref -> rcx "argument with side effect" ; V21 tmp11 [V21,T20] ( 2, 0 ) ref -> r8 "argument with side effect" ; V22 tmp12 [V22,T21] ( 2, 0 ) ref -> rcx "argument with side effect" ; V23 tmp13 [V23,T22] ( 2, 0 ) ref -> rdi "argument with side effect" ; V24 tmp14 [V24,T23] ( 2, 0 ) ref -> r8 "argument with side effect" ; V25 tmp15 [V25,T24] ( 2, 0 ) ref -> rcx "argument with side effect" ; V26 tmp16 [V26,T25] ( 2, 0 ) ref -> rdi "argument with side effect" ; V27 tmp17 [V27,T26] ( 2, 0 ) ref -> r8 "argument with side effect" ; V28 tmp18 [V28,T27] ( 2, 0 ) ref -> rcx "argument with side effect" ; V29 tmp19 [V29,T28] ( 2, 0 ) ref -> rdx "argument with side effect" ; V30 tmp20 [V30,T07] ( 2, 2 ) long -> rdx "Cast away GC" ; V31 tmp21 [V31,T08] ( 2, 2 ) long -> rax "Cast away GC" ; V32 cse0 [V32,T04] ( 5, 3.50) int -> rsi "CSE - aggressive" ; ; Lcl frame size = 56 G_M34501_IG01: push rdi push rsi sub rsp, 56 xor rax, rax mov qword ptr [rsp+30H], rax mov qword ptr [rsp+28H], rax mov r11, gword ptr [rsp+70H] mov r10d, dword ptr [rsp+78H] ;; bbWeight=1 PerfScore 6.50 G_M34501_IG02: test rdx, rdx je G_M34501_IG15 test r11, r11 je G_M34501_IG15 ;; bbWeight=1 PerfScore 2.50 G_M34501_IG03: test r8d, r8d jl G_M34501_IG18 test r9d, r9d jl G_M34501_IG18 ;; bbWeight=1 PerfScore 2.50 G_M34501_IG04: mov eax, dword ptr [rdx+8] sub eax, r8d cmp eax, r9d jl G_M34501_IG21 ;; bbWeight=1 PerfScore 3.50 G_M34501_IG05: test r10d, r10d jl G_M34501_IG22 mov esi, dword ptr [r11+8] cmp esi, r10d jl G_M34501_IG22 ;; bbWeight=1 PerfScore 4.50 G_M34501_IG06: mov dword ptr [rsp+68H], r9d test r9d, r9d jne SHORT G_M34501_IG09 ;; bbWeight=1 PerfScore 2.25 G_M34501_IG07: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M34501_IG08: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M34501_IG09: test esi, esi je G_M34501_IG23 ;; bbWeight=0.50 PerfScore 0.63 G_M34501_IG10: mov gword ptr [rsp+30H], rdx mov rdx, gword ptr [rsp+30H] cmp dword ptr [rdx+8], 0 jne SHORT G_M34501_IG12 ;; bbWeight=0.50 PerfScore 2.50 G_M34501_IG11: xor rdx, rdx jmp SHORT G_M34501_IG13 ;; bbWeight=0.50 PerfScore 1.13 G_M34501_IG12: mov rdx, gword ptr [rsp+30H] cmp dword ptr [rdx+8], 0 jbe G_M34501_IG24 mov rdx, gword ptr [rsp+30H] add rdx, 16 ;; bbWeight=0.50 PerfScore 2.63 G_M34501_IG13: cmp esi, 0 jbe G_M34501_IG24 add r11, 16 mov bword ptr [rsp+28H], r11 mov rax, bword ptr [rsp+28H] sub esi, r10d mov dword ptr [rsp+20H], esi movsxd r10, r10d lea r9, [rax+2*r10] movsxd r8, r8d add rdx, r8 mov ecx, dword ptr [rcx+48] mov r8d, dword ptr [rsp+68H] call OSEncoding:MultiByteToWideChar(int,long,int,long,int):int nop ;; bbWeight=0.50 PerfScore 5.13 G_M34501_IG14: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M34501_IG15: test rdx, rdx je SHORT G_M34501_IG16 mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] jmp SHORT G_M34501_IG17 ;; bbWeight=0 PerfScore 0.00 G_M34501_IG16: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0 PerfScore 0.00 G_M34501_IG17: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x925 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rsi mov rcx, rdi call ArgumentNullException:.ctor(String,String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M34501_IG18: test r8d, r8d jl SHORT G_M34501_IG19 mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] jmp SHORT G_M34501_IG20 ;; bbWeight=0 PerfScore 0.00 G_M34501_IG19: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0 PerfScore 0.00 G_M34501_IG20: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 605 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rsi mov rcx, rdi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M34501_IG21: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC2B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x94B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M34501_IG22: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC4B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x9CF mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M34501_IG23: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xA53 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M34501_IG24: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 702, prolog size 18, PerfScore 106.33, (MethodHash=7d84793a) for method OSEncoding:GetChars(ref,int,int,ref,int):int:this ; ============================================================ ; Assembly listing for method OSEncoding:MultiByteToWideChar(int,long,int,long,int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) int -> rsi ; V01 arg1 [V01,T02] ( 3, 3 ) long -> rdi ; V02 arg2 [V02,T03] ( 3, 3 ) int -> rbx ; V03 arg3 [V03,T04] ( 3, 3 ) long -> r14 ; V04 arg4 [V04,T07] ( 1, 1 ) int -> [rbp+0x30] ; V05 loc0 [V05,T06] ( 3, 3 ) int -> rax ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp2 [V08,T05] ( 2, 4 ) int -> rax "Single return block return value" ; V09 FramesRoot [V09,T00] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V10 PInvokeFrame [V10 ] ( 8, 8 ) blk (72) [rbp-0x80] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V11 tmp5 [V11,T09] ( 2, 0 ) ref -> rcx "argument with side effect" ; V12 tmp6 [V12,T10] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 120 G_M54235_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] mov esi, ecx mov rdi, rdx mov ebx, r8d mov r14, r9 ;; bbWeight=1 PerfScore 9.75 G_M54235_IG02: lea rcx, [rbp-78H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-58H], rcx mov rcx, rbp mov qword ptr [rbp-48H], rcx mov qword ptr [rsp+20H], r14 mov r14d, dword ptr [rbp+30H] mov dword ptr [rsp+28H], r14d mov ecx, esi mov r8, rdi mov r9d, ebx xor edx, edx mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M54235_IG05 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [r15+16], rax mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 14.25 G_M54235_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M54235_IG04: call qword ptr [rax]Kernel32:MultiByteToWideChar(int,int,long,int,long,int):int ;; bbWeight=1 PerfScore 3.00 G_M54235_IG05: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M54235_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M54235_IG06: mov rcx, bword ptr [rbp-70H] mov qword ptr [r15+16], rcx test eax, eax jle SHORT G_M54235_IG08 ;; bbWeight=1 PerfScore 3.25 G_M54235_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M54235_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xB45 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 267, prolog size 24, PerfScore 70.20, (MethodHash=93202c24) for method OSEncoding:MultiByteToWideChar(int,long,int,long,int):int ; ============================================================ ; Assembly listing for method String:Ctor(ref,int,int):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T01] ( 5, 4.50) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 5, 4.50) int -> rdi ; V03 arg3 [V03,T00] ( 6, 5.50) int -> r9 ; V04 loc0 [V04,T03] ( 4, 2 ) ref -> rbx class-hnd ; V05 loc1 [V05,T07] ( 2, 1 ) long -> r8 ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T04] ( 2, 2 ) byref -> rcx "impAppendStmt" ; V08 tmp2 [V08,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp3 [V09,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp4 [V10,T10] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V11 tmp5 [V11,T11] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V12 tmp6 [V12,T05] ( 2, 2 ) byref -> rsi "Inlining Arg" ; V13 tmp7 [V13,T06] ( 2, 2 ) byref -> rdx "Inlining Arg" ;* V14 tmp8 [V14 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V15 tmp9 [V15 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V17 tmp11 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V18 tmp12 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V19 tmp13 [V19,T12] ( 2, 0 ) ref -> rdx "argument with side effect" ; V20 tmp14 [V20,T13] ( 2, 0 ) ref -> rcx "argument with side effect" ; V21 tmp15 [V21,T14] ( 2, 0 ) ref -> rdi "argument with side effect" ; V22 tmp16 [V22,T15] ( 2, 0 ) ref -> r8 "argument with side effect" ; V23 tmp17 [V23,T16] ( 2, 0 ) ref -> rcx "argument with side effect" ; V24 tmp18 [V24,T17] ( 2, 0 ) ref -> rdi "argument with side effect" ; V25 tmp19 [V25,T18] ( 2, 0 ) ref -> r8 "argument with side effect" ; V26 tmp20 [V26,T19] ( 2, 0 ) ref -> rcx "argument with side effect" ; V27 tmp21 [V27,T20] ( 2, 0 ) ref -> rdi "argument with side effect" ; V28 tmp22 [V28,T21] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 32 G_M30556_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rdx mov edi, r8d ;; bbWeight=1 PerfScore 3.75 G_M30556_IG02: test rsi, rsi je SHORT G_M30556_IG11 ;; bbWeight=1 PerfScore 1.25 G_M30556_IG03: test edi, edi jl G_M30556_IG12 ;; bbWeight=1 PerfScore 1.25 G_M30556_IG04: test r9d, r9d jl G_M30556_IG13 ;; bbWeight=1 PerfScore 1.25 G_M30556_IG05: mov eax, dword ptr [rsi+8] sub eax, r9d cmp eax, edi jl G_M30556_IG14 ;; bbWeight=1 PerfScore 3.50 G_M30556_IG06: test r9d, r9d jne SHORT G_M30556_IG09 ;; bbWeight=1 PerfScore 1.25 G_M30556_IG07: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M30556_IG08: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M30556_IG09: mov ecx, r9d call String:FastAllocateString(int):String mov rbx, rax mov r8d, dword ptr [rbx+8] lea rcx, bword ptr [rbx+12] add rsi, 16 movsxd rdx, edi lea rdx, bword ptr [rsi+2*rdx] add r8, r8 call Buffer:Memmove(byref,byref,long) mov rax, rbx ;; bbWeight=0.50 PerfScore 3.25 G_M30556_IG10: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M30556_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 773 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M30556_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x194A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA509 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M30556_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 89 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA21D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M30556_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x194A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x9B45 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 461, prolog size 7, PerfScore 65.48, (MethodHash=bde288a3) for method String:Ctor(ref,int,int):String:this ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method Enumerable:SkipWhile(IEnumerable`1,Func`2):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 4, 4 ) ref -> rsi class-hnd ; V02 arg1 [V02,T02] ( 4, 4 ) ref -> rdi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V05 cse0 [V05,T04] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M31819_IG01: push rdi push rsi sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rdx mov rdi, r8 ;; bbWeight=1 PerfScore 3.75 G_M31819_IG02: test rsi, rsi je SHORT G_M31819_IG09 ;; bbWeight=1 PerfScore 1.25 G_M31819_IG03: test rdi, rdi je SHORT G_M31819_IG10 ;; bbWeight=1 PerfScore 1.25 G_M31819_IG04: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M31819_IG06 ;; bbWeight=1 PerfScore 5.25 G_M31819_IG05: jmp SHORT G_M31819_IG07 ;; bbWeight=0.25 PerfScore 0.50 G_M31819_IG06: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M31819_IG07: mov rcx, rdx mov rdx, rsi mov r8, rdi ;; bbWeight=1 PerfScore 0.75 G_M31819_IG08: add rsp, 40 pop rsi pop rdi jmp Enumerable:SkipWhileIterator(IEnumerable`1,Func`2):IEnumerable`1 ;; bbWeight=1 PerfScore 3.25 G_M31819_IG09: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M31819_IG10: mov ecx, 12 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 102, prolog size 17, PerfScore 26.58, (MethodHash=6f5083b4) for method Enumerable:SkipWhile(IEnumerable`1,Func`2):IEnumerable`1 ; ============================================================ ; Assembly listing for method Enumerable:SkipWhileIterator(IEnumerable`1,Func`2):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd ; V02 arg1 [V02,T03] ( 3, 3 ) ref -> rdi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 6, 12 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T06] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V06 tmp3 [V06,T04] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V07 tmp4 [V07,T05] ( 4, 3.25) ref -> rcx ; V08 cse0 [V08,T07] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M44905_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx mov rdi, r8 ;; bbWeight=1 PerfScore 4.75 G_M44905_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M44905_IG04 ;; bbWeight=1 PerfScore 5.25 G_M44905_IG03: jmp SHORT G_M44905_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M44905_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M44905_IG05: mov rcx, rdx call CORINFO_HELP_NEWSFAST mov rbx, rax mov dword ptr [rbx+56], -2 mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M44905_IG07 ;; bbWeight=1 PerfScore 7.25 G_M44905_IG06: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M44905_IG07: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbx+60], eax lea rcx, bword ptr [rbx+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+40] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rbx ;; bbWeight=1 PerfScore 7.75 G_M44905_IG08: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 151, prolog size 12, PerfScore 44.04, (MethodHash=1c9a5096) for method Enumerable:SkipWhileIterator(IEnumerable`1,Func`2):IEnumerable`1 ; ============================================================ ; Assembly listing for method Thread:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M47272_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M47272_IG02: call ProcessorIdCache:ProcessorNumberSpeedCheck():bool mov rdx, 0xD1FFAB1E mov byte ptr [rdx], al ;; bbWeight=1 PerfScore 2.25 G_M47272_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 33, prolog size 10, PerfScore 9.30, (MethodHash=fc824757) for method Thread:.cctor() ; ============================================================ ; Assembly listing for method ProcessorIdCache:ProcessorNumberSpeedCheck():bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T13] ( 10, 17.50) double -> mm6 ; V01 loc1 [V01,T14] ( 10, 17.50) double -> mm7 ; V02 loc2 [V02,T04] ( 3, 64.50) long -> rsi ; V03 loc3 [V03,T05] ( 4, 12.50) int -> rdi ; V04 loc4 [V04,T01] ( 10,264 ) long -> rbp ; V05 loc5 [V05,T00] ( 14,344 ) int -> rbx ; V06 loc6 [V06,T02] ( 4,224 ) int -> r14 ; V07 loc7 [V07,T03] ( 4,224 ) int -> r15 ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09 ] ( 2, 64 ) long -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V10 tmp2 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V11 tmp3 [V11 ] ( 2, 64 ) long -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V12 tmp4 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V13 tmp5 [V13,T15] ( 5, 12 ) double -> mm0 "Inline return value spill temp" ; V14 tmp6 [V14,T11] ( 5, 26 ) double -> mm0 "Inlining Arg" ; V15 tmp7 [V15,T08] ( 2, 2 ) long -> rcx "Inline return value spill temp" ;* V16 tmp8 [V16 ] ( 0, 0 ) double -> zero-ref ld-addr-op "Inlining Arg" ; V17 tmp9 [V17,T17] ( 2, 2 ) simd16 -> mm1 "Inline stloc first use temp" ; V18 tmp10 [V18 ] ( 2, 64 ) long -> [rsp+0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V19 tmp11 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V20 tmp12 [V20 ] ( 2, 64 ) long -> [rsp+0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V21 tmp13 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V22 tmp14 [V22,T16] ( 5, 12 ) double -> mm0 "Inline return value spill temp" ; V23 tmp15 [V23,T12] ( 5, 26 ) double -> mm0 "Inlining Arg" ; V24 tmp16 [V24,T09] ( 2, 2 ) long -> rax "Inline return value spill temp" ;* V25 tmp17 [V25 ] ( 0, 0 ) double -> zero-ref ld-addr-op "Inlining Arg" ; V26 tmp18 [V26,T18] ( 2, 2 ) simd16 -> mm1 "Inline stloc first use temp" ; V27 tmp19 [V27,T10] ( 3, 1.50) int -> rdx "Inline return value spill temp" ; V28 tmp20 [V28,T06] ( 3, 3 ) int -> rax "Inlining Arg" ; V29 rat0 [V29,T07] ( 3, 3 ) long -> rdx "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 104 G_M62518_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 104 vzeroupper vmovaps qword ptr [rsp+50H], xmm6 vmovaps qword ptr [rsp+40H], xmm7 ;; bbWeight=1 PerfScore 13.25 G_M62518_IG02: vmovsd xmm6, qword ptr [reloc @RWD08] vmovsd xmm7, qword ptr [reloc @RWD24] call ProcessorIdCache:UninlinedThreadStatic():int call Thread:GetCurrentProcessorNumber():int test eax, eax jge SHORT G_M62518_IG05 ;; bbWeight=1 PerfScore 7.25 G_M62518_IG03: mov rax, 0xD1FFAB1E mov dword ptr [rax], 0xFFFF xor eax, eax ;; bbWeight=0.50 PerfScore 0.75 G_M62518_IG04: vmovaps xmm6, qword ptr [rsp+50H] vmovaps xmm7, qword ptr [rsp+40H] add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 6.13 G_M62518_IG05: mov rcx, 0xD1FFAB1E mov edx, 0x6F9 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rdx, 0xD1FFAB1E mov rax, rdx imul rdx:rax, qword ptr [rcx] mov rcx, rdx shr rcx, 63 sar rdx, 18 lea rsi, [rdx+rcx+1] xor edi, edi ;; bbWeight=0.50 PerfScore 4.88 G_M62518_IG06: mov ebx, 8 ;; bbWeight=4 PerfScore 1.00 G_M62518_IG07: add ebx, ebx lea rcx, [rsp+38H] ;; bbWeight=32 PerfScore 24.00 G_M62518_IG08: call Kernel32:QueryPerformanceCounter(long):int mov rbp, qword ptr [rsp+38H] xor r14d, r14d mov rax, 0xD1FFAB1E cmp dword ptr [rax], 0 jne G_M62518_IG41 ;; bbWeight=32 PerfScore 176.00 G_M62518_IG09: test ebx, ebx jle SHORT G_M62518_IG11 ;; bbWeight=32 PerfScore 40.00 G_M62518_IG10: call Thread:GetCurrentProcessorNumber():int inc r14d cmp r14d, ebx jl SHORT G_M62518_IG10 ;; bbWeight=64 PerfScore 160.00 G_M62518_IG11: lea rcx, [rsp+30H] ;; bbWeight=32 PerfScore 16.00 G_M62518_IG12: call Kernel32:QueryPerformanceCounter(long):int mov rcx, qword ptr [rsp+30H] sub rcx, rbp mov rbp, rcx mov rcx, 0xD1FFAB1E cmp dword ptr [rcx], 0 jne G_M62518_IG42 ;; bbWeight=32 PerfScore 184.00 G_M62518_IG13: cmp rbp, rsi jl SHORT G_M62518_IG07 ;; bbWeight=32 PerfScore 40.00 G_M62518_IG14: vxorps xmm0, xmm0 vcvtsi2sd xmm0, rbp vxorps xmm1, xmm1 vcvtsi2sd xmm1, ebx vdivsd xmm0, xmm0, xmm1 vucomisd xmm6, xmm0 jp SHORT G_M62518_IG15 je SHORT G_M62518_IG18 ;; bbWeight=4 PerfScore 102.67 G_M62518_IG15: vucomisd xmm6, xmm6 jp SHORT G_M62518_IG18 vucomisd xmm0, xmm6 ja SHORT G_M62518_IG17 ;; bbWeight=1 PerfScore 4.00 G_M62518_IG16: jmp SHORT G_M62518_IG21 ;; bbWeight=2 PerfScore 4.00 G_M62518_IG17: vmovaps xmm0, xmm6 jmp SHORT G_M62518_IG21 ;; bbWeight=2 PerfScore 4.50 G_M62518_IG18: vmovaps xmm1, xmm6 vmovd rcx, xmm1 test rcx, rcx jl SHORT G_M62518_IG20 ;; bbWeight=1 PerfScore 2.50 G_M62518_IG19: jmp SHORT G_M62518_IG21 ;; bbWeight=2 PerfScore 4.00 G_M62518_IG20: vmovaps xmm0, xmm6 ;; bbWeight=2 PerfScore 0.50 G_M62518_IG21: vmovaps xmm6, xmm0 mov ecx, ebx sar ecx, 31 and ecx, 3 add ecx, ebx mov ebx, ecx sar ebx, 2 ;; bbWeight=4 PerfScore 21.00 G_M62518_IG22: add ebx, ebx lea rcx, [rsp+28H] ;; bbWeight=32 PerfScore 24.00 G_M62518_IG23: call Kernel32:QueryPerformanceCounter(long):int mov rbp, qword ptr [rsp+28H] xor r15d, r15d mov rax, 0xD1FFAB1E cmp dword ptr [rax], 0 jne G_M62518_IG43 ;; bbWeight=32 PerfScore 176.00 G_M62518_IG24: test ebx, ebx jle SHORT G_M62518_IG26 ;; bbWeight=32 PerfScore 40.00 G_M62518_IG25: call ProcessorIdCache:UninlinedThreadStatic():int inc r15d cmp r15d, ebx jl SHORT G_M62518_IG25 ;; bbWeight=64 PerfScore 160.00 G_M62518_IG26: lea rcx, [rsp+20H] ;; bbWeight=32 PerfScore 16.00 G_M62518_IG27: call Kernel32:QueryPerformanceCounter(long):int mov rax, qword ptr [rsp+20H] sub rax, rbp mov rbp, rax mov rax, 0xD1FFAB1E cmp dword ptr [rax], 0 jne G_M62518_IG44 ;; bbWeight=32 PerfScore 184.00 G_M62518_IG28: cmp rbp, rsi jl SHORT G_M62518_IG22 ;; bbWeight=32 PerfScore 40.00 G_M62518_IG29: vxorps xmm0, xmm0 vcvtsi2sd xmm0, rbp vxorps xmm1, xmm1 vcvtsi2sd xmm1, ebx vdivsd xmm0, xmm0, xmm1 vucomisd xmm7, xmm0 jp SHORT G_M62518_IG30 je SHORT G_M62518_IG33 ;; bbWeight=4 PerfScore 102.67 G_M62518_IG30: vucomisd xmm7, xmm7 jp SHORT G_M62518_IG33 vucomisd xmm0, xmm7 ja SHORT G_M62518_IG32 ;; bbWeight=1 PerfScore 4.00 G_M62518_IG31: jmp SHORT G_M62518_IG36 ;; bbWeight=2 PerfScore 4.00 G_M62518_IG32: vmovaps xmm0, xmm7 jmp SHORT G_M62518_IG36 ;; bbWeight=2 PerfScore 4.50 G_M62518_IG33: vmovaps xmm1, xmm7 vmovd rax, xmm1 test rax, rax jl SHORT G_M62518_IG35 ;; bbWeight=1 PerfScore 2.50 G_M62518_IG34: jmp SHORT G_M62518_IG36 ;; bbWeight=2 PerfScore 4.00 G_M62518_IG35: vmovaps xmm0, xmm7 ;; bbWeight=2 PerfScore 0.50 G_M62518_IG36: vmovaps xmm7, xmm0 inc edi cmp edi, 10 jl G_M62518_IG06 ;; bbWeight=4 PerfScore 7.00 G_M62518_IG37: vmulsd xmm0, xmm6, qword ptr [reloc @RWD40] vdivsd xmm0, xmm0, xmm7 vcvttsd2si eax, xmm0 cmp eax, 0x1388 jle SHORT G_M62518_IG38 mov edx, 0x1388 jmp SHORT G_M62518_IG39 ;; bbWeight=0.50 PerfScore 12.75 G_M62518_IG38: mov edx, eax ;; bbWeight=0.50 PerfScore 0.13 G_M62518_IG39: mov rax, 0xD1FFAB1E mov dword ptr [rax], edx cmp dword ptr [rax], 5 setle al movzx rax, al ;; bbWeight=0.50 PerfScore 2.25 G_M62518_IG40: vmovaps xmm6, qword ptr [rsp+50H] vmovaps xmm7, qword ptr [rsp+40H] add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 6.13 G_M62518_IG41: call CORINFO_HELP_POLL_GC jmp G_M62518_IG09 ;; bbWeight=0 PerfScore 0.00 G_M62518_IG42: call CORINFO_HELP_POLL_GC jmp G_M62518_IG13 ;; bbWeight=0 PerfScore 0.00 G_M62518_IG43: call CORINFO_HELP_POLL_GC jmp G_M62518_IG24 ;; bbWeight=0 PerfScore 0.00 G_M62518_IG44: call CORINFO_HELP_POLL_GC jmp G_M62518_IG28 ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 7FEFFFFFFFFFFFFFh RWD16 dq 0000000000000000h RWD24 dq 7FEFFFFFFFFFFFFFh RWD32 dq 0000000000000000h RWD40 dq 4014000000000000h ; Total bytes of code 661, prolog size 27, PerfScore 1676.23, (MethodHash=97190bc9) for method ProcessorIdCache:ProcessorNumberSpeedCheck():bool ; ============================================================ ; Assembly listing for method ProcessorIdCache:UninlinedThreadStatic():int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M15615_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M15615_IG02: mov rcx, 0xD1FFAB1E mov edx, 635 call CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE_NOCTOR mov eax, dword ptr [rax+0888H] ;; bbWeight=1 PerfScore 3.50 G_M15615_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 35, prolog size 4, PerfScore 8.50, (MethodHash=d0ecc300) for method ProcessorIdCache:UninlinedThreadStatic():int ; ============================================================ ; Assembly listing for method Stopwatch:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M16375_IG01: push rbp sub rsp, 32 vzeroupper lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 2.75 G_M16375_IG02: call Stopwatch:QueryPerformanceFrequency():long mov rdx, 0xD1FFAB1E mov qword ptr [rdx], rax mov rax, 0xD1FFAB1E mov byte ptr [rax], 1 vxorps xmm0, xmm0 vcvtsi2sd xmm0, qword ptr [rdx] vmovsd xmm1, qword ptr [reloc @RWD08] vdivsd xmm0, xmm1, xmm0 mov rax, 0xD1FFAB1E vmovsd qword ptr [rax], xmm0 ;; bbWeight=1 PerfScore 26.58 G_M16375_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 RWD00 dq 0000000000000000h RWD08 dq 416312D000000000h ; Total bytes of code 85, prolog size 13, PerfScore 40.23, (MethodHash=1481c008) for method Stopwatch:.cctor() ; ============================================================ ; Assembly listing for method Stopwatch:QueryPerformanceFrequency():long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00 ] ( 2, 2 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op ;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 4 ) long -> rax "Single return block return value" ; V04 FramesRoot [V04,T00] ( 6, 6 ) long -> rsi "Pinvoke FrameListRoot" ; V05 PInvokeFrame [V05 ] ( 8, 8 ) blk (72) [rbp-0x88] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 120 G_M10070_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] ;; bbWeight=1 PerfScore 8.75 G_M10070_IG02: lea rcx, [rbp-80H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rsi, rax mov rcx, rsp mov qword ptr [rbp-60H], rcx mov rcx, rbp mov qword ptr [rbp-50H], rcx lea rcx, [rbp-40H] mov rax, 0xD1FFAB1E mov qword ptr [rbp-70H], rax lea rax, G_M10070_IG05 mov qword ptr [rbp-58H], rax lea rax, bword ptr [rbp-80H] mov qword ptr [rsi+16], rax mov byte ptr [rsi+12], 0 ;; bbWeight=1 PerfScore 10.75 G_M10070_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M10070_IG04: call qword ptr [rax]Kernel32:QueryPerformanceFrequency(long):int ;; bbWeight=1 PerfScore 3.00 G_M10070_IG05: mov byte ptr [rsi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M10070_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M10070_IG06: mov rax, bword ptr [rbp-78H] mov qword ptr [rsi+16], rax mov rax, qword ptr [rbp-40H] ;; bbWeight=1 PerfScore 3.00 G_M10070_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 166, prolog size 24, PerfScore 55.35, (MethodHash=908fd8a9) for method Stopwatch:QueryPerformanceFrequency():long ; ============================================================ ; Assembly listing for method Thread:InitializeCurrentThread():Thread ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 3, 6 ) ref -> rsi class-hnd "dup spill" ; ; Lcl frame size = 32 G_M6900_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M6900_IG02: call Thread:GetCurrentThreadNative():Thread mov rsi, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE lea rcx, bword ptr [rax+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rax, rsi ;; bbWeight=1 PerfScore 4.75 G_M6900_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 54, prolog size 5, PerfScore 13.15, (MethodHash=00f6e50b) for method Thread:InitializeCurrentThread():Thread ; ============================================================ ; Assembly listing for method Enumerable:Skip(IEnumerable`1,int):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T01] ( 10, 5.25) long -> rdi ; V01 arg0 [V01,T00] ( 8, 5.50) ref -> rsi class-hnd ; V02 arg1 [V02,T02] ( 6, 4.50) int -> rbx ; V03 loc0 [V03,T10] ( 3, 1.50) ref -> r14 class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T06] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V06 tmp2 [V06,T07] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V07 tmp3 [V07,T04] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V09 tmp5 [V09,T08] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V10 tmp6 [V10,T09] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V11 cse0 [V11,T05] ( 6, 2.50) long -> rcx "CSE - aggressive" ; V12 cse1 [V12,T11] ( 3, 1.25) long -> rcx "CSE - moderate" ; V13 cse2 [V13,T12] ( 3, 1.25) long -> r11 "CSE - moderate" ; V14 cse3 [V14,T13] ( 3, 1.25) long -> rcx "CSE - moderate" ; V15 cse4 [V15,T03] ( 7, 3.50) long -> rbp "CSE - aggressive" ; ; Lcl frame size = 48 G_M58923_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rdi, rcx mov rsi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 7.00 G_M58923_IG02: test rsi, rsi je G_M58923_IG27 ;; bbWeight=1 PerfScore 1.25 G_M58923_IG03: test ebx, ebx jg SHORT G_M58923_IG14 ;; bbWeight=1 PerfScore 1.25 G_M58923_IG04: mov rbp, qword ptr [rdi+16] mov rcx, qword ptr [rbp+40] test rcx, rcx je SHORT G_M58923_IG06 ;; bbWeight=0.50 PerfScore 2.63 G_M58923_IG05: jmp SHORT G_M58923_IG07 ;; bbWeight=0.25 PerfScore 0.50 G_M58923_IG06: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M58923_IG07: mov rdx, rsi call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax jne SHORT G_M58923_IG11 mov rcx, qword ptr [rbp+16] test rcx, rcx je SHORT G_M58923_IG09 ;; bbWeight=0.50 PerfScore 2.88 G_M58923_IG08: jmp SHORT G_M58923_IG10 ;; bbWeight=0.25 PerfScore 0.50 G_M58923_IG09: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M58923_IG10: mov rdx, rsi call CORINFO_HELP_ISINSTANCEOFINTERFACE test rax, rax je SHORT G_M58923_IG13 ;; bbWeight=0.50 PerfScore 1.25 G_M58923_IG11: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M58923_IG12: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M58923_IG13: xor ebx, ebx jmp SHORT G_M58923_IG22 ;; bbWeight=0.50 PerfScore 1.13 G_M58923_IG14: mov rbp, qword ptr [rdi+16] mov rcx, qword ptr [rbp+16] test rcx, rcx je SHORT G_M58923_IG16 ;; bbWeight=0.50 PerfScore 2.63 G_M58923_IG15: jmp SHORT G_M58923_IG17 ;; bbWeight=0.25 PerfScore 0.50 G_M58923_IG16: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M58923_IG17: mov rdx, rsi call CORINFO_HELP_ISINSTANCEOFINTERFACE mov r14, rax test r14, r14 je SHORT G_M58923_IG22 mov r11, qword ptr [rbp+32] test r11, r11 je SHORT G_M58923_IG19 ;; bbWeight=0.50 PerfScore 3.00 G_M58923_IG18: jmp SHORT G_M58923_IG20 ;; bbWeight=0.25 PerfScore 0.50 G_M58923_IG19: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=0.25 PerfScore 0.44 G_M58923_IG20: mov rcx, r14 mov edx, ebx mov rax, qword ptr [r11] ;; bbWeight=0.50 PerfScore 1.25 G_M58923_IG21: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 rex.jmp rax ;; bbWeight=0.50 PerfScore 2.38 G_M58923_IG22: mov rcx, qword ptr [rbp+24] test rcx, rcx je SHORT G_M58923_IG24 ;; bbWeight=0.50 PerfScore 1.63 G_M58923_IG23: jmp SHORT G_M58923_IG25 ;; bbWeight=0.25 PerfScore 0.50 G_M58923_IG24: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M58923_IG25: mov rdx, rsi mov r8d, ebx ;; bbWeight=0.50 PerfScore 0.25 G_M58923_IG26: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 jmp Enumerable:SkipIterator(IEnumerable`1,int):IEnumerable`1 ;; bbWeight=0.50 PerfScore 2.38 G_M58923_IG27: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 318, prolog size 24, PerfScore 69.36, (MethodHash=478119d4) for method Enumerable:Skip(IEnumerable`1,int):IEnumerable`1 ; ============================================================ ; Assembly listing for method Enumerable:SkipIterator(IEnumerable`1,int):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 7, 4.75) long -> rsi ; V01 arg0 [V01,T03] ( 4, 3.50) ref -> rdi class-hnd ; V02 arg1 [V02,T04] ( 4, 3 ) int -> rbx ; V03 loc0 [V03,T07] ( 3, 2.50) ref -> r14 class-hnd ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ; V07 tmp2 [V07,T01] ( 6, 6 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp3 [V08,T09] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V09 tmp4 [V09,T02] ( 6, 6 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V10 tmp5 [V10,T10] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V11 tmp6 [V11,T11] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V12 tmp7 [V12,T13] ( 4, 1.75) ref -> rcx ; V13 tmp8 [V13,T12] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V14 tmp9 [V14,T14] ( 4, 1.75) ref -> rcx ; V15 cse0 [V15,T15] ( 3, 1.25) long -> rcx "CSE - moderate" ; V16 cse1 [V16,T16] ( 3, 1.25) long -> rcx "CSE - moderate" ; V17 cse2 [V17,T08] ( 3, 2.25) long -> rcx "CSE - aggressive" ; V18 cse3 [V18,T05] ( 4, 3 ) long -> rbp "CSE - aggressive" ; ; Lcl frame size = 48 G_M21321_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx mov rdi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 7.00 G_M21321_IG02: mov rbp, qword ptr [rsi+16] mov rcx, qword ptr [rbp+16] test rcx, rcx je SHORT G_M21321_IG04 ;; bbWeight=1 PerfScore 5.25 G_M21321_IG03: jmp SHORT G_M21321_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M21321_IG04: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M21321_IG05: mov rdx, rdi call CORINFO_HELP_ISINSTANCEOFINTERFACE mov r14, rax test r14, r14 jne SHORT G_M21321_IG13 ;; bbWeight=1 PerfScore 2.75 G_M21321_IG06: mov rcx, qword ptr [rbp+32] test rcx, rcx je SHORT G_M21321_IG08 ;; bbWeight=0.50 PerfScore 1.63 G_M21321_IG07: jmp SHORT G_M21321_IG09 ;; bbWeight=0.25 PerfScore 0.50 G_M21321_IG08: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M21321_IG09: call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M21321_IG11 ;; bbWeight=0.50 PerfScore 3.00 G_M21321_IG10: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M21321_IG11: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbp+16], eax lea rcx, bword ptr [rbp+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbp+40], ebx mov dword ptr [rbp+44], -1 mov rax, rbp ;; bbWeight=0.50 PerfScore 4.00 G_M21321_IG12: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M21321_IG13: mov rcx, qword ptr [rbp+24] test rcx, rcx je SHORT G_M21321_IG15 ;; bbWeight=0.50 PerfScore 1.63 G_M21321_IG14: jmp SHORT G_M21321_IG16 ;; bbWeight=0.25 PerfScore 0.50 G_M21321_IG15: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M21321_IG16: call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M21321_IG18 ;; bbWeight=0.50 PerfScore 3.00 G_M21321_IG17: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M21321_IG18: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rsi+16], eax lea rcx, bword ptr [rsi+24] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+32], ebx mov dword ptr [rsi+36], 0xD1FFAB1E mov rax, rsi ;; bbWeight=0.50 PerfScore 4.00 G_M21321_IG19: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 ; Total bytes of code 322, prolog size 15, PerfScore 71.64, (MethodHash=4993acb6) for method Enumerable:SkipIterator(IEnumerable`1,int):IEnumerable`1 ; ============================================================ ; Assembly listing for method Enumerable:TryGetFirst(IEnumerable`1,byref):__Canon ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 11, 6.60) long -> rsi ; V01 arg0 [V01,T02] ( 6, 6 ) ref -> rdi class-hnd ; V02 arg1 [V02,T03] ( 6, 6 ) byref -> rbx ; V03 loc0 [V03,T16] ( 3, 3 ) ref -> r15 class-hnd ; V04 loc1 [V04,T13] ( 4, 4 ) ref -> r15 class-hnd ; V05 loc2 [V05,T04] ( 6, 6 ) ref -> [rbp-0x38] EH do-not-enreg[] class-hnd EH-live ; V06 loc3 [V06,T24] ( 2, 2 ) ref -> [rbp-0x40] EH do-not-enreg[] must-init class-hnd EH-live ;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T14] ( 3, 4 ) long -> rcx "spilling Runtime Lookup tree" ; V10 tmp2 [V10,T15] ( 3, 4 ) long -> rcx "spilling Runtime Lookup tree" ; V11 tmp3 [V11,T05] ( 4, 6 ) long -> r11 "spilling Runtime Lookup tree" ;* V12 tmp4 [V12 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V13 tmp5 [V13,T06] ( 4, 6 ) long -> r11 "spilling Runtime Lookup tree" ;* V14 tmp6 [V14 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V15 tmp7 [V15,T10] ( 3, 5.60) long -> rcx "impRuntimeLookup indirectOffset" ; V16 tmp8 [V16,T07] ( 4, 6 ) long -> r11 "spilling Runtime Lookup tree" ;* V17 tmp9 [V17 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V18 tmp10 [V18,T11] ( 3, 5.60) long -> rcx "impRuntimeLookup indirectOffset" ; V19 tmp11 [V19,T08] ( 4, 6 ) long -> r11 "spilling Runtime Lookup tree" ;* V20 tmp12 [V20 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V21 tmp13 [V21,T12] ( 3, 5.60) long -> r14 "impRuntimeLookup indirectOffset" ; V22 tmp14 [V22,T09] ( 4, 6 ) long -> r11 "spilling Runtime Lookup tree" ;* V23 tmp15 [V23 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V24 PSPSym [V24 ] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "PSPSym" ; V25 tmp17 [V25,T25] ( 2, 2 ) ref -> rax "optAddCopies" ; V26 cse0 [V26,T17] ( 3, 2.50) long -> rcx "CSE - moderate" ; V27 cse1 [V27,T18] ( 3, 2.50) long -> rcx "CSE - moderate" ; V28 cse2 [V28,T19] ( 3, 2.50) long -> r11 "CSE - moderate" ; V29 cse3 [V29,T20] ( 3, 2.50) long -> r11 "CSE - moderate" ; V30 cse4 [V30,T01] ( 8, 8 ) long -> r14 "CSE - aggressive" ; V31 cse5 [V31,T21] ( 3, 2.40) long -> r11 "CSE - moderate" ; V32 cse6 [V32,T22] ( 3, 2.40) long -> r11 "CSE - moderate" ; V33 cse7 [V33,T23] ( 3, 2.40) long -> r11 "CSE - moderate" ; ; Lcl frame size = 72 G_M41339_IG01: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 72 lea rbp, [rsp+70H] xor rax, rax mov qword ptr [rbp-40H], rax mov qword ptr [rbp-50H], rsp mov qword ptr [rbp-30H], rcx mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 10.75 G_M41339_IG02: test rdi, rdi je G_M41339_IG37 ;; bbWeight=1 PerfScore 1.25 G_M41339_IG03: mov r14, qword ptr [rsi+16] mov rcx, qword ptr [r14+16] test rcx, rcx je SHORT G_M41339_IG05 ;; bbWeight=1 PerfScore 5.25 G_M41339_IG04: jmp SHORT G_M41339_IG06 ;; bbWeight=0.50 PerfScore 1.00 G_M41339_IG05: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.50 PerfScore 0.88 G_M41339_IG06: mov rdx, rdi call CORINFO_HELP_ISINSTANCEOFINTERFACE mov r15, rax test r15, r15 je SHORT G_M41339_IG11 cmp qword ptr [r14+8], 64 jle SHORT G_M41339_IG08 ;; bbWeight=1 PerfScore 5.75 G_M41339_IG07: mov r11, qword ptr [r14+64] test r11, r11 je SHORT G_M41339_IG08 jmp SHORT G_M41339_IG09 ;; bbWeight=0.80 PerfScore 4.20 G_M41339_IG08: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=0.20 PerfScore 0.35 G_M41339_IG09: mov rcx, r15 mov rdx, rbx call gword ptr [r11] nop ;; bbWeight=1 PerfScore 3.75 G_M41339_IG10: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 4.50 G_M41339_IG11: mov rcx, qword ptr [r14+24] test rcx, rcx je SHORT G_M41339_IG13 ;; bbWeight=1 PerfScore 3.25 G_M41339_IG12: jmp SHORT G_M41339_IG14 ;; bbWeight=0.50 PerfScore 1.00 G_M41339_IG13: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.50 PerfScore 0.88 G_M41339_IG14: mov rdx, rdi call CORINFO_HELP_ISINSTANCEOFINTERFACE mov r15, rax test r15, r15 je SHORT G_M41339_IG22 mov rcx, r14 cmp qword ptr [rcx+8], 48 jle SHORT G_M41339_IG16 ;; bbWeight=1 PerfScore 6.00 G_M41339_IG15: mov r11, qword ptr [rcx+48] test r11, r11 je SHORT G_M41339_IG16 jmp SHORT G_M41339_IG17 ;; bbWeight=0.80 PerfScore 4.20 G_M41339_IG16: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=0.20 PerfScore 0.35 G_M41339_IG17: mov rcx, r15 call qword ptr [r11] test eax, eax jle G_M41339_IG35 mov byte ptr [rbx], 1 mov rcx, r14 cmp qword ptr [rcx+8], 56 jle SHORT G_M41339_IG19 ;; bbWeight=1 PerfScore 8.75 G_M41339_IG18: mov r11, qword ptr [rcx+56] test r11, r11 je SHORT G_M41339_IG19 jmp SHORT G_M41339_IG20 ;; bbWeight=0.80 PerfScore 4.20 G_M41339_IG19: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=0.20 PerfScore 0.35 G_M41339_IG20: mov rcx, r15 xor edx, edx call gword ptr [r11] nop ;; bbWeight=1 PerfScore 3.75 G_M41339_IG21: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 4.50 G_M41339_IG22: mov r11, qword ptr [r14+32] test r11, r11 je SHORT G_M41339_IG24 ;; bbWeight=1 PerfScore 3.25 G_M41339_IG23: jmp SHORT G_M41339_IG25 ;; bbWeight=0.50 PerfScore 1.00 G_M41339_IG24: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=0.50 PerfScore 0.88 G_M41339_IG25: mov rcx, rdi call gword ptr [r11] mov gword ptr [rbp-38H], rax ;; bbWeight=1 PerfScore 4.25 G_M41339_IG26: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M41339_IG30 mov byte ptr [rbx], 1 mov r11, qword ptr [r14+40] test r11, r11 je SHORT G_M41339_IG28 ;; bbWeight=1 PerfScore 10.00 G_M41339_IG27: jmp SHORT G_M41339_IG29 ;; bbWeight=0.50 PerfScore 1.00 G_M41339_IG28: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=0.50 PerfScore 0.88 G_M41339_IG29: mov rcx, gword ptr [rbp-38H] call gword ptr [r11] mov gword ptr [rbp-40H], rax jmp SHORT G_M41339_IG31 ;; bbWeight=1 PerfScore 7.00 G_M41339_IG30: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this jmp SHORT G_M41339_IG35 ;; bbWeight=1 PerfScore 6.50 G_M41339_IG31: mov rcx, rsp call G_M41339_IG38 ;; bbWeight=1 PerfScore 1.25 G_M41339_IG32: nop ;; bbWeight=1 PerfScore 0.25 G_M41339_IG33: mov rax, gword ptr [rbp-40H] ;; bbWeight=1 PerfScore 1.00 G_M41339_IG34: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 4.50 G_M41339_IG35: mov byte ptr [rbx], 0 xor rax, rax ;; bbWeight=1 PerfScore 1.25 G_M41339_IG36: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 4.50 G_M41339_IG37: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M41339_IG38: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+70H] ;; bbWeight=1 PerfScore 9.75 G_M41339_IG39: cmp gword ptr [rbp-38H], 0 je SHORT G_M41339_IG40 mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=1 PerfScore 6.50 G_M41339_IG40: nop ;; bbWeight=1 PerfScore 0.25 G_M41339_IG41: add rsp, 40 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 609, prolog size 40, PerfScore 204.05, (MethodHash=4f225e84) for method Enumerable:TryGetFirst(IEnumerable`1,byref):__Canon ; ============================================================ ; Assembly listing for method EnumerablePartition`1:TryGetFirst(byref):__Canon:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 6 ) ref -> [rbp+0x10] EH do-not-enreg[] this class-hnd EH-live ; V01 arg1 [V01,T02] ( 4, 4 ) byref -> rsi ; V02 loc0 [V02,T00] ( 8, 8 ) ref -> [rbp-0x30] EH do-not-enreg[] class-hnd EH-live ; V03 loc1 [V03,T13] ( 2, 2 ) ref -> [rbp-0x38] EH do-not-enreg[] must-init class-hnd EH-live ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 3, 5 ) long -> rcx "impRuntimeLookup slot" ; V07 tmp2 [V07,T07] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V08 tmp3 [V08,T03] ( 4, 6 ) long -> r11 "spilling Runtime Lookup tree" ;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V10 tmp5 [V10,T10] ( 2, 3 ) long -> rcx "impRuntimeLookup slot" ; V11 tmp6 [V11,T04] ( 4, 6 ) long -> r11 "spilling Runtime Lookup tree" ;* V12 tmp7 [V12 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V13 tmp8 [V13,T05] ( 3, 6 ) int -> rdi "Inlining Arg" ; V14 PSPSym [V14 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ; V15 tmp10 [V15,T14] ( 2, 2 ) ref -> rax "optAddCopies" ; V16 cse0 [V16,T11] ( 3, 2.50) long -> r11 "CSE - aggressive" ; V17 cse1 [V17,T12] ( 3, 2.50) long -> r11 "CSE - aggressive" ; V18 cse2 [V18,T08] ( 3, 3 ) long -> r14 "CSE - aggressive" ; V19 cse3 [V19,T09] ( 3, 3 ) long -> rbx "CSE - aggressive" ; ; Lcl frame size = 64 G_M5646_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 lea rbp, [rsp+60H] xor rax, rax mov qword ptr [rbp-38H], rax mov qword ptr [rbp-40H], rsp mov qword ptr [rbp-28H], rcx mov gword ptr [rbp+10H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 10.25 G_M5646_IG02: mov rcx, gword ptr [rbp+10H] mov rdi, gword ptr [rcx+24] mov rcx, gword ptr [rbp+10H] mov rbx, qword ptr [rcx] mov rcx, rbx mov rdx, qword ptr [rcx+48] mov r14, qword ptr [rdx+8] mov r11, qword ptr [r14+16] test r11, r11 je SHORT G_M5646_IG04 ;; bbWeight=1 PerfScore 13.50 G_M5646_IG03: jmp SHORT G_M5646_IG05 ;; bbWeight=0.50 PerfScore 1.00 G_M5646_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.50 PerfScore 0.75 G_M5646_IG05: mov rcx, rdi call gword ptr [r11] mov gword ptr [rbp-30H], rax ;; bbWeight=1 PerfScore 4.25 G_M5646_IG06: mov rcx, gword ptr [rbp+10H] mov edi, dword ptr [rcx+40] mov rcx, rbx mov edx, edi mov r8, gword ptr [rbp-30H] call EnumerablePartition`1:SkipAndCount(int,IEnumerator`1):int cmp eax, edi jne SHORT G_M5646_IG10 mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M5646_IG10 mov byte ptr [rsi], 1 mov rcx, gword ptr [rbp+10H] mov rcx, qword ptr [rcx] mov r11, qword ptr [r14+24] test r11, r11 je SHORT G_M5646_IG08 ;; bbWeight=1 PerfScore 19.75 G_M5646_IG07: jmp SHORT G_M5646_IG09 ;; bbWeight=0.50 PerfScore 1.00 G_M5646_IG08: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.50 PerfScore 0.75 G_M5646_IG09: mov rcx, gword ptr [rbp-30H] call gword ptr [r11] mov gword ptr [rbp-38H], rax jmp SHORT G_M5646_IG11 ;; bbWeight=1 PerfScore 7.00 G_M5646_IG10: cmp gword ptr [rbp-30H], 0 je SHORT G_M5646_IG15 mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this jmp SHORT G_M5646_IG15 ;; bbWeight=1 PerfScore 8.50 G_M5646_IG11: mov rcx, rsp call G_M5646_IG17 ;; bbWeight=1 PerfScore 1.25 G_M5646_IG12: nop ;; bbWeight=1 PerfScore 0.25 G_M5646_IG13: mov rax, gword ptr [rbp-38H] ;; bbWeight=1 PerfScore 1.00 G_M5646_IG14: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M5646_IG15: mov byte ptr [rsi], 0 xor rax, rax ;; bbWeight=1 PerfScore 1.25 G_M5646_IG16: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M5646_IG17: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=1 PerfScore 8.75 G_M5646_IG18: cmp gword ptr [rbp-30H], 0 je SHORT G_M5646_IG19 mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=1 PerfScore 6.50 G_M5646_IG19: nop ;; bbWeight=1 PerfScore 0.25 G_M5646_IG20: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 351, prolog size 36, PerfScore 132.85, (MethodHash=5272e9f1) for method EnumerablePartition`1:TryGetFirst(byref):__Canon:this ; ============================================================ ; Assembly listing for method d__190`1:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 9, 7 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T01] ( 5, 4 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 4, 4 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T05] ( 2, 2 ) int -> rdi "impAppendStmt" ; V05 tmp3 [V05,T03] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V06 tmp4 [V06,T06] ( 4, 1.75) ref -> rcx ; V07 tmp5 [V07,T04] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V08 tmp6 [V08,T07] ( 4, 1.75) ref -> rcx ; ; Lcl frame size = 40 G_M42567_IG01: push rdi push rsi sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M42567_IG02: cmp dword ptr [rsi+56], -2 jne SHORT G_M42567_IG06 ;; bbWeight=1 PerfScore 3.00 G_M42567_IG03: mov edi, dword ptr [rsi+60] mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M42567_IG05 ;; bbWeight=0.50 PerfScore 3.38 G_M42567_IG04: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M42567_IG05: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this cmp eax, edi jne SHORT G_M42567_IG06 xor ecx, ecx mov dword ptr [rsi+56], ecx mov rdi, rsi jmp SHORT G_M42567_IG09 ;; bbWeight=0.50 PerfScore 3.88 G_M42567_IG06: mov rcx, qword ptr [rsi] call CORINFO_HELP_NEWSFAST mov rdi, rax xor ecx, ecx mov dword ptr [rdi+56], ecx mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M42567_IG08 ;; bbWeight=0.50 PerfScore 4.63 G_M42567_IG07: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M42567_IG08: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rdi+60], eax ;; bbWeight=0.50 PerfScore 2.00 G_M42567_IG09: mov rdx, gword ptr [rsi+24] lea rcx, bword ptr [rdi+16] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsi+40] lea rcx, bword ptr [rdi+32] call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=1 PerfScore 7.25 G_M42567_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 180, prolog size 11, PerfScore 48.50, (MethodHash=b69359b8) for method d__190`1:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method EnumerablePartition`1:SkipAndCount(int,IEnumerator`1):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref ; V01 arg0 [V01,T01] ( 5, 7.50) int -> rsi ; V02 arg1 [V02,T02] ( 3, 6 ) ref -> rdi class-hnd ; V03 loc0 [V03,T00] ( 5, 13.50) int -> rbx ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M17335_IG01: push rdi push rsi push rbx sub rsp, 32 mov esi, edx mov rdi, r8 ;; bbWeight=1 PerfScore 3.75 G_M17335_IG02: xor ebx, ebx test esi, esi jbe SHORT G_M17335_IG05 ;; bbWeight=1 PerfScore 1.50 G_M17335_IG03: mov rcx, rdi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M17335_IG07 ;; bbWeight=4 PerfScore 20.00 G_M17335_IG04: inc ebx cmp ebx, esi jb SHORT G_M17335_IG03 ;; bbWeight=4 PerfScore 6.00 G_M17335_IG05: mov eax, esi ;; bbWeight=0.50 PerfScore 0.13 G_M17335_IG06: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M17335_IG07: mov eax, ebx ;; bbWeight=0.50 PerfScore 0.13 G_M17335_IG08: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 73, prolog size 12, PerfScore 41.55, (MethodHash=b16fbc48) for method EnumerablePartition`1:SkipAndCount(int,IEnumerator`1):int ; ============================================================ ; Assembly listing for method d__190`1:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 30, 26 ) ref -> [rbp+0x10] EH do-not-enreg[] this class-hnd EH-live ; V01 loc0 [V01,T09] ( 6, 3.50) bool -> rsi ; V02 loc1 [V02,T12] ( 3, 3 ) int -> rcx ; V03 loc2 [V03,T06] ( 3, 8.50) ref -> rsi class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T13] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V06 tmp2 [V06,T15] ( 2, 2 ) ref -> rsi class-hnd "impAppendStmt" ; V07 tmp3 [V07,T10] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V09 tmp5 [V09,T14] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V10 tmp6 [V10,T16] ( 2, 2 ) ref -> rsi class-hnd "impAppendStmt" ; V11 tmp7 [V11,T11] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V12 tmp8 [V12 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V13 tmp9 [V13,T04] ( 2, 10 ) long -> rcx "impRuntimeLookup slot" ; V14 tmp10 [V14,T03] ( 2, 16 ) ref -> rsi class-hnd "impAppendStmt" ; V15 tmp11 [V15,T02] ( 4, 20 ) long -> r11 "spilling Runtime Lookup tree" ;* V16 tmp12 [V16 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V17 PSPSym [V17 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "PSPSym" ;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref "optAddCopies" ; V19 cse0 [V19,T05] ( 3, 9 ) long -> r11 "CSE - aggressive" ; V20 cse1 [V20,T17] ( 3, 1.25) long -> r11 "CSE - moderate" ; V21 cse2 [V21,T18] ( 3, 1.25) long -> r11 "CSE - moderate" ; V22 cse3 [V22,T07] ( 5, 6 ) long -> rbx "CSE - aggressive" ; V23 cse4 [V23,T08] ( 5, 6 ) long -> rdi "CSE - aggressive" ; V24 rat0 [V24,T01] ( 3, 24 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 56 G_M61036_IG01: push rbp push rdi push rsi push rbx sub rsp, 56 lea rbp, [rsp+50H] mov qword ptr [rbp-30H], rsp mov qword ptr [rbp-20H], rcx mov gword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 7.75 G_M61036_IG02: mov rax, gword ptr [rbp+10H] mov ecx, dword ptr [rax+56] cmp ecx, 2 ja SHORT G_M61036_IG03 mov ecx, ecx lea rdx, [reloc @RWD00] mov edx, dword ptr [rdx+4*rcx] lea rax, G_M61036_IG02 add rdx, rax jmp rdx ;; bbWeight=1 PerfScore 10.25 G_M61036_IG03: xor esi, esi jmp G_M61036_IG25 ;; bbWeight=0.50 PerfScore 1.13 G_M61036_IG04: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+56], -1 mov rcx, gword ptr [rbp+10H] mov rsi, gword ptr [rcx+16] mov rcx, gword ptr [rbp+10H] mov rdi, qword ptr [rcx] mov rcx, rdi mov rdx, qword ptr [rcx+48] mov rbx, qword ptr [rdx] mov r11, qword ptr [rbx+24] test r11, r11 je SHORT G_M61036_IG06 ;; bbWeight=0.50 PerfScore 7.75 G_M61036_IG05: jmp SHORT G_M61036_IG07 ;; bbWeight=0.25 PerfScore 0.50 G_M61036_IG06: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M61036_IG07: mov rcx, rsi call gword ptr [r11] mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+48] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+56], -3 mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+48] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M61036_IG13 ;; bbWeight=0.50 PerfScore 7.88 G_M61036_IG08: mov rcx, gword ptr [rbp+10H] mov rsi, gword ptr [rcx+48] mov rcx, rdi mov r11, qword ptr [rbx+16] test r11, r11 je SHORT G_M61036_IG10 ;; bbWeight=4 PerfScore 26.00 G_M61036_IG09: jmp SHORT G_M61036_IG11 ;; bbWeight=1 PerfScore 2.00 G_M61036_IG10: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=1 PerfScore 1.50 G_M61036_IG11: mov rcx, rsi call gword ptr [r11] mov rsi, rax mov rcx, gword ptr [rbp+10H] mov rax, gword ptr [rcx+32] mov rcx, gword ptr [rax+8] mov rdx, rsi call qword ptr [rax+24]Func`2:Invoke(__Canon):bool:this test eax, eax je SHORT G_M61036_IG15 ;; bbWeight=4 PerfScore 52.00 G_M61036_IG12: mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+48] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M61036_IG08 ;; bbWeight=4 PerfScore 31.00 G_M61036_IG13: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+56], -1 mov rcx, gword ptr [rbp+10H] cmp gword ptr [rcx+48], 0 je G_M61036_IG24 ;; bbWeight=0.50 PerfScore 3.00 G_M61036_IG14: mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+48] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this jmp G_M61036_IG24 ;; bbWeight=0.25 PerfScore 2.13 G_M61036_IG15: mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+56], 1 mov esi, 1 jmp G_M61036_IG25 ;; bbWeight=0.50 PerfScore 3.50 G_M61036_IG16: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+56], -3 mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+48] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M61036_IG22 ;; bbWeight=0.50 PerfScore 4.88 G_M61036_IG17: mov rcx, gword ptr [rbp+10H] mov rsi, gword ptr [rcx+48] mov rcx, gword ptr [rbp+10H] mov rdi, qword ptr [rcx] mov rcx, rdi mov rdx, qword ptr [rcx+48] mov rbx, qword ptr [rdx] mov r11, qword ptr [rbx+16] test r11, r11 je SHORT G_M61036_IG19 ;; bbWeight=0.50 PerfScore 6.75 G_M61036_IG18: jmp SHORT G_M61036_IG20 ;; bbWeight=0.25 PerfScore 0.50 G_M61036_IG19: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M61036_IG20: mov rcx, rsi call gword ptr [r11] mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+56], 2 mov esi, 1 jmp SHORT G_M61036_IG25 ;; bbWeight=0.50 PerfScore 5.13 G_M61036_IG21: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+56], -3 mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+48] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne G_M61036_IG17 ;; bbWeight=0.50 PerfScore 4.88 G_M61036_IG22: xor esi, esi mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+56], -1 mov rcx, gword ptr [rbp+10H] cmp gword ptr [rcx+48], 0 je SHORT G_M61036_IG25 ;; bbWeight=0.50 PerfScore 3.13 G_M61036_IG23: mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+48] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this jmp SHORT G_M61036_IG25 ;; bbWeight=0.25 PerfScore 2.13 G_M61036_IG24: mov rcx, gword ptr [rbp+10H] xor rdx, rdx mov gword ptr [rcx+48], rdx xor esi, esi ;; bbWeight=0.50 PerfScore 1.25 G_M61036_IG25: mov eax, esi ;; bbWeight=1 PerfScore 0.25 G_M61036_IG26: lea rsp, [rbp-18H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.50 G_M61036_IG27: push rbp push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=0 PerfScore 0.00 G_M61036_IG28: mov rcx, gword ptr [rbp+10H] mov rax, 0xD1FFAB1E call qword ptr [rax]d__190`1:System.IDisposable.Dispose():this nop ;; bbWeight=0 PerfScore 0.00 G_M61036_IG29: add rsp, 40 pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M61036_IG04 - G_M61036_IG02 dd G_M61036_IG16 - G_M61036_IG02 dd G_M61036_IG21 - G_M61036_IG02 ; Total bytes of code 721, prolog size 25, PerfScore 261.60, (MethodHash=027a1193) for method d__190`1:MoveNext():bool:this ; ============================================================ ; Assembly listing for method SZArrayHelper:GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 3.50) ref -> rsi this class-hnd ; V01 TypeCtx [V01,T00] ( 6, 4.50) long -> rax ; V02 loc0 [V02,T07] ( 2, 2 ) ref -> rcx class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V05 tmp2 [V05,T05] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V06 tmp3 [V06,T02] ( 4, 4 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V07 tmp4 [V07,T06] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V08 cse0 [V08,T04] ( 6, 2.50) long -> rcx "CSE - aggressive" ; V09 cse1 [V09,T03] ( 3, 2 ) long -> rdi "CSE - aggressive" ; ; Lcl frame size = 40 G_M16991_IG01: push rdi push rsi sub rsp, 40 mov qword ptr [rsp+20H], rdx mov rsi, rcx mov rax, rdx ;; bbWeight=1 PerfScore 3.75 G_M16991_IG02: mov rdi, qword ptr [rax+16] mov rcx, rsi cmp dword ptr [rcx+8], 0 je SHORT G_M16991_IG08 ;; bbWeight=1 PerfScore 5.25 G_M16991_IG03: mov rcx, qword ptr [rdi+24] test rcx, rcx je SHORT G_M16991_IG05 ;; bbWeight=0.50 PerfScore 1.63 G_M16991_IG04: jmp SHORT G_M16991_IG06 ;; bbWeight=0.25 PerfScore 0.50 G_M16991_IG05: mov rcx, rax mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M16991_IG06: call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov dword ptr [rdi+16], -1 mov rax, rdi ;; bbWeight=0.50 PerfScore 2.13 G_M16991_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M16991_IG08: mov rcx, qword ptr [rdi+24] test rcx, rcx je SHORT G_M16991_IG10 ;; bbWeight=0.50 PerfScore 1.63 G_M16991_IG09: jmp SHORT G_M16991_IG11 ;; bbWeight=0.25 PerfScore 0.50 G_M16991_IG10: mov rcx, rax mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M16991_IG11: call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.50 G_M16991_IG12: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 146, prolog size 11, PerfScore 34.60, (MethodHash=581dbda0) for method SZArrayHelper:GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method SZGenericArrayEnumerator`1:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5 ) ref -> rcx this class-hnd ; V01 loc0 [V01,T02] ( 3, 2.50) int -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 cse0 [V03,T01] ( 3, 2.50) ref -> rax "CSE - aggressive" ; ; Lcl frame size = 0 G_M64771_IG01: ;; bbWeight=1 PerfScore 0.00 G_M64771_IG02: mov edx, dword ptr [rcx+16] inc edx mov rax, gword ptr [rcx+8] cmp dword ptr [rax+8], edx ja SHORT G_M64771_IG05 ;; bbWeight=1 PerfScore 7.25 G_M64771_IG03: mov eax, dword ptr [rax+8] mov dword ptr [rcx+16], eax xor eax, eax ;; bbWeight=0.50 PerfScore 1.63 G_M64771_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M64771_IG05: mov dword ptr [rcx+16], edx mov eax, 1 ;; bbWeight=0.50 PerfScore 0.63 G_M64771_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 32, prolog size 0, PerfScore 13.70, (MethodHash=779f02fc) for method SZGenericArrayEnumerator`1:MoveNext():bool:this ; ============================================================ ; Assembly listing for method SZGenericArrayEnumerator`1:get_Current():__Canon:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 loc0 [V01,T01] ( 4, 3 ) int -> rdx ; V02 loc1 [V02,T02] ( 3, 3 ) ref -> rax class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 cse0 [V04,T03] ( 2, 2 ) int -> rcx "CSE - aggressive" ; ; Lcl frame size = 40 G_M6454_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M6454_IG02: mov edx, dword ptr [rcx+16] mov rax, gword ptr [rcx+8] mov ecx, dword ptr [rax+8] cmp ecx, edx jbe SHORT G_M6454_IG05 ;; bbWeight=1 PerfScore 7.25 G_M6454_IG03: movsxd rdx, edx mov rax, gword ptr [rax+8*rdx+16] ;; bbWeight=1 PerfScore 2.25 G_M6454_IG04: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 G_M6454_IG05: mov ecx, edx call ThrowHelper:ThrowInvalidOperationException_EnumCurrent(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 39, prolog size 4, PerfScore 14.90, (MethodHash=b648e6c9) for method SZGenericArrayEnumerator`1:get_Current():__Canon:this ; ============================================================ ; Assembly listing for method <>c:b__1_0(String):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rcx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M3285_IG01: sub rsp, 40 mov rcx, rdx ;; bbWeight=1 PerfScore 0.50 G_M3285_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call String:Equals(String,String):bool test eax, eax sete al movzx rax, al ;; bbWeight=1 PerfScore 4.75 G_M3285_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 38, prolog size 4, PerfScore 10.30, (MethodHash=0420f32a) for method <>c:b__1_0(String):bool:this ; ============================================================ ; Assembly listing for method d__190`1:System.Collections.Generic.IEnumerator.get_Current():__Canon:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M10374_IG01: ;; bbWeight=1 PerfScore 0.00 G_M10374_IG02: mov rax, gword ptr [rcx+8] ;; bbWeight=1 PerfScore 2.00 G_M10374_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=d859d779) for method d__190`1:System.Collections.Generic.IEnumerator.get_Current():__Canon:this ; ============================================================ ; Assembly listing for method d__190`1:System.IDisposable.Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4.25) ref -> rcx this class-hnd ; V01 loc0 [V01,T01] ( 3, 2.50) int -> r11 ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M17165_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M17165_IG02: mov r11d, dword ptr [rcx+56] cmp r11d, -3 je SHORT G_M17165_IG04 ;; bbWeight=1 PerfScore 3.25 G_M17165_IG03: dec r11d cmp r11d, 1 ja SHORT G_M17165_IG06 ;; bbWeight=0.50 PerfScore 0.75 G_M17165_IG04: mov dword ptr [rcx+56], -1 cmp gword ptr [rcx+48], 0 je SHORT G_M17165_IG06 ;; bbWeight=0.50 PerfScore 2.00 G_M17165_IG05: mov rcx, gword ptr [rcx+48] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0.25 PerfScore 1.38 G_M17165_IG06: nop ;; bbWeight=1 PerfScore 0.25 G_M17165_IG07: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 69, prolog size 4, PerfScore 16.03, (MethodHash=4c8fbcf2) for method d__190`1:System.IDisposable.Dispose():this ; ============================================================ ; Assembly listing for method SZGenericArrayEnumerator`1:Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M27702_IG01: ;; bbWeight=1 PerfScore 0.00 G_M27702_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=799093c9) for method SZGenericArrayEnumerator`1:Dispose():this ; ============================================================ ; Assembly listing for method NumberFormatInfo:get_CurrentInfo():NumberFormatInfo ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T01] ( 5, 3.50) ref -> rsi class-hnd ; V01 loc1 [V01,T04] ( 3, 1.50) ref -> rax class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V04 tmp2 [V04,T05] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V05 tmp3 [V05,T00] ( 5, 3.74) ref -> registers class-hnd "spilling QMark2" ; V06 tmp4 [V06,T03] ( 2, 2 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M61365_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M61365_IG02: call CultureInfo:get_CurrentCulture():CultureInfo mov rsi, rax cmp byte ptr [rsi+97], 0 jne SHORT G_M61365_IG05 ;; bbWeight=1 PerfScore 4.25 G_M61365_IG03: mov rax, gword ptr [rsi+24] test rax, rax je SHORT G_M61365_IG05 ;; bbWeight=0.50 PerfScore 1.63 G_M61365_IG04: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M61365_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+80] call gword ptr [rax]CultureInfo:GetFormat(Type):Object:this mov r8, rax test r8, r8 je SHORT G_M61365_IG08 ;; bbWeight=0.50 PerfScore 5.13 G_M61365_IG06: mov rcx, 0xD1FFAB1E cmp qword ptr [r8], rcx je SHORT G_M61365_IG08 ;; bbWeight=0.25 PerfScore 0.81 G_M61365_IG07: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov r8, rax ;; bbWeight=0.12 PerfScore 0.18 G_M61365_IG08: mov rax, r8 ;; bbWeight=0.50 PerfScore 0.13 G_M61365_IG09: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 107, prolog size 5, PerfScore 25.82, (MethodHash=49dd104a) for method NumberFormatInfo:get_CurrentInfo():NumberFormatInfo ; ============================================================ ; Assembly listing for method CultureInfo:GetFormat(Type):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 3.50) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M52989_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 2.75 G_M52989_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rdi jne SHORT G_M52989_IG05 ;; bbWeight=1 PerfScore 2.50 G_M52989_IG03: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+80] mov rax, qword ptr [rax+16] ;; bbWeight=0.50 PerfScore 3.13 G_M52989_IG04: add rsp, 40 pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.63 G_M52989_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rdi jne SHORT G_M52989_IG07 mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+80] mov rax, qword ptr [rax+32] ;; bbWeight=0.50 PerfScore 4.38 G_M52989_IG06: add rsp, 40 pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.63 G_M52989_IG07: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M52989_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 107, prolog size 12, PerfScore 27.95, (MethodHash=264a3102) for method CultureInfo:GetFormat(Type):Object:this ; ============================================================ ; Assembly listing for method CultureInfo:get_NumberFormat():NumberFormatInfo:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5.50) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 4, 4 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T02] ( 2, 2 ) byref -> rcx "Inlining Arg" ; ; Lcl frame size = 40 G_M28034_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M28034_IG02: cmp gword ptr [rsi+24], 0 jne SHORT G_M28034_IG04 ;; bbWeight=1 PerfScore 3.00 G_M28034_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, gword ptr [rsi+48] mov rcx, rdi call NumberFormatInfo:.ctor(CultureData):this movzx rcx, byte ptr [rsi+96] mov byte ptr [rdi+188], cl lea rcx, bword ptr [rsi+24] mov rdx, rdi xor r8, r8 call Interlocked:CompareExchange(byref,Object,Object):Object ;; bbWeight=0.50 PerfScore 4.88 G_M28034_IG04: mov rax, gword ptr [rsi+24] ;; bbWeight=1 PerfScore 2.00 G_M28034_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 82, prolog size 6, PerfScore 22.83, (MethodHash=6d06927d) for method CultureInfo:get_NumberFormat():NumberFormatInfo:this ; ============================================================ ; Assembly listing for method NumberFormatInfo:.ctor(CultureData):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 28, 27 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T05] ( 4, 3.50) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> rax class-hnd exact "dup spill" ; V04 tmp2 [V04,T03] ( 3, 6 ) ref -> rax class-hnd exact "dup spill" ; V05 tmp3 [V05,T04] ( 3, 6 ) ref -> rax class-hnd exact "dup spill" ; V06 tmp4 [V06,T01] ( 12, 24 ) ref -> rbx class-hnd exact "dup spill" ; ; Lcl frame size = 32 G_M11371_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M11371_IG02: mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_VC mov dword ptr [rax+16], 3 lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_VC mov dword ptr [rax+16], 3 lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_VC mov dword ptr [rax+16], 3 lea rcx, bword ptr [rsi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+32] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+40] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+48] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+56] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+64] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+72] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+80] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+88] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+96] call CORINFO_HELP_ASSIGN_REF ;; bbWeight=1 PerfScore 46.50 G_M11371_IG03: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+104] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+112] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+120] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+128] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+136] call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 10 call CORINFO_HELP_NEWARR_1_OBJ mov rbx, rax lea rcx, bword ptr [rbx+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+24] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+32] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+40] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+48] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+56] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+64] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+72] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] ;; bbWeight=1 PerfScore 49.50 G_M11371_IG04: call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+80] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+88] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+144] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+152], 2 mov dword ptr [rsi+156], 2 mov dword ptr [rsi+168], 1 mov dword ptr [rsi+180], 2 mov dword ptr [rsi+184], 1 mov byte ptr [rsi+189], 1 test rdi, rdi je SHORT G_M11371_IG07 ;; bbWeight=1 PerfScore 17.50 G_M11371_IG05: mov rcx, rdi mov rdx, rsi call CultureData:GetNFIValues(NumberFormatInfo):this mov rcx, rsi ;; bbWeight=0.50 PerfScore 0.88 G_M11371_IG06: add rsp, 32 pop rbx pop rsi pop rdi jmp NumberFormatInfo:UpdateHasInvariantNumberSigns():this ;; bbWeight=0.50 PerfScore 1.88 G_M11371_IG07: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 798, prolog size 7, PerfScore 201.18, (MethodHash=d3dfd394) for method NumberFormatInfo:.ctor(CultureData):this ; ============================================================ ; Assembly listing for method CultureData:GetNFIValues(NumberFormatInfo):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 46, 29 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 53, 44 ) ref -> rsi class-hnd ; V02 loc0 [V02,T07] ( 3, 8.50) ref -> rbx class-hnd ; V03 loc1 [V03,T02] ( 7, 24.50) int -> rbp ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 3, 24 ) ref -> r14 class-hnd "impAppendStmt" ;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Strict ordering of exceptions for Array store" ;* V07 tmp3 [V07,T24] ( 0, 0 ) ref -> zero-ref ;* V08 tmp4 [V08,T19] ( 0, 0 ) ref -> zero-ref ; V09 tmp5 [V09,T14] ( 3, 1.50) int -> rax ; V10 tmp6 [V10,T11] ( 2, 4 ) ref -> rdx class-hnd "dup spill" ; V11 tmp7 [V11,T12] ( 5, 3.50) ref -> rdx ;* V12 tmp8 [V12,T20] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V13 tmp9 [V13,T04] ( 2, 16 ) ushort -> r12 "Inlining Arg" ; V14 tmp10 [V14,T08] ( 2, 8 ) ref -> rdx class-hnd "Inline return value spill temp" ; V15 tmp11 [V15,T05] ( 3, 12 ) ref -> rdx class-hnd "Inline stloc first use temp" ; V16 tmp12 [V16,T21] ( 2, 1 ) bool -> rcx "Inline return value spill temp" ; V17 tmp13 [V17,T15] ( 3, 1.50) int -> rax "Inline return value spill temp" ; V18 tmp14 [V18,T13] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V19 tmp15 [V19,T16] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V20 tmp16 [V20,T18] ( 3, 1.25) int -> rdx "Inline stloc first use temp" ;* V21 tmp17 [V21,T22] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V22 tmp18 [V22,T09] ( 3, 4.50) ref -> rdx class-hnd "Inlining Arg" ;* V23 tmp19 [V23,T23] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V24 tmp20 [V24,T10] ( 3, 4.50) ref -> rdx class-hnd "Inlining Arg" ; V25 cse0 [V25,T17] ( 3, 1.50) int -> rbx "CSE - moderate" ; V26 cse1 [V26,T06] ( 3, 12 ) long -> r15 "CSE - aggressive" ; ; Lcl frame size = 32 G_M36768_IG01: push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 32 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 7.75 G_M36768_IG02: mov rdx, gword ptr [rdi+24] test rdx, rdx jne SHORT G_M36768_IG04 ;; bbWeight=1 PerfScore 3.25 G_M36768_IG03: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] ;; bbWeight=0.25 PerfScore 0.56 G_M36768_IG04: test rdx, rdx je SHORT G_M36768_IG06 ;; bbWeight=1 PerfScore 1.25 G_M36768_IG05: cmp dword ptr [rdx+8], 0 ja G_M36768_IG07 ;; bbWeight=0.25 PerfScore 0.75 G_M36768_IG06: mov rdx, gword ptr [rdi+176] lea rcx, bword ptr [rsi+32] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rdi+184] lea rcx, bword ptr [rsi+40] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rdi+208] lea rcx, bword ptr [rsi+56] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rdi+200] lea rcx, bword ptr [rsi+48] call CORINFO_HELP_ASSIGN_REF mov edx, dword ptr [rdi+392] mov dword ptr [rsi+152], edx mov edx, dword ptr [rdi+396] mov dword ptr [rsi+168], edx mov rdx, gword ptr [rdi+256] lea rcx, bword ptr [rsi+80] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rdi+304] lea rcx, bword ptr [rsi+64] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rdi+296] lea rcx, bword ptr [rsi+72] call CORINFO_HELP_ASSIGN_REF mov ecx, dword ptr [rdi+408] mov dword ptr [rsi+156], ecx mov ecx, dword ptr [rdi+416] mov dword ptr [rsi+164], ecx mov ecx, dword ptr [rdi+412] mov dword ptr [rsi+160], ecx jmp G_M36768_IG17 ;; bbWeight=0.50 PerfScore 20.75 G_M36768_IG07: mov rcx, rdi mov edx, 80 call CultureData:GetLocaleInfoCoreUserOverride(int):String:this lea rcx, bword ptr [rsi+32] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rdi mov edx, 81 call CultureData:GetLocaleInfoCoreUserOverride(int):String:this lea rcx, bword ptr [rsi+40] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rdi mov edx, 14 call CultureData:GetLocaleInfoCoreUserOverride(int):String:this lea rcx, bword ptr [rsi+48] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rdi mov edx, 15 call CultureData:GetLocaleInfoCoreUserOverride(int):String:this lea rcx, bword ptr [rsi+56] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rdi mov edx, 23 call CultureData:GetLocaleInfoCoreUserOverride(int):String:this lea rcx, bword ptr [rsi+64] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rdi mov edx, 22 call CultureData:GetLocaleInfoCoreUserOverride(int):String:this lea rcx, bword ptr [rsi+72] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rdi mov edx, 20 call CultureData:GetLocaleInfoCoreUserOverride(int):String:this lea rcx, bword ptr [rsi+80] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rdi mov edx, 17 call CultureData:GetLocaleInfoCoreUserOverride(int):int:this mov dword ptr [rsi+152], eax mov rcx, rdi mov edx, 25 call CultureData:GetLocaleInfoCoreUserOverride(int):int:this mov dword ptr [rsi+156], eax mov rcx, rdi mov edx, 27 call CultureData:GetLocaleInfoCoreUserOverride(int):int:this mov dword ptr [rsi+160], eax mov rcx, rdi mov edx, 28 call CultureData:GetLocaleInfoCoreUserOverride(int):int:this mov dword ptr [rsi+164], eax mov rcx, rdi mov edx, 0x1010 call CultureData:GetLocaleInfoCoreUserOverride(int):int:this mov dword ptr [rsi+168], eax mov rcx, rdi mov edx, 19 call CultureData:GetLocaleInfoCoreUserOverride(int):String:this mov rbx, rax mov rcx, 0xD1FFAB1E mov edx, 10 call CORINFO_HELP_NEWARR_1_OBJ lea rcx, bword ptr [rsi+144] ;; bbWeight=0.50 PerfScore 19.50 G_M36768_IG08: mov rdx, rax call CORINFO_HELP_ASSIGN_REF xor ebp, ebp mov rcx, gword ptr [rsi+144] cmp dword ptr [rcx+8], 0 jle SHORT G_M36768_IG10 ;; bbWeight=0.50 PerfScore 3.25 G_M36768_IG09: mov r14, gword ptr [rsi+144] cmp ebp, dword ptr [rbx+8] jae G_M36768_IG29 movsxd r15, ebp movzx r12, word ptr [rbx+2*r15+12] mov ecx, 1 call String:FastAllocateString(int):String mov rdx, rax mov word ptr [rdx+12], r12w cmp ebp, dword ptr [r14+8] jae G_M36768_IG29 lea rcx, bword ptr [r14+8*r15+16] call CORINFO_HELP_ASSIGN_REF inc ebp mov rcx, gword ptr [rsi+144] cmp dword ptr [rcx+8], ebp jg SHORT G_M36768_IG09 ;; bbWeight=4 PerfScore 80.00 G_M36768_IG10: movzx rbx, byte ptr [rdi+456] mov ecx, ebx test ecx, ecx jne SHORT G_M36768_IG13 mov rcx, gword ptr [rdi+8] mov edx, 6 call IcuLocaleData:GetLocaleDataNumericPart(String,int):int cmp eax, -1 je SHORT G_M36768_IG11 jmp SHORT G_M36768_IG12 ;; bbWeight=0.50 PerfScore 5.00 G_M36768_IG11: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M36768_IG12: jmp SHORT G_M36768_IG16 ;; bbWeight=0.50 PerfScore 1.00 G_M36768_IG13: mov edx, 0x1014 test ebx, ebx jne SHORT G_M36768_IG15 ;; bbWeight=0.50 PerfScore 0.75 G_M36768_IG14: mov edx, 0xD1FFAB1E ;; bbWeight=0.25 PerfScore 0.06 G_M36768_IG15: mov rcx, gword ptr [rdi+16] call CultureData:GetLocaleInfoExInt(String,int):int ;; bbWeight=0.50 PerfScore 1.50 G_M36768_IG16: mov dword ptr [rsi+184], eax ;; bbWeight=0.50 PerfScore 0.50 G_M36768_IG17: mov rcx, rdi call CultureData:get_NumberGroupSizes():ref:this lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rdi call CultureData:get_CurrencyGroupSizes():ref:this lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF cmp dword ptr [rdi+400], -1 jne SHORT G_M36768_IG19 ;; bbWeight=1 PerfScore 9.00 G_M36768_IG18: mov rcx, rdi mov edx, 116 call CultureData:GetLocaleInfoCore(int):int:this mov dword ptr [rdi+400], eax ;; bbWeight=0.25 PerfScore 0.63 G_M36768_IG19: mov ecx, dword ptr [rdi+400] mov dword ptr [rsi+176], ecx cmp dword ptr [rdi+404], -1 jne SHORT G_M36768_IG21 ;; bbWeight=1 PerfScore 6.00 G_M36768_IG20: mov rcx, rdi mov edx, 117 call CultureData:GetLocaleInfoCore(int):int:this mov dword ptr [rdi+404], eax ;; bbWeight=0.25 PerfScore 0.63 G_M36768_IG21: mov ecx, dword ptr [rdi+404] mov dword ptr [rsi+172], ecx mov rcx, rdi call CultureData:get_PercentSymbol():String:this lea rcx, bword ptr [rsi+128] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rdi call CultureData:get_PerMilleSymbol():String:this lea rcx, bword ptr [rsi+136] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rdi call CultureData:get_NegativeInfinitySymbol():String:this lea rcx, bword ptr [rsi+104] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rdi call CultureData:get_PositiveInfinitySymbol():String:this lea rcx, bword ptr [rsi+96] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rdi call CultureData:get_NaNSymbol():String:this lea rcx, bword ptr [rsi+88] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov edx, dword ptr [rsi+152] mov dword ptr [rsi+180], edx mov rdx, gword ptr [rsi+48] lea rcx, bword ptr [rsi+112] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsi+8] lea rcx, bword ptr [rsi+24] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsi+56] lea rcx, bword ptr [rsi+120] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsi+32] test rdx, rdx je SHORT G_M36768_IG23 ;; bbWeight=1 PerfScore 34.75 G_M36768_IG22: cmp dword ptr [rdx+8], 0 ja SHORT G_M36768_IG24 ;; bbWeight=0.25 PerfScore 0.75 G_M36768_IG23: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+32] call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 1.88 G_M36768_IG24: mov rdx, gword ptr [rsi+72] test rdx, rdx je SHORT G_M36768_IG26 ;; bbWeight=1 PerfScore 3.25 G_M36768_IG25: cmp dword ptr [rdx+8], 0 ja SHORT G_M36768_IG27 ;; bbWeight=0.25 PerfScore 0.75 G_M36768_IG26: mov rdx, gword ptr [rsi+48] lea rcx, bword ptr [rsi+72] call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 1.75 G_M36768_IG27: nop ;; bbWeight=1 PerfScore 0.25 G_M36768_IG28: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.75 G_M36768_IG29: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1081, prolog size 20, PerfScore 318.48, (MethodHash=7403705f) for method CultureData:GetNFIValues(NumberFormatInfo):this ; ============================================================ ; Assembly listing for method CultureData:GetLocaleInfoCoreUserOverride(int):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 3 ) int -> [rsp+0x10] ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T04] ( 2, 2 ) bool -> rax "Inline return value spill temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V05 tmp3 [V05,T03] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V06 cse0 [V06,T02] ( 3, 2.50) int -> r8 "CSE - aggressive" ; ; Lcl frame size = 0 G_M37299_IG01: mov dword ptr [rsp+10H], edx ;; bbWeight=1 PerfScore 1.00 G_M37299_IG02: movzx r8, byte ptr [rcx+456] mov eax, r8d test eax, eax jne SHORT G_M37299_IG05 ;; bbWeight=1 PerfScore 3.50 G_M37299_IG03: mov rdx, gword ptr [rcx+16] mov r8d, dword ptr [rsp+10H] ;; bbWeight=0.50 PerfScore 1.50 G_M37299_IG04: jmp CultureData:IcuGetLocaleInfo(String,int):String:this ;; bbWeight=0.50 PerfScore 1.00 G_M37299_IG05: mov rcx, gword ptr [rcx+16] mov edx, dword ptr [rsp+10H] ;; bbWeight=0.50 PerfScore 1.50 G_M37299_IG06: jmp CultureData:GetLocaleInfoFromLCType(String,int,bool):String ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 46, prolog size 4, PerfScore 14.10, (MethodHash=162e6e4c) for method CultureData:GetLocaleInfoCoreUserOverride(int):String:this ; ============================================================ ; Assembly listing for method CultureData:GetLocaleInfoFromLCType(String,int,bool):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T00] ( 5, 4 ) int -> rdx ; V02 arg2 [V02,T02] ( 3, 3 ) bool -> r8 ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V05 tmp2 [V05,T04] ( 4, 3.50) ref -> rax ; ; Lcl frame size = 40 G_M30891_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M30891_IG02: test r8b, r8b jne SHORT G_M30891_IG04 ;; bbWeight=1 PerfScore 1.25 G_M30891_IG03: or edx, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M30891_IG04: call CultureData:GetLocaleInfoEx(String,int):String test rax, rax jne SHORT G_M30891_IG06 ;; bbWeight=1 PerfScore 2.25 G_M30891_IG05: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M30891_IG06: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 43, prolog size 4, PerfScore 10.55, (MethodHash=f9bb8754) for method CultureData:GetLocaleInfoFromLCType(String,int,bool):String ; ============================================================ ; Assembly listing for method CultureData:GetLocaleInfoCoreUserOverride(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 3 ) int -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 2, 2 ) bool -> rax "Inline return value spill temp" ; V04 tmp2 [V04,T04] ( 4, 1.50) int -> rdx "Inline stloc first use temp" ; V05 cse0 [V05,T02] ( 3, 2.50) int -> rsi "CSE - aggressive" ; ; Lcl frame size = 0 G_M37429_IG01: push rsi ;; bbWeight=1 PerfScore 1.00 G_M37429_IG02: movzx rsi, byte ptr [rcx+456] mov eax, esi test eax, eax jne SHORT G_M37429_IG04 ;; bbWeight=1 PerfScore 3.50 G_M37429_IG03: pop rsi jmp CultureData:IcuGetLocaleInfo(int):int:this ;; bbWeight=0.50 PerfScore 1.25 G_M37429_IG04: test esi, esi jne SHORT G_M37429_IG06 ;; bbWeight=0.50 PerfScore 0.63 G_M37429_IG05: or edx, 0xD1FFAB1E ;; bbWeight=0.25 PerfScore 0.06 G_M37429_IG06: mov rcx, gword ptr [rcx+16] ;; bbWeight=0.50 PerfScore 1.00 G_M37429_IG07: pop rsi jmp CultureData:GetLocaleInfoExInt(String,int):int ;; bbWeight=0.50 PerfScore 1.25 ; Total bytes of code 41, prolog size 1, PerfScore 12.79, (MethodHash=1d1c6dca) for method CultureData:GetLocaleInfoCoreUserOverride(int):int:this ; ============================================================ ; Assembly listing for method CultureData:GetLocaleInfoExInt(String,int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T00] ( 5, 5 ) int -> rdx ; V02 loc0 [V02 ] ( 3, 3 ) int -> [rsp+0x20] do-not-enreg[X] addr-exposed ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M55040_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M55040_IG02: or edx, 0xD1FFAB1E xor r8d, r8d mov dword ptr [rsp+20H], r8d lea r8, [rsp+20H] mov r9d, 4 call Kernel32:GetLocaleInfoEx(String,int,long,int):int mov eax, dword ptr [rsp+20H] ;; bbWeight=1 PerfScore 4.25 G_M55040_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 43, prolog size 4, PerfScore 10.05, (MethodHash=579528ff) for method CultureData:GetLocaleInfoExInt(String,int):int ; ============================================================ ; Assembly listing for method CultureData:get_NumberGroupSizes():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T02] ( 4, 3.50) ref -> rax ; V05 tmp3 [V05,T03] ( 3, 3 ) ref -> rdi class-hnd "dup spill" ; ; Lcl frame size = 40 G_M10441_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M10441_IG02: mov rax, gword ptr [rsi+192] test rax, rax jne SHORT G_M10441_IG04 ;; bbWeight=1 PerfScore 3.25 G_M10441_IG03: mov rcx, rsi mov edx, 16 call CultureData:GetLocaleInfoCoreUserOverride(int):ref:this mov rdi, rax lea rcx, bword ptr [rsi+192] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 1.88 G_M10441_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 62, prolog size 6, PerfScore 16.08, (MethodHash=f067d736) for method CultureData:get_NumberGroupSizes():ref:this ; ============================================================ ; Assembly listing for method CultureData:GetLocaleInfoCoreUserOverride(int):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 3 ) int -> rdx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 2, 2 ) bool -> rax "Inline return value spill temp" ; V04 cse0 [V04,T02] ( 3, 2.50) int -> r8 "CSE - aggressive" ; ; Lcl frame size = 40 G_M56407_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M56407_IG02: movzx r8, byte ptr [rcx+456] mov eax, r8d test eax, eax jne SHORT G_M56407_IG04 ;; bbWeight=1 PerfScore 3.50 G_M56407_IG03: add rsp, 40 jmp CultureData:IcuGetLocaleInfo(int):ref:this ;; bbWeight=0.50 PerfScore 1.13 G_M56407_IG04: mov rcx, gword ptr [rcx+16] call CultureData:GetLocaleInfoFromLCType(String,int,bool):String mov rcx, rax ;; bbWeight=0.50 PerfScore 1.63 G_M56407_IG05: add rsp, 40 jmp CultureData:ConvertWin32GroupString(String):ref ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 49, prolog size 4, PerfScore 12.53, (MethodHash=956f23a8) for method CultureData:GetLocaleInfoCoreUserOverride(int):ref:this ; ============================================================ ; Assembly listing for method CultureData:ConvertWin32GroupString(String):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 8, 6.75) ref -> rsi class-hnd ; V01 loc0 [V01,T04] ( 7, 8.50) ref -> rax class-hnd ; V02 loc1 [V02,T00] ( 6, 12.50) int -> rcx ; V03 loc2 [V03,T01] ( 5, 10.50) int -> rdx ; V04 loc3 [V04,T10] ( 3, 1.50) int -> rdx ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T08] ( 3, 3 ) ref -> rax class-hnd exact "dup spill" ; V07 tmp2 [V07,T06] ( 2, 8 ) int -> r8 "Strict ordering of exceptions for Array store" ; V08 tmp3 [V08,T09] ( 3, 3 ) ref -> rax class-hnd exact "dup spill" ;* V09 tmp4 [V09,T13] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V10 cse0 [V10,T05] ( 4, 8 ) int -> r8 "CSE - aggressive" ; V11 cse1 [V11,T11] ( 3, 1.50) int -> rdx "CSE - moderate" ; V12 cse2 [V12,T02] ( 9, 9 ) int -> rdi "CSE - aggressive" ; V13 cse3 [V13,T07] ( 2, 8 ) int -> r8 "CSE - aggressive" ; V14 cse4 [V14,T12] ( 3, 1.50) int -> rcx "CSE - moderate" ; ; Lcl frame size = 40 G_M16399_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M16399_IG02: test rsi, rsi je SHORT G_M16399_IG04 ;; bbWeight=1 PerfScore 1.25 G_M16399_IG03: mov edi, dword ptr [rsi+8] test edi, edi jne SHORT G_M16399_IG06 ;; bbWeight=0.25 PerfScore 0.81 G_M16399_IG04: mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_VC mov dword ptr [rax+16], 3 ;; bbWeight=0.50 PerfScore 1.25 G_M16399_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M16399_IG06: mov edi, dword ptr [rsi+8] cmp word ptr [rsi+12], 48 jne SHORT G_M16399_IG08 mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_VC nop ;; bbWeight=0.50 PerfScore 3.38 G_M16399_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M16399_IG08: lea edx, [rdi-1] cmp edx, edi jae G_M16399_IG17 movsxd rdx, edx cmp word ptr [rsi+2*rdx+12], 48 jne SHORT G_M16399_IG09 mov edx, edi shr edx, 1 movsxd rdx, edx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC jmp SHORT G_M16399_IG10 ;; bbWeight=0.50 PerfScore 4.63 G_M16399_IG09: mov edx, edi shr edx, 1 add edx, 2 movsxd rdx, edx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov ecx, dword ptr [rax+8] lea edx, [rcx-1] cmp edx, ecx jae SHORT G_M16399_IG17 movsxd rcx, edx xor edx, edx mov dword ptr [rax+4*rcx+16], edx ;; bbWeight=0.50 PerfScore 3.88 G_M16399_IG10: xor ecx, ecx xor edx, edx jmp SHORT G_M16399_IG13 ;; bbWeight=0.50 PerfScore 1.25 G_M16399_IG11: cmp ecx, edi jae SHORT G_M16399_IG17 movsxd r8, ecx movzx r8, word ptr [rsi+2*r8+12] cmp r8d, 49 jl SHORT G_M16399_IG15 cmp r8d, 57 jg SHORT G_M16399_IG15 ;; bbWeight=2 PerfScore 12.00 G_M16399_IG12: add r8d, -48 movsxd r9, edx mov dword ptr [rax+4*r9+16], r8d add ecx, 2 inc edx ;; bbWeight=2 PerfScore 4.00 G_M16399_IG13: cmp edi, ecx jle SHORT G_M16399_IG14 mov r8d, dword ptr [rax+8] cmp r8d, edx jg SHORT G_M16399_IG11 ;; bbWeight=4 PerfScore 18.00 G_M16399_IG14: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M16399_IG15: mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_VC mov dword ptr [rax+16], 3 ;; bbWeight=0.50 PerfScore 1.25 G_M16399_IG16: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M16399_IG17: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 291, prolog size 9, PerfScore 87.79, (MethodHash=e4b5bff0) for method CultureData:ConvertWin32GroupString(String):ref ; ============================================================ ; Assembly listing for method CultureData:get_CurrencyGroupSizes():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T02] ( 4, 3.50) ref -> rax ; V05 tmp3 [V05,T03] ( 3, 3 ) ref -> rdi class-hnd "dup spill" ; ; Lcl frame size = 40 G_M16557_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M16557_IG02: mov rax, gword ptr [rsi+288] test rax, rax jne SHORT G_M16557_IG04 ;; bbWeight=1 PerfScore 3.25 G_M16557_IG03: mov rcx, rsi mov edx, 24 call CultureData:GetLocaleInfoCoreUserOverride(int):ref:this mov rdi, rax lea rcx, bword ptr [rsi+288] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 1.88 G_M16557_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 62, prolog size 6, PerfScore 16.08, (MethodHash=d083bf52) for method CultureData:get_CurrencyGroupSizes():ref:this ; ============================================================ ; Assembly listing for method CultureData:GetLocaleInfoCore(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) int -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 0 G_M2672_IG01: ;; bbWeight=1 PerfScore 0.00 G_M2672_IG02: jmp CultureData:IcuGetLocaleInfo(int):int:this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 5, prolog size 0, PerfScore 2.50, (MethodHash=9b2ef58f) for method CultureData:GetLocaleInfoCore(int):int:this ; ============================================================ ; Assembly listing for method CultureData:IcuGetLocaleInfo(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 4, 3.50) int -> rdx ; V02 loc0 [V02 ] ( 3, 1.50) int -> [rbp-0x08] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) bool -> zero-ref ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 48 G_M57236_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] ;; bbWeight=1 PerfScore 1.75 G_M57236_IG02: cmp edx, 0x1009 jne SHORT G_M57236_IG05 ;; bbWeight=1 PerfScore 1.25 G_M57236_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M57236_IG04: lea rsp, [rbp] pop rbp ret ;; bbWeight=0.50 PerfScore 1.00 G_M57236_IG05: xor r8d, r8d mov dword ptr [rbp-08H], r8d mov rcx, gword ptr [rcx+16] lea r8, [rbp-08H] call Globalization:GetLocaleInfoInt(String,int,byref):bool mov eax, dword ptr [rbp-08H] ;; bbWeight=0.50 PerfScore 2.88 G_M57236_IG06: lea rsp, [rbp] pop rbp ret ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 55, prolog size 10, PerfScore 13.50, (MethodHash=a8cf206b) for method CultureData:IcuGetLocaleInfo(int):int:this ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(String,int,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 4 ) ref -> rsi class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) int -> rbx ; V02 arg2 [V02,T02] ( 4, 4 ) byref -> rdi ;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref ; V04 loc1 [V04,T10] ( 3, 2.50) long -> rcx ; V05 loc2 [V05 ] ( 1, 0.50) ref -> [rbp-0x40] must-init pinned class-hnd ; V06 loc3 [V06,T11] ( 2, 2 ) long -> rdx ; V07 loc4 [V07 ] ( 1, 1 ) byref -> [rbp-0x48] must-init pinned ; V08 loc5 [V08,T12] ( 2, 2 ) bool -> rax ; V09 loc6 [V09,T13] ( 2, 2 ) int -> rax ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11 ] ( 3, 3 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "stub argument" ; V12 tmp2 [V12,T04] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V13 tmp3 [V13,T05] ( 2, 4 ) int -> rax "Single return block return value" ; V14 FramesRoot [V14,T00] ( 6, 6 ) long -> r14 "Pinvoke FrameListRoot" ; V15 PInvokeFrame [V15 ] ( 8, 8 ) blk (72) [rbp-0x98] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V16 tmp6 [V16,T06] ( 2, 4 ) long -> r8 "Cast away GC" ; V17 tmp7 [V17,T07] ( 2, 4 ) long -> rcx "argument with side effect" ; V18 tmp8 [V18,T08] ( 2, 4 ) long -> rdx "argument with side effect" ; V19 tmp9 [V19,T09] ( 2, 4 ) long -> r8 "argument with side effect" ; ; Lcl frame size = 136 G_M1719_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] mov qword ptr [rbp-50H], r10 xor rbx, rbx mov qword ptr [rbp-40H], rbx mov qword ptr [rbp-48H], rbx mov rsi, rcx mov ebx, edx mov rdi, r8 ;; bbWeight=1 PerfScore 12.75 G_M1719_IG02: lea rcx, [rbp-90H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r14, rax mov rcx, rsp mov qword ptr [rbp-70H], rcx mov rcx, rbp mov qword ptr [rbp-60H], rcx lea rcx, bword ptr [rbp-90H] mov qword ptr [r14+16], rcx xor rcx, rcx test rsi, rsi je SHORT G_M1719_IG04 ;; bbWeight=1 PerfScore 7.50 G_M1719_IG03: mov gword ptr [rbp-40H], rsi lea rcx, bword ptr [rsi+12] ;; bbWeight=0.50 PerfScore 0.75 G_M1719_IG04: mov edx, ebx mov bword ptr [rbp-48H], rdi mov r8, qword ptr [rbp-50H] mov r8, qword ptr [r8+32] mov rax, qword ptr [r8] mov r8, rdi mov r9, qword ptr [rbp-50H] mov qword ptr [rbp-80H], r9 lea r9, G_M1719_IG06 mov qword ptr [rbp-68H], r9 mov byte ptr [r14+12], 0 ;; bbWeight=1 PerfScore 11.50 G_M1719_IG05: call rax ;; bbWeight=1 PerfScore 3.00 G_M1719_IG06: mov byte ptr [r14+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M1719_IG07 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M1719_IG07: test eax, eax setne al movzx rax, al ;; bbWeight=1 PerfScore 1.50 G_M1719_IG08: movzx rax, al mov rdx, bword ptr [rbp-88H] mov qword ptr [r14+16], rdx ;; bbWeight=1 PerfScore 2.25 G_M1719_IG09: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 224, prolog size 41, PerfScore 74.65, (MethodHash=556bf948) for method ILStubClass:IL_STUB_PInvoke(String,int,byref):bool ; ============================================================ ; Assembly listing for method CultureData:get_PercentSymbol():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T02] ( 4, 3.50) ref -> rax ; V05 tmp3 [V05,T03] ( 3, 3 ) ref -> rdi class-hnd "dup spill" ; ; Lcl frame size = 40 G_M38426_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M38426_IG02: mov rax, gword ptr [rsi+240] test rax, rax jne SHORT G_M38426_IG04 ;; bbWeight=1 PerfScore 3.25 G_M38426_IG03: mov rcx, rsi mov edx, 118 call CultureData:GetLocaleInfoCore(int):String:this mov rdi, rax lea rcx, bword ptr [rsi+240] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 1.88 G_M38426_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 62, prolog size 6, PerfScore 16.08, (MethodHash=912169e5) for method CultureData:get_PercentSymbol():String:this ; ============================================================ ; Assembly listing for method CultureData:GetLocaleInfoCore(int):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) int -> r8 ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" ; ; Lcl frame size = 0 G_M52310_IG01: mov r8d, edx ;; bbWeight=1 PerfScore 0.25 G_M52310_IG02: mov rdx, gword ptr [rcx+16] ;; bbWeight=1 PerfScore 2.00 G_M52310_IG03: jmp CultureData:IcuGetLocaleInfo(String,int):String:this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 12, prolog size 3, PerfScore 5.45, (MethodHash=e38033a9) for method CultureData:GetLocaleInfoCore(int):String:this ; ============================================================ ; Assembly listing for method CultureData:IcuGetLocaleInfo(String,int):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 5, 3.50) ref -> rsi class-hnd ; V02 arg2 [V02,T01] ( 4, 3.50) int -> r8 ; V03 loc0 [V03,T05] ( 3, 1.50) long -> rdi ; V04 loc1 [V04,T06] ( 2, 1 ) bool -> rax ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 2, 2 ) ref -> rbx class-hnd "impAppendStmt" ; V07 tmp2 [V07,T04] ( 2, 2 ) ref -> rdx "argument with side effect" ; V08 GsCookie [V08 ] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; ; Lcl frame size = 40 G_M23723_IG01: push rbp push rdi push rsi push rbx sub rsp, 40 lea rbp, [rsp+20H] mov rax, 0xD1FFAB1E mov qword ptr [rbp], rax mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 6.50 G_M23723_IG02: cmp r8d, 107 jne SHORT G_M23723_IG06 ;; bbWeight=1 PerfScore 1.25 G_M23723_IG03: mov rcx, rdi mov rdx, rsi mov r8d, 81 call CultureData:IcuGetLocaleInfo(String,int):String:this mov rbx, rax mov rcx, rdi mov rdx, rsi mov r8d, 106 call CultureData:IcuGetLocaleInfo(String,int):String:this mov rdx, rax mov rcx, rbx call String:Concat(String,String):String mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx je SHORT G_M23723_IG04 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 4.25 G_M23723_IG04: nop ;; bbWeight=0.50 PerfScore 0.13 G_M23723_IG05: lea rsp, [rbp+08H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.75 G_M23723_IG06: add rsp, 32 test dword ptr [rsp], esp sub rsp, 208 sub rsp, 32 lea rdi, [rsp+20H] mov rcx, rsi mov edx, r8d mov r8, rdi mov r9d, 100 call Globalization:GetLocaleInfoString(String,int,long,int):bool test eax, eax jne SHORT G_M23723_IG09 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx je SHORT G_M23723_IG07 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 6.00 G_M23723_IG07: nop ;; bbWeight=0.50 PerfScore 0.13 G_M23723_IG08: lea rsp, [rbp+08H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.75 G_M23723_IG09: mov rdx, rdi xor rcx, rcx call String:.ctor(long):this mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx je SHORT G_M23723_IG10 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 2.38 G_M23723_IG10: nop ;; bbWeight=0.50 PerfScore 0.13 G_M23723_IG11: lea rsp, [rbp+08H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.75 ; Total bytes of code 250, prolog size 27, PerfScore 51.00, (MethodHash=aebfa354) for method CultureData:IcuGetLocaleInfo(String,int):String:this ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(String,int,long,int):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 4 ) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi ; V02 arg2 [V02,T03] ( 3, 3 ) long -> rbx ; V03 arg3 [V03,T04] ( 3, 3 ) int -> r14 ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref ; V05 loc1 [V05,T07] ( 3, 2.50) long -> rcx ; V06 loc2 [V06 ] ( 1, 0.50) ref -> [rbp-0x40] must-init pinned class-hnd ; V07 loc3 [V07,T08] ( 2, 2 ) long -> rdx ;* V08 loc4 [V08 ] ( 0, 0 ) long -> zero-ref ; V09 loc5 [V09,T09] ( 2, 2 ) long -> r9 ; V10 loc6 [V10,T10] ( 2, 2 ) bool -> rax ; V11 loc7 [V11,T11] ( 2, 2 ) int -> rax ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V13 tmp1 [V13 ] ( 3, 3 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "stub argument" ; V14 tmp2 [V14,T05] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V15 tmp3 [V15,T06] ( 2, 4 ) int -> rax "Single return block return value" ; V16 FramesRoot [V16,T00] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V17 PInvokeFrame [V17 ] ( 8, 8 ) blk (72) [rbp-0x90] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 120 G_M28392_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] mov qword ptr [rbp-48H], r10 xor rbx, rbx mov qword ptr [rbp-40H], rbx mov rsi, rcx mov edi, edx mov rbx, r8 mov r14d, r9d ;; bbWeight=1 PerfScore 12.00 G_M28392_IG02: lea rcx, [rbp-88H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-68H], rcx mov rcx, rbp mov qword ptr [rbp-58H], rcx lea rcx, bword ptr [rbp-88H] mov qword ptr [r15+16], rcx xor rcx, rcx test rsi, rsi je SHORT G_M28392_IG04 ;; bbWeight=1 PerfScore 7.50 G_M28392_IG03: mov gword ptr [rbp-40H], rsi lea rcx, bword ptr [rsi+12] ;; bbWeight=0.50 PerfScore 0.75 G_M28392_IG04: mov edx, edi movsxd r9, r14d mov r8, qword ptr [rbp-48H] mov r8, qword ptr [r8+32] mov rax, qword ptr [r8] mov r8, rbx mov r10, qword ptr [rbp-48H] mov qword ptr [rbp-78H], r10 lea r10, G_M28392_IG06 mov qword ptr [rbp-60H], r10 mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 10.75 G_M28392_IG05: call rax ;; bbWeight=1 PerfScore 3.00 G_M28392_IG06: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M28392_IG07 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M28392_IG07: test eax, eax setne al movzx rax, al ;; bbWeight=1 PerfScore 1.50 G_M28392_IG08: movzx rax, al mov rdx, bword ptr [rbp-80H] mov qword ptr [r15+16], rdx ;; bbWeight=1 PerfScore 2.25 G_M28392_IG09: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 216, prolog size 34, PerfScore 72.35, (MethodHash=33fd9117) for method ILStubClass:IL_STUB_PInvoke(String,int,long,int):bool ; ============================================================ ; Assembly listing for method CultureData:get_PerMilleSymbol():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T02] ( 4, 3.50) ref -> rax ; V05 tmp3 [V05,T03] ( 3, 3 ) ref -> rdi class-hnd "dup spill" ; ; Lcl frame size = 40 G_M42279_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M42279_IG02: mov rax, gword ptr [rsi+248] test rax, rax jne SHORT G_M42279_IG04 ;; bbWeight=1 PerfScore 3.25 G_M42279_IG03: mov rcx, rsi mov edx, 119 call CultureData:GetLocaleInfoCore(int):String:this mov rdi, rax lea rcx, bword ptr [rsi+248] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 1.88 G_M42279_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 62, prolog size 6, PerfScore 16.08, (MethodHash=2bd35ad8) for method CultureData:get_PerMilleSymbol():String:this ; ============================================================ ; Assembly listing for method CultureData:get_NegativeInfinitySymbol():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T02] ( 4, 3.50) ref -> rax ; V05 tmp3 [V05,T03] ( 3, 3 ) ref -> rdi class-hnd "dup spill" ; ; Lcl frame size = 40 G_M41728_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M41728_IG02: mov rax, gword ptr [rsi+232] test rax, rax jne SHORT G_M41728_IG04 ;; bbWeight=1 PerfScore 3.25 G_M41728_IG03: mov rcx, rsi mov edx, 107 call CultureData:GetLocaleInfoCore(int):String:this mov rdi, rax lea rcx, bword ptr [rsi+232] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 1.88 G_M41728_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 62, prolog size 6, PerfScore 16.08, (MethodHash=12195cff) for method CultureData:get_NegativeInfinitySymbol():String:this ; ============================================================ ; Assembly listing for method String:Concat(String,String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 7, 4.75) ref -> rdi class-hnd ; V01 arg1 [V01,T00] ( 9, 5 ) ref -> rsi class-hnd ; V02 loc0 [V02,T03] ( 3, 1.50) int -> rbx ; V03 loc1 [V03,T02] ( 4, 2 ) ref -> rbp class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05,T04] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V06 tmp2 [V06,T05] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V07 tmp3 [V07,T06] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; ; Lcl frame size = 40 G_M47907_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 4.75 G_M47907_IG02: test rdi, rdi je SHORT G_M47907_IG04 ;; bbWeight=1 PerfScore 1.25 G_M47907_IG03: cmp dword ptr [rdi+8], 0 ja SHORT G_M47907_IG10 ;; bbWeight=0.25 PerfScore 0.75 G_M47907_IG04: test rsi, rsi je SHORT G_M47907_IG06 ;; bbWeight=0.50 PerfScore 0.63 G_M47907_IG05: cmp dword ptr [rsi+8], 0 ja SHORT G_M47907_IG08 ;; bbWeight=0.25 PerfScore 0.75 G_M47907_IG06: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M47907_IG07: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M47907_IG08: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M47907_IG09: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M47907_IG10: test rsi, rsi je SHORT G_M47907_IG12 ;; bbWeight=0.50 PerfScore 0.63 G_M47907_IG11: cmp dword ptr [rsi+8], 0 ja SHORT G_M47907_IG14 ;; bbWeight=0.25 PerfScore 0.75 G_M47907_IG12: mov rax, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M47907_IG13: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M47907_IG14: mov ebx, dword ptr [rdi+8] mov ecx, ebx add ecx, dword ptr [rsi+8] call String:FastAllocateString(int):String mov rbp, rax mov rcx, rbp mov r8, rdi xor edx, edx call String:FillStringChecked(String,int,String) mov rcx, rbp mov edx, ebx mov r8, rsi call String:FillStringChecked(String,int,String) mov rax, rbp ;; bbWeight=0.50 PerfScore 4.63 G_M47907_IG15: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 147, prolog size 8, PerfScore 36.70, (MethodHash=4ede44dc) for method String:Concat(String,String):String ; ============================================================ ; Assembly listing for method String:FillStringChecked(String,int,String) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rcx class-hnd ; V01 arg1 [V01,T02] ( 4, 4 ) int -> rdx ; V02 arg2 [V02,T01] ( 4, 4 ) ref -> r8 class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T03] ( 2, 4 ) byref -> rcx "Inlining Arg" ; V06 tmp3 [V06,T04] ( 2, 4 ) byref -> rcx "Inlining Arg" ; V07 tmp4 [V07,T05] ( 2, 4 ) byref -> rdx "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V09 tmp6 [V09,T06] ( 2, 4 ) long -> r8 "Inlining Arg" ;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V11 tmp8 [V11 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V12 tmp9 [V12 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V13 tmp10 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V14 cse0 [V14,T07] ( 3, 3 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 32 G_M13082_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M13082_IG02: mov eax, dword ptr [r8+8] mov r9d, dword ptr [rcx+8] sub r9d, edx cmp eax, r9d jg SHORT G_M13082_IG05 ;; bbWeight=1 PerfScore 5.50 G_M13082_IG03: add rcx, 12 movsxd rdx, edx lea rcx, bword ptr [rcx+2*rdx] lea rdx, bword ptr [r8+12] mov r8d, eax add r8, r8 ;; bbWeight=1 PerfScore 2.00 G_M13082_IG04: add rsp, 32 pop rsi jmp Buffer:Memmove(byref,byref,long) ;; bbWeight=1 PerfScore 2.75 G_M13082_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call IndexOutOfRangeException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 87, prolog size 5, PerfScore 20.20, (MethodHash=6752cce5) for method String:FillStringChecked(String,int,String) ; ============================================================ ; Assembly listing for method CultureData:get_PositiveInfinitySymbol():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T02] ( 4, 3.50) ref -> rax ; V05 tmp3 [V05,T03] ( 3, 3 ) ref -> rdi class-hnd "dup spill" ; ; Lcl frame size = 40 G_M28232_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M28232_IG02: mov rax, gword ptr [rsi+224] test rax, rax jne SHORT G_M28232_IG04 ;; bbWeight=1 PerfScore 3.25 G_M28232_IG03: mov rcx, rsi mov edx, 106 call CultureData:GetLocaleInfoCore(int):String:this mov rdi, rax lea rcx, bword ptr [rsi+224] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 1.88 G_M28232_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 62, prolog size 6, PerfScore 16.08, (MethodHash=8d9591b7) for method CultureData:get_PositiveInfinitySymbol():String:this ; ============================================================ ; Assembly listing for method CultureData:get_NaNSymbol():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T02] ( 4, 3.50) ref -> rax ; V05 tmp3 [V05,T03] ( 3, 3 ) ref -> rdi class-hnd "dup spill" ; ; Lcl frame size = 40 G_M7168_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M7168_IG02: mov rax, gword ptr [rsi+216] test rax, rax jne SHORT G_M7168_IG04 ;; bbWeight=1 PerfScore 3.25 G_M7168_IG03: mov rcx, rsi mov edx, 105 call CultureData:GetLocaleInfoCore(int):String:this mov rdi, rax lea rcx, bword ptr [rsi+216] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 1.88 G_M7168_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 62, prolog size 6, PerfScore 16.08, (MethodHash=2901e3ff) for method CultureData:get_NaNSymbol():String:this ; ============================================================ ; Assembly listing for method NumberFormatInfo:UpdateHasInvariantNumberSigns():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T04] ( 2, 1.50) ref -> rdi ;* V03 tmp2 [V03,T05] ( 0, 0 ) ref -> zero-ref ; V04 tmp3 [V04,T02] ( 3, 2 ) int -> rax ; V05 tmp4 [V05,T01] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V06 tmp5 [V06,T03] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; ; Lcl frame size = 40 G_M63115_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M63115_IG02: mov rcx, gword ptr [rsi+32] mov rdi, rsi mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call String:Equals(String,String):bool test eax, eax je SHORT G_M63115_IG04 ;; bbWeight=1 PerfScore 6.75 G_M63115_IG03: mov rcx, gword ptr [rdi+40] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call String:Equals(String,String):bool jmp SHORT G_M63115_IG05 ;; bbWeight=0.50 PerfScore 3.63 G_M63115_IG04: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M63115_IG05: mov byte ptr [rsi+189], al ;; bbWeight=1 PerfScore 1.00 G_M63115_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 77, prolog size 6, PerfScore 23.95, (MethodHash=b03a0974) for method NumberFormatInfo:UpdateHasInvariantNumberSigns():this ; ============================================================ ; Assembly listing for method Number:ParseInt32(ReadOnlySpan`1,int,NumberFormatInfo):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ; V01 arg1 [V01,T01] ( 7, 4.75) int -> rdx ; V02 arg2 [V02,T02] ( 4, 3 ) ref -> r8 class-hnd ; V03 loc0 [V03,T09] ( 3, 2 ) int -> rcx ; V04 loc1 [V04 ] ( 5, 3 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T07] ( 4, 2.50) int -> rcx "Inline return value spill temp" ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V08 tmp3 [V08 ] ( 0, 0 ) byref -> zero-ref V12._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref V12._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ; V10 tmp5 [V10,T06] ( 4, 2.50) byref -> rsi V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V11 tmp6 [V11,T08] ( 4, 2.50) int -> rdi V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V13 tmp8 [V13 ] ( 6, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V14 tmp9 [V14,T03] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V15 tmp10 [V15,T04] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V16 tmp11 [V16,T05] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 56 G_M34218_IG01: push rdi push rsi sub rsp, 56 xor rax, rax mov qword ptr [rsp+20H], rax ;; bbWeight=1 PerfScore 3.50 G_M34218_IG02: mov rsi, bword ptr [rcx] mov edi, dword ptr [rcx+8] test edx, -8 jne SHORT G_M34218_IG04 ;; bbWeight=1 PerfScore 5.25 G_M34218_IG03: lea rcx, bword ptr [rsp+20H] mov bword ptr [rcx], rsi mov dword ptr [rcx+8], edi lea rcx, bword ptr [rsp+20H] lea r9, [rsp+30H] call Number:TryParseInt32IntegerStyle(ReadOnlySpan`1,int,NumberFormatInfo,byref):int mov ecx, eax jmp SHORT G_M34218_IG07 ;; bbWeight=0.50 PerfScore 3.38 G_M34218_IG04: test edx, 512 je SHORT G_M34218_IG06 ;; bbWeight=0.25 PerfScore 0.31 G_M34218_IG05: xor ecx, ecx mov dword ptr [rsp+30H], ecx lea rcx, bword ptr [rsp+20H] mov bword ptr [rcx], rsi mov dword ptr [rcx+8], edi lea rcx, bword ptr [rsp+20H] lea r8, [rsp+30H] call Number:TryParseUInt32HexNumberStyle(ReadOnlySpan`1,int,byref):int mov ecx, eax jmp SHORT G_M34218_IG07 ;; bbWeight=0.50 PerfScore 4.00 G_M34218_IG06: lea rcx, bword ptr [rsp+20H] mov bword ptr [rcx], rsi mov dword ptr [rcx+8], edi lea rcx, bword ptr [rsp+20H] lea r9, [rsp+30H] call Number:TryParseInt32Number(ReadOnlySpan`1,int,NumberFormatInfo,byref):int mov ecx, eax ;; bbWeight=0.50 PerfScore 2.38 G_M34218_IG07: test ecx, ecx jne SHORT G_M34218_IG10 ;; bbWeight=1 PerfScore 1.25 G_M34218_IG08: mov eax, dword ptr [rsp+30H] ;; bbWeight=1 PerfScore 1.00 G_M34218_IG09: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M34218_IG10: mov edx, 9 call Number:ThrowOverflowOrFormatException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 155, prolog size 13, PerfScore 38.81, (MethodHash=e9b97a55) for method Number:ParseInt32(ReadOnlySpan`1,int,NumberFormatInfo):int ; ============================================================ ; Assembly listing for method Number:TryParseInt32IntegerStyle(ReadOnlySpan`1,int,NumberFormatInfo,byref):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T13] ( 5, 7 ) int -> rdi ; V02 arg2 [V02,T11] ( 5, 3.50) ref -> r8 class-hnd ; V03 arg3 [V03,T12] ( 5, 3.50) byref -> rsi ; V04 loc0 [V04,T00] ( 53,100 ) int -> r14 ; V05 loc1 [V05,T01] ( 30, 47.50) int -> r15 ; V06 loc2 [V06,T17] ( 5, 6 ) int -> r12 ; V07 loc3 [V07,T09] ( 6, 6.50) bool -> r13 ; V08 loc4 [V08,T06] ( 9, 11.50) int -> [rsp+0x44] ; V09 loc5 [V09,T18] ( 4, 2.50) int -> rax ; V10 loc6 [V10,T15] ( 6, 2.75) ref -> r13 class-hnd ; V11 loc7 [V11,T16] ( 6, 2.75) ref -> [rsp+0x28] class-hnd ; V12 loc8 [V12,T05] ( 4, 12.50) int -> rcx ; V13 OutArgs [V13 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V15 tmp2 [V15 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V16 tmp3 [V16 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V17 tmp4 [V17 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V18 tmp5 [V18,T40] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V19 tmp6 [V19,T08] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V20 tmp7 [V20 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V21 tmp8 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V22 tmp9 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V23 tmp10 [V23 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V24 tmp11 [V24,T21] ( 2, 2 ) int -> rbp "Inlining Arg" ;* V25 tmp12 [V25,T41] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V26 tmp13 [V26 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V27 tmp14 [V27 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V28 tmp15 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V29 tmp16 [V29,T19] ( 2, 2 ) byref -> rdx "Inlining Arg" ;* V30 tmp17 [V30 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V31 tmp18 [V31,T22] ( 2, 2 ) int -> r8 "Inlining Arg" ; V32 tmp19 [V32,T24] ( 2, 1 ) bool -> rax "Inline return value spill temp" ;* V33 tmp20 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V34 tmp21 [V34,T25] ( 3, 1.50) int -> r8 "Inline stloc first use temp" ;* V35 tmp22 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V36 tmp23 [V36 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V37 tmp24 [V37,T53] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V38 tmp25 [V38 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V39 tmp26 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V40 tmp27 [V40 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V41 tmp28 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V42 tmp29 [V42 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V43 tmp30 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V44 tmp31 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V45 tmp32 [V45,T42] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V46 tmp33 [V46 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V47 tmp34 [V47 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V48 tmp35 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V49 tmp36 [V49,T20] ( 2, 2 ) byref -> rdx "Inlining Arg" ;* V50 tmp37 [V50 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V51 tmp38 [V51,T23] ( 2, 2 ) int -> r8 "Inlining Arg" ; V52 tmp39 [V52,T26] ( 2, 1 ) bool -> rax "Inline return value spill temp" ;* V53 tmp40 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V54 tmp41 [V54,T27] ( 3, 1.50) int -> r8 "Inline stloc first use temp" ;* V55 tmp42 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V56 tmp43 [V56 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V57 tmp44 [V57,T54] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V58 tmp45 [V58 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V59 tmp46 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V60 tmp47 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V61 tmp48 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V62 tmp49 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V63 tmp50 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V64 tmp51 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V65 tmp52 [V65,T43] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V66 tmp53 [V66,T10] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V67 tmp54 [V67,T04] ( 3, 18 ) int -> rcx "Inlining Arg" ; V68 tmp55 [V68,T03] ( 18, 27 ) byref -> rbx V119._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V69 tmp56 [V69,T02] ( 22, 33 ) int -> rbp V119._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V70 tmp57 [V70,T49] ( 0, 0 ) byref -> zero-ref V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ;* V71 tmp58 [V71,T55] ( 0, 0 ) int -> zero-ref V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ; V72 tmp59 [V72,T28] ( 2, 1 ) byref -> rdx V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ;* V73 tmp60 [V73 ] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ;* V74 tmp61 [V74,T50] ( 0, 0 ) byref -> zero-ref V16._pointer(offs=0x00) P-INDEP "field V16._pointer (fldOffset=0x0)" ;* V75 tmp62 [V75,T56] ( 0, 0 ) int -> zero-ref V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)" ; V76 tmp63 [V76,T29] ( 2, 1 ) byref -> rdx V17._pointer(offs=0x00) P-INDEP "field V17._pointer (fldOffset=0x0)" ;* V77 tmp64 [V77 ] ( 0, 0 ) int -> zero-ref V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)" ; V78 tmp65 [V78,T30] ( 2, 1 ) byref -> rbx V20._pointer(offs=0x00) P-INDEP "field V20._pointer (fldOffset=0x0)" ; V79 tmp66 [V79,T44] ( 2, 1 ) int -> rbp V20._length(offs=0x08) P-INDEP "field V20._length (fldOffset=0x8)" ; V80 tmp67 [V80,T31] ( 2, 1 ) byref -> rbx V23._value(offs=0x00) P-INDEP "field V23._value (fldOffset=0x0)" ; V81 tmp68 [V81,T32] ( 2, 1 ) byref -> rdx V26._pointer(offs=0x00) P-INDEP "field V26._pointer (fldOffset=0x0)" ; V82 tmp69 [V82,T45] ( 2, 1 ) int -> r8 V26._length(offs=0x08) P-INDEP "field V26._length (fldOffset=0x8)" ; V83 tmp70 [V83,T33] ( 2, 1 ) byref -> rdx V27._pointer(offs=0x00) P-INDEP "field V27._pointer (fldOffset=0x0)" ; V84 tmp71 [V84,T46] ( 2, 1 ) int -> r8 V27._length(offs=0x08) P-INDEP "field V27._length (fldOffset=0x8)" ;* V85 tmp72 [V85 ] ( 0, 0 ) byref -> zero-ref V28._pointer(offs=0x00) P-INDEP "field V28._pointer (fldOffset=0x0)" ;* V86 tmp73 [V86 ] ( 0, 0 ) int -> zero-ref V28._length(offs=0x08) P-INDEP "field V28._length (fldOffset=0x8)" ; V87 tmp74 [V87,T34] ( 2, 1 ) byref -> rdx V30._value(offs=0x00) P-INDEP "field V30._value (fldOffset=0x0)" ; V88 tmp75 [V88,T35] ( 2, 1 ) byref -> rdx V33._pointer(offs=0x00) P-INDEP "field V33._pointer (fldOffset=0x0)" ;* V89 tmp76 [V89 ] ( 0, 0 ) int -> zero-ref V33._length(offs=0x08) P-INDEP "field V33._length (fldOffset=0x8)" ;* V90 tmp77 [V90,T51] ( 0, 0 ) byref -> zero-ref V35._pointer(offs=0x00) P-INDEP "field V35._pointer (fldOffset=0x0)" ;* V91 tmp78 [V91 ] ( 0, 0 ) int -> zero-ref V35._length(offs=0x08) P-INDEP "field V35._length (fldOffset=0x8)" ;* V92 tmp79 [V92 ] ( 0, 0 ) byref -> zero-ref V39._pointer(offs=0x00) P-INDEP "field V39._pointer (fldOffset=0x0)" ;* V93 tmp80 [V93 ] ( 0, 0 ) int -> zero-ref V39._length(offs=0x08) P-INDEP "field V39._length (fldOffset=0x8)" ;* V94 tmp81 [V94 ] ( 0, 0 ) byref -> zero-ref V41._pointer(offs=0x00) P-INDEP "field V41._pointer (fldOffset=0x0)" ;* V95 tmp82 [V95 ] ( 0, 0 ) int -> zero-ref V41._length(offs=0x08) P-INDEP "field V41._length (fldOffset=0x8)" ;* V96 tmp83 [V96 ] ( 0, 0 ) byref -> zero-ref V43._pointer(offs=0x00) P-INDEP "field V43._pointer (fldOffset=0x0)" ;* V97 tmp84 [V97 ] ( 0, 0 ) int -> zero-ref V43._length(offs=0x08) P-INDEP "field V43._length (fldOffset=0x8)" ;* V98 tmp85 [V98 ] ( 0, 0 ) byref -> zero-ref V44._pointer(offs=0x00) P-INDEP "field V44._pointer (fldOffset=0x0)" ;* V99 tmp86 [V99 ] ( 0, 0 ) int -> zero-ref V44._length(offs=0x08) P-INDEP "field V44._length (fldOffset=0x8)" ; V100 tmp87 [V100,T36] ( 2, 1 ) byref -> rdx V46._pointer(offs=0x00) P-INDEP "field V46._pointer (fldOffset=0x0)" ; V101 tmp88 [V101,T47] ( 2, 1 ) int -> r8 V46._length(offs=0x08) P-INDEP "field V46._length (fldOffset=0x8)" ; V102 tmp89 [V102,T37] ( 2, 1 ) byref -> rdx V47._pointer(offs=0x00) P-INDEP "field V47._pointer (fldOffset=0x0)" ; V103 tmp90 [V103,T48] ( 2, 1 ) int -> r8 V47._length(offs=0x08) P-INDEP "field V47._length (fldOffset=0x8)" ;* V104 tmp91 [V104 ] ( 0, 0 ) byref -> zero-ref V48._pointer(offs=0x00) P-INDEP "field V48._pointer (fldOffset=0x0)" ;* V105 tmp92 [V105 ] ( 0, 0 ) int -> zero-ref V48._length(offs=0x08) P-INDEP "field V48._length (fldOffset=0x8)" ; V106 tmp93 [V106,T38] ( 2, 1 ) byref -> rdx V50._value(offs=0x00) P-INDEP "field V50._value (fldOffset=0x0)" ; V107 tmp94 [V107,T39] ( 2, 1 ) byref -> rdx V53._pointer(offs=0x00) P-INDEP "field V53._pointer (fldOffset=0x0)" ;* V108 tmp95 [V108 ] ( 0, 0 ) int -> zero-ref V53._length(offs=0x08) P-INDEP "field V53._length (fldOffset=0x8)" ;* V109 tmp96 [V109,T52] ( 0, 0 ) byref -> zero-ref V55._pointer(offs=0x00) P-INDEP "field V55._pointer (fldOffset=0x0)" ;* V110 tmp97 [V110 ] ( 0, 0 ) int -> zero-ref V55._length(offs=0x08) P-INDEP "field V55._length (fldOffset=0x8)" ;* V111 tmp98 [V111 ] ( 0, 0 ) byref -> zero-ref V59._pointer(offs=0x00) P-INDEP "field V59._pointer (fldOffset=0x0)" ;* V112 tmp99 [V112 ] ( 0, 0 ) int -> zero-ref V59._length(offs=0x08) P-INDEP "field V59._length (fldOffset=0x8)" ;* V113 tmp100 [V113 ] ( 0, 0 ) byref -> zero-ref V61._pointer(offs=0x00) P-INDEP "field V61._pointer (fldOffset=0x0)" ;* V114 tmp101 [V114 ] ( 0, 0 ) int -> zero-ref V61._length(offs=0x08) P-INDEP "field V61._length (fldOffset=0x8)" ;* V115 tmp102 [V115 ] ( 0, 0 ) byref -> zero-ref V63._pointer(offs=0x00) P-INDEP "field V63._pointer (fldOffset=0x0)" ;* V116 tmp103 [V116 ] ( 0, 0 ) int -> zero-ref V63._length(offs=0x08) P-INDEP "field V63._length (fldOffset=0x8)" ;* V117 tmp104 [V117 ] ( 0, 0 ) byref -> zero-ref V64._pointer(offs=0x00) P-INDEP "field V64._pointer (fldOffset=0x0)" ;* V118 tmp105 [V118 ] ( 0, 0 ) int -> zero-ref V64._length(offs=0x08) P-INDEP "field V64._length (fldOffset=0x8)" ;* V119 tmp106 [V119 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V120 tmp107 [V120 ] ( 2, 2 ) struct (16) [rsp+0x30] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V121 tmp108 [V121,T14] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 72 G_M62562_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 72 xor rax, rax mov qword ptr [rsp+30H], rax mov edi, edx mov rsi, r9 ;; bbWeight=1 PerfScore 10.00 G_M62562_IG02: mov rbx, bword ptr [rcx] mov ebp, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M62562_IG03: test ebp, ebp jbe G_M62562_IG31 ;; bbWeight=1 PerfScore 1.25 G_M62562_IG04: xor r14d, r14d movzx r15, word ptr [rbx] test dil, 1 je SHORT G_M62562_IG08 cmp r15d, 32 je SHORT G_M62562_IG06 ;; bbWeight=0.50 PerfScore 2.38 G_M62562_IG05: lea ecx, [r15-9] cmp ecx, 4 ja SHORT G_M62562_IG08 ;; bbWeight=0.25 PerfScore 0.44 G_M62562_IG06: inc r14d cmp r14d, ebp jae G_M62562_IG31 movsxd rcx, r14d movzx r15, word ptr [rbx+2*rcx] cmp r15d, 32 je SHORT G_M62562_IG06 ;; bbWeight=4 PerfScore 20.00 G_M62562_IG07: lea ecx, [r15-9] cmp ecx, 4 jbe SHORT G_M62562_IG06 ;; bbWeight=2 PerfScore 3.50 G_M62562_IG08: mov r12d, 1 test dil, 4 je G_M62562_IG20 ;; bbWeight=4 PerfScore 6.00 G_M62562_IG09: cmp byte ptr [r8+189], 0 je SHORT G_M62562_IG11 cmp r15d, 45 jne SHORT G_M62562_IG10 mov r12d, -1 inc r14d cmp r14d, ebp jae G_M62562_IG31 movsxd r8, r14d movzx r15, word ptr [rbx+2*r8] jmp G_M62562_IG20 ;; bbWeight=0.50 PerfScore 5.13 G_M62562_IG10: cmp r15d, 43 jne G_M62562_IG20 inc r14d cmp r14d, ebp jae G_M62562_IG31 movsxd r8, r14d movzx r15, word ptr [rbx+2*r8] jmp G_M62562_IG20 ;; bbWeight=0.50 PerfScore 3.50 G_M62562_IG11: cmp r14d, ebp ja G_M62562_IG43 ;; bbWeight=0.50 PerfScore 0.63 G_M62562_IG12: sub ebp, r14d movsxd rcx, r14d lea rbx, bword ptr [rbx+2*rcx] xor r14d, r14d mov r13, gword ptr [r8+32] mov rax, gword ptr [r8+40] mov gword ptr [rsp+28H], rax test r13, r13 je SHORT G_M62562_IG16 ;; bbWeight=0.50 PerfScore 3.75 G_M62562_IG13: cmp dword ptr [r13+8], 0 jbe SHORT G_M62562_IG16 ;; bbWeight=0.25 PerfScore 0.75 G_M62562_IG14: lea rdx, bword ptr [r13+12] mov r8d, dword ptr [r13+8] cmp r8d, ebp jg SHORT G_M62562_IG16 movsxd r8, r8d add r8, r8 mov rcx, rbx call SpanHelpers:SequenceEqual(byref,byref,long):bool test eax, eax je SHORT G_M62562_IG16 ;; bbWeight=0.50 PerfScore 3.38 G_M62562_IG15: mov r14d, dword ptr [r13+8] cmp r14d, ebp jae G_M62562_IG31 movsxd r8, r14d movzx r15, word ptr [rbx+2*r8] jmp SHORT G_M62562_IG20 ;; bbWeight=0.50 PerfScore 3.75 G_M62562_IG16: mov rax, gword ptr [rsp+28H] test rax, rax je SHORT G_M62562_IG20 ;; bbWeight=0.50 PerfScore 1.13 G_M62562_IG17: cmp dword ptr [rax+8], 0 jbe SHORT G_M62562_IG20 ;; bbWeight=0.25 PerfScore 0.75 G_M62562_IG18: lea rdx, bword ptr [rax+12] mov gword ptr [rsp+28H], rax mov r8d, dword ptr [rax+8] cmp r8d, ebp jg SHORT G_M62562_IG20 movsxd r8, r8d add r8, r8 mov rcx, rbx call SpanHelpers:SequenceEqual(byref,byref,long):bool test eax, eax je SHORT G_M62562_IG20 ;; bbWeight=0.50 PerfScore 3.88 G_M62562_IG19: mov r12d, -1 mov r14, gword ptr [rsp+28H] mov r14d, dword ptr [r14+8] cmp r14d, ebp jae G_M62562_IG31 movsxd rax, r14d movzx r15, word ptr [rbx+2*rax] ;; bbWeight=0.50 PerfScore 3.38 G_M62562_IG20: xor r13d, r13d xor eax, eax lea ecx, [r15-48] cmp ecx, 9 ja G_M62562_IG31 cmp r15d, 48 jne SHORT G_M62562_IG23 ;; bbWeight=0.50 PerfScore 1.75 G_M62562_IG21: inc r14d cmp r14d, ebp jae G_M62562_IG29 movsxd rcx, r14d movzx r15, word ptr [rbx+2*rcx] cmp r15d, 48 je SHORT G_M62562_IG21 ;; bbWeight=4 PerfScore 20.00 G_M62562_IG22: lea ecx, [r15-48] cmp ecx, 9 ja G_M62562_IG33 ;; bbWeight=0.50 PerfScore 0.88 G_M62562_IG23: lea eax, [r15-48] inc r14d xor ecx, ecx ;; bbWeight=0.50 PerfScore 0.50 G_M62562_IG24: cmp r14d, ebp jae G_M62562_IG29 movsxd rdx, r14d movzx r15, word ptr [rbx+2*rdx] lea edx, [r15-48] cmp edx, 9 ja G_M62562_IG33 inc r14d lea eax, [rax+4*rax] lea eax, [r15+2*rax-48] inc ecx cmp ecx, 8 jl SHORT G_M62562_IG24 ;; bbWeight=4 PerfScore 34.00 G_M62562_IG25: cmp r14d, ebp jae G_M62562_IG29 movsxd rcx, r14d movzx r15, word ptr [rbx+2*rcx] lea ecx, [r15-48] cmp ecx, 9 ja G_M62562_IG33 inc r14d cmp eax, 0xD1FFAB1E setg r13b movzx r13, r13b lea eax, [rax+4*rax] lea eax, [r15+2*rax-48] mov ecx, r12d shr ecx, 31 add ecx, 0xD1FFAB1E cmp eax, ecx seta cl movzx rcx, cl or ecx, r13d movzx r13, cl cmp r14d, ebp jae SHORT G_M62562_IG28 movsxd rcx, r14d movzx r15, word ptr [rbx+2*rcx] lea ecx, [r15-48] cmp ecx, 9 ja SHORT G_M62562_IG33 ;; bbWeight=0.50 PerfScore 9.13 G_M62562_IG26: mov r13d, 1 inc r14d cmp r14d, ebp jae SHORT G_M62562_IG32 movsxd rcx, r14d movzx r15, word ptr [rbx+2*rcx] lea ecx, [r15-48] cmp ecx, 9 jbe SHORT G_M62562_IG26 ;; bbWeight=4 PerfScore 23.00 G_M62562_IG27: jmp SHORT G_M62562_IG33 ;; bbWeight=0.50 PerfScore 1.00 G_M62562_IG28: test r13d, r13d jne SHORT G_M62562_IG32 ;; bbWeight=0.50 PerfScore 0.63 G_M62562_IG29: imul eax, r12d mov dword ptr [rsi], eax xor eax, eax ;; bbWeight=0.50 PerfScore 1.63 G_M62562_IG30: add rsp, 72 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M62562_IG31: xor eax, eax mov dword ptr [rsi], eax mov eax, 1 jmp SHORT G_M62562_IG30 ;; bbWeight=0.50 PerfScore 1.75 G_M62562_IG32: xor eax, eax mov dword ptr [rsi], eax mov eax, 2 jmp SHORT G_M62562_IG30 ;; bbWeight=0.50 PerfScore 1.75 G_M62562_IG33: cmp r15d, 32 je SHORT G_M62562_IG35 ;; bbWeight=0.50 PerfScore 0.63 G_M62562_IG34: lea ecx, [r15-9] cmp ecx, 4 ja SHORT G_M62562_IG42 ;; bbWeight=0.25 PerfScore 0.44 G_M62562_IG35: test dil, 2 mov dword ptr [rsp+44H], eax je SHORT G_M62562_IG31 inc r14d cmp r14d, ebp jge SHORT G_M62562_IG39 ;; bbWeight=0.50 PerfScore 1.88 G_M62562_IG36: cmp r14d, ebp jae SHORT G_M62562_IG44 movsxd rcx, r14d movzx rcx, word ptr [rbx+2*rcx] cmp ecx, 32 je SHORT G_M62562_IG38 ;; bbWeight=4 PerfScore 19.00 G_M62562_IG37: add ecx, -9 cmp ecx, 4 ja SHORT G_M62562_IG39 ;; bbWeight=1 PerfScore 1.50 G_M62562_IG38: inc r14d cmp r14d, ebp jl SHORT G_M62562_IG36 ;; bbWeight=4 PerfScore 6.00 G_M62562_IG39: cmp r14d, ebp jae SHORT G_M62562_IG41 ;; bbWeight=0.50 PerfScore 0.63 G_M62562_IG40: lea rcx, bword ptr [rsp+30H] mov bword ptr [rcx], rbx mov dword ptr [rcx+8], ebp lea rcx, bword ptr [rsp+30H] mov edx, r14d call Number:TrailingZeros(ReadOnlySpan`1,int):bool test eax, eax mov eax, dword ptr [rsp+44H] jne G_M62562_IG28 jmp G_M62562_IG31 ;; bbWeight=0.50 PerfScore 4.25 G_M62562_IG41: mov eax, dword ptr [rsp+44H] jmp G_M62562_IG28 ;; bbWeight=0.25 PerfScore 0.75 G_M62562_IG42: mov dword ptr [rsp+44H], eax jmp SHORT G_M62562_IG40 ;; bbWeight=0.12 PerfScore 0.36 G_M62562_IG43: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 G_M62562_IG44: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 835, prolog size 28, PerfScore 297.74, (MethodHash=d4ea0b9d) for method Number:TryParseInt32IntegerStyle(ReadOnlySpan`1,int,NumberFormatInfo,byref):int ; ============================================================ ; Assembly listing for method ParamsArray:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M55299_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M55299_IG02: mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 2 call CORINFO_HELP_NEWARR_1_OBJ mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 3 call CORINFO_HELP_NEWARR_1_OBJ mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 9.25 G_M55299_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 131, prolog size 10, PerfScore 26.10, (MethodHash=a71127fc) for method ParamsArray:.cctor() ; ============================================================ ; Assembly listing for method String:FormatHelper(IFormatProvider,String,ParamsArray):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 3 ) ref -> rbx class-hnd ; V01 arg1 [V01,T01] ( 5, 5 ) ref -> rdi class-hnd ; V02 arg2 [V02,T00] ( 4, 8 ) byref -> rsi ld-addr-op ; V03 loc0 [V03 ] ( 6, 6 ) struct (32) [rbp+0x28] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ;* V04 loc1 [V04 ] ( 0, 0 ) struct (16) zero-ref ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V07 tmp2 [V07,T07] ( 2, 4 ) int -> rdx "impAppendStmt" ; V08 tmp3 [V08,T16] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp4 [V09,T08] ( 2, 4 ) long -> rdx "Inlining Arg" ;* V10 tmp5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref V23._arg0(offs=0x00) P-INDEP "field V02._arg0 (fldOffset=0x0)" ;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref V23._arg1(offs=0x08) P-INDEP "field V02._arg1 (fldOffset=0x8)" ;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref V23._arg2(offs=0x10) P-INDEP "field V02._arg2 (fldOffset=0x10)" ;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref V23._args(offs=0x18) P-INDEP "field V02._args (fldOffset=0x18)" ; V16 tmp11 [V16,T09] ( 2, 2 ) byref -> rdx V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ;* V17 tmp12 [V17,T13] ( 0, 0 ) int -> zero-ref V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V18 tmp13 [V18,T10] ( 2, 2 ) byref -> rdx V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ;* V19 tmp14 [V19,T14] ( 0, 0 ) int -> zero-ref V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V20 tmp15 [V20,T11] ( 2, 2 ) byref -> rdx V10._value(offs=0x00) P-INDEP "field V10._value (fldOffset=0x0)" ; V21 tmp16 [V21,T12] ( 2, 2 ) byref -> rdx V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ;* V22 tmp17 [V22,T15] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ;* V23 tmp18 [V23 ] ( 0, 0 ) struct (32) zero-ref "Promoted implicit byref" ; V24 tmp19 [V24,T17] ( 2, 0 ) ref -> rdx "argument with side effect" ; V25 tmp20 [V25,T02] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V26 tmp21 [V26 ] ( 2, 4 ) struct (32) [rbp+0x08] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V27 tmp22 [V27,T04] ( 2, 4 ) byref -> rcx "argument with side effect" ; V28 tmp23 [V28,T05] ( 2, 4 ) ref -> rdx "argument with side effect" ; V29 tmp24 [V29,T06] ( 2, 4 ) ref -> r8 "argument with side effect" ; V30 GsCookie [V30 ] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; ; Lcl frame size = 104 G_M27749_IG01: push rbp push rdi push rsi push rbx sub rsp, 104 vzeroupper lea rbp, [rsp+20H] xor rax, rax mov qword ptr [rbp+08H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp+10H], xmm4 vmovdqa xmmword ptr [rbp+20H], xmm4 vmovdqa xmmword ptr [rbp+30H], xmm4 mov qword ptr [rbp+40H], rax mov rax, 0xD1FFAB1E mov qword ptr [rbp], rax mov rbx, rcx mov rdi, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 13.33 G_M27749_IG02: test rdi, rdi je G_M27749_IG08 ;; bbWeight=1 PerfScore 1.25 G_M27749_IG03: add rsp, 32 test dword ptr [rsp], esp sub rsp, 512 sub rsp, 32 lea rdx, [rsp+20H] xor rcx, rcx mov gword ptr [rbp+28H], rcx lea rcx, bword ptr [rbp+38H] mov bword ptr [rcx], rdx mov dword ptr [rcx+8], 256 xor edx, edx mov dword ptr [rbp+30H], edx mov edx, dword ptr [rdi+8] mov rcx, gword ptr [rsi+24] mov ecx, dword ptr [rcx+8] lea edx, [rdx+8*rcx] lea rcx, bword ptr [rbp+28H] call ValueStringBuilder:EnsureCapacity(int):this lea rcx, bword ptr [rbp+28H] mov rdx, rbx mov r8, rdi ;; bbWeight=1 PerfScore 17.25 G_M27749_IG04: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rbp+08H], xmm0 vmovdqu xmm0, xmmword ptr [rsi+16] vmovdqu xmmword ptr [rbp+18H], xmm0 ;; bbWeight=1 PerfScore 6.00 G_M27749_IG05: lea r9, bword ptr [rbp+08H] call ValueStringBuilder:AppendFormatHelper(IFormatProvider,String,ParamsArray):this lea rcx, bword ptr [rbp+28H] call ValueStringBuilder:ToString():String:this mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx je SHORT G_M27749_IG06 call CORINFO_HELP_FAIL_FAST ;; bbWeight=1 PerfScore 6.25 G_M27749_IG06: nop ;; bbWeight=1 PerfScore 0.25 G_M27749_IG07: lea rsp, [rbp+48H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.50 G_M27749_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 797 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 283, prolog size 59, PerfScore 76.93, (MethodHash=ba1e939a) for method String:FormatHelper(IFormatProvider,String,ParamsArray):String ; ============================================================ ; Assembly listing for method ValueStringBuilder:EnsureCapacity(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) byref -> rcx this ; V01 arg1 [V01,T01] ( 4, 3.50) int -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) byref -> rax "Inlining Arg" ; ; Lcl frame size = 0 G_M36575_IG01: ;; bbWeight=1 PerfScore 0.00 G_M36575_IG02: lea rax, bword ptr [rcx+16] cmp edx, dword ptr [rax+8] jle SHORT G_M36575_IG05 ;; bbWeight=1 PerfScore 3.50 G_M36575_IG03: sub edx, dword ptr [rcx+8] ;; bbWeight=0.50 PerfScore 1.00 G_M36575_IG04: jmp ValueStringBuilder:Grow(int):this ;; bbWeight=0.50 PerfScore 1.00 G_M36575_IG05: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 18, prolog size 0, PerfScore 7.80, (MethodHash=18e57120) for method ValueStringBuilder:EnsureCapacity(int):this ; ============================================================ ; Assembly listing for method ValueStringBuilder:AppendFormatHelper(IFormatProvider,String,ParamsArray):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T18] ( 19, 49 ) byref -> rdi this ; V01 arg1 [V01,T34] ( 7, 11.50) ref -> [rsp+0x108] class-hnd ; V02 arg2 [V02,T03] ( 17,1140 ) ref -> rsi class-hnd ; V03 arg3 [V03,T32] ( 6, 12 ) byref -> r9 ld-addr-op ; V04 loc0 [V04,T00] ( 71,6605 ) int -> r13 ; V05 loc1 [V05,T02] ( 15,1190 ) int -> [rsp+0xA4] ; V06 loc2 [V06,T01] ( 31,3606 ) ushort -> registers ; V07 loc3 [V07,T53] ( 3, 7 ) ref -> [rsp+0x60] class-hnd ; V08 loc4 [V08,T06] ( 10, 272 ) int -> rcx ; V09 loc5 [V09,T24] ( 6, 22 ) bool -> [rsp+0xA0] ; V10 loc6 [V10,T17] ( 7, 62 ) int -> [rsp+0x9C] ; V11 loc7 [V11,T07] ( 7, 270 ) ref -> [rsp+0x58] class-hnd ;* V12 loc8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V13 loc9 [V13,T19] ( 12, 34 ) ref -> [rsp+0x50] class-hnd ; V14 loc10 [V14,T33] ( 6, 14 ) ref -> [rsp+0x48] class-hnd ; V15 loc11 [V15,T26] ( 5, 16 ) int -> registers ; V16 loc12 [V16,T11] ( 5, 136 ) int -> rdx ; V17 loc13 [V17,T35] ( 3, 12 ) ref -> rcx class-hnd ; V18 loc14 [V18 ] ( 3, 12 ) int -> [rsp+0x90] do-not-enreg[X] addr-exposed ld-addr-op ; V19 loc15 [V19,T54] ( 3, 6 ) ref -> [rsp+0x40] class-hnd ; V20 loc16 [V20,T38] ( 3, 12 ) int -> registers ; V21 OutArgs [V21 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V22 tmp1 [V22,T63] ( 3, 2 ) ref -> r8 ;* V23 tmp2 [V23 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V24 tmp3 [V24,T15] ( 2, 64 ) int -> rdx "dup spill" ; V25 tmp4 [V25,T16] ( 2, 64 ) int -> rdx "dup spill" ; V26 tmp5 [V26,T65] ( 7, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V27 tmp6 [V27,T29] ( 2, 16 ) int -> rdx "dup spill" ; V28 tmp7 [V28,T66] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V29 tmp8 [V29,T43] ( 4, 8 ) int -> rcx "Inline stloc first use temp" ; V30 tmp9 [V30,T44] ( 2, 8 ) byref -> r10 "Span.get_Item ptrToSpan" ; V31 tmp10 [V31,T45] ( 2, 8 ) byref -> r10 "Inlining Arg" ; V32 tmp11 [V32,T67] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V33 tmp12 [V33,T05] ( 3, 304 ) ref -> registers class-hnd "Inline return value spill temp" ; V34 tmp13 [V34,T10] ( 4, 168 ) ref -> r10 class-hnd "Inline return value spill temp" ;* V35 tmp14 [V35 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ; V36 tmp15 [V36,T39] ( 3, 12 ) int -> r14 "Inlining Arg" ;* V37 tmp16 [V37 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V38 tmp17 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V39 tmp18 [V39,T46] ( 2, 8 ) byref -> rcx "Inlining Arg" ;* V40 tmp19 [V40 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V41 tmp20 [V41 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V42 tmp21 [V42,T20] ( 4, 32 ) int -> r9 "Inlining Arg" ; V43 tmp22 [V43,T21] ( 3, 24 ) byref -> rdx "Inlining Arg" ;* V44 tmp23 [V44 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V45 tmp24 [V45,T27] ( 2, 16 ) byref -> rdx "Inlining Arg" ;* V46 tmp25 [V46 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V47 tmp26 [V47 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V48 tmp27 [V48,T30] ( 2, 16 ) int -> r11 "Inlining Arg" ; V49 tmp28 [V49,T41] ( 5, 11 ) int -> rcx "Inline stloc first use temp" ; V50 tmp29 [V50,T47] ( 2, 8 ) byref -> r10 "Span.get_Item ptrToSpan" ; V51 tmp30 [V51,T56] ( 2, 4 ) byref -> rax "Inlining Arg" ; V52 tmp31 [V52,T25] ( 2, 17 ) ref -> rbp V70._arg0(offs=0x00) P-INDEP "field V03._arg0 (fldOffset=0x0)" ; V53 tmp32 [V53,T42] ( 2, 9 ) ref -> [rsp+0x38] V70._arg1(offs=0x08) P-INDEP "field V03._arg1 (fldOffset=0x8)" ; V54 tmp33 [V54,T14] ( 2, 65 ) ref -> r15 V70._arg2(offs=0x10) P-INDEP "field V03._arg2 (fldOffset=0x10)" ; V55 tmp34 [V55,T13] ( 3, 69 ) ref -> r12 V70._args(offs=0x18) P-INDEP "field V03._args (fldOffset=0x18)" ; V56 tmp35 [V56,T09] ( 5, 266 ) byref -> [rsp+0x30] V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ; V57 tmp36 [V57,T08] ( 7, 270 ) int -> r14 V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ; V58 tmp37 [V58,T48] ( 2, 8 ) byref -> rdx V23._pointer(offs=0x00) P-INDEP "field V23._pointer (fldOffset=0x0)" ; V59 tmp38 [V59,T51] ( 2, 8 ) int -> r11 V23._length(offs=0x08) P-INDEP "field V23._length (fldOffset=0x8)" ; V60 tmp39 [V60,T57] ( 2, 4 ) byref -> rcx V35._pointer(offs=0x00) P-INDEP "field V35._pointer (fldOffset=0x0)" ; V61 tmp40 [V61,T60] ( 2, 4 ) int -> r14 V35._length(offs=0x08) P-INDEP "field V35._length (fldOffset=0x8)" ; V62 tmp41 [V62,T58] ( 2, 4 ) byref -> rcx V37._pointer(offs=0x00) P-INDEP "field V37._pointer (fldOffset=0x0)" ; V63 tmp42 [V63,T61] ( 2, 4 ) int -> r14 V37._length(offs=0x08) P-INDEP "field V37._length (fldOffset=0x8)" ;* V64 tmp43 [V64 ] ( 0, 0 ) byref -> zero-ref V38._pointer(offs=0x00) P-INDEP "field V38._pointer (fldOffset=0x0)" ;* V65 tmp44 [V65 ] ( 0, 0 ) int -> zero-ref V38._length(offs=0x08) P-INDEP "field V38._length (fldOffset=0x8)" ; V66 tmp45 [V66,T59] ( 2, 4 ) byref -> rcx V41._value(offs=0x00) P-INDEP "field V41._value (fldOffset=0x0)" ; V67 tmp46 [V67,T49] ( 2, 8 ) byref -> rdx V44._pointer(offs=0x00) P-INDEP "field V44._pointer (fldOffset=0x0)" ; V68 tmp47 [V68,T52] ( 2, 8 ) int -> r11 V44._length(offs=0x08) P-INDEP "field V44._length (fldOffset=0x8)" ; V69 tmp48 [V69,T50] ( 2, 8 ) byref -> rdx V47._value(offs=0x00) P-INDEP "field V47._value (fldOffset=0x0)" ;* V70 tmp49 [V70 ] ( 0, 0 ) struct (32) zero-ref "Promoted implicit byref" ; V71 tmp50 [V71,T68] ( 2, 0 ) ref -> rdx "argument with side effect" ; V72 tmp51 [V72,T64] ( 2, 2 ) ref -> rdx "argument with side effect" ; V73 tmp52 [V73,T69] ( 2, 0 ) ref -> rcx "argument with side effect" ; V74 tmp53 [V74 ] ( 6, 32 ) struct (16) [rsp+0x80] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V75 tmp54 [V75,T36] ( 3, 12 ) byref -> rdx stack-byref "BlockOp address local" ; V76 tmp55 [V76 ] ( 2, 16 ) struct (16) [rsp+0x70] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V77 tmp56 [V77,T22] ( 3, 24 ) byref -> r9 stack-byref "BlockOp address local" ; V78 tmp57 [V78,T23] ( 3, 24 ) byref -> rdx stack-byref "BlockOp address local" ; V79 tmp58 [V79,T28] ( 2, 16 ) ref -> rcx "argument with side effect" ; V80 tmp59 [V80,T31] ( 2, 16 ) long -> r9 "argument with side effect" ; V81 tmp60 [V81,T37] ( 3, 12 ) byref -> rdx stack-byref "BlockOp address local" ; V82 cse0 [V82,T40] ( 3, 12 ) int -> r11 "CSE - conservative" ; V83 cse1 [V83,T55] ( 3, 4 ) int -> rax "CSE - conservative" ; V84 cse2 [V84,T62] ( 2, 4 ) int -> r10 "CSE - conservative" ; V85 cse3 [V85,T04] ( 15,1138 ) int -> [rsp+0x6C] "CSE - aggressive" ; V86 cse4 [V86,T12] ( 3, 72 ) int -> r10 "CSE - moderate" ; TEMP_02 ref -> [rsp+0xB0] ; TEMP_01 long -> [rsp+0xA8] ; ; Lcl frame size = 184 G_M25938_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 184 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+70H], xmm4 vmovdqa xmmword ptr [rsp+80H], xmm4 vmovdqa xmmword ptr [rsp+90H], xmm4 vmovdqa xmmword ptr [rsp+A0H], xmm4 xor rax, rax mov qword ptr [rsp+B0H], rax mov rdi, rcx mov rbx, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 14.58 G_M25938_IG02: mov rbp, gword ptr [r9] mov r14, gword ptr [r9+8] mov r15, gword ptr [r9+16] mov r12, gword ptr [r9+24] ;; bbWeight=1 PerfScore 8.00 G_M25938_IG03: test rsi, rsi je G_M25938_IG80 ;; bbWeight=1 PerfScore 1.25 G_M25938_IG04: xor r13d, r13d mov eax, dword ptr [rsi+8] mov dword ptr [rsp+6CH], eax mov dword ptr [rsp+A4H], eax test rbx, rbx jne SHORT G_M25938_IG06 ;; bbWeight=1 PerfScore 5.50 G_M25938_IG05: xor r8, r8 jmp SHORT G_M25938_IG07 ;; bbWeight=0.50 PerfScore 1.13 G_M25938_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov gword ptr [rsp+108H], rbx mov rcx, rbx mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IFormatProvider:GetFormat(Type):Object:this mov r8, rax mov rbx, gword ptr [rsp+108H] ;; bbWeight=0.50 PerfScore 3.75 G_M25938_IG07: mov rdx, r8 mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTINTERFACE mov gword ptr [rsp+60H], rax mov r8d, dword ptr [rsp+A4H] test r8d, r8d jle SHORT G_M25938_IG09 ;; bbWeight=1 PerfScore 4.75 G_M25938_IG08: mov r9d, dword ptr [rsp+6CH] cmp r13d, r9d jae G_M25938_IG85 movsxd rcx, r13d movzx rdx, word ptr [rsi+2*rcx+12] inc r13d cmp edx, 125 jne SHORT G_M25938_IG10 cmp r13d, r8d jge G_M25938_IG83 cmp r13d, r9d jae G_M25938_IG85 movsxd rcx, r13d cmp word ptr [rsi+2*rcx+12], 125 jne G_M25938_IG83 inc r13d jmp SHORT G_M25938_IG13 ;; bbWeight=2 PerfScore 28.00 G_M25938_IG09: mov r9d, dword ptr [rsp+6CH] jmp G_M25938_IG16 ;; bbWeight=0.50 PerfScore 1.50 G_M25938_IG10: cmp edx, 123 jne SHORT G_M25938_IG13 mov dword ptr [rsp+A4H], r8d cmp r13d, r8d jge SHORT G_M25938_IG12 mov dword ptr [rsp+6CH], r9d cmp r13d, r9d jae G_M25938_IG85 movsxd rcx, r13d cmp word ptr [rsi+2*rcx+12], 123 jne SHORT G_M25938_IG11 inc r13d mov r8d, dword ptr [rsp+A4H] mov r9d, dword ptr [rsp+6CH] jmp SHORT G_M25938_IG13 ;; bbWeight=2 PerfScore 26.50 G_M25938_IG11: mov r9d, dword ptr [rsp+6CH] jmp SHORT G_M25938_IG12 ;; bbWeight=1 PerfScore 3.00 G_M25938_IG12: dec r13d mov r8d, dword ptr [rsp+A4H] jmp SHORT G_M25938_IG16 ;; bbWeight=2 PerfScore 6.50 G_M25938_IG13: mov ecx, dword ptr [rdi+8] lea r10, bword ptr [rdi+16] mov r10d, dword ptr [r10+8] cmp ecx, r10d jae SHORT G_M25938_IG14 lea r10, bword ptr [rdi+16] mov r10, bword ptr [r10] movsxd r11, ecx mov word ptr [r10+2*r11], dx inc ecx mov dword ptr [rdi+8], ecx jmp SHORT G_M25938_IG15 ;; bbWeight=2 PerfScore 25.50 G_M25938_IG14: mov dword ptr [rsp+A4H], r8d mov dword ptr [rsp+6CH], r9d mov rcx, rdi call ValueStringBuilder:GrowAndAppend(ushort):this mov r8d, dword ptr [rsp+A4H] mov r9d, dword ptr [rsp+6CH] ;; bbWeight=2 PerfScore 10.50 G_M25938_IG15: cmp r13d, r8d jl G_M25938_IG26 ;; bbWeight=16 PerfScore 20.00 G_M25938_IG16: cmp r13d, r8d je G_M25938_IG79 ;; bbWeight=8 PerfScore 10.00 G_M25938_IG17: inc r13d cmp r13d, r8d je G_M25938_IG83 cmp r13d, r9d jae G_M25938_IG85 movsxd rdx, r13d movzx rdx, word ptr [rsi+2*rdx+12] cmp edx, 48 jl G_M25938_IG83 cmp edx, 57 jg G_M25938_IG83 ;; bbWeight=4 PerfScore 30.00 G_M25938_IG18: xor ecx, ecx ;; bbWeight=4 PerfScore 1.00 G_M25938_IG19: lea ecx, [rcx+4*rcx] lea ecx, [rdx+2*rcx-48] inc r13d cmp r13d, r8d je G_M25938_IG83 ;; bbWeight=32 PerfScore 96.00 G_M25938_IG20: cmp r13d, r9d jae G_M25938_IG85 movsxd rdx, r13d movzx rdx, word ptr [rsi+2*rdx+12] cmp edx, 48 jl SHORT G_M25938_IG22 ;; bbWeight=32 PerfScore 152.00 G_M25938_IG21: cmp edx, 57 jg SHORT G_M25938_IG22 cmp ecx, 0xD1FFAB1E jl SHORT G_M25938_IG19 ;; bbWeight=16 PerfScore 40.00 G_M25938_IG22: mov r10d, dword ptr [r12+8] cmp r10d, ecx jle G_M25938_IG81 ;; bbWeight=4 PerfScore 13.00 G_M25938_IG23: cmp r13d, r8d jge SHORT G_M25938_IG27 ;; bbWeight=32 PerfScore 40.00 G_M25938_IG24: cmp r13d, r9d jae G_M25938_IG85 movsxd rdx, r13d movzx rdx, word ptr [rsi+2*rdx+12] cmp edx, 32 jne SHORT G_M25938_IG27 ;; bbWeight=16 PerfScore 76.00 G_M25938_IG25: inc r13d jmp SHORT G_M25938_IG23 ;; bbWeight=16 PerfScore 36.00 G_M25938_IG26: mov dword ptr [rsp+6CH], r9d jmp G_M25938_IG08 ;; bbWeight=8 PerfScore 24.00 G_M25938_IG27: xor r11d, r11d xor eax, eax cmp edx, 44 jne G_M25938_IG37 ;; bbWeight=4 PerfScore 7.00 G_M25938_IG28: inc r13d ;; bbWeight=2 PerfScore 0.50 G_M25938_IG29: cmp r13d, r8d jge SHORT G_M25938_IG31 cmp r13d, r9d jae G_M25938_IG85 movsxd rdx, r13d cmp word ptr [rsi+2*rdx+12], 32 jne SHORT G_M25938_IG31 ;; bbWeight=16 PerfScore 92.00 G_M25938_IG30: inc r13d jmp SHORT G_M25938_IG29 ;; bbWeight=16 PerfScore 36.00 G_M25938_IG31: cmp r13d, r8d je G_M25938_IG83 ;; bbWeight=2 PerfScore 2.50 G_M25938_IG32: cmp r13d, r9d jae G_M25938_IG85 movsxd rdx, r13d movzx rdx, word ptr [rsi+2*rdx+12] cmp edx, 45 jne SHORT G_M25938_IG34 mov dword ptr [rsp+A0H], 1 inc r13d cmp r13d, r8d je G_M25938_IG83 ;; bbWeight=2 PerfScore 14.50 G_M25938_IG33: cmp r13d, r9d jae G_M25938_IG85 movsxd rdx, r13d movzx rdx, word ptr [rsi+2*rdx+12] mov r11d, dword ptr [rsp+A0H] ;; bbWeight=2 PerfScore 9.00 G_M25938_IG34: cmp edx, 48 jl G_M25938_IG83 cmp edx, 57 jg G_M25938_IG83 ;; bbWeight=2 PerfScore 5.00 G_M25938_IG35: lea eax, [rax+4*rax] lea eax, [rdx+2*rax-48] inc r13d cmp r13d, r8d je G_M25938_IG83 ;; bbWeight=16 PerfScore 48.00 G_M25938_IG36: cmp r13d, r9d jae G_M25938_IG85 movsxd rdx, r13d movzx rdx, word ptr [rsi+2*rdx+12] cmp edx, 48 jl SHORT G_M25938_IG37 cmp edx, 57 jg SHORT G_M25938_IG37 mov dword ptr [rsp+9CH], eax cmp eax, 0xD1FFAB1E mov eax, dword ptr [rsp+9CH] jl SHORT G_M25938_IG35 ;; bbWeight=16 PerfScore 148.00 G_M25938_IG37: cmp r13d, r8d jge SHORT G_M25938_IG39 ;; bbWeight=32 PerfScore 40.00 G_M25938_IG38: cmp r13d, r9d jae G_M25938_IG85 movsxd rdx, r13d movzx rdx, word ptr [rsi+2*rdx+12] cmp edx, 32 je SHORT G_M25938_IG46 ;; bbWeight=16 PerfScore 76.00 G_M25938_IG39: test ecx, ecx je G_M25938_IG50 ;; bbWeight=16 PerfScore 20.00 G_M25938_IG40: cmp ecx, 1 jne SHORT G_M25938_IG47 mov gword ptr [rsp+38H], r14 mov r10, r14 ;; bbWeight=8 PerfScore 20.00 G_M25938_IG41: xor rcx, rcx xor r14d, r14d cmp edx, 58 jne G_M25938_IG53 ;; bbWeight=256 PerfScore 448.00 G_M25938_IG42: inc r13d mov edx, r13d ;; bbWeight=128 PerfScore 64.00 G_M25938_IG43: mov dword ptr [rsp+A4H], r8d cmp r13d, r8d mov gword ptr [rsp+108H], rbx je G_M25938_IG83 ;; bbWeight=1024 PerfScore 3328.00 G_M25938_IG44: cmp r13d, r9d jae G_M25938_IG85 movsxd rbx, r13d movzx rbx, word ptr [rsi+2*rbx+12] cmp ebx, 125 je SHORT G_M25938_IG51 cmp ebx, 123 je G_M25938_IG83 ;; bbWeight=1024 PerfScore 6144.00 G_M25938_IG45: inc r13d mov rbx, gword ptr [rsp+108H] mov r8d, dword ptr [rsp+A4H] jmp SHORT G_M25938_IG43 ;; bbWeight=1024 PerfScore 4352.00 G_M25938_IG46: inc r13d jmp G_M25938_IG37 ;; bbWeight=256 PerfScore 576.00 G_M25938_IG47: cmp ecx, 2 jne SHORT G_M25938_IG49 ;; bbWeight=32 PerfScore 40.00 G_M25938_IG48: mov r10, r15 mov gword ptr [rsp+38H], r14 jmp SHORT G_M25938_IG41 ;; bbWeight=64 PerfScore 208.00 G_M25938_IG49: cmp ecx, r10d jae G_M25938_IG85 movsxd rcx, ecx mov r10, gword ptr [r12+8*rcx+16] mov gword ptr [rsp+38H], r14 jmp G_M25938_IG41 ;; bbWeight=64 PerfScore 416.00 G_M25938_IG50: mov rcx, rbp mov gword ptr [rsp+38H], r14 mov r10, rcx jmp G_M25938_IG41 ;; bbWeight=16 PerfScore 56.00 G_M25938_IG51: cmp r13d, edx jle SHORT G_M25938_IG54 mov r14d, r13d sub r14d, edx mov ecx, edx mov qword ptr [rsp+A8H], rcx mov ecx, r14d add rcx, qword ptr [rsp+A8H] mov qword ptr [rsp+A8H], rcx mov dword ptr [rsp+6CH], r9d mov ecx, r9d cmp qword ptr [rsp+A8H], rcx ja G_M25938_IG82 ;; bbWeight=2 PerfScore 17.00 G_M25938_IG52: lea rcx, bword ptr [rsi+12] movsxd rdx, edx lea rcx, bword ptr [rcx+2*rdx] mov r9d, dword ptr [rsp+6CH] jmp SHORT G_M25938_IG54 ;; bbWeight=2 PerfScore 8.50 G_M25938_IG53: cmp edx, 125 mov dword ptr [rsp+A4H], r8d mov gword ptr [rsp+108H], rbx jne G_M25938_IG83 ;; bbWeight=2 PerfScore 6.50 G_M25938_IG54: inc r13d xor rdx, rdx xor rbx, rbx cmp gword ptr [rsp+60H], 0 je G_M25938_IG57 ;; bbWeight=4 PerfScore 11.00 G_M25938_IG55: test r14d, r14d mov dword ptr [rsp+6CH], r9d mov dword ptr [rsp+9CH], eax mov dword ptr [rsp+A0H], r11d je G_M25938_IG62 mov gword ptr [rsp+58H], r10 lea rdx, bword ptr [rsp+80H] mov bword ptr [rsp+30H], rcx mov bword ptr [rdx], rcx mov dword ptr [rdx+8], r14d lea rdx, bword ptr [rsp+80H] xor rcx, rcx call String:.ctor(ReadOnlySpan`1):this mov rbx, rax mov r10, gword ptr [rsp+58H] ;; bbWeight=2 PerfScore 23.50 G_M25938_IG56: mov rcx, gword ptr [rsp+60H] mov r9, gword ptr [rsp+108H] mov gword ptr [rsp+48H], rbx mov rdx, rbx mov gword ptr [rsp+B0H], rdx mov gword ptr [rsp+58H], r10 mov r8, r10 mov r11, 0xD1FFAB1E mov rdx, 0xD1FFAB1E mov qword ptr [rsp+A8H], rdx mov rdx, gword ptr [rsp+B0H] mov rbx, qword ptr [rsp+A8H] call gword ptr [rbx]ICustomFormatter:Format(String,Object,IFormatProvider):String:this mov rbx, rax mov rdx, rbx mov eax, dword ptr [rsp+9CH] mov rcx, bword ptr [rsp+30H] mov rbx, gword ptr [rsp+48H] mov r9d, dword ptr [rsp+6CH] mov r10, gword ptr [rsp+58H] mov r11d, dword ptr [rsp+A0H] ;; bbWeight=2 PerfScore 37.00 G_M25938_IG57: mov gword ptr [rsp+50H], rdx test rdx, rdx mov bword ptr [rsp+30H], rcx jne G_M25938_IG66 mov dword ptr [rsp+6CH], r9d mov dword ptr [rsp+9CH], eax mov dword ptr [rsp+A0H], r11d mov gword ptr [rsp+58H], r10 mov rdx, r10 mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFINTERFACE mov rcx, rax test rcx, rcx je G_M25938_IG63 cmp dword ptr [rsp+A0H], 0 jne SHORT G_M25938_IG59 ;; bbWeight=4 PerfScore 49.00 G_M25938_IG58: cmp dword ptr [rsp+9CH], 0 jne G_M25938_IG63 ;; bbWeight=2 PerfScore 4.00 G_M25938_IG59: lea rdx, bword ptr [rdi+16] mov r9d, dword ptr [rdi+8] mov r11d, dword ptr [rdx+8] cmp r9d, r11d ja G_M25938_IG84 ;; bbWeight=4 PerfScore 23.00 G_M25938_IG60: mov gword ptr [rsp+48H], rbx mov rdx, bword ptr [rdx] sub r11d, r9d movsxd r9, r9d lea rdx, bword ptr [rdx+2*r9] lea r9, bword ptr [rsp+70H] mov bword ptr [r9], rdx mov dword ptr [r9+8], r11d lea r9, [rsp+90H] lea rdx, bword ptr [rsp+80H] mov r10, bword ptr [rsp+30H] mov bword ptr [rdx], r10 mov dword ptr [rdx+8], r14d mov r11, gword ptr [rsp+108H] mov gword ptr [rsp+20H], r11 lea rdx, bword ptr [rsp+70H] mov r8, r9 lea r9, bword ptr [rsp+80H] mov r11, 0xD1FFAB1E mov rbx, 0xD1FFAB1E call qword ptr [rbx]ISpanFormattable:TryFormat(Span`1,byref,ReadOnlySpan`1,IFormatProvider):bool:this test eax, eax mov rbx, gword ptr [rsp+48H] je G_M25938_IG63 mov ecx, dword ptr [rsp+90H] add dword ptr [rdi+8], ecx mov r8d, dword ptr [rsp+9CH] sub r8d, dword ptr [rsp+90H] cmp dword ptr [rsp+A0H], 0 je SHORT G_M25938_IG61 mov edx, r8d mov rbx, gword ptr [rsp+108H] mov r8d, dword ptr [rsp+A4H] mov r9d, dword ptr [rsp+6CH] mov r14, gword ptr [rsp+38H] test edx, edx jle G_M25938_IG15 mov dword ptr [rsp+A4H], r8d mov dword ptr [rsp+6CH], r9d mov rcx, rdi mov r8d, edx mov edx, 32 call ValueStringBuilder:Append(ushort,int):this mov r8d, dword ptr [rsp+A4H] mov r9d, dword ptr [rsp+6CH] jmp G_M25938_IG15 ;; bbWeight=4 PerfScore 171.00 G_M25938_IG61: mov rbx, gword ptr [rsp+108H] mov r8d, dword ptr [rsp+A4H] mov r9d, dword ptr [rsp+6CH] mov r14, gword ptr [rsp+38H] jmp G_M25938_IG15 ;; bbWeight=2 PerfScore 12.00 G_M25938_IG62: mov bword ptr [rsp+30H], rcx jmp G_M25938_IG56 ;; bbWeight=1 PerfScore 3.00 G_M25938_IG63: mov rdx, gword ptr [rsp+58H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFINTERFACE mov gword ptr [rsp+40H], rax test rax, rax je G_M25938_IG65 mov rax, gword ptr [rsp+40H] test r14d, r14d je SHORT G_M25938_IG64 test rbx, rbx jne SHORT G_M25938_IG64 mov gword ptr [rsp+40H], rax lea rdx, bword ptr [rsp+80H] mov rbx, bword ptr [rsp+30H] mov bword ptr [rdx], rbx mov dword ptr [rdx+8], r14d lea rdx, bword ptr [rsp+80H] xor rcx, rcx call String:.ctor(ReadOnlySpan`1):this mov rbx, rax mov rax, gword ptr [rsp+40H] ;; bbWeight=2 PerfScore 31.00 G_M25938_IG64: mov rcx, rax mov r8, gword ptr [rsp+108H] mov rdx, rbx mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IFormattable:ToString(String,IFormatProvider):String:this mov rbx, rax mov gword ptr [rsp+50H], rbx mov eax, dword ptr [rsp+9CH] mov r9d, dword ptr [rsp+6CH] mov r11d, dword ptr [rsp+A0H] jmp SHORT G_M25938_IG66 ;; bbWeight=2 PerfScore 22.50 G_M25938_IG65: mov r14, gword ptr [rsp+58H] test r14, r14 je G_M25938_IG75 mov rcx, r14 mov rax, qword ptr [r14] mov rax, qword ptr [rax+64] call gword ptr [rax+8]Object:ToString():String:this mov rbx, rax mov gword ptr [rsp+50H], rbx mov eax, dword ptr [rsp+9CH] mov r9d, dword ptr [rsp+6CH] mov r11d, dword ptr [rsp+A0H] ;; bbWeight=2 PerfScore 27.50 G_M25938_IG66: mov rdx, gword ptr [rsp+50H] test rdx, rdx jne SHORT G_M25938_IG68 ;; bbWeight=4 PerfScore 9.00 G_M25938_IG67: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rbx, rdx mov rdx, rbx ;; bbWeight=2 PerfScore 5.50 G_M25938_IG68: mov gword ptr [rsp+50H], rdx mov ebx, eax sub ebx, dword ptr [rdx+8] mov dword ptr [rsp+A0H], r11d test r11d, r11d jne SHORT G_M25938_IG70 ;; bbWeight=4 PerfScore 22.00 G_M25938_IG69: test ebx, ebx jle SHORT G_M25938_IG70 mov dword ptr [rsp+6CH], r9d mov rcx, rdi mov r8d, ebx mov edx, 32 call ValueStringBuilder:Append(ushort,int):this mov r9d, dword ptr [rsp+6CH] ;; bbWeight=2 PerfScore 10.00 G_M25938_IG70: mov ecx, dword ptr [rdi+8] mov rdx, gword ptr [rsp+50H] cmp dword ptr [rdx+8], 1 jne SHORT G_M25938_IG74 ;; bbWeight=4 PerfScore 24.00 G_M25938_IG71: lea rax, bword ptr [rdi+16] mov eax, dword ptr [rax+8] cmp ecx, eax jae SHORT G_M25938_IG73 ;; bbWeight=1 PerfScore 3.75 G_M25938_IG72: lea r10, bword ptr [rdi+16] cmp ecx, eax jae G_M25938_IG85 mov rax, bword ptr [r10] movsxd r10, ecx cmp dword ptr [rdx+8], 0 jbe G_M25938_IG85 movzx rdx, word ptr [rdx+12] mov word ptr [rax+2*r10], dx inc ecx mov dword ptr [rdi+8], ecx jmp SHORT G_M25938_IG77 ;; bbWeight=2 PerfScore 26.50 G_M25938_IG73: mov dword ptr [rsp+6CH], r9d jmp SHORT G_M25938_IG76 ;; bbWeight=0.50 PerfScore 1.50 G_M25938_IG74: mov dword ptr [rsp+6CH], r9d jmp SHORT G_M25938_IG76 ;; bbWeight=2 PerfScore 6.00 G_M25938_IG75: mov eax, dword ptr [rsp+9CH] mov r9d, dword ptr [rsp+6CH] mov r11d, dword ptr [rsp+A0H] jmp G_M25938_IG66 ;; bbWeight=1 PerfScore 5.00 G_M25938_IG76: mov rcx, rdi call ValueStringBuilder:AppendSlow(String):this mov r9d, dword ptr [rsp+6CH] ;; bbWeight=2 PerfScore 4.50 G_M25938_IG77: cmp dword ptr [rsp+A0H], 0 je SHORT G_M25938_IG78 mov edx, ebx mov rbx, gword ptr [rsp+108H] mov r8d, dword ptr [rsp+A4H] mov r14, gword ptr [rsp+38H] test edx, edx jle G_M25938_IG15 mov dword ptr [rsp+A4H], r8d mov dword ptr [rsp+6CH], r9d mov rcx, rdi mov r8d, edx mov edx, 32 call ValueStringBuilder:Append(ushort,int):this mov r8d, dword ptr [rsp+A4H] mov r9d, dword ptr [rsp+6CH] jmp G_M25938_IG15 ;; bbWeight=4 PerfScore 57.00 G_M25938_IG78: mov rbx, gword ptr [rsp+108H] mov r8d, dword ptr [rsp+A4H] mov r14, gword ptr [rsp+38H] jmp G_M25938_IG15 ;; bbWeight=2 PerfScore 10.00 G_M25938_IG79: add rsp, 184 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M25938_IG80: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 797 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M25938_IG81: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC23F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M25938_IG82: mov ecx, 33 call ThrowHelper:ThrowArgumentOutOfRangeException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M25938_IG83: call ValueStringBuilder:ThrowFormatError() int3 ;; bbWeight=0 PerfScore 0.00 G_M25938_IG84: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 G_M25938_IG85: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 2518, prolog size 75, PerfScore 17717.76, (MethodHash=3b899aad) for method ValueStringBuilder:AppendFormatHelper(IFormatProvider,String,ParamsArray):this ; ============================================================ ; Assembly listing for method CastHelpers:ChkCastInterface(long,Object):Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 7, 18.50) long -> rcx ; V01 arg1 [V01,T08] ( 6, 4.50) ref -> rdx class-hnd ; V02 loc0 [V02,T09] ( 3, 1.50) long -> rax ; V03 loc1 [V03,T00] ( 14, 49 ) long -> r8 ; V04 loc2 [V04,T03] ( 5, 16.50) long -> rax ; V05 loc3 [V05,T01] ( 7, 24.50) long -> r9 ;# V06 OutArgs [V06 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T04] ( 2, 16 ) long -> r8 "dup spill" ; V08 tmp2 [V08,T05] ( 2, 16 ) long -> r8 "dup spill" ; V09 tmp3 [V09,T06] ( 2, 16 ) long -> r8 "dup spill" ; V10 tmp4 [V10,T07] ( 2, 16 ) long -> r8 "dup spill" ; ; Lcl frame size = 0 G_M32973_IG01: ;; bbWeight=1 PerfScore 0.00 G_M32973_IG02: test rdx, rdx je SHORT G_M32973_IG05 ;; bbWeight=1 PerfScore 1.25 G_M32973_IG03: mov rax, qword ptr [rdx] movzx r8, word ptr [rax+14] test r8, r8 je SHORT G_M32973_IG07 mov rax, qword ptr [rax+56] xor r9, r9 ;; bbWeight=0.50 PerfScore 3.75 G_M32973_IG04: cmp qword ptr [rax+8*r9], rcx je SHORT G_M32973_IG05 dec r8 je SHORT G_M32973_IG07 cmp qword ptr [rax+8*r9+8], rcx je SHORT G_M32973_IG05 dec r8 je SHORT G_M32973_IG07 cmp qword ptr [rax+8*r9+16], rcx je SHORT G_M32973_IG05 dec r8 je SHORT G_M32973_IG07 cmp qword ptr [rax+8*r9+24], rcx je SHORT G_M32973_IG05 dec r8 je SHORT G_M32973_IG07 add r9, 4 jmp SHORT G_M32973_IG04 ;; bbWeight=4 PerfScore 77.00 G_M32973_IG05: mov rax, rdx ;; bbWeight=0.50 PerfScore 0.13 G_M32973_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 G_M32973_IG07: jmp CastHelpers:ChkCast_Helper(long,Object):Object ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 87, prolog size 0, PerfScore 92.33, (MethodHash=1a1a7f32) for method CastHelpers:ChkCastInterface(long,Object):Object ; ============================================================ ; Assembly listing for method Int32:TryFormat(Span`1,byref,ReadOnlySpan`1,IFormatProvider):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this ; V01 arg1 [V01,T00] ( 3, 6 ) byref -> rdx ; V02 arg2 [V02,T03] ( 3, 3 ) byref -> r8 ; V03 arg3 [V03,T01] ( 3, 6 ) byref -> r9 ; V04 arg4 [V04,T04] ( 1, 1 ) ref -> [rsp+0x60] class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) byref -> zero-ref V10._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref V10._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ;* V08 tmp3 [V08 ] ( 0, 0 ) byref -> zero-ref V11._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; ; Lcl frame size = 56 G_M58732_IG01: sub rsp, 56 ;; bbWeight=1 PerfScore 0.25 G_M58732_IG02: mov bword ptr [rsp+20H], rdx mov bword ptr [rsp+28H], r8 mov ecx, dword ptr [rcx] mov r8, r9 mov r9, gword ptr [rsp+60H] mov edx, -1 call Number:TryFormatInt32(int,int,ReadOnlySpan`1,IFormatProvider,Span`1,byref):bool nop ;; bbWeight=1 PerfScore 6.75 G_M58732_IG03: add rsp, 56 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 40, prolog size 4, PerfScore 12.25, (MethodHash=d27b1a93) for method Int32:TryFormat(Span`1,byref,ReadOnlySpan`1,IFormatProvider):bool:this ; ============================================================ ; Assembly listing for method Number:TryFormatInt32(int,int,ReadOnlySpan`1,IFormatProvider,Span`1,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 6, 4 ) int -> rsi ; V01 arg1 [V01,T03] ( 3, 2.50) int -> rdx ; V02 arg2 [V02,T00] ( 4, 7 ) byref -> r8 ld-addr-op ; V03 arg3 [V03,T02] ( 5, 3.50) ref -> r9 class-hnd ; V04 arg4 [V04,T04] ( 3, 3 ) byref -> rdi ; V05 arg5 [V05,T06] ( 3, 1.50) byref -> rbx ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T07] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ;* V08 tmp2 [V08 ] ( 0, 0 ) byref -> zero-ref V12._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref V12._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ;* V10 tmp4 [V10 ] ( 0, 0 ) byref -> zero-ref V13._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ;* V11 tmp5 [V11 ] ( 0, 0 ) int -> zero-ref V13._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V14 rat0 [V14,T05] ( 2, 2 ) byref -> r9 "Fast tail call lowering is creating a new local variable" ; ; Lcl frame size = 32 G_M23987_IG01: push rdi push rsi push rbx sub rsp, 32 mov esi, ecx mov rdi, bword ptr [rsp+60H] mov rbx, bword ptr [rsp+68H] ;; bbWeight=1 PerfScore 5.50 G_M23987_IG02: cmp dword ptr [r8+8], 0 jne SHORT G_M23987_IG09 ;; bbWeight=1 PerfScore 3.00 G_M23987_IG03: test esi, esi jge SHORT G_M23987_IG07 test r9, r9 je SHORT G_M23987_IG04 mov rcx, r9 call NumberFormatInfo:g__GetProviderNonNull|42_0(IFormatProvider):NumberFormatInfo jmp SHORT G_M23987_IG05 ;; bbWeight=0.50 PerfScore 2.88 G_M23987_IG04: call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo ;; bbWeight=0.50 PerfScore 0.50 G_M23987_IG05: mov r9, rdi mov bword ptr [rsp+60H], rbx mov r8, gword ptr [rax+40] mov ecx, esi mov edx, -1 ;; bbWeight=0.50 PerfScore 1.88 G_M23987_IG06: add rsp, 32 pop rbx pop rsi pop rdi jmp Number:TryNegativeInt32ToDecStr(int,int,String,Span`1,byref):bool ;; bbWeight=0.50 PerfScore 1.88 G_M23987_IG07: mov ecx, esi mov r9, rbx mov r8, rdi mov edx, -1 ;; bbWeight=0.50 PerfScore 0.50 G_M23987_IG08: add rsp, 32 pop rbx pop rsi pop rdi jmp Number:TryUInt32ToDecStr(int,int,Span`1,byref):bool ;; bbWeight=0.50 PerfScore 1.88 G_M23987_IG09: mov bword ptr [rsp+60H], rdi mov bword ptr [rsp+68H], rbx mov ecx, esi ;; bbWeight=0.50 PerfScore 1.13 G_M23987_IG10: add rsp, 32 pop rbx pop rsi pop rdi jmp Number:g__TryFormatInt32Slow|39_0(int,int,ReadOnlySpan`1,IFormatProvider,Span`1,byref):bool ;; bbWeight=0.50 PerfScore 1.88 ; Total bytes of code 130, prolog size 19, PerfScore 34.00, (MethodHash=5b40a24c) for method Number:TryFormatInt32(int,int,ReadOnlySpan`1,IFormatProvider,Span`1,byref):bool ; ============================================================ ; Assembly listing for method Number:TryUInt32ToDecStr(int,int,Span`1,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 10, 20 ) int -> [rsp+0x40] ; V01 arg1 [V01,T07] ( 6, 4.50) int -> r10 ; V02 arg2 [V02,T04] ( 4, 7 ) byref -> r8 ld-addr-op ; V03 arg3 [V03,T08] ( 4, 3 ) byref -> r9 ; V04 loc0 [V04,T10] ( 4, 3 ) int -> rdx ;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref ; V06 loc2 [V06 ] ( 2, 1 ) byref -> [rsp+0x28] must-init pinned ; V07 loc3 [V07,T02] ( 5, 13 ) long -> r8 ; V08 loc4 [V08,T05] ( 2, 8 ) int -> rcx ld-addr-op ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T01] ( 2, 16 ) long -> r8 "dup spill" ; V11 tmp2 [V11,T09] ( 12, 4.75) int -> rsi "Inline stloc first use temp" ; V12 tmp3 [V12,T06] ( 7, 7 ) int -> r11 "Inlining Arg" ; V13 tmp4 [V13,T11] ( 3, 2 ) int -> rdx "Inline return value spill temp" ;* V14 tmp5 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V15 tmp6 [V15,T03] ( 3, 12 ) int -> rdx "Inline stloc first use temp" ;* V16 tmp7 [V16 ] ( 0, 0 ) byref -> zero-ref V20._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref V20._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V18 tmp9 [V18,T13] ( 3, 1.50) byref -> rax V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ;* V20 tmp11 [V20 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V21 tmp12 [V21,T12] ( 2, 2 ) long -> rax "Cast away GC" ; V22 rat0 [V22,T14] ( 3, 1.50) int -> rdx "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 48 G_M40505_IG01: push rsi sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov r10d, edx ;; bbWeight=1 PerfScore 2.75 G_M40505_IG02: mov r11d, ecx mov esi, 1 cmp r11d, 0x186A0 jb SHORT G_M40505_IG04 ;; bbWeight=1 PerfScore 1.75 G_M40505_IG03: mov edx, 0xD1FFAB1E mov eax, ecx mul edx:eax, edx mov r11d, ecx sub r11d, edx shr r11d, 1 add r11d, edx shr r11d, 16 mov esi, 6 ;; bbWeight=0.25 PerfScore 1.50 G_M40505_IG04: cmp r11d, 10 jb SHORT G_M40505_IG09 ;; bbWeight=0.50 PerfScore 0.63 G_M40505_IG05: cmp r11d, 100 jae SHORT G_M40505_IG06 inc esi jmp SHORT G_M40505_IG09 ;; bbWeight=0.25 PerfScore 0.88 G_M40505_IG06: cmp r11d, 0x3E8 jae SHORT G_M40505_IG07 add esi, 2 jmp SHORT G_M40505_IG09 ;; bbWeight=0.25 PerfScore 0.88 G_M40505_IG07: cmp r11d, 0x2710 jae SHORT G_M40505_IG08 add esi, 3 jmp SHORT G_M40505_IG09 ;; bbWeight=0.25 PerfScore 0.88 G_M40505_IG08: add esi, 4 ;; bbWeight=0.25 PerfScore 0.06 G_M40505_IG09: cmp r10d, esi jge SHORT G_M40505_IG11 ;; bbWeight=1 PerfScore 1.25 G_M40505_IG10: mov edx, esi jmp SHORT G_M40505_IG12 ;; bbWeight=0.50 PerfScore 1.13 G_M40505_IG11: mov edx, r10d ;; bbWeight=0.50 PerfScore 0.13 G_M40505_IG12: cmp edx, dword ptr [r8+8] jle SHORT G_M40505_IG15 ;; bbWeight=1 PerfScore 3.00 G_M40505_IG13: xor eax, eax mov dword ptr [r9], eax ;; bbWeight=0.50 PerfScore 0.63 G_M40505_IG14: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M40505_IG15: mov dword ptr [r9], edx mov rax, bword ptr [r8] mov bword ptr [rsp+28H], rax movsxd rdx, edx lea r8, [rax+2*rdx] cmp r10d, 1 jg SHORT G_M40505_IG18 ;; bbWeight=0.50 PerfScore 3.00 G_M40505_IG16: mov edx, 0xD1FFAB1E mov eax, ecx mul edx:eax, edx shr edx, 3 lea r10d, [rdx+4*rdx] add r10d, r10d sub ecx, r10d add r8, -2 add ecx, 48 mov word ptr [r8], cx test edx, edx mov ecx, edx jne SHORT G_M40505_IG16 ;; bbWeight=4 PerfScore 34.00 G_M40505_IG17: jmp SHORT G_M40505_IG19 ;; bbWeight=0.50 PerfScore 1.00 G_M40505_IG18: mov dword ptr [rsp+40H], ecx mov rcx, r8 mov edx, dword ptr [rsp+40H] mov r8d, r10d call Number:UInt32ToDecChars(long,int,int):long ;; bbWeight=0.50 PerfScore 1.75 G_M40505_IG19: xor rax, rax mov bword ptr [rsp+28H], rax mov eax, 1 ;; bbWeight=0.50 PerfScore 0.75 G_M40505_IG20: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 240, prolog size 15, PerfScore 81.69, (MethodHash=d74a61c6) for method Number:TryUInt32ToDecStr(int,int,Span`1,byref):bool ; ============================================================ ; Assembly listing for method ValueStringBuilder:ToString():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) byref -> rsi this ; V01 loc0 [V01,T05] ( 2, 2 ) ref -> rdi class-hnd ; V02 loc1 [V02 ] ( 3, 3 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 6 ) int -> rax "Inlining Arg" ; V05 tmp2 [V05,T01] ( 3, 6 ) byref -> rcx "Inlining Arg" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V07 tmp4 [V07,T03] ( 2, 4 ) byref -> rcx "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V10 tmp7 [V10,T04] ( 3, 2.25) ref -> rbx class-hnd "Inline stloc first use temp" ; V11 tmp8 [V11 ] ( 2, 2 ) byref -> [rsp+0x20] do-not-enreg[X] addr-exposed V02._pointer(offs=0x00) P-DEP "field V02._pointer (fldOffset=0x0)" ; V12 tmp9 [V12 ] ( 2, 2 ) int -> [rsp+0x28] do-not-enreg[X] addr-exposed V02._length(offs=0x08) P-DEP "field V02._length (fldOffset=0x8)" ; V13 tmp10 [V13,T06] ( 2, 2 ) byref -> rcx V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V14 tmp11 [V14,T08] ( 2, 2 ) int -> rax V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V15 tmp12 [V15,T07] ( 2, 2 ) byref -> rcx V09._value(offs=0x00) P-INDEP "field V09._value (fldOffset=0x0)" ; V16 tmp13 [V16,T09] ( 2, 1 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 48 G_M32419_IG01: push rdi push rsi push rbx sub rsp, 48 vzeroupper xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 5.75 G_M32419_IG02: lea rcx, bword ptr [rsi+16] mov eax, dword ptr [rsi+8] mov edx, eax mov r8d, dword ptr [rcx+8] cmp rdx, r8 ja SHORT G_M32419_IG07 ;; bbWeight=1 PerfScore 6.00 G_M32419_IG03: mov rcx, bword ptr [rcx] mov bword ptr [rsp+20H], rcx mov dword ptr [rsp+28H], eax lea rcx, bword ptr [rsp+20H] call Span`1:ToString():String:this mov rdi, rax mov rbx, gword ptr [rsi] vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsi], xmm0 vmovdqu xmmword ptr [rsi+16], xmm0 test rbx, rbx je SHORT G_M32419_IG05 ;; bbWeight=1 PerfScore 11.33 G_M32419_IG04: mov rcx, 0xD1FFAB1E mov edx, 5 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, rbx xor r8d, r8d mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]TlsOverPerCoreLockedStacksArrayPool`1:Return(ref,bool):this ;; bbWeight=0.25 PerfScore 2.38 G_M32419_IG05: mov rax, rdi ;; bbWeight=1 PerfScore 0.25 G_M32419_IG06: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M32419_IG07: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 154, prolog size 17, PerfScore 44.16, (MethodHash=b645815c) for method ValueStringBuilder:ToString():String:this ; ============================================================ ; Assembly listing for method Span`1:ToString():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) byref -> rcx this ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 4 ) byref -> rdx "Inlining Arg" ;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V05 tmp4 [V05,T03] ( 2, 4 ) int -> rcx "Inlining Arg" ; V06 tmp5 [V06,T04] ( 2, 2 ) byref -> rdx V02._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ; V07 tmp6 [V07,T06] ( 2, 2 ) int -> rcx V02._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V08 tmp7 [V08,T05] ( 2, 2 ) byref -> rdx V04._value(offs=0x00) P-INDEP "field V04._value (fldOffset=0x0)" ; V09 tmp8 [V09 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V10 tmp9 [V10,T01] ( 3, 6 ) byref -> rax stack-byref "BlockOp address local" ; ; Lcl frame size = 56 G_M42433_IG01: sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax ;; bbWeight=1 PerfScore 1.50 G_M42433_IG02: mov rdx, bword ptr [rcx] mov ecx, dword ptr [rcx+8] lea rax, bword ptr [rsp+28H] mov bword ptr [rax], rdx mov dword ptr [rax+8], ecx lea rdx, bword ptr [rsp+28H] xor rcx, rcx call String:.ctor(ReadOnlySpan`1):this nop ;; bbWeight=1 PerfScore 8.50 G_M42433_IG03: add rsp, 56 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 46, prolog size 11, PerfScore 15.85, (MethodHash=00de5a3e) for method Span`1:ToString():String:this ; ============================================================ ; Assembly listing for method String:Ctor(ReadOnlySpan`1):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 4, 8 ) byref -> rdx ld-addr-op ; V02 loc0 [V02,T02] ( 4, 2 ) ref -> rbx class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 2 ) byref -> rcx "impAppendStmt" ;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V08 tmp5 [V08,T04] ( 2, 2 ) long -> r8 "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V11 tmp8 [V11 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V12 tmp9 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V13 tmp10 [V13,T05] ( 2, 1.50) byref -> rsi V17._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ; V14 tmp11 [V14,T01] ( 4, 3 ) int -> rdi V17._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ;* V15 tmp12 [V15 ] ( 0, 0 ) byref -> zero-ref V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ;* V16 tmp13 [V16 ] ( 0, 0 ) int -> zero-ref V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ;* V17 tmp14 [V17 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; ; Lcl frame size = 32 G_M39030_IG01: push rdi push rsi push rbx sub rsp, 32 ;; bbWeight=1 PerfScore 3.25 G_M39030_IG02: mov rsi, bword ptr [rdx] mov edi, dword ptr [rdx+8] ;; bbWeight=1 PerfScore 4.00 G_M39030_IG03: test edi, edi jne SHORT G_M39030_IG06 ;; bbWeight=1 PerfScore 1.25 G_M39030_IG04: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M39030_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M39030_IG06: mov ecx, edi call String:FastAllocateString(int):String mov rbx, rax cmp dword ptr [rbx], ebx lea rcx, bword ptr [rbx+12] mov r8d, edi add r8, r8 mov rdx, rsi call Buffer:Memmove(byref,byref,long) mov rax, rbx ;; bbWeight=0.50 PerfScore 3.00 G_M39030_IG07: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 79, prolog size 7, PerfScore 23.28, (MethodHash=b97b6789) for method String:Ctor(ReadOnlySpan`1):String:this ; ============================================================ ; Assembly listing for method Assembly:GetType(String):Type:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M6138_IG01: ;; bbWeight=1 PerfScore 0.00 G_M6138_IG02: xor r8d, r8d xor r9d, r9d mov rax, qword ptr [rcx] mov rax, qword ptr [rax+88] mov rax, qword ptr [rax+8] ;; bbWeight=1 PerfScore 6.50 G_M6138_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 20, prolog size 0, PerfScore 10.50, (MethodHash=8e7fe805) for method Assembly:GetType(String):Type:this ; ============================================================ ; Assembly listing for method RuntimeAssembly:GetType(String,bool,bool):Type:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) bool -> rbx ; V03 arg3 [V03,T04] ( 3, 3 ) bool -> r14 ; V04 loc0 [V04 ] ( 3, 3 ) ref -> [rbp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V05 loc1 [V05 ] ( 3, 3 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V06 loc2 [V06 ] ( 2, 2 ) ref -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V07 loc3 [V07 ] ( 3, 3 ) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V10 tmp2 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V11 tmp3 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V12 tmp4 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ; V13 tmp5 [V13,T14] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V14 tmp6 [V14,T05] ( 2, 4 ) ref -> r9 class-hnd "Inlining Arg" ;* V15 tmp7 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V16 tmp8 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V17 tmp9 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V18 tmp10 [V18,T06] ( 2, 2 ) long -> rcx V09._ptr(offs=0x00) P-INDEP "field V09._ptr (fldOffset=0x0)" ; V19 tmp11 [V19,T07] ( 2, 2 ) long -> r9 V09._assembly(offs=0x08) P-INDEP "field V09._assembly (fldOffset=0x8)" ; V20 tmp12 [V20,T08] ( 2, 2 ) long -> r8 V10._ptr(offs=0x00) P-INDEP "field V10._ptr (fldOffset=0x0)" ; V21 tmp13 [V21,T09] ( 2, 2 ) long -> rdx V11._ptr(offs=0x00) P-INDEP "field V11._ptr (fldOffset=0x0)" ; V22 tmp14 [V22,T10] ( 2, 2 ) long -> rax V12._ptr(offs=0x00) P-INDEP "field V12._ptr (fldOffset=0x0)" ; V23 tmp15 [V23,T11] ( 2, 2 ) long -> r8 V15._ptr(offs=0x00) P-INDEP "field V15._ptr (fldOffset=0x0)" ; V24 tmp16 [V24,T12] ( 2, 2 ) long -> rdx V16._ptr(offs=0x00) P-INDEP "field V16._ptr (fldOffset=0x0)" ; V25 tmp17 [V25,T13] ( 2, 2 ) long -> rax V17._ptr(offs=0x00) P-INDEP "field V17._ptr (fldOffset=0x0)" ; V26 tmp18 [V26,T15] ( 2, 0 ) ref -> rdx "argument with side effect" ; V27 tmp19 [V27 ] ( 2, 4 ) struct (16) [rbp-0x50] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V28 tmp20 [V28,T01] ( 3, 6 ) byref -> r10 stack-byref "BlockOp address local" ; ; Lcl frame size = 112 G_M61766_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 112 lea rbp, [rsp+90H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-40H], xmm4 vmovdqa xmmword ptr [rbp-30H], xmm4 mov rdi, rcx mov rsi, rdx mov ebx, r8d mov r14d, r9d ;; bbWeight=1 PerfScore 9.08 G_M61766_IG02: test rsi, rsi je SHORT G_M61766_IG05 ;; bbWeight=1 PerfScore 1.25 G_M61766_IG03: xor rax, rax mov gword ptr [rbp-28H], rax mov gword ptr [rbp-30H], rax call AssemblyLoadContext:get_CurrentContextualReflectionContext():AssemblyLoadContext mov gword ptr [rbp-38H], rax mov gword ptr [rbp-40H], rdi lea rcx, [rbp-40H] mov r9, gword ptr [rbp-40H] mov r9, qword ptr [r9+32] lea r8, [rbp-28H] lea rdx, [rbp-30H] lea rax, [rbp-38H] lea r10, bword ptr [rbp-50H] mov qword ptr [r10], rcx mov qword ptr [r10+8], r9 mov qword ptr [rsp+20H], r8 mov qword ptr [rsp+28H], rdx mov qword ptr [rsp+30H], rax lea rcx, bword ptr [rbp-50H] movzx r9, r14b movzx r8, bl mov rdx, rsi call RuntimeAssembly:GetType(QCallAssembly,String,bool,bool,ObjectHandleOnStack,ObjectHandleOnStack,ObjectHandleOnStack) mov rax, gword ptr [rbp-28H] ;; bbWeight=1 PerfScore 19.00 G_M61766_IG04: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M61766_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 839 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 215, prolog size 32, PerfScore 55.13, (MethodHash=6cfb0eb9) for method RuntimeAssembly:GetType(String,bool,bool):Type:this ; ============================================================ ; Assembly listing for method AssemblyLoadContext:get_CurrentContextualReflectionContext():AssemblyLoadContext ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V02 tmp2 [V02,T01] ( 3, 2.50) ref -> rcx ; ; Lcl frame size = 40 G_M12740_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M12740_IG02: mov rcx, 0xD1FFAB1E mov edx, 0x45B call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rcx, gword ptr [rax] test rcx, rcx jne SHORT G_M12740_IG05 ;; bbWeight=1 PerfScore 5.00 G_M12740_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M12740_IG04: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M12740_IG05: add rsp, 40 jmp AsyncLocal`1:get_Value():__Canon:this ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 58, prolog size 4, PerfScore 12.93, (MethodHash=b489ce3b) for method AssemblyLoadContext:get_CurrentContextualReflectionContext():AssemblyLoadContext ; ============================================================ ; Assembly listing for method AssemblyLoadContext:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M47169_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M47169_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call Dictionary`2:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M47169_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=d22847be) for method AssemblyLoadContext:.cctor() ; ============================================================ ; Assembly listing for method Dictionary`2:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5395_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5395_IG02: xor edx, edx xor r8, r8 ;; bbWeight=1 PerfScore 0.50 G_M5395_IG03: jmp Dictionary`2:.ctor(int,IEqualityComparer`1):this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 10, prolog size 0, PerfScore 3.50, (MethodHash=8404eaec) for method Dictionary`2:.ctor():this ; ============================================================ ; Assembly listing for method Dictionary`2:.ctor(int,IEqualityComparer`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 5, 4.50) int -> rdx ; V02 arg2 [V02,T01] ( 5, 4 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M17833_IG01: push rdi push rsi sub rsp, 40 mov rdi, rcx mov rsi, r8 ;; bbWeight=1 PerfScore 2.75 G_M17833_IG02: test edx, edx jl SHORT G_M17833_IG09 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG03: test edx, edx jle SHORT G_M17833_IG05 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG04: mov rcx, rdi call Dictionary`2:Initialize(int):int:this ;; bbWeight=0.50 PerfScore 0.63 G_M17833_IG05: test rsi, rsi je SHORT G_M17833_IG07 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG06: mov rcx, 0xD1FFAB1E mov edx, 11 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rdx, 0xD1FFAB1E cmp rsi, gword ptr [rdx] je SHORT G_M17833_IG07 lea rcx, bword ptr [rdi+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 3.25 G_M17833_IG07: nop ;; bbWeight=1 PerfScore 0.25 G_M17833_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M17833_IG09: mov ecx, 22 call ThrowHelper:ThrowArgumentOutOfRangeException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 99, prolog size 6, PerfScore 22.78, (MethodHash=4fbeba56) for method Dictionary`2:.ctor(int,IEqualityComparer`1):this ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(QCallAssembly,String,bool,bool,ObjectHandleOnStack,ObjectHandleOnStack,ObjectHandleOnStack) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rsi ; V01 arg1 [V01,T02] ( 5, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T04] ( 3, 3 ) bool -> rbx ; V03 arg3 [V03,T05] ( 3, 3 ) bool -> r14 ;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ;* V05 arg5 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ;* V06 arg6 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ;* V07 loc0 [V07 ] ( 0, 0 ) int -> zero-ref ;* V08 loc1 [V08 ] ( 0, 0 ) struct (16) zero-ref ; V09 loc2 [V09,T07] ( 3, 2.50) long -> r8 ; V10 loc3 [V10 ] ( 1, 0.50) ref -> [rbp-0x40] must-init pinned class-hnd ; V11 loc4 [V11,T08] ( 2, 2 ) int -> r9 ; V12 loc5 [V12,T09] ( 2, 2 ) int -> rax ;* V13 loc6 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ;* V14 loc7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ;* V15 loc8 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ; V16 OutArgs [V16 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V17 tmp1 [V17 ] ( 3, 3 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed "stub argument" ; V18 tmp2 [V18,T06] ( 2, 4 ) long -> r10 "impImportIndirectCall" ; V19 FramesRoot [V19,T01] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V20 PInvokeFrame [V20 ] ( 8, 8 ) blk (72) [rbp-0xA0] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref V31._ptr(offs=0x00) P-INDEP "field V00._ptr (fldOffset=0x0)" ;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref V31._assembly(offs=0x08) P-INDEP "field V00._assembly (fldOffset=0x8)" ; V23 tmp7 [V23,T15] ( 1, 1 ) long -> [rbp+0x30] V04._ptr(offs=0x00) P-INDEP "field V04._ptr (fldOffset=0x0)" ; V24 tmp8 [V24,T16] ( 1, 1 ) long -> [rbp+0x38] V05._ptr(offs=0x00) P-INDEP "field V05._ptr (fldOffset=0x0)" ; V25 tmp9 [V25,T17] ( 1, 1 ) long -> [rbp+0x40] V06._ptr(offs=0x00) P-INDEP "field V06._ptr (fldOffset=0x0)" ; V26 tmp10 [V26,T10] ( 2, 2 ) long -> rcx V08._ptr(offs=0x00) P-INDEP "field V08._ptr (fldOffset=0x0)" ; V27 tmp11 [V27,T11] ( 2, 2 ) long -> rdx V08._assembly(offs=0x08) P-INDEP "field V08._assembly (fldOffset=0x8)" ; V28 tmp12 [V28,T12] ( 2, 2 ) long -> rsi V13._ptr(offs=0x00) P-INDEP "field V13._ptr (fldOffset=0x0)" ; V29 tmp13 [V29,T13] ( 2, 2 ) long -> rdi V14._ptr(offs=0x00) P-INDEP "field V14._ptr (fldOffset=0x0)" ; V30 tmp14 [V30,T14] ( 2, 2 ) long -> rbx V15._ptr(offs=0x00) P-INDEP "field V15._ptr (fldOffset=0x0)" ;* V31 tmp15 [V31 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V32 tmp16 [V32 ] ( 2, 4 ) struct (16) [rbp-0x50] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V33 tmp17 [V33,T03] ( 3, 6 ) byref -> r11 stack-byref "BlockOp address local" ; ; Lcl frame size = 168 G_M23207_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 168 lea rbp, [rsp+E0H] mov qword ptr [rbp-58H], r10 xor rbx, rbx mov qword ptr [rbp-40H], rbx mov rsi, rcx mov rdi, rdx mov ebx, r8d mov r14d, r9d ;; bbWeight=1 PerfScore 12.00 G_M23207_IG02: lea rcx, [rbp-98H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-78H], rcx mov rcx, rbp mov qword ptr [rbp-68H], rcx lea rcx, bword ptr [rbp-98H] mov qword ptr [r15+16], rcx mov rcx, qword ptr [rsi] mov rdx, qword ptr [rsi+8] xor r8, r8 test rdi, rdi je SHORT G_M23207_IG04 ;; bbWeight=1 PerfScore 11.50 G_M23207_IG03: mov gword ptr [rbp-40H], rdi lea r8, bword ptr [rdi+12] ;; bbWeight=0.50 PerfScore 0.75 G_M23207_IG04: test bl, bl setne r9b movzx r9, r9b test r14b, r14b setne al movzx rax, al mov rsi, qword ptr [rbp+30H] mov rdi, qword ptr [rbp+38H] mov rbx, qword ptr [rbp+40H] mov r10, qword ptr [rbp-58H] mov r10, qword ptr [r10+32] mov r10, qword ptr [r10] lea r11, bword ptr [rbp-50H] mov qword ptr [r11], rcx mov qword ptr [r11+8], rdx mov qword ptr [rsp+20H], rsi mov qword ptr [rsp+28H], rdi mov qword ptr [rsp+30H], rbx lea rcx, bword ptr [rbp-50H] mov rdx, r8 mov r8d, r9d mov r9d, eax mov rax, qword ptr [rbp-58H] mov qword ptr [rbp-88H], rax lea rax, G_M23207_IG06 mov qword ptr [rbp-70H], rax mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 22.75 G_M23207_IG05: call r10 ;; bbWeight=1 PerfScore 3.00 G_M23207_IG06: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M23207_IG07 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M23207_IG07: mov rax, bword ptr [rbp-90H] mov qword ptr [r15+16], rax ;; bbWeight=1 PerfScore 2.00 G_M23207_IG08: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 286, prolog size 37, PerfScore 93.60, (MethodHash=2af2a558) for method ILStubClass:IL_STUB_PInvoke(QCallAssembly,String,bool,bool,ObjectHandleOnStack,ObjectHandleOnStack,ObjectHandleOnStack) ; ============================================================ ; Assembly listing for method Type:GetMethod(String,int):MethodInfo:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) int -> r8 ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T04] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 64 G_M5773_IG01: push rsi sub rsp, 64 ;; bbWeight=1 PerfScore 1.25 G_M5773_IG02: test rdx, rdx je SHORT G_M5773_IG05 ;; bbWeight=1 PerfScore 1.25 G_M5773_IG03: mov dword ptr [rsp+20H], 3 xor r9, r9 mov gword ptr [rsp+28H], r9 mov gword ptr [rsp+30H], r9 mov rax, qword ptr [rcx] mov rax, qword ptr [rax+136] call gword ptr [rax]Type:GetMethodImpl(String,int,Binder,int,ref,ref):MethodInfo:this nop ;; bbWeight=1 PerfScore 10.50 G_M5773_IG04: add rsp, 64 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M5773_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 839 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 108, prolog size 5, PerfScore 25.55, (MethodHash=022ae972) for method Type:GetMethod(String,int):MethodInfo:this ; ============================================================ ; Assembly listing for method RuntimeType:GetMethodImpl(String,int,Binder,int,ref,ref):MethodInfo:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) int -> r8 ; V03 arg3 [V03,T02] ( 3, 3 ) ref -> r9 class-hnd ; V04 arg4 [V04,T06] ( 1, 1 ) int -> [rbp+0x30] ; V05 arg5 [V05,T04] ( 1, 1 ) ref -> [rbp+0x38] class-hnd ; V06 arg6 [V06,T05] ( 1, 1 ) ref -> [rbp+0x40] class-hnd ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (64) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 64 G_M31020_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] ;; bbWeight=1 PerfScore 1.75 G_M31020_IG02: mov gword ptr [rsp+20H], r9 mov r9d, dword ptr [rbp+30H] mov dword ptr [rsp+28H], r9d mov r9, gword ptr [rbp+38H] mov gword ptr [rsp+30H], r9 mov r9, gword ptr [rbp+40H] mov gword ptr [rsp+38H], r9 mov r9d, r8d mov r8d, -1 call RuntimeType:GetMethodImplCommon(String,int,int,Binder,int,ref,ref):MethodInfo:this nop ;; bbWeight=1 PerfScore 8.75 G_M31020_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 63, prolog size 10, PerfScore 18.80, (MethodHash=c6a086d3) for method RuntimeType:GetMethodImpl(String,int,Binder,int,ref,ref):MethodInfo:this ; ============================================================ ; Assembly listing for method RuntimeType:GetMethodImplCommon(String,int,int,Binder,int,ref,ref):MethodInfo:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T04] ( 3, 3 ) ref -> r9 class-hnd ; V02 arg2 [V02,T06] ( 3, 3 ) int -> rax ; V03 arg3 [V03,T02] ( 4, 3.50) int -> rsi ; V04 arg4 [V04,T08] ( 4, 2 ) ref -> rbx class-hnd ; V05 arg5 [V05,T13] ( 1, 1 ) int -> [rbp+0x38] ; V06 arg6 [V06,T07] ( 5, 3 ) ref -> rdi class-hnd ; V07 arg7 [V07,T14] ( 1, 0.50) ref -> [rbp+0x48] class-hnd ; V08 loc0 [V08 ] ( 16, 20.50) struct (24) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V09 loc1 [V09,T05] ( 3, 5 ) ref -> r14 class-hnd ; V10 loc2 [V10,T00] ( 6, 16.50) int -> rbx ;* V11 loc3 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V12 loc4 [V12,T09] ( 4, 2 ) ref -> [rbp-0x40] class-hnd ; V13 OutArgs [V13 ] ( 1, 1 ) lclBlk (64) [rsp+0x00] "OutgoingArgSpace" ; V14 tmp1 [V14,T15] ( 7, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V15 tmp2 [V15,T12] ( 3, 1.50) ref -> r14 class-hnd "Inline return value spill temp" ; V16 tmp3 [V16,T01] ( 3, 8 ) ref -> rcx class-hnd "Inline return value spill temp" ; V17 tmp4 [V17,T16] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V18 tmp5 [V18 ] ( 9, 11.50) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed V08._items(offs=0x00) P-DEP "field V08._items (fldOffset=0x0)" ; V19 tmp6 [V19 ] ( 5, 4.50) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed V08._item(offs=0x08) P-DEP "field V08._item (fldOffset=0x8)" ; V20 tmp7 [V20 ] ( 8, 8.50) int -> [rbp-0x28] do-not-enreg[X] addr-exposed V08._count(offs=0x10) P-DEP "field V08._count (fldOffset=0x10)" ; V21 tmp8 [V21 ] ( 3, 2 ) int -> [rbp-0x24] do-not-enreg[X] addr-exposed V08._capacity(offs=0x14) P-DEP "field V08._capacity (fldOffset=0x14)" ; V22 tmp9 [V22,T17] ( 2, 0 ) ref -> rcx "argument with side effect" ; V23 tmp10 [V23,T10] ( 2, 2 ) ref -> rdx "argument with side effect" ; V24 tmp11 [V24,T11] ( 2, 2 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 96 G_M42590_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 96 lea rbp, [rsp+80H] vxorps xmm4, xmm4 vmovdqu xmmword ptr [rbp-38H], xmm4 xor rax, rax mov qword ptr [rbp-28H], rax mov eax, r8d mov esi, r9d mov r9, rdx mov rbx, gword ptr [rbp+30H] mov rdi, gword ptr [rbp+40H] ;; bbWeight=1 PerfScore 11.08 G_M42590_IG02: mov dword ptr [rsp+20H], esi mov edx, dword ptr [rbp+38H] mov dword ptr [rsp+28H], edx mov gword ptr [rsp+30H], rdi xor edx, edx mov dword ptr [rsp+38H], edx lea rdx, bword ptr [rbp-38H] mov r8, r9 mov r9d, eax call RuntimeType:GetMethodCandidates(String,int,int,int,ref,bool):ListBuilder`1:this cmp dword ptr [rbp-28H], 0 jne SHORT G_M42590_IG05 ;; bbWeight=1 PerfScore 9.25 G_M42590_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M42590_IG04: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M42590_IG05: test rdi, rdi je SHORT G_M42590_IG06 cmp dword ptr [rdi+8], 0 jne G_M42590_IG18 ;; bbWeight=0.50 PerfScore 2.13 G_M42590_IG06: cmp gword ptr [rbp-38H], 0 jne SHORT G_M42590_IG07 mov r14, gword ptr [rbp-30H] jmp SHORT G_M42590_IG08 ;; bbWeight=0.50 PerfScore 2.50 G_M42590_IG07: mov rax, gword ptr [rbp-38H] cmp dword ptr [rax+8], 0 jbe G_M42590_IG22 mov rax, gword ptr [rbp-38H] mov r14, gword ptr [rax+16] ;; bbWeight=0.50 PerfScore 3.50 G_M42590_IG08: cmp dword ptr [rbp-28H], 1 jne SHORT G_M42590_IG10 mov rax, r14 ;; bbWeight=0.50 PerfScore 1.13 G_M42590_IG09: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M42590_IG10: test rdi, rdi jne G_M42590_IG18 mov ebx, 1 cmp dword ptr [rbp-28H], 1 jle SHORT G_M42590_IG16 ;; bbWeight=0.50 PerfScore 1.75 G_M42590_IG11: cmp gword ptr [rbp-38H], 0 jne SHORT G_M42590_IG13 ;; bbWeight=4 PerfScore 8.00 G_M42590_IG12: mov rcx, gword ptr [rbp-30H] jmp SHORT G_M42590_IG14 ;; bbWeight=2 PerfScore 6.00 G_M42590_IG13: mov rcx, gword ptr [rbp-38H] cmp ebx, dword ptr [rcx+8] jae G_M42590_IG22 mov rcx, gword ptr [rbp-38H] movsxd rdx, ebx mov rcx, gword ptr [rcx+8*rdx+16] ;; bbWeight=2 PerfScore 14.50 G_M42590_IG14: mov rdx, r14 call DefaultBinder:CompareMethodSig(MethodBase,MethodBase):bool test eax, eax je G_M42590_IG21 ;; bbWeight=4 PerfScore 10.00 G_M42590_IG15: inc ebx cmp ebx, dword ptr [rbp-28H] jl SHORT G_M42590_IG11 ;; bbWeight=4 PerfScore 9.00 G_M42590_IG16: lea rcx, bword ptr [rbp-38H] mov rdx, 0xD1FFAB1E call ListBuilder`1:ToArray():ref:this mov rcx, rax mov edx, dword ptr [rbp-28H] call DefaultBinder:FindMostDerivedNewSlotMeth(ref,int):MethodBase mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS nop ;; bbWeight=0.50 PerfScore 2.88 G_M42590_IG17: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M42590_IG18: test rbx, rbx jne SHORT G_M42590_IG19 call Type:get_DefaultBinder():Binder mov rbx, rax ;; bbWeight=0.50 PerfScore 1.25 G_M42590_IG19: lea rcx, bword ptr [rbp-38H] mov rdx, 0xD1FFAB1E call ListBuilder`1:ToArray():ref:this mov gword ptr [rbp-40H], rax mov r14, gword ptr [rbp+48H] mov gword ptr [rsp+20H], r14 mov rcx, rbx mov edx, esi mov r8, gword ptr [rbp-40H] mov r9, rdi mov rax, qword ptr [rbx] mov rax, qword ptr [rax+72] call gword ptr [rax]Binder:SelectMethod(int,ref,ref,ref):MethodBase:this mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS nop ;; bbWeight=0.50 PerfScore 7.63 G_M42590_IG20: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M42590_IG21: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x35D3 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M42590_IG22: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 515, prolog size 33, PerfScore 150.41, (MethodHash=791959a1) for method RuntimeType:GetMethodImplCommon(String,int,int,Binder,int,ref,ref):MethodInfo:this ; ============================================================ ; Assembly listing for method RuntimeType:GetMethodCandidates(String,int,int,int,ref,bool):ListBuilder`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T07] ( 5, 3.75) ref -> rbx this class-hnd ; V01 RetBuf [V01,T03] ( 7, 7 ) byref -> rdi ; V02 arg1 [V02 ] ( 5, 6 ) ref -> [rsp+0xC0] do-not-enreg[X] addr-exposed ld-addr-op class-hnd ; V03 arg2 [V03,T02] ( 4, 8 ) int -> rsi ; V04 arg3 [V04,T14] ( 2, 3 ) int -> rbp ; V05 arg4 [V05,T18] ( 1, 2 ) int -> r15 ; V06 arg5 [V06,T17] ( 1, 2 ) ref -> r14 class-hnd ; V07 arg6 [V07,T22] ( 1, 1 ) bool -> [rsp+0xE8] ; V08 loc0 [V08 ] ( 2, 3 ) bool -> [rsp+0x60] do-not-enreg[X] addr-exposed ld-addr-op ; V09 loc1 [V09 ] ( 2, 3 ) bool -> [rsp+0x58] do-not-enreg[X] addr-exposed ld-addr-op ; V10 loc2 [V10 ] ( 2, 2 ) int -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V11 loc3 [V11,T06] ( 3, 6 ) ref -> rbx class-hnd ; V12 loc4 [V12 ] ( 9, 10 ) struct (24) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V13 loc5 [V13,T00] ( 5, 17 ) int -> r13 ; V14 loc6 [V14,T01] ( 6, 14 ) ref -> [rsp+0x30] class-hnd ; V15 OutArgs [V15 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V16 tmp1 [V16,T08] ( 5, 4 ) ref -> rcx class-hnd "Inline return value spill temp" ; V17 tmp2 [V17,T19] ( 3, 1 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V18 tmp3 [V18,T11] ( 2, 4 ) long -> rcx ld-addr-op "Inlining Arg" ;* V19 tmp4 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V20 tmp5 [V20,T21] ( 2, 1 ) long -> rcx "Inlining Arg" ;* V21 tmp6 [V21 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V22 tmp7 [V22,T20] ( 2, 1 ) byref -> rcx "Inlining Arg" ; V23 tmp8 [V23,T12] ( 2, 4 ) int -> rbx "Inlining Arg" ; V24 tmp9 [V24,T09] ( 2, 4 ) ref -> r12 class-hnd "Inlining Arg" ; V25 tmp10 [V25,T15] ( 2, 2 ) ref -> rbx class-hnd "Inline return value spill temp" ; V26 tmp11 [V26,T10] ( 2, 4 ) byref -> r8 "Inlining Arg" ; V27 tmp12 [V27,T16] ( 2, 2 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V28 tmp13 [V28,T13] ( 2, 4 ) int -> rcx "Inlining Arg" ;* V29 tmp14 [V29 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V30 tmp15 [V30,T04] ( 2, 8 ) long -> rcx "Inlining Arg" ; V31 tmp16 [V31 ] ( 3, 4 ) ref -> [rsp+0x38] do-not-enreg[X] addr-exposed V12._items(offs=0x00) P-DEP "field V12._items (fldOffset=0x0)" ; V32 tmp17 [V32 ] ( 3, 4 ) ref -> [rsp+0x40] do-not-enreg[X] addr-exposed V12._item(offs=0x08) P-DEP "field V12._item (fldOffset=0x8)" ; V33 tmp18 [V33 ] ( 3, 4 ) int -> [rsp+0x48] do-not-enreg[X] addr-exposed V12._count(offs=0x10) P-DEP "field V12._count (fldOffset=0x10)" ; V34 tmp19 [V34 ] ( 3, 4 ) int -> [rsp+0x4C] do-not-enreg[X] addr-exposed V12._capacity(offs=0x14) P-DEP "field V12._capacity (fldOffset=0x14)" ; V35 cse0 [V35,T05] ( 4, 7 ) int -> r12 "CSE - aggressive" ; ; Lcl frame size = 104 G_M1259_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 104 vxorps xmm4, xmm4 vmovdqu xmmword ptr [rsp+38H], xmm4 xor rax, rax mov qword ptr [rsp+48H], rax mov gword ptr [rsp+C0H], r8 mov rbx, rcx mov rdi, rdx mov esi, r9d mov ebp, dword ptr [rsp+D0H] mov r15d, dword ptr [rsp+D8H] mov r14, gword ptr [rsp+E0H] ;; bbWeight=1 PerfScore 15.58 G_M1259_IG02: lea r8, [rsp+58H] mov qword ptr [rsp+20H], r8 lea r8, [rsp+50H] mov qword ptr [rsp+28H], r8 mov r8d, dword ptr [rsp+E8H] movzx r8, r8b lea rdx, [rsp+C0H] lea r9, [rsp+60H] mov ecx, ebp call RuntimeType:FilterHelper(int,byref,bool,byref,byref,byref) mov rcx, qword ptr [rbx+16] test rcx, rcx je SHORT G_M1259_IG05 ;; bbWeight=1 PerfScore 9.75 G_M1259_IG03: mov rcx, qword ptr [rbx+16] mov rcx, gword ptr [rcx] test rcx, rcx je SHORT G_M1259_IG05 ;; bbWeight=0.25 PerfScore 1.31 G_M1259_IG04: jmp SHORT G_M1259_IG06 ;; bbWeight=0.50 PerfScore 1.00 G_M1259_IG05: mov rcx, rbx call RuntimeType:InitializeCache():RuntimeTypeCache:this mov rcx, rax ;; bbWeight=0.50 PerfScore 0.75 G_M1259_IG06: mov ebx, dword ptr [rsp+50H] mov r12, gword ptr [rsp+C0H] cmp dword ptr [rcx], ecx lea r8, bword ptr [rcx+56] mov rdx, 0xD1FFAB1E call RuntimeTypeCache:GetMemberCache(byref):MemberInfoCache`1:this mov rcx, rax mov edx, ebx mov r8, r12 xor r9d, r9d cmp dword ptr [rcx], ecx call MemberInfoCache`1:GetMemberList(int,String,int):ref:this mov rbx, rax mov r12d, dword ptr [rbx+8] mov ecx, r12d xor rax, rax mov gword ptr [rsp+38H], rax mov gword ptr [rsp+40H], rax mov dword ptr [rsp+48H], eax mov dword ptr [rsp+4CH], ecx xor r13d, r13d test r12d, r12d jle G_M1259_IG12 ;; bbWeight=1 PerfScore 18.00 G_M1259_IG07: movsxd rcx, r13d mov rax, gword ptr [rbx+8*rcx+16] cmp esi, -1 je SHORT G_M1259_IG09 ;; bbWeight=4 PerfScore 14.00 G_M1259_IG08: mov gword ptr [rsp+30H], rax mov rcx, qword ptr [rax+72] call RuntimeMethodHandle:GetGenericParameterCount(long):int cmp eax, esi mov rax, gword ptr [rsp+30H] jne SHORT G_M1259_IG11 ;; bbWeight=2 PerfScore 12.50 G_M1259_IG09: mov gword ptr [rsp+20H], r14 mov edx, dword ptr [rax+80] mov gword ptr [rsp+30H], rax mov rcx, rax mov r8d, ebp mov r9d, r15d call RuntimeType:FilterApplyMethodBase(MethodBase,int,int,int,ref):bool test eax, eax je SHORT G_M1259_IG11 cmp byte ptr [rsp+60H], 0 je SHORT G_M1259_IG10 mov r8d, dword ptr [rsp+58H] movzx r8, r8b mov rcx, gword ptr [rsp+30H] mov rdx, gword ptr [rsp+C0H] call RuntimeType:FilterApplyPrefixLookup(MemberInfo,String,bool):bool test eax, eax je SHORT G_M1259_IG11 ;; bbWeight=2 PerfScore 29.00 G_M1259_IG10: lea rcx, bword ptr [rsp+38H] mov r8, gword ptr [rsp+30H] mov rdx, 0xD1FFAB1E call ListBuilder`1:Add(__Canon):this ;; bbWeight=2 PerfScore 5.50 G_M1259_IG11: inc r13d cmp r12d, r13d jg G_M1259_IG07 ;; bbWeight=4 PerfScore 6.00 G_M1259_IG12: mov rdx, gword ptr [rsp+38H] mov rcx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF lea rcx, bword ptr [rdi+8] mov rdx, gword ptr [rsp+40H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov eax, dword ptr [rsp+48H] mov dword ptr [rdi+16], eax mov eax, dword ptr [rsp+4CH] mov dword ptr [rdi+20], eax mov rax, rdi ;; bbWeight=1 PerfScore 9.00 G_M1259_IG13: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 ; Total bytes of code 455, prolog size 73, PerfScore 173.35, (MethodHash=3bfffb14) for method RuntimeType:GetMethodCandidates(String,int,int,int,ref,bool):ListBuilder`1:this ; ============================================================ ; Assembly listing for method RuntimeType:FilterHelper(int,byref,bool,byref,byref,byref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 2.50) int -> rcx ; V01 arg1 [V01,T00] ( 7, 5 ) byref -> rsi ; V02 arg2 [V02,T03] ( 3, 2.50) bool -> rbx ; V03 arg3 [V03,T01] ( 4, 3.50) byref -> rdi ; V04 arg4 [V04,T09] ( 2, 1.50) byref -> r14 ; V05 arg5 [V05,T07] ( 4, 2 ) byref -> rbp ;* V06 loc0 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc1 [V07,T10] ( 2, 1 ) int -> r8 ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T04] ( 3, 3 ) ref -> rcx class-hnd "dup spill" ; V10 tmp2 [V10,T05] ( 3, 3 ) ref -> r15 class-hnd "Inlining Arg" ; V11 tmp3 [V11,T08] ( 2, 2 ) ref -> rcx "argument with side effect" ; V12 cse0 [V12,T06] ( 3, 2.50) ref -> r15 "CSE - aggressive" ; ; Lcl frame size = 40 G_M24594_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rdx mov ebx, r8d mov rdi, r9 mov r14, bword ptr [rsp+80H] mov rbp, bword ptr [rsp+88H] ;; bbWeight=1 PerfScore 9.00 G_M24594_IG02: mov byte ptr [rdi], 0 mov byte ptr [r14], 0 mov r15, gword ptr [rsi] test r15, r15 je G_M24594_IG07 ;; bbWeight=1 PerfScore 5.25 G_M24594_IG03: test cl, 1 je SHORT G_M24594_IG04 cmp dword ptr [r15], r15d mov rcx, 0xD1FFAB1E mov edx, 564 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, r15 cmp dword ptr [rcx], ecx call TextInfo:ToLower(String):String:this mov rdx, rax mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov byte ptr [r14], 1 mov dword ptr [rbp], 2 jmp SHORT G_M24594_IG05 ;; bbWeight=0.50 PerfScore 7.88 G_M24594_IG04: mov dword ptr [rbp], 1 ;; bbWeight=0.50 PerfScore 0.50 G_M24594_IG05: test bl, bl je SHORT G_M24594_IG08 mov rcx, gword ptr [rsi] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, 4 cmp dword ptr [rcx], ecx call String:EndsWith(String,int):bool:this test eax, eax je SHORT G_M24594_IG08 mov rcx, gword ptr [rsi] mov r8d, dword ptr [rcx+8] dec r8d xor edx, edx call String:Substring(int,int):String:this mov rdx, rax mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov byte ptr [rdi], 1 xor eax, eax mov dword ptr [rbp], eax ;; bbWeight=0.50 PerfScore 9.63 G_M24594_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M24594_IG07: xor eax, eax mov dword ptr [rbp], eax ;; bbWeight=0.50 PerfScore 0.63 G_M24594_IG08: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 ; Total bytes of code 242, prolog size 12, PerfScore 61.33, (MethodHash=aaf39fed) for method RuntimeType:FilterHelper(int,byref,bool,byref,byref,byref) ; ============================================================ ; Assembly listing for method RuntimeType:InitializeCache():RuntimeTypeCache:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 6 ) ref -> [rbp+0x10] this class-hnd ; V01 loc0 [V01,T03] ( 6, 4.50) ref -> rdi class-hnd ; V02 loc1 [V02 ] ( 3, 1.50) struct ( 8) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V03 loc2 [V03,T15] ( 3, 1.50) long -> rsi ; V04 loc3 [V04,T18] ( 2, 1 ) long -> rax ; V05 loc4 [V05,T14] ( 3, 1.50) ref -> rsi class-hnd ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T04] ( 3, 4.24) ref -> rdx "CASTCLASS eval op1" ; V08 tmp2 [V08,T16] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V09 tmp3 [V09,T01] ( 5, 6.74) ref -> rdi class-hnd "spilling QMark2" ; V10 tmp4 [V10,T10] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V11 tmp5 [V11,T13] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V12 tmp6 [V12,T17] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V13 tmp7 [V13,T09] ( 5, 3.74) ref -> rsi class-hnd "spilling QMark2" ; V14 tmp8 [V14,T07] ( 2, 4 ) long -> rcx ld-addr-op "Inlining Arg" ;* V15 tmp9 [V15 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V16 tmp10 [V16 ] ( 3, 1.50) struct ( 8) [rbp-0x48] do-not-enreg[XSB] must-init addr-exposed ld-addr-op "Inline stloc first use temp" ;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V18 tmp12 [V18 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V19 tmp13 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V20 tmp14 [V20 ] ( 3, 1.50) struct ( 8) [rbp-0x50] do-not-enreg[XSB] must-init addr-exposed ld-addr-op "Inline stloc first use temp" ;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V22 tmp16 [V22,T08] ( 2, 4 ) long -> rcx "Inlining Arg" ;* V23 tmp17 [V23 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V24 tmp18 [V24,T05] ( 2, 4 ) byref -> rcx "Inlining Arg" ; V25 tmp19 [V25,T06] ( 2, 4 ) ref -> rax "Single return block return value" ; V26 FramesRoot [V26,T02] ( 10, 6 ) long -> rdi "Pinvoke FrameListRoot" ; V27 PInvokeFrame [V27 ] ( 12, 8 ) blk (72) [rbp-0xA8] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V28 tmp22 [V28 ] ( 3, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed V02.m_type(offs=0x00) P-DEP "field V02.m_type (fldOffset=0x0)" ; V29 tmp23 [V29 ] ( 3, 1.50) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed V16.m_type(offs=0x00) P-DEP "field V16.m_type (fldOffset=0x0)" ; V30 tmp24 [V30,T19] ( 2, 1 ) long -> rbx V17._ptr(offs=0x00) P-INDEP "field V17._ptr (fldOffset=0x0)" ; V31 tmp25 [V31,T20] ( 2, 1 ) long -> rax V17._handle(offs=0x08) P-INDEP "field V17._handle (fldOffset=0x8)" ; V32 tmp26 [V32 ] ( 3, 1.50) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed V20.m_type(offs=0x00) P-DEP "field V20.m_type (fldOffset=0x0)" ; V33 tmp27 [V33,T21] ( 2, 1 ) long -> r14 V21._ptr(offs=0x00) P-INDEP "field V21._ptr (fldOffset=0x0)" ; V34 tmp28 [V34,T22] ( 2, 1 ) long -> rax V21._handle(offs=0x08) P-INDEP "field V21._handle (fldOffset=0x8)" ; V35 tmp29 [V35 ] ( 4, 4 ) struct (16) [rbp-0x60] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V36 tmp30 [V36,T11] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V37 tmp31 [V37,T12] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 152 G_M2703_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 152 lea rbp, [rsp+D0H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 xor rdx, rdx mov qword ptr [rbp-40H], rdx mov rsi, rcx ;; bbWeight=1 PerfScore 11.58 G_M2703_IG02: lea rcx, [rbp-A0H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rcx, rsp mov qword ptr [rbp-80H], rcx mov rcx, rbp mov qword ptr [rbp-70H], rcx mov rcx, qword ptr [rsi+16] test rcx, rcx jne G_M2703_IG12 ;; bbWeight=1 PerfScore 7.75 G_M2703_IG03: mov gword ptr [rbp+10H], rsi mov gword ptr [rbp-40H], rsi lea rcx, bword ptr [rbp-40H] call RuntimeTypeHandle:GetNativeHandle():RuntimeTypeHandle:this mov gword ptr [rbp-48H], rax lea rbx, bword ptr [rbp-48H] lea rcx, bword ptr [rbp-48H] call RuntimeTypeHandle:get_Value():long:this lea rcx, bword ptr [rbp-60H] mov qword ptr [rcx], rbx mov qword ptr [rcx+8], rax lea rcx, bword ptr [rbp-60H] mov edx, 1 mov rax, 0xD1FFAB1E mov qword ptr [rbp-90H], rax lea rax, G_M2703_IG06 mov qword ptr [rbp-78H], rax lea rax, bword ptr [rbp-A0H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=0.50 PerfScore 7.75 G_M2703_IG04: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M2703_IG05: call qword ptr [rax]RuntimeTypeHandle:GetGCHandle(QCallTypeHandle,int):long ;; bbWeight=0.50 PerfScore 1.50 G_M2703_IG06: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M2703_IG07 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M2703_IG07: mov rcx, bword ptr [rbp-98H] mov qword ptr [rdi+16], rcx mov rsi, rax mov rbx, gword ptr [rbp+10H] lea rcx, bword ptr [rbx+16] mov rdx, rsi xor r8, r8 call Interlocked:CompareExchange(byref,long,long):long test rax, rax je G_M2703_IG22 lea rcx, bword ptr [rbp-40H] call RuntimeTypeHandle:GetNativeHandle():RuntimeTypeHandle:this mov gword ptr [rbp-50H], rax lea r14, bword ptr [rbp-50H] lea rcx, bword ptr [rbp-50H] call RuntimeTypeHandle:get_Value():long:this lea rcx, bword ptr [rbp-60H] mov qword ptr [rcx], r14 mov qword ptr [rcx+8], rax lea rcx, bword ptr [rbp-60H] mov rdx, rsi mov rax, 0xD1FFAB1E mov qword ptr [rbp-90H], rax lea rax, G_M2703_IG10 mov qword ptr [rbp-78H], rax lea rax, bword ptr [rbp-A0H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=0.50 PerfScore 10.00 G_M2703_IG08: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M2703_IG09: call qword ptr [rax]RuntimeTypeHandle:FreeGCHandle(QCallTypeHandle,long):long ;; bbWeight=0.50 PerfScore 1.50 G_M2703_IG10: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M2703_IG11 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M2703_IG11: mov rcx, bword ptr [rbp-98H] mov qword ptr [rdi+16], rcx mov rsi, gword ptr [rbp+10H] ;; bbWeight=0.50 PerfScore 1.50 G_M2703_IG12: mov rcx, qword ptr [rsi+16] mov rdx, gword ptr [rcx] mov rdi, rdx test rdi, rdi je SHORT G_M2703_IG15 ;; bbWeight=1 PerfScore 5.50 G_M2703_IG13: mov rcx, 0xD1FFAB1E cmp qword ptr [rdi], rcx je SHORT G_M2703_IG15 ;; bbWeight=0.25 PerfScore 0.81 G_M2703_IG14: call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdi, rax ;; bbWeight=0.12 PerfScore 0.15 G_M2703_IG15: test rdi, rdi jne SHORT G_M2703_IG20 ;; bbWeight=1 PerfScore 1.25 G_M2703_IG16: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov rdx, rsi call RuntimeTypeCache:.ctor(RuntimeType):this mov rcx, qword ptr [rsi+16] mov rdx, rdi xor r8, r8 call GCHandle:InternalCompareExchange(long,Object,Object):Object mov rsi, rax test rsi, rsi je SHORT G_M2703_IG19 ;; bbWeight=0.50 PerfScore 4.00 G_M2703_IG17: mov rcx, 0xD1FFAB1E cmp qword ptr [rsi], rcx je SHORT G_M2703_IG19 ;; bbWeight=0.25 PerfScore 0.81 G_M2703_IG18: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rsi, rax ;; bbWeight=0.12 PerfScore 0.18 G_M2703_IG19: test rsi, rsi je SHORT G_M2703_IG20 mov rdi, rsi ;; bbWeight=0.50 PerfScore 0.75 G_M2703_IG20: mov rax, rdi ;; bbWeight=1 PerfScore 0.25 G_M2703_IG21: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M2703_IG22: mov rsi, gword ptr [rbp+10H] jmp G_M2703_IG12 ;; bbWeight=0.25 PerfScore 0.75 ; Total bytes of code 575, prolog size 42, PerfScore 126.99, (MethodHash=9760f570) for method RuntimeType:InitializeCache():RuntimeTypeCache:this ; ============================================================ ; Assembly listing for method RuntimeTypeHandle:GetNativeHandle():RuntimeTypeHandle:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rcx this ; V01 loc0 [V01,T01] ( 3, 3 ) ref -> rax class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V04 tmp2 [V04,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref V03.m_type(offs=0x00) P-INDEP "field V03.m_type (fldOffset=0x0)" ; V06 tmp4 [V06,T03] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp5 [V07,T04] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 32 G_M6490_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M6490_IG02: mov rax, gword ptr [rcx] test rax, rax je SHORT G_M6490_IG04 ;; bbWeight=1 PerfScore 3.25 G_M6490_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M6490_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x432D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rcx, rsi xor rdx, rdx call ArgumentNullException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 89, prolog size 5, PerfScore 15.15, (MethodHash=6a59e6a5) for method RuntimeTypeHandle:GetNativeHandle():RuntimeTypeHandle:this ; ============================================================ ; Assembly listing for method RuntimeTypeHandle:get_Value():long:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rcx this ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 cse0 [V02,T01] ( 3, 2.50) ref -> rdx "CSE - aggressive" ; ; Lcl frame size = 0 G_M30497_IG01: ;; bbWeight=1 PerfScore 0.00 G_M30497_IG02: mov rdx, gword ptr [rcx] test rdx, rdx jne SHORT G_M30497_IG05 ;; bbWeight=1 PerfScore 3.25 G_M30497_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M30497_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M30497_IG05: mov rax, qword ptr [rdx+24] ;; bbWeight=0.50 PerfScore 1.00 G_M30497_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 16, prolog size 0, PerfScore 6.98, (MethodHash=bd4488de) for method RuntimeTypeHandle:get_Value():long:this ; ============================================================ ; Assembly listing for method RuntimeTypeCache:.ctor(RuntimeType):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 5, 5 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M1653_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 2.75 G_M1653_IG02: xor edx, edx mov dword ptr [rsi+136], edx lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, rdi call RuntimeTypeHandle:GetModule(RuntimeType):RuntimeModule mov rcx, rax cmp dword ptr [rcx], ecx call RuntimeModule:get_RuntimeType():RuntimeType:this cmp rax, rdi sete al mov byte ptr [rsi+140], al ;; bbWeight=1 PerfScore 9.75 G_M1653_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 69, prolog size 6, PerfScore 21.65, (MethodHash=7af2f98a) for method RuntimeTypeCache:.ctor(RuntimeType):this ; ============================================================ ; Assembly listing for method RuntimeModule:get_RuntimeType():RuntimeType:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T02] ( 4, 3.50) ref -> rax ; V05 tmp3 [V05,T03] ( 3, 3 ) ref -> rdi class-hnd "dup spill" ; ; Lcl frame size = 40 G_M9160_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M9160_IG02: mov rax, gword ptr [rsi+8] test rax, rax jne SHORT G_M9160_IG04 ;; bbWeight=1 PerfScore 3.25 G_M9160_IG03: mov rcx, rsi call ModuleHandle:GetModuleType(RuntimeModule):RuntimeType mov rdi, rax lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 1.75 G_M9160_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 51, prolog size 6, PerfScore 14.85, (MethodHash=6a78dc37) for method RuntimeModule:get_RuntimeType():RuntimeType:this ; ============================================================ ; Assembly listing for method ModuleHandle:GetModuleType(RuntimeModule):RuntimeType ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00 ] ( 4, 4 ) ref -> [rbp+0x10] do-not-enreg[X] addr-exposed ld-addr-op class-hnd ; V01 loc0 [V01 ] ( 2, 2 ) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ; V05 tmp3 [V05,T02] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V07 tmp5 [V07,T03] ( 2, 4 ) ref -> rax "Single return block return value" ; V08 FramesRoot [V08,T00] ( 6, 6 ) long -> rsi "Pinvoke FrameListRoot" ; V09 PInvokeFrame [V09 ] ( 8, 8 ) blk (72) [rbp-0x98] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V10 tmp8 [V10,T04] ( 2, 2 ) long -> rcx V03._ptr(offs=0x00) P-INDEP "field V03._ptr (fldOffset=0x0)" ; V11 tmp9 [V11,T05] ( 2, 2 ) long -> rdx V03._module(offs=0x08) P-INDEP "field V03._module (fldOffset=0x8)" ; V12 tmp10 [V12,T06] ( 2, 2 ) long -> rax V04._ptr(offs=0x00) P-INDEP "field V04._ptr (fldOffset=0x0)" ; V13 tmp11 [V13,T07] ( 2, 2 ) long -> rax V06._ptr(offs=0x00) P-INDEP "field V06._ptr (fldOffset=0x0)" ; V14 tmp12 [V14 ] ( 2, 4 ) struct (16) [rbp-0x50] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V15 tmp13 [V15,T01] ( 3, 6 ) byref -> r8 stack-byref "BlockOp address local" ; ; Lcl frame size = 136 G_M42589_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] xor rdx, rdx mov qword ptr [rbp-40H], rdx mov gword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 11.00 G_M42589_IG02: lea rcx, [rbp-90H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rsi, rax mov rcx, rsp mov qword ptr [rbp-70H], rcx mov rcx, rbp mov qword ptr [rbp-60H], rcx lea rcx, [rbp+10H] mov rdx, gword ptr [rbp+10H] mov rdx, qword ptr [rdx+32] lea rax, [rbp-40H] lea r8, bword ptr [rbp-50H] mov qword ptr [r8], rcx mov qword ptr [r8+8], rdx lea rcx, bword ptr [rbp-50H] mov rdx, rax mov rax, 0xD1FFAB1E mov qword ptr [rbp-80H], rax lea rax, G_M42589_IG05 mov qword ptr [rbp-68H], rax lea rax, bword ptr [rbp-90H] mov qword ptr [rsi+16], rax mov byte ptr [rsi+12], 0 ;; bbWeight=1 PerfScore 17.50 G_M42589_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M42589_IG04: call qword ptr [rax]ModuleHandle:GetModuleType(QCallModule,ObjectHandleOnStack) ;; bbWeight=1 PerfScore 3.00 G_M42589_IG05: mov byte ptr [rsi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M42589_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M42589_IG06: mov rax, bword ptr [rbp-88H] mov qword ptr [rsi+16], rax mov rax, gword ptr [rbp-40H] ;; bbWeight=1 PerfScore 3.00 G_M42589_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 218, prolog size 33, PerfScore 69.55, (MethodHash=6e5b59a2) for method ModuleHandle:GetModuleType(RuntimeModule):RuntimeType ; ============================================================ ; Assembly listing for method RuntimeTypeCache:GetMemberCache(byref):MemberInfoCache`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 2.50) ref -> rdi this class-hnd ; V01 TypeCtx [V01,T00] ( 5, 3.75) long -> rdx ; V02 arg1 [V02,T01] ( 4, 3.50) byref -> rsi ; V03 loc0 [V03,T02] ( 6, 4.50) ref -> rax class-hnd ; V04 loc1 [V04,T06] ( 3, 1.50) ref -> rbx class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T04] ( 3, 3 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T05] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V09 cse0 [V09,T07] ( 3, 1.25) long -> rcx "CSE - moderate" ; ; Lcl frame size = 48 G_M10444_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rdx mov rdi, rcx mov rsi, r8 ;; bbWeight=1 PerfScore 4.75 G_M10444_IG02: mov rax, gword ptr [rsi] test rax, rax jne SHORT G_M10444_IG07 ;; bbWeight=1 PerfScore 3.25 G_M10444_IG03: mov rcx, qword ptr [rdx+16] mov rcx, qword ptr [rcx+16] test rcx, rcx je SHORT G_M10444_IG05 ;; bbWeight=0.50 PerfScore 2.63 G_M10444_IG04: jmp SHORT G_M10444_IG06 ;; bbWeight=0.25 PerfScore 0.50 G_M10444_IG05: mov rcx, rdx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M10444_IG06: call CORINFO_HELP_NEWSFAST mov rbx, rax lea rcx, bword ptr [rbx+16] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, rsi mov rdx, rbx xor r8, r8 call Interlocked:CompareExchange(byref,Object,Object):Object test rax, rax jne SHORT G_M10444_IG07 mov rax, rbx ;; bbWeight=0.50 PerfScore 3.13 G_M10444_IG07: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 112, prolog size 12, PerfScore 28.64, (MethodHash=b334d733) for method RuntimeTypeCache:GetMemberCache(byref):MemberInfoCache`1:this ; ============================================================ ; Assembly listing for method MemberInfoCache`1:GetMemberList(int,String,int):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 11, 6.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 5, 4 ) int -> rdx ; V02 arg2 [V02,T01] ( 6, 4 ) ref -> rdi class-hnd ; V03 arg3 [V03,T03] ( 5, 3.50) int -> rbx ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V06 tmp2 [V06,T09] ( 2, 2 ) byref -> rbp "impAppendStmt" ; V07 tmp3 [V07,T07] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V08 tmp4 [V08,T10] ( 2, 2 ) ref -> rax class-hnd "dup spill" ; V09 tmp5 [V09,T14] ( 3, 1.50) ref -> rax ; V10 tmp6 [V10,T06] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V11 tmp7 [V11,T11] ( 2, 2 ) byref -> rbp "impAppendStmt" ; V12 tmp8 [V12,T08] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V13 tmp9 [V13,T12] ( 2, 2 ) ref -> rax class-hnd "dup spill" ; V14 tmp10 [V14,T15] ( 3, 1.50) ref -> rax ; V15 tmp11 [V15,T13] ( 2, 2 ) byref -> rax "Inlining Arg" ; V16 cse0 [V16,T04] ( 6, 2.50) long -> rdx "CSE - moderate" ; ; Lcl frame size = 40 G_M37540_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx mov rdi, r8 mov ebx, r9d ;; bbWeight=1 PerfScore 6.00 G_M37540_IG02: cmp edx, 1 je SHORT G_M37540_IG04 ;; bbWeight=1 PerfScore 1.25 G_M37540_IG03: cmp edx, 2 je SHORT G_M37540_IG10 jmp G_M37540_IG16 ;; bbWeight=0.50 PerfScore 1.63 G_M37540_IG04: lea rbp, bword ptr [rsi+32] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M37540_IG06 ;; bbWeight=0.50 PerfScore 4.88 G_M37540_IG05: jmp SHORT G_M37540_IG07 ;; bbWeight=0.25 PerfScore 0.50 G_M37540_IG06: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M37540_IG07: mov rcx, rbp mov r8, rdi call CerHashtable`2:get_Item(__Canon):__Canon:this test rax, rax jne SHORT G_M37540_IG09 mov rcx, rsi mov rdx, rdi mov r8d, 1 mov r9d, ebx ;; bbWeight=0.50 PerfScore 1.88 G_M37540_IG08: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp MemberInfoCache`1:Populate(String,int,int):ref:this ;; bbWeight=0.50 PerfScore 2.13 G_M37540_IG09: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M37540_IG10: lea rbp, bword ptr [rsi+40] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M37540_IG12 ;; bbWeight=0.50 PerfScore 4.88 G_M37540_IG11: jmp SHORT G_M37540_IG13 ;; bbWeight=0.25 PerfScore 0.50 G_M37540_IG12: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M37540_IG13: mov rcx, rbp mov r8, rdi call CerHashtable`2:get_Item(__Canon):__Canon:this test rax, rax jne SHORT G_M37540_IG15 mov rcx, rsi mov rdx, rdi mov r8d, 2 mov r9d, ebx ;; bbWeight=0.50 PerfScore 1.88 G_M37540_IG14: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp MemberInfoCache`1:Populate(String,int,int):ref:this ;; bbWeight=0.50 PerfScore 2.13 G_M37540_IG15: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M37540_IG16: lea rax, bword ptr [rsi+24] cmp byte ptr [rax], 0 je SHORT G_M37540_IG18 mov rax, gword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 2.75 G_M37540_IG17: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M37540_IG18: mov rcx, rsi mov r9d, ebx mov r8d, edx xor rdx, rdx ;; bbWeight=0.50 PerfScore 0.50 G_M37540_IG19: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp MemberInfoCache`1:Populate(String,int,int):ref:this ;; bbWeight=0.50 PerfScore 2.13 ; Total bytes of code 275, prolog size 22, PerfScore 66.13, (MethodHash=b22c6d5b) for method MemberInfoCache`1:GetMemberList(int,String,int):ref:this ; ============================================================ ; Assembly listing for method CerHashtable`2:get_Item(__Canon):__Canon:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T06] ( 3, 3 ) byref -> rcx this ; V01 TypeCtx [V01,T04] ( 5, 4.50) long -> rdx ; V02 arg1 [V02,T03] ( 4, 6.50) ref -> rsi class-hnd ; V03 loc0 [V03,T09] ( 4, 3 ) ref -> rbx class-hnd ; V04 loc1 [V04,T11] ( 5, 2.50) int -> rax ; V05 loc2 [V05,T07] ( 3, 5 ) ref -> rbp class-hnd ; V06 loc3 [V06,T00] ( 9, 18.50) int -> r15 ;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd ; V08 loc5 [V08,T01] ( 4, 16 ) ref -> rcx class-hnd ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) byref -> zero-ref "bubbling QMark1" ;* V11 tmp2 [V11 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V12 tmp3 [V12,T02] ( 2, 16 ) byref -> rax "bubbling QMark1" ;* V13 tmp4 [V13 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V14 tmp5 [V14,T10] ( 3, 3 ) ref -> rax "arr expr" ; V15 cse0 [V15,T08] ( 2, 5 ) long -> rdi "CSE - aggressive" ; V16 cse1 [V16,T05] ( 4, 5.50) int -> r14 "CSE - aggressive" ; ; Lcl frame size = 40 G_M24401_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rdx mov rsi, r8 ;; bbWeight=1 PerfScore 7.50 G_M24401_IG02: mov rax, qword ptr [rdx+48] mov rdi, qword ptr [rax] mov rbx, gword ptr [rcx] test rbx, rbx jne SHORT G_M24401_IG05 ;; bbWeight=1 PerfScore 7.25 G_M24401_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M24401_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M24401_IG05: mov rcx, rdx mov rdx, rsi call CerHashtable`2:GetHashCodeHelper(__Canon):int test eax, eax jge SHORT G_M24401_IG06 not eax ;; bbWeight=0.50 PerfScore 1.50 G_M24401_IG06: mov rbp, gword ptr [rbx+8] mov r14d, dword ptr [rbp+8] cdq idiv edx:eax, r14d mov r15d, edx ;; bbWeight=0.50 PerfScore 15.63 G_M24401_IG07: mov r8, qword ptr [rdi] mov rcx, rbp mov edx, r15d call CORINFO_HELP_LDELEMA_REF ;; bbWeight=4 PerfScore 14.00 G_M24401_IG08: mov rcx, gword ptr [rax] test rcx, rcx je SHORT G_M24401_IG13 mov rdx, rsi mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+16]Object:Equals(Object):bool:this test eax, eax jne SHORT G_M24401_IG11 ;; bbWeight=4 PerfScore 47.00 G_M24401_IG09: inc r15d cmp r14d, r15d jg SHORT G_M24401_IG07 ;; bbWeight=4 PerfScore 6.00 G_M24401_IG10: sub r15d, r14d jmp SHORT G_M24401_IG07 ;; bbWeight=0.50 PerfScore 1.13 G_M24401_IG11: mov rax, gword ptr [rbx+16] cmp r15d, dword ptr [rax+8] jae SHORT G_M24401_IG15 movsxd rdx, r15d mov rax, gword ptr [rax+8*rdx+16] ;; bbWeight=0.50 PerfScore 3.63 G_M24401_IG12: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M24401_IG13: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M24401_IG14: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M24401_IG15: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 186, prolog size 17, PerfScore 128.85, (MethodHash=56f0a0ae) for method CerHashtable`2:get_Item(__Canon):__Canon:this ; ============================================================ ; Assembly listing for method MemberInfoCache`1:Populate(String,int,int):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 4.50) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 8, 5.75) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 6, 4.50) int -> rbx ; V03 arg3 [V03,T03] ( 6, 4 ) int -> r14 ; V04 loc0 [V04 ] ( 5, 3.50) ref -> [rbp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V05 loc1 [V05,T05] ( 4, 2 ) int -> r15 ; V06 loc2 [V06,T06] ( 4, 2 ) long -> r12 ; V07 loc3 [V07 ] ( 3, 1.50) byref -> [rbp+0x18] must-init pinned ; V08 loc4 [V08,T04] ( 6, 3 ) int -> r13 ; V09 loc5 [V09,T09] ( 3, 1.50) ref -> rax class-hnd exact ;* V10 loc6 [V10 ] ( 0, 0 ) long -> zero-ref ; V11 loc7 [V11 ] ( 3, 1.50) byref -> [rbp+0x10] must-init pinned ; V12 loc8 [V12,T11] ( 2, 1 ) long -> r9 ; V13 OutArgs [V13 ] ( 1, 1 ) lclBlk (64) [rsp+0x00] "OutgoingArgSpace" ; V14 tmp1 [V14,T12] ( 2, 1 ) long -> r12 ;* V15 tmp2 [V15,T13] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V16 tmp3 [V16,T07] ( 2, 2 ) long -> r12 "Cast away GC" ; V17 tmp4 [V17,T08] ( 2, 2 ) long -> r9 "Cast away GC" ; V18 GsCookie [V18 ] ( 1, 1 ) long -> [rbp+0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V19 cse0 [V19,T10] ( 3, 1.50) int -> rcx "CSE - moderate" ; ; Lcl frame size = 104 G_M13254_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 104 lea rbp, [rsp+40H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp+10H], xmm4 xor rax, rax mov qword ptr [rbp+20H], rax mov rax, 0xD1FFAB1E mov qword ptr [rbp+08H], rax mov rdi, rcx mov rsi, rdx mov ebx, r8d mov r14d, r9d ;; bbWeight=1 PerfScore 13.58 G_M13254_IG02: test rsi, rsi je SHORT G_M13254_IG05 ;; bbWeight=1 PerfScore 1.25 G_M13254_IG03: cmp dword ptr [rsi+8], 0 jbe SHORT G_M13254_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M13254_IG04: cmp r14d, 1 jne SHORT G_M13254_IG06 movzx rcx, word ptr [rsi+12] cmp ecx, 46 je SHORT G_M13254_IG06 cmp ecx, 42 je SHORT G_M13254_IG06 ;; bbWeight=0.50 PerfScore 2.88 G_M13254_IG05: xor ecx, ecx mov dword ptr [rsp+20H], ecx mov dword ptr [rsp+28H], ebx mov dword ptr [rsp+30H], r14d mov rcx, rdi xor rdx, rdx xor r8d, r8d xor r9, r9 call MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this mov gword ptr [rbp+20H], rax jmp G_M13254_IG11 ;; bbWeight=0.50 PerfScore 4.13 G_M13254_IG06: mov r15d, dword ptr [rsi+8] lea rcx, bword ptr [rsi+12] mov bword ptr [rbp+18H], rcx mov r12, bword ptr [rbp+18H] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, r12 mov r8d, r15d mov rax, 0xD1FFAB1E call qword ptr [rax]UTF8Encoding:GetByteCount(long,int):int:this mov r13d, eax cmp r13d, 0x400 jle SHORT G_M13254_IG07 movsxd rdx, r13d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC cmp dword ptr [rax+8], 0 jbe G_M13254_IG14 add rax, 16 mov bword ptr [rbp+10H], rax mov r9, bword ptr [rbp+10H] mov dword ptr [rsp+20H], r13d mov dword ptr [rsp+28H], ebx mov dword ptr [rsp+30H], r14d mov rcx, rdi mov rdx, r12 mov r8d, r15d call MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this mov gword ptr [rbp+20H], rax xor rcx, rcx mov bword ptr [rbp+10H], rcx jmp SHORT G_M13254_IG10 ;; bbWeight=0.50 PerfScore 13.88 G_M13254_IG07: mov ecx, r13d mov r9, rcx test r9, r9 je SHORT G_M13254_IG09 mov rdx, r9 add rdx, 15 and rdx, -16 add rsp, 64 neg rdx add rdx, rsp jb SHORT G_M13254_IG08 xor rdx, rdx ;; bbWeight=0.50 PerfScore 2.25 G_M13254_IG08: test dword ptr [rsp], esp mov r8, rsp sub r8, 0x1000 mov rsp, r8 cmp rsp, rdx jae SHORT G_M13254_IG08 mov rsp, rdx test dword ptr [rsp], esp sub rsp, 64 lea r9, [rsp+40H] ;; bbWeight=0.50 PerfScore 3.50 G_M13254_IG09: mov dword ptr [rsp+20H], r13d mov dword ptr [rsp+28H], ebx mov dword ptr [rsp+30H], r14d mov rcx, rdi mov rdx, r12 mov r8d, r15d call MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this mov gword ptr [rbp+20H], rax ;; bbWeight=0.50 PerfScore 2.88 G_M13254_IG10: xor rdx, rdx mov bword ptr [rbp+18H], rdx ;; bbWeight=0.50 PerfScore 0.63 G_M13254_IG11: lea rdx, [rbp+20H] mov rcx, rdi mov r8, rsi mov r9d, ebx call MemberInfoCache`1:Insert(byref,String,int):this mov rax, gword ptr [rbp+20H] mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+08H], rcx je SHORT G_M13254_IG12 call CORINFO_HELP_FAIL_FAST ;; bbWeight=1 PerfScore 6.50 G_M13254_IG12: nop ;; bbWeight=1 PerfScore 0.25 G_M13254_IG13: lea rsp, [rbp+28H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M13254_IG14: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 449, prolog size 50, PerfScore 103.06, (MethodHash=d019cc39) for method MemberInfoCache`1:Populate(String,int,int):ref:this ; ============================================================ ; Assembly listing for method UTF8Encoding:GetByteCount(long,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 4, 3.25) ref -> rbx this class-hnd ; V01 arg1 [V01,T00] ( 6, 5.25) long -> rsi ; V02 arg2 [V02,T01] ( 6, 5.25) int -> rdi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 4, 3.25) int -> r9 ld-addr-op "Inline ldloca(s) first use temp" ; V05 tmp2 [V05,T06] ( 5, 2.75) int -> rbp "Inline stloc first use temp" ; V06 tmp3 [V06 ] ( 2, 2 ) long -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V07 tmp4 [V07 ] ( 1, 1 ) int -> [rsp+0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V08 tmp5 [V08,T07] ( 2, 2 ) long -> rax "Inline stloc first use temp" ; V09 tmp6 [V09,T08] ( 2, 2 ) int -> r9 "Inline stloc first use temp" ; V10 tmp7 [V10,T05] ( 3, 3 ) long -> rbp "Inline stloc first use temp" ; V11 rat0 [V11,T02] ( 3, 6 ) long -> rax "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 56 G_M51170_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 mov rbx, rcx mov rsi, rdx mov edi, r8d ;; bbWeight=1 PerfScore 5.00 G_M51170_IG02: test rsi, rsi je SHORT G_M51170_IG09 ;; bbWeight=1 PerfScore 1.25 G_M51170_IG03: test edi, edi jl SHORT G_M51170_IG10 ;; bbWeight=1 PerfScore 1.25 G_M51170_IG04: cmp dword ptr [rbx], ebx lea r8, [rsp+30H] lea r9, [rsp+28H] mov rcx, rsi mov edx, edi call Utf16Utility:GetPointerToFirstInvalidChar(long,int,byref,byref):long sub rax, rsi mov rcx, rax shr rcx, 63 add rcx, rax sar rcx, 1 mov r9d, ecx movsxd rbp, r9d add rbp, qword ptr [rsp+30H] cmp rbp, 0xD1FFAB1E ja SHORT G_M51170_IG11 ;; bbWeight=1 PerfScore 10.50 G_M51170_IG05: cmp r9d, edi je SHORT G_M51170_IG07 ;; bbWeight=1 PerfScore 1.25 G_M51170_IG06: mov rcx, rbx mov rdx, rsi mov r8d, edi call Encoding:GetByteCountWithFallback(long,int,int):int:this add ebp, eax test ebp, ebp jl SHORT G_M51170_IG11 ;; bbWeight=0.25 PerfScore 0.81 G_M51170_IG07: mov eax, ebp ;; bbWeight=1 PerfScore 0.25 G_M51170_IG08: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M51170_IG09: mov ecx, 14 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M51170_IG10: mov ecx, 27 mov edx, 11 call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 G_M51170_IG11: call Encoding:ThrowConversionOverflow() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 153, prolog size 8, PerfScore 38.86, (MethodHash=927d381d) for method UTF8Encoding:GetByteCount(long,int):int:this ; ============================================================ ; Assembly listing for method MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 6.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T04] ( 3, 2.50) long -> rdx ; V02 arg2 [V02,T02] ( 4, 3.50) int -> r8 ; V03 arg3 [V03,T03] ( 4, 3.50) long -> rdi ; V04 arg4 [V04,T09] ( 2, 1.50) int -> rbp ; V05 arg5 [V05,T17] ( 1, 1 ) int -> [rsp+0xB8] ; V06 arg6 [V06,T08] ( 2, 2 ) int -> rbx ; V07 loc0 [V07 ] ( 8, 4.50) struct (24) [rsp+0x48] do-not-enreg[XSB] addr-exposed ld-addr-op ; V08 loc1 [V08,T01] ( 9, 5.50) ref -> rdi class-hnd ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T05] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V11 tmp2 [V11,T06] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V12 tmp3 [V12 ] ( 14, 14 ) struct (24) [rsp+0x30] do-not-enreg[XSB] addr-exposed "by-value struct argument" ;* V13 tmp4 [V13,T10] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V14 tmp5 [V14,T11] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V15 tmp6 [V15,T12] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V16 tmp7 [V16,T13] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V17 tmp8 [V17,T14] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V18 tmp9 [V18,T15] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V19 tmp10 [V19,T16] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V20 cse0 [V20,T07] ( 3, 2.25) long -> rdx "CSE - moderate" ; ; Lcl frame size = 104 G_M38321_IG01: push rdi push rsi push rbp push rbx sub rsp, 104 vzeroupper mov qword ptr [rsp+60H], rcx mov rsi, rcx mov rdi, r9 mov ebp, dword ptr [rsp+B0H] mov ebx, dword ptr [rsp+C0H] ;; bbWeight=1 PerfScore 8.75 G_M38321_IG02: test r8d, r8d je SHORT G_M38321_IG04 ;; bbWeight=1 PerfScore 1.25 G_M38321_IG03: mov dword ptr [rsp+20H], ebp mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov r9, rdi mov rax, 0xD1FFAB1E call qword ptr [rax]UTF8Encoding:GetBytes(long,int,long,int):int:this ;; bbWeight=0.50 PerfScore 3.38 G_M38321_IG04: lea rcx, bword ptr [rsp+48H] mov rdx, rdi mov r8d, ebp mov r9d, dword ptr [rsp+B8H] call Filter:.ctor(long,int,int):this xor rdi, rdi cmp ebx, 6 ja G_M38321_IG12 mov ecx, ebx lea rdx, [reloc @RWD00] mov edx, dword ptr [rdx+4*rcx] lea rax, G_M38321_IG02 add rdx, rax jmp rdx ;; bbWeight=1 PerfScore 10.50 G_M38321_IG05: vmovdqu xmm0, xmmword ptr [rsp+48H] vmovdqu xmmword ptr [rsp+30H], xmm0 mov rcx, qword ptr [rsp+58H] mov qword ptr [rsp+40H], rcx mov rcx, rsi lea rdx, bword ptr [rsp+30H] call MemberInfoCache`1:PopulateMethods(Filter):ref:this mov rdi, rax jmp G_M38321_IG12 ;; bbWeight=0.50 PerfScore 4.00 G_M38321_IG06: vmovdqu xmm0, xmmword ptr [rsp+48H] vmovdqu xmmword ptr [rsp+30H], xmm0 mov rcx, qword ptr [rsp+58H] mov qword ptr [rsp+40H], rcx mov rcx, rsi lea rdx, bword ptr [rsp+30H] call MemberInfoCache`1:PopulateFields(Filter):ref:this mov rdi, rax jmp G_M38321_IG12 ;; bbWeight=0.50 PerfScore 4.00 G_M38321_IG07: vmovdqu xmm0, xmmword ptr [rsp+48H] vmovdqu xmmword ptr [rsp+30H], xmm0 mov rcx, qword ptr [rsp+58H] mov qword ptr [rsp+40H], rcx mov rcx, rsi lea rdx, bword ptr [rsp+30H] call MemberInfoCache`1:PopulateConstructors(Filter):ref:this mov rdi, rax jmp G_M38321_IG12 ;; bbWeight=0.50 PerfScore 4.00 G_M38321_IG08: vmovdqu xmm0, xmmword ptr [rsp+48H] vmovdqu xmmword ptr [rsp+30H], xmm0 mov rcx, qword ptr [rsp+58H] mov qword ptr [rsp+40H], rcx mov rcx, rsi lea rdx, bword ptr [rsp+30H] call MemberInfoCache`1:PopulateProperties(Filter):ref:this mov rdi, rax jmp SHORT G_M38321_IG12 ;; bbWeight=0.50 PerfScore 4.00 G_M38321_IG09: vmovdqu xmm0, xmmword ptr [rsp+48H] vmovdqu xmmword ptr [rsp+30H], xmm0 mov rcx, qword ptr [rsp+58H] mov qword ptr [rsp+40H], rcx mov rcx, rsi lea rdx, bword ptr [rsp+30H] call MemberInfoCache`1:PopulateEvents(Filter):ref:this mov rdi, rax jmp SHORT G_M38321_IG12 ;; bbWeight=0.50 PerfScore 4.00 G_M38321_IG10: vmovdqu xmm0, xmmword ptr [rsp+48H] vmovdqu xmmword ptr [rsp+30H], xmm0 mov rcx, qword ptr [rsp+58H] mov qword ptr [rsp+40H], rcx mov rcx, rsi lea rdx, bword ptr [rsp+30H] call MemberInfoCache`1:PopulateNestedClasses(Filter):ref:this mov rdi, rax jmp SHORT G_M38321_IG12 ;; bbWeight=0.50 PerfScore 4.00 G_M38321_IG11: vmovdqu xmm0, xmmword ptr [rsp+48H] vmovdqu xmmword ptr [rsp+30H], xmm0 mov rcx, qword ptr [rsp+58H] mov qword ptr [rsp+40H], rcx mov rcx, rsi lea rdx, bword ptr [rsp+30H] call MemberInfoCache`1:PopulateInterfaces(Filter):ref:this mov rdi, rax ;; bbWeight=0.50 PerfScore 3.00 G_M38321_IG12: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M38321_IG14 ;; bbWeight=1 PerfScore 9.25 G_M38321_IG13: jmp SHORT G_M38321_IG15 ;; bbWeight=0.25 PerfScore 0.50 G_M38321_IG14: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M38321_IG15: mov rcx, rdx mov rdx, rdi call CORINFO_HELP_CHKCASTARRAY nop ;; bbWeight=1 PerfScore 1.75 G_M38321_IG16: add rsp, 104 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 RWD00 dd G_M38321_IG05 - G_M38321_IG02 dd G_M38321_IG07 - G_M38321_IG02 dd G_M38321_IG06 - G_M38321_IG02 dd G_M38321_IG08 - G_M38321_IG02 dd G_M38321_IG09 - G_M38321_IG02 dd G_M38321_IG11 - G_M38321_IG02 dd G_M38321_IG10 - G_M38321_IG02 ; Total bytes of code 479, prolog size 16, PerfScore 115.30, (MethodHash=cd3f6a4e) for method MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this ; ============================================================ ; Assembly listing for method UTF8Encoding:GetBytes(long,int,long,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 4, 3.50) ref -> rbp this class-hnd ; V01 arg1 [V01,T00] ( 7, 5.50) long -> rsi ; V02 arg2 [V02,T01] ( 7, 5.50) int -> rdi ; V03 arg3 [V03,T02] ( 6, 5.50) long -> rbx ; V04 arg4 [V04,T05] ( 3, 2.50) int -> r14 ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T09] ( 3, 0 ) int -> rcx ; V07 tmp2 [V07,T10] ( 3, 0 ) int -> rcx ; V08 tmp3 [V08,T07] ( 3, 2 ) int -> rax "Inline return value spill temp" ; V09 tmp4 [V09,T06] ( 3, 2.50) int -> rcx ld-addr-op "Inline ldloca(s) first use temp" ; V10 tmp5 [V10,T08] ( 3, 2 ) int -> rax "Inline stloc first use temp" ; V11 tmp6 [V11 ] ( 2, 2 ) long -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V12 tmp7 [V12 ] ( 2, 2 ) long -> [rsp+0x40] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V13 rat0 [V13,T03] ( 3, 6 ) long -> rcx "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 80 G_M44587_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 80 mov rbp, rcx mov rsi, rdx mov edi, r8d mov rbx, r9 mov r14d, dword ptr [rsp+A0H] ;; bbWeight=1 PerfScore 7.25 G_M44587_IG02: test rsi, rsi je G_M44587_IG09 test rbx, rbx je G_M44587_IG09 ;; bbWeight=1 PerfScore 2.50 G_M44587_IG03: mov ecx, edi or ecx, r14d jl G_M44587_IG12 ;; bbWeight=1 PerfScore 1.50 G_M44587_IG04: cmp dword ptr [rbp], ebp lea rcx, [rsp+48H] mov qword ptr [rsp+20H], rcx lea rcx, [rsp+40H] mov qword ptr [rsp+28H], rcx mov rcx, rsi mov edx, edi mov r8, rbx mov r9d, r14d call Utf8Utility:TranscodeToUtf8(long,int,long,int,byref,byref):int mov rcx, qword ptr [rsp+48H] sub rcx, rsi mov rdx, rcx shr rdx, 63 add rcx, rdx sar rcx, 1 mov rdx, qword ptr [rsp+40H] sub rdx, rbx mov eax, edx cmp ecx, edi jne SHORT G_M44587_IG06 ;; bbWeight=1 PerfScore 14.00 G_M44587_IG05: jmp SHORT G_M44587_IG07 ;; bbWeight=0.50 PerfScore 1.00 G_M44587_IG06: mov dword ptr [rsp+20H], r14d mov dword ptr [rsp+28H], ecx mov dword ptr [rsp+30H], eax mov rcx, rbp mov rdx, rsi mov r8d, edi mov r9, rbx call Encoding:GetBytesWithFallback(long,int,long,int,int,int):int:this ;; bbWeight=0.50 PerfScore 2.50 G_M44587_IG07: nop ;; bbWeight=1 PerfScore 0.25 G_M44587_IG08: add rsp, 80 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M44587_IG09: test rsi, rsi je SHORT G_M44587_IG10 mov ecx, 10 jmp SHORT G_M44587_IG11 ;; bbWeight=0 PerfScore 0.00 G_M44587_IG10: mov ecx, 14 ;; bbWeight=0 PerfScore 0.00 G_M44587_IG11: mov edx, 46 call ThrowHelper:ThrowArgumentNullException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 G_M44587_IG12: test edi, edi jl SHORT G_M44587_IG13 mov ecx, 12 jmp SHORT G_M44587_IG14 ;; bbWeight=0 PerfScore 0.00 G_M44587_IG13: mov ecx, 16 ;; bbWeight=0 PerfScore 0.00 G_M44587_IG14: mov edx, 11 call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 232, prolog size 10, PerfScore 55.95, (MethodHash=e75851d4) for method UTF8Encoding:GetBytes(long,int,long,int):int:this ; ============================================================ ; Assembly listing for method Filter:.ctor(long,int,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 8.50) byref -> [rbp+0x10] this ; V01 arg1 [V01,T01] ( 3, 3 ) long -> rdi ; V02 arg2 [V02,T02] ( 3, 3 ) int -> rbx ; V03 arg3 [V03,T03] ( 3, 3 ) int -> r14 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V07 FramesRoot [V07,T04] ( 6, 4 ) long -> r15 "Pinvoke FrameListRoot" ; V08 PInvokeFrame [V08 ] ( 8, 6 ) blk (72) [rbp-0x80] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V09 tmp5 [V09,T05] ( 2, 2 ) long -> rdi V05.m_pStringHeap(offs=0x00) P-INDEP "field V05.m_pStringHeap (fldOffset=0x0)" ; V10 tmp6 [V10,T06] ( 2, 2 ) int -> rbx V05.m_StringHeapByteLength(offs=0x08) P-INDEP "field V05.m_StringHeapByteLength (fldOffset=0x8)" ; ; Lcl frame size = 104 G_M38579_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 104 lea rbp, [rsp+A0H] mov rsi, rcx mov rdi, rdx mov ebx, r8d mov r14d, r9d ;; bbWeight=1 PerfScore 9.75 G_M38579_IG02: lea rcx, [rbp-78H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-58H], rcx mov rcx, rbp mov qword ptr [rbp-48H], rcx mov qword ptr [rsi], rdi mov dword ptr [rsi+8], ebx mov dword ptr [rsi+16], r14d xor ecx, ecx mov dword ptr [rsi+20], ecx mov rcx, rsi call Filter:RequiresStringComparison():bool:this test eax, eax je SHORT G_M38579_IG08 ;; bbWeight=1 PerfScore 11.25 G_M38579_IG03: mov rcx, qword ptr [rsi] mov bword ptr [rbp+10H], rsi mov edx, dword ptr [rsi+8] mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M38579_IG06 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [r15+16], rax mov byte ptr [r15+12], 0 ;; bbWeight=0.50 PerfScore 5.38 G_M38579_IG04: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M38579_IG05: call qword ptr [rax]MdUtf8String:HashCaseInsensitive(long,int):int ;; bbWeight=0.50 PerfScore 1.50 G_M38579_IG06: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M38579_IG07 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M38579_IG07: mov rdx, bword ptr [rbp-70H] mov qword ptr [r15+16], rdx mov rsi, bword ptr [rbp+10H] mov dword ptr [rsi+20], eax ;; bbWeight=0.50 PerfScore 2.00 G_M38579_IG08: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 216, prolog size 24, PerfScore 60.85, (MethodHash=fa51694c) for method Filter:.ctor(long,int,int):this ; ============================================================ ; Assembly listing for method Filter:RequiresStringComparison():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rcx this ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 cse0 [V02,T01] ( 3, 2.50) int -> rax "CSE - aggressive" ; ; Lcl frame size = 0 G_M52795_IG01: ;; bbWeight=1 PerfScore 0.00 G_M52795_IG02: mov eax, dword ptr [rcx+16] cmp eax, 1 je SHORT G_M52795_IG05 ;; bbWeight=1 PerfScore 3.25 G_M52795_IG03: cmp eax, 2 sete al movzx rax, al ;; bbWeight=0.50 PerfScore 0.75 G_M52795_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M52795_IG05: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M52795_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 24, prolog size 0, PerfScore 7.53, (MethodHash=351931c4) for method Filter:RequiresStringComparison():bool:this ; ============================================================ ; Assembly listing for method MemberInfoCache`1:PopulateMethods(Filter):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T18] ( 6, 21 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 19,138 ) byref -> rsi ld-addr-op ; V02 loc0 [V02 ] ( 3, 11 ) struct (24) [rbp+0x60] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V03 loc1 [V03,T02] ( 18, 59.50) ref -> rbx class-hnd ; V04 loc2 [V04 ] ( 5, 9.50) struct (16) [rbp+0x50] do-not-enreg[XS] addr-exposed ld-addr-op ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V06 loc4 [V06,T32] ( 5, 12 ) long -> r14 ; V07 loc5 [V07,T36] ( 5, 10 ) int -> r15 ; V08 loc6 [V08,T56] ( 2, 4 ) bool -> rcx ; V09 loc7 [V09,T57] ( 2, 4 ) bool -> r8 ; V10 loc8 [V10,T58] ( 2, 4 ) int -> r12 ; V11 loc9 [V11,T59] ( 2, 4 ) long -> r14 ;* V12 loc10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V13 loc11 [V13,T66] ( 4, 2 ) int -> rax ; V14 loc12 [V14,T19] ( 4, 17 ) long -> r15 ; V15 loc13 [V15,T39] ( 2, 8.50) bool -> r12 ;* V16 loc14 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V17 loc15 [V17,T35] ( 2, 12 ) int -> r13 ; V18 loc16 [V18 ] ( 5, 44 ) struct (16) [rbp+0x40] do-not-enreg[XS] addr-exposed ld-addr-op ; V19 loc17 [V19,T04] ( 6, 56 ) long -> r14 ; V20 loc18 [V20,T03] ( 7, 56 ) int -> [rbp+0x3C] ; V21 loc19 [V21,T15] ( 3, 24 ) int -> [rbp+0x38] ; V22 loc20 [V22,T08] ( 4, 32 ) bool -> r8 ; V23 loc21 [V23,T05] ( 5, 40 ) int -> r9 ; V24 loc22 [V24,T16] ( 3, 24 ) bool -> r10 ; V25 loc23 [V25,T24] ( 2, 16 ) bool -> rcx ; V26 loc24 [V26,T25] ( 2, 16 ) bool -> rcx ; V27 loc25 [V27,T26] ( 2, 16 ) bool -> r8 ; V28 loc26 [V28,T27] ( 2, 16 ) int -> [rbp+0x34] ; V29 loc27 [V29,T28] ( 2, 16 ) long -> r14 ;* V30 loc28 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V31 OutArgs [V31 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V32 tmp1 [V32 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V33 tmp2 [V33,T01] ( 8,128 ) ref -> [rbp+0x18] class-hnd exact "NewObj constructor temp" ;* V34 tmp3 [V34 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V35 tmp4 [V35,T07] ( 8, 32 ) ref -> r13 class-hnd exact "NewObj constructor temp" ;* V36 tmp5 [V36 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V37 tmp6 [V37,T55] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ;* V38 tmp7 [V38 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V39 tmp8 [V39,T49] ( 2, 4 ) bool -> rdx "Inline return value spill temp" ;* V40 tmp9 [V40 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V41 tmp10 [V41,T41] ( 2, 8 ) long -> r15 "Inlining Arg" ; V42 tmp11 [V42,T46] ( 4, 7 ) long -> r15 "Inline stloc first use temp" ; V43 tmp12 [V43,T64] ( 3, 3 ) int -> rax "Inline stloc first use temp" ; V44 tmp13 [V44,T48] ( 4, 6 ) bool -> r15 "Inline stloc first use temp" ;* V45 tmp14 [V45 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V46 tmp15 [V46,T65] ( 3, 3 ) bool -> r15 "Inline return value spill temp" ;* V47 tmp16 [V47 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V48 tmp17 [V48,T51] ( 4, 4 ) bool -> r15 "Inline return value spill temp" ;* V49 tmp18 [V49 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V50 tmp19 [V50 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V51 tmp20 [V51,T40] ( 2, 8 ) ref -> [rbp+0x10] class-hnd "Inlining Arg" ;* V52 tmp21 [V52 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V53 tmp22 [V53,T63] ( 3, 3 ) byref -> rcx "impAppendStmt" ; V54 tmp23 [V54,T67] ( 2, 2 ) long -> rdx "impAppendStmt" ;* V55 tmp24 [V55 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V56 tmp25 [V56 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V57 tmp26 [V57 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V58 tmp27 [V58 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V59 tmp28 [V59,T50] ( 5, 4.50) long -> [rbp+0x28] "Inlining Arg" ;* V60 tmp29 [V60 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V61 tmp30 [V61 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V62 tmp31 [V62,T17] ( 2, 16 ) bool -> rdx "Inline return value spill temp" ;* V63 tmp32 [V63 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V64 tmp33 [V64,T11] ( 2, 32 ) long -> rax "Inlining Arg" ; V65 tmp34 [V65,T12] ( 4, 28 ) long -> [rbp+0x20] "Inline stloc first use temp" ; V66 tmp35 [V66,T33] ( 3, 12 ) int -> rax "Inline stloc first use temp" ; V67 tmp36 [V67,T14] ( 4, 24 ) bool -> r9 "Inline stloc first use temp" ;* V68 tmp37 [V68 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V69 tmp38 [V69,T34] ( 3, 12 ) bool -> r9 "Inline return value spill temp" ;* V70 tmp39 [V70 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V71 tmp40 [V71,T20] ( 4, 16 ) bool -> r9 "Inline return value spill temp" ;* V72 tmp41 [V72 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V73 tmp42 [V73,T09] ( 2, 32 ) ref -> rcx class-hnd "Inlining Arg" ;* V74 tmp43 [V74 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V75 tmp44 [V75,T10] ( 2, 32 ) ref -> [rbp+0x08] class-hnd "Inlining Arg" ; V76 tmp45 [V76 ] ( 3, 5 ) bool -> [rbp+0x50] do-not-enreg[X] addr-exposed V04._firstCall(offs=0x00) P-DEP "field V04._firstCall (fldOffset=0x0)" ; V77 tmp46 [V77 ] ( 4, 9 ) long -> [rbp+0x58] do-not-enreg[X] addr-exposed V04._handle(offs=0x08) P-DEP "field V04._handle (fldOffset=0x8)" ; V78 tmp47 [V78,T37] ( 4, 9 ) bool -> r14 V05._firstCall(offs=0x00) P-INDEP "field V05._firstCall (fldOffset=0x0)" ; V79 tmp48 [V79,T38] ( 4, 9 ) long -> rax V05._handle(offs=0x08) P-INDEP "field V05._handle (fldOffset=0x8)" ;* V80 tmp49 [V80 ] ( 0, 0 ) byref -> zero-ref V16._pointer(offs=0x00) P-INDEP "field V16._pointer (fldOffset=0x0)" ;* V81 tmp50 [V81 ] ( 0, 0 ) int -> zero-ref V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)" ; V82 tmp51 [V82 ] ( 3, 24 ) bool -> [rbp+0x40] do-not-enreg[X] addr-exposed V18._firstCall(offs=0x00) P-DEP "field V18._firstCall (fldOffset=0x0)" ; V83 tmp52 [V83 ] ( 4, 40 ) long -> [rbp+0x48] do-not-enreg[X] addr-exposed V18._handle(offs=0x08) P-DEP "field V18._handle (fldOffset=0x8)" ;* V84 tmp53 [V84 ] ( 0, 0 ) byref -> zero-ref V32._pointer(offs=0x00) P-INDEP "field V32._pointer (fldOffset=0x0)" ;* V85 tmp54 [V85 ] ( 0, 0 ) int -> zero-ref V32._length(offs=0x08) P-INDEP "field V32._length (fldOffset=0x8)" ; V86 tmp55 [V86,T29] ( 2, 16 ) long -> rcx V34.m_pStringHeap(offs=0x00) P-INDEP "field V34.m_pStringHeap (fldOffset=0x0)" ; V87 tmp56 [V87,T30] ( 2, 16 ) int -> rax V34.m_StringHeapByteLength(offs=0x08) P-INDEP "field V34.m_StringHeapByteLength (fldOffset=0x8)" ; V88 tmp57 [V88,T60] ( 2, 4 ) long -> r15 V36.m_pStringHeap(offs=0x00) P-INDEP "field V36.m_pStringHeap (fldOffset=0x0)" ; V89 tmp58 [V89,T61] ( 2, 4 ) int -> rax V36.m_StringHeapByteLength(offs=0x08) P-INDEP "field V36.m_StringHeapByteLength (fldOffset=0x8)" ; V90 tmp59 [V90,T71] ( 2, 1 ) bool -> r14 V38._firstCall(offs=0x00) P-INDEP "field V38._firstCall (fldOffset=0x0)" ; V91 tmp60 [V91,T72] ( 2, 1 ) long -> rax V38._handle(offs=0x08) P-INDEP "field V38._handle (fldOffset=0x8)" ; V92 tmp61 [V92,T62] ( 2, 4 ) long -> r15 V40.m_pStringHeap(offs=0x00) P-INDEP "field V40.m_pStringHeap (fldOffset=0x0)" ; V93 tmp62 [V93,T52] ( 3, 4 ) int -> rax V40.m_StringHeapByteLength(offs=0x08) P-INDEP "field V40.m_StringHeapByteLength (fldOffset=0x8)" ; V94 tmp63 [V94,T53] ( 3, 4 ) long -> rcx V45.m_pStringHeap(offs=0x00) P-INDEP "field V45.m_pStringHeap (fldOffset=0x0)" ; V95 tmp64 [V95,T54] ( 3, 4 ) int -> rax V45.m_StringHeapByteLength(offs=0x08) P-INDEP "field V45.m_StringHeapByteLength (fldOffset=0x8)" ; V96 tmp65 [V96,T68] ( 2, 2 ) long -> rcx V47.m_pStringHeap(offs=0x00) P-INDEP "field V47.m_pStringHeap (fldOffset=0x0)" ;* V97 tmp66 [V97 ] ( 0, 0 ) int -> zero-ref V47.m_StringHeapByteLength(offs=0x08) P-INDEP "field V47.m_StringHeapByteLength (fldOffset=0x8)" ; V98 tmp67 [V98,T69] ( 2, 2 ) long -> rcx V49.m_pStringHeap(offs=0x00) P-INDEP "field V49.m_pStringHeap (fldOffset=0x0)" ;* V99 tmp68 [V99 ] ( 0, 0 ) int -> zero-ref V49.m_StringHeapByteLength(offs=0x08) P-INDEP "field V49.m_StringHeapByteLength (fldOffset=0x8)" ; V100 tmp69 [V100,T70] ( 2, 1 ) byref -> rcx V52._value(offs=0x00) P-INDEP "field V52._value (fldOffset=0x0)" ; V101 tmp70 [V101,T42] ( 2, 8 ) bool -> r14 V61._firstCall(offs=0x00) P-INDEP "field V61._firstCall (fldOffset=0x0)" ; V102 tmp71 [V102,T43] ( 2, 8 ) long -> rax V61._handle(offs=0x08) P-INDEP "field V61._handle (fldOffset=0x8)" ; V103 tmp72 [V103,T31] ( 2, 16 ) long -> rcx V63.m_pStringHeap(offs=0x00) P-INDEP "field V63.m_pStringHeap (fldOffset=0x0)" ; V104 tmp73 [V104,T21] ( 3, 16 ) int -> rax V63.m_StringHeapByteLength(offs=0x08) P-INDEP "field V63.m_StringHeapByteLength (fldOffset=0x8)" ; V105 tmp74 [V105,T22] ( 3, 16 ) long -> rcx V68.m_pStringHeap(offs=0x00) P-INDEP "field V68.m_pStringHeap (fldOffset=0x0)" ; V106 tmp75 [V106,T23] ( 3, 16 ) int -> rax V68.m_StringHeapByteLength(offs=0x08) P-INDEP "field V68.m_StringHeapByteLength (fldOffset=0x8)" ; V107 tmp76 [V107,T44] ( 2, 8 ) long -> rcx V70.m_pStringHeap(offs=0x00) P-INDEP "field V70.m_pStringHeap (fldOffset=0x0)" ;* V108 tmp77 [V108 ] ( 0, 0 ) int -> zero-ref V70.m_StringHeapByteLength(offs=0x08) P-INDEP "field V70.m_StringHeapByteLength (fldOffset=0x8)" ; V109 tmp78 [V109,T45] ( 2, 8 ) long -> rcx V72.m_pStringHeap(offs=0x00) P-INDEP "field V72.m_pStringHeap (fldOffset=0x0)" ;* V110 tmp79 [V110 ] ( 0, 0 ) int -> zero-ref V72.m_StringHeapByteLength(offs=0x08) P-INDEP "field V72.m_StringHeapByteLength (fldOffset=0x8)" ; V111 GsCookie [V111 ] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V112 cse0 [V112,T13] ( 7, 25.92) int -> r8 "CSE - aggressive" ; V113 cse1 [V113,T06] ( 3, 40 ) int -> rdx "CSE - aggressive" ; V114 cse2 [V114,T47] ( 7, 6.48) int -> r8 "CSE - conservative" ; ; Lcl frame size = 152 G_M30719_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 152 lea rbp, [rsp+20H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp+60H], xmm4 xor rax, rax mov qword ptr [rbp+70H], rax mov rax, 0xD1FFAB1E mov qword ptr [rbp], rax mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 13.08 G_M30719_IG02: mov rcx, gword ptr [rdi+16] mov rbx, gword ptr [rcx+8] mov rcx, rbx call RuntimeTypeHandle:IsInterface(RuntimeType):bool test eax, eax je G_M30719_IG23 ;; bbWeight=1 PerfScore 6.50 G_M30719_IG03: mov rcx, rbx call RuntimeTypeHandle:GetFirstIntroducedMethod(RuntimeType):long mov r14d, 1 mov byte ptr [rbp+50H], r14b mov qword ptr [rbp+58H], rax lea rcx, bword ptr [rbp+50H] call IntroducedMethodEnumerator:MoveNext():bool:this test eax, eax je G_M30719_IG55 ;; bbWeight=0.50 PerfScore 3.13 G_M30719_IG04: mov r14, qword ptr [rbp+58H] cmp dword ptr [rsi+16], 1 je SHORT G_M30719_IG06 ;; bbWeight=4 PerfScore 16.00 G_M30719_IG05: cmp dword ptr [rsi+16], 2 sete dl movzx rdx, dl test edx, edx je G_M30719_IG19 ;; bbWeight=2 PerfScore 9.00 G_M30719_IG06: mov edx, dword ptr [rsi+20] mov rcx, r14 call RuntimeMethodHandle:MatchesNameHash(long,int):bool test eax, eax je G_M30719_IG20 mov rcx, r14 call RuntimeMethodHandle:_GetUtf8Name(long):long mov r15, rax test r15, r15 je SHORT G_M30719_IG09 ;; bbWeight=2 PerfScore 14.50 G_M30719_IG07: mov rcx, r15 xor edx, edx mov r8d, 0xD1FFAB1E call SpanHelpers:IndexOf(byref,ubyte,int):int test eax, eax jl G_M30719_IG59 ;; bbWeight=1 PerfScore 3.00 G_M30719_IG08: jmp SHORT G_M30719_IG10 ;; bbWeight=1 PerfScore 2.00 G_M30719_IG09: xor eax, eax ;; bbWeight=1 PerfScore 0.25 G_M30719_IG10: mov rcx, r15 mov r15d, 1 cmp dword ptr [rsi+16], 1 jne SHORT G_M30719_IG14 ;; bbWeight=2 PerfScore 7.00 G_M30719_IG11: mov r8d, dword ptr [rsi+8] cmp eax, r8d je SHORT G_M30719_IG12 xor r15d, r15d jmp SHORT G_M30719_IG13 ;; bbWeight=1 PerfScore 5.50 G_M30719_IG12: mov r8d, r8d mov rdx, qword ptr [rsi] call SpanHelpers:SequenceEqual(byref,byref,long):bool mov r15d, eax ;; bbWeight=1 PerfScore 3.50 G_M30719_IG13: jmp SHORT G_M30719_IG18 ;; bbWeight=1 PerfScore 2.00 G_M30719_IG14: cmp dword ptr [rsi+16], 2 jne SHORT G_M30719_IG18 mov r8d, dword ptr [rsi+8] cmp eax, r8d je SHORT G_M30719_IG15 xor r15d, r15d jmp SHORT G_M30719_IG18 ;; bbWeight=1 PerfScore 8.50 G_M30719_IG15: test r8d, r8d je SHORT G_M30719_IG17 ;; bbWeight=0.48 PerfScore 0.60 G_M30719_IG16: mov rdx, qword ptr [rsi] call MdUtf8String:EqualsCaseInsensitive(long,long,int):bool mov r15d, eax jmp SHORT G_M30719_IG18 ;; bbWeight=1 PerfScore 5.25 G_M30719_IG17: mov r15d, 1 ;; bbWeight=1 PerfScore 0.25 G_M30719_IG18: test r15d, r15d je G_M30719_IG20 ;; bbWeight=2 PerfScore 2.50 G_M30719_IG19: mov rcx, r14 call RuntimeMethodHandle:GetAttributes(long):int mov r15d, eax test r15d, 0x1000 jne G_M30719_IG20 mov ecx, r15d and ecx, 7 cmp ecx, 6 sete cl movzx rcx, cl test r15b, 16 setne r8b movzx r8, r8b xor edx, edx call RuntimeType:FilterPreCalculate(bool,bool,bool):int mov r12d, eax mov rcx, r14 mov rdx, rbx xor r8, r8 call RuntimeMethodHandle:GetStubIfNeeded(long,RuntimeType,ref):long mov r14, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r13, rax mov rax, gword ptr [rdi+16] mov gword ptr [rbp+10H], rax mov dword ptr [r13+80], r12d lea rcx, bword ptr [r13+56] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF xor rdx, rdx mov gword ptr [r13+64], rdx mov qword ptr [r13+72], r14 lea rcx, bword ptr [r13+8] mov rdx, gword ptr [rbp+10H] call CORINFO_HELP_ASSIGN_REF mov dword ptr [r13+84], r15d lea rcx, bword ptr [rbp+60H] mov r8, r13 mov rdx, 0xD1FFAB1E call ListBuilder`1:Add(__Canon):this ;; bbWeight=2 PerfScore 49.50 G_M30719_IG20: lea rcx, bword ptr [rbp+50H] call IntroducedMethodEnumerator:MoveNext():bool:this test eax, eax jne G_M30719_IG04 ;; bbWeight=4 PerfScore 11.00 G_M30719_IG21: jmp G_M30719_IG55 ;; bbWeight=0.50 PerfScore 1.00 G_M30719_IG22: mov rcx, rbx cmp dword ptr [rcx], ecx call RuntimeType:GetBaseType():RuntimeType:this mov rbx, rax ;; bbWeight=2 PerfScore 7.00 G_M30719_IG23: mov rcx, rbx call RuntimeTypeHandle:IsGenericVariable(RuntimeType):bool test eax, eax jne SHORT G_M30719_IG22 ;; bbWeight=4 PerfScore 10.00 G_M30719_IG24: mov rcx, rbx call RuntimeTypeHandle:GetNumVirtuals(RuntimeType):int mov edx, eax mov r15, rdx test r15, r15 je SHORT G_M30719_IG26 mov rcx, r15 add rcx, 15 and rcx, -16 add rsp, 32 neg rcx add rcx, rsp jb SHORT G_M30719_IG25 xor rcx, rcx ;; bbWeight=0.50 PerfScore 2.88 G_M30719_IG25: test dword ptr [rsp], esp mov r8, rsp sub r8, 0x1000 mov rsp, r8 cmp rsp, rcx jae SHORT G_M30719_IG25 mov rsp, rcx test dword ptr [rsp], esp sub rsp, 32 lea r15, [rsp+20H] ;; bbWeight=0.50 PerfScore 3.50 G_M30719_IG26: test eax, eax jl G_M30719_IG58 ;; bbWeight=0.50 PerfScore 0.63 G_M30719_IG27: mov rcx, r15 movsxd rdx, eax test rdx, rdx je SHORT G_M30719_IG31 ;; bbWeight=0.50 PerfScore 0.88 G_M30719_IG28: mov qword ptr [rbp+28H], rdx cmp rdx, 768 ja SHORT G_M30719_IG30 ;; bbWeight=0.25 PerfScore 0.56 G_M30719_IG29: xor edx, edx mov r8, qword ptr [rbp+28H] call CORINFO_HELP_MEMSET jmp SHORT G_M30719_IG31 ;; bbWeight=0.50 PerfScore 2.13 G_M30719_IG30: mov rdx, qword ptr [rbp+28H] call Buffer:_ZeroMemory(byref,long) ;; bbWeight=0.50 PerfScore 1.00 G_M30719_IG31: mov rcx, rbx mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]RuntimeType:IsValueTypeImpl():bool:this movzx r12, al ;; bbWeight=0.50 PerfScore 2.88 G_M30719_IG32: mov rcx, rbx call RuntimeTypeHandle:GetNumVirtuals(RuntimeType):int mov r13d, eax mov rcx, rbx call RuntimeTypeHandle:GetFirstIntroducedMethod(RuntimeType):long mov r14d, 1 mov byte ptr [rbp+40H], r14b mov qword ptr [rbp+48H], rax lea rcx, bword ptr [rbp+40H] call IntroducedMethodEnumerator:MoveNext():bool:this test eax, eax je G_M30719_IG54 ;; bbWeight=4 PerfScore 31.00 G_M30719_IG33: mov r14, qword ptr [rbp+48H] mov edx, dword ptr [rsi+16] cmp edx, 1 je SHORT G_M30719_IG35 ;; bbWeight=16 PerfScore 68.00 G_M30719_IG34: cmp edx, 2 sete dl movzx rdx, dl test edx, edx je G_M30719_IG48 ;; bbWeight=8 PerfScore 22.00 G_M30719_IG35: mov edx, dword ptr [rsi+20] mov rcx, r14 call RuntimeMethodHandle:MatchesNameHash(long,int):bool test eax, eax je G_M30719_IG53 mov rcx, r14 call RuntimeMethodHandle:_GetUtf8Name(long):long mov rcx, rax test rcx, rcx je SHORT G_M30719_IG38 ;; bbWeight=8 PerfScore 58.00 G_M30719_IG36: mov qword ptr [rbp+20H], rcx xor edx, edx mov r8d, 0xD1FFAB1E call SpanHelpers:IndexOf(byref,ubyte,int):int test eax, eax jl G_M30719_IG59 ;; bbWeight=4 PerfScore 15.00 G_M30719_IG37: jmp SHORT G_M30719_IG39 ;; bbWeight=4 PerfScore 8.00 G_M30719_IG38: xor eax, eax mov qword ptr [rbp+20H], rcx ;; bbWeight=4 PerfScore 5.00 G_M30719_IG39: mov rcx, qword ptr [rbp+20H] mov r9d, 1 cmp dword ptr [rsi+16], 1 jne SHORT G_M30719_IG43 ;; bbWeight=8 PerfScore 34.00 G_M30719_IG40: mov r8d, dword ptr [rsi+8] cmp eax, r8d je SHORT G_M30719_IG41 xor r9d, r9d jmp SHORT G_M30719_IG42 ;; bbWeight=4 PerfScore 22.00 G_M30719_IG41: mov r8d, r8d mov rdx, qword ptr [rsi] call SpanHelpers:SequenceEqual(byref,byref,long):bool mov r9d, eax ;; bbWeight=4 PerfScore 14.00 G_M30719_IG42: jmp SHORT G_M30719_IG47 ;; bbWeight=4 PerfScore 8.00 G_M30719_IG43: cmp dword ptr [rsi+16], 2 jne SHORT G_M30719_IG47 mov r8d, dword ptr [rsi+8] cmp eax, r8d je SHORT G_M30719_IG44 xor r9d, r9d jmp SHORT G_M30719_IG47 ;; bbWeight=4 PerfScore 34.00 G_M30719_IG44: test r8d, r8d je SHORT G_M30719_IG46 ;; bbWeight=1.92 PerfScore 2.40 G_M30719_IG45: mov rdx, qword ptr [rsi] call MdUtf8String:EqualsCaseInsensitive(long,long,int):bool mov r9d, eax jmp SHORT G_M30719_IG47 ;; bbWeight=4 PerfScore 21.00 G_M30719_IG46: mov r9d, 1 ;; bbWeight=4 PerfScore 1.00 G_M30719_IG47: test r9d, r9d je G_M30719_IG53 ;; bbWeight=8 PerfScore 10.00 G_M30719_IG48: mov rcx, r14 call RuntimeMethodHandle:GetAttributes(long):int mov edx, eax and edx, 7 mov dword ptr [rbp+38H], edx test eax, 0x1000 jne G_M30719_IG53 xor r8d, r8d xor r9d, r9d mov dword ptr [rbp+3CH], eax test al, 64 je SHORT G_M30719_IG49 mov rcx, r14 call RuntimeMethodHandle:GetSlot(long):int mov r9d, eax cmp r9d, r13d setl r8b movzx r8, r8b ;; bbWeight=8 PerfScore 78.00 G_M30719_IG49: mov rcx, gword ptr [rdi+16] cmp rbx, gword ptr [rcx+8] setne r10b movzx r10, r10b mov edx, dword ptr [rbp+38H] cmp edx, 1 sete cl movzx rcx, cl test r10d, ecx je SHORT G_M30719_IG50 test r8d, r8d je G_M30719_IG53 ;; bbWeight=8 PerfScore 82.00 G_M30719_IG50: test r8d, r8d je SHORT G_M30719_IG51 movsxd rcx, r9d cmp byte ptr [r15+rcx], 0 jne G_M30719_IG53 movsxd rcx, r9d mov byte ptr [r15+rcx], 1 jmp SHORT G_M30719_IG52 ;; bbWeight=8 PerfScore 62.00 G_M30719_IG51: test r12d, r12d je SHORT G_M30719_IG52 mov eax, dword ptr [rbp+3CH] test eax, 0x440 mov dword ptr [rbp+3CH], eax jne G_M30719_IG53 ;; bbWeight=8 PerfScore 36.00 G_M30719_IG52: cmp edx, 6 sete cl movzx rcx, cl test byte ptr [rbp+3CH], 16 setne r8b movzx r8, r8b mov edx, r10d call RuntimeType:FilterPreCalculate(bool,bool,bool):int mov dword ptr [rbp+34H], eax mov rcx, r14 mov rdx, rbx xor r8, r8 call RuntimeMethodHandle:GetStubIfNeeded(long,RuntimeType,ref):long mov r14, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r8, gword ptr [rdi+16] mov gword ptr [rbp+08H], r8 mov edx, dword ptr [rbp+34H] mov dword ptr [rax+80], edx mov gword ptr [rbp+18H], rax lea rcx, bword ptr [rax+56] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF xor rdx, rdx mov rax, gword ptr [rbp+18H] mov gword ptr [rax+64], rdx mov qword ptr [rax+72], r14 mov gword ptr [rbp+18H], rax lea rcx, bword ptr [rax+8] mov rdx, gword ptr [rbp+08H] call CORINFO_HELP_ASSIGN_REF mov r14, gword ptr [rbp+18H] mov ecx, dword ptr [rbp+3CH] mov dword ptr [r14+84], ecx lea rcx, bword ptr [rbp+60H] mov r8, r14 mov rdx, 0xD1FFAB1E call ListBuilder`1:Add(__Canon):this ;; bbWeight=8 PerfScore 230.00 G_M30719_IG53: lea rcx, bword ptr [rbp+40H] call IntroducedMethodEnumerator:MoveNext():bool:this test eax, eax jne G_M30719_IG33 ;; bbWeight=16 PerfScore 44.00 G_M30719_IG54: mov rcx, rbx call RuntimeTypeHandle:GetBaseType(RuntimeType):RuntimeType mov rbx, rax test rbx, rbx jne G_M30719_IG32 ;; bbWeight=4 PerfScore 11.00 G_M30719_IG55: lea rcx, bword ptr [rbp+60H] mov rdx, 0xD1FFAB1E call ListBuilder`1:ToArray():ref:this mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx je SHORT G_M30719_IG56 call CORINFO_HELP_FAIL_FAST ;; bbWeight=1 PerfScore 5.00 G_M30719_IG56: nop ;; bbWeight=1 PerfScore 0.25 G_M30719_IG57: lea rsp, [rbp+78H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M30719_IG58: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 G_M30719_IG59: call String:ThrowMustBeNullTerminatedString() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1347, prolog size 59, PerfScore 1237.55, (MethodHash=cffe8800) for method MemberInfoCache`1:PopulateMethods(Filter):ref:this ; ============================================================ ; Assembly listing for method RuntimeType:IsValueTypeImpl():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 2, 2 ) ref -> rdx "argument with side effect" ; V03 cse0 [V03,T01] ( 3, 2.50) ref -> rdi "CSE - aggressive" ; ; Lcl frame size = 40 G_M8380_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M8380_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdi, rax cmp rdi, rsi je SHORT G_M8380_IG04 ;; bbWeight=1 PerfScore 2.75 G_M8380_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi jne SHORT G_M8380_IG06 ;; bbWeight=0.50 PerfScore 1.25 G_M8380_IG04: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M8380_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M8380_IG06: mov rdx, rdi mov rcx, rsi mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] cmp dword ptr [rcx], ecx ;; bbWeight=0.50 PerfScore 2.38 G_M8380_IG07: add rsp, 40 pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 91, prolog size 9, PerfScore 20.85, (MethodHash=a868df43) for method RuntimeType:IsValueTypeImpl():bool:this ; ============================================================ ; Assembly listing for method RuntimeType:IsSubclassOf(Type):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 4, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 4, 4 ) ref -> rdx class-hnd ; V02 loc0 [V02,T01] ( 5, 7 ) ref -> rdi class-hnd ; V03 loc1 [V03,T00] ( 6, 17 ) ref -> rax class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 4, 6.24) ref -> rdi class-hnd "spilling QMark2" ; V06 tmp2 [V06,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T06] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M26924_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M26924_IG02: test rdx, rdx je G_M26924_IG17 ;; bbWeight=1 PerfScore 1.25 G_M26924_IG03: mov rdi, rdx mov rax, 0xD1FFAB1E cmp qword ptr [rdi], rax je SHORT G_M26924_IG05 ;; bbWeight=1 PerfScore 3.50 G_M26924_IG04: xor rdi, rdi ;; bbWeight=0.12 PerfScore 0.03 G_M26924_IG05: test rdi, rdi jne SHORT G_M26924_IG08 ;; bbWeight=1 PerfScore 1.25 G_M26924_IG06: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M26924_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M26924_IG08: mov rcx, rsi call RuntimeType:GetBaseType():RuntimeType:this test rax, rax je SHORT G_M26924_IG11 ;; bbWeight=0.50 PerfScore 1.25 G_M26924_IG09: cmp rax, rdi je SHORT G_M26924_IG13 ;; bbWeight=4 PerfScore 5.00 G_M26924_IG10: mov rcx, rax cmp dword ptr [rcx], ecx call RuntimeType:GetBaseType():RuntimeType:this test rax, rax jne SHORT G_M26924_IG09 ;; bbWeight=4 PerfScore 18.00 G_M26924_IG11: mov rcx, 0xD1FFAB1E mov edx, 139 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E cmp rdi, gword ptr [rax] jne SHORT G_M26924_IG15 cmp rdi, rsi je SHORT G_M26924_IG15 mov eax, 1 ;; bbWeight=0.50 PerfScore 3.13 G_M26924_IG12: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M26924_IG13: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M26924_IG14: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M26924_IG15: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M26924_IG16: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M26924_IG17: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 235 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 216, prolog size 6, PerfScore 62.38, (MethodHash=7d4b96d3) for method RuntimeType:IsSubclassOf(Type):bool:this ; ============================================================ ; Assembly listing for method RuntimeType:GetBaseType():RuntimeType:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 7, 5 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T06] ( 3, 5 ) ref -> rdi class-hnd ; V02 loc1 [V02,T09] ( 5, 4 ) ref -> rbx class-hnd ; V03 loc2 [V03,T02] ( 5, 16.50) int -> rbp ; V04 loc3 [V04,T03] ( 5, 14 ) ref -> r15 class-hnd ; V05 loc4 [V05,T05] ( 3, 6 ) int -> rax ; V06 loc5 [V06,T10] ( 2, 1 ) int -> rax ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 3, 16.96) ref -> rdx "CASTCLASS eval op1" ; V09 tmp2 [V09,T08] ( 3, 4.96) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V10 tmp3 [V10,T00] ( 5, 26.96) ref -> r15 class-hnd "spilling QMark2" ;* V11 cse0 [V11,T11] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; V12 cse1 [V12,T07] ( 3, 5 ) int -> r14 "CSE - aggressive" ; ; Lcl frame size = 40 G_M7740_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 6.50 G_M7740_IG02: mov rcx, rsi call Type:get_IsInterface():bool:this test eax, eax je SHORT G_M7740_IG05 ;; bbWeight=1 PerfScore 2.50 G_M7740_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M7740_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M7740_IG05: mov rcx, rsi call RuntimeTypeHandle:IsGenericVariable(RuntimeType):bool test eax, eax je G_M7740_IG16 mov rcx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]RuntimeType:GetGenericParameterConstraints():ref:this mov rdi, rax mov rcx, 0xD1FFAB1E mov edx, 139 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] xor ebp, ebp mov r14d, dword ptr [rdi+8] test r14d, r14d jle SHORT G_M7740_IG13 ;; bbWeight=0.50 PerfScore 7.75 G_M7740_IG06: movsxd rcx, ebp mov rdx, gword ptr [rdi+8*rcx+16] mov r15, rdx test r15, r15 je SHORT G_M7740_IG09 ;; bbWeight=4 PerfScore 15.00 G_M7740_IG07: mov rcx, 0xD1FFAB1E cmp qword ptr [r15], rcx je SHORT G_M7740_IG09 ;; bbWeight=1 PerfScore 3.25 G_M7740_IG08: call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov r15, rax ;; bbWeight=0.48 PerfScore 0.60 G_M7740_IG09: mov rcx, r15 cmp dword ptr [rcx], ecx call Type:get_IsInterface():bool:this test eax, eax jne SHORT G_M7740_IG12 ;; bbWeight=4 PerfScore 18.00 G_M7740_IG10: mov rcx, r15 call RuntimeTypeHandle:IsGenericVariable(RuntimeType):bool test eax, eax je SHORT G_M7740_IG11 mov rcx, r15 mov rax, 0xD1FFAB1E call qword ptr [rax]RuntimeType:get_GenericParameterAttributes():int:this and eax, 28 mov ecx, eax and ecx, 4 and eax, 8 or ecx, eax je SHORT G_M7740_IG12 ;; bbWeight=2 PerfScore 16.50 G_M7740_IG11: mov rbx, r15 ;; bbWeight=2 PerfScore 0.50 G_M7740_IG12: inc ebp cmp r14d, ebp jg SHORT G_M7740_IG06 ;; bbWeight=4 PerfScore 6.00 G_M7740_IG13: mov rcx, 0xD1FFAB1E cmp rbx, gword ptr [rcx] jne SHORT G_M7740_IG14 mov rcx, rsi mov rax, 0xD1FFAB1E call qword ptr [rax]RuntimeType:get_GenericParameterAttributes():int:this and eax, 28 test al, 8 je SHORT G_M7740_IG14 mov rax, 0xD1FFAB1E mov rbx, gword ptr [rax] ;; bbWeight=0.50 PerfScore 5.25 G_M7740_IG14: mov rax, rbx ;; bbWeight=0.50 PerfScore 0.13 G_M7740_IG15: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M7740_IG16: mov rcx, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M7740_IG17: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 jmp RuntimeTypeHandle:GetBaseType(RuntimeType):RuntimeType ;; bbWeight=0.50 PerfScore 2.63 ; Total bytes of code 313, prolog size 12, PerfScore 120.40, (MethodHash=3a2fe1c3) for method RuntimeType:GetBaseType():RuntimeType:this ; ============================================================ ; Assembly listing for method Type:get_IsInterface():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 4 ) ref -> rcx this class-hnd ; V01 loc0 [V01,T02] ( 3, 2.50) ref -> rax class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 5, 6.74) ref -> rax class-hnd "spilling QMark2" ; ; Lcl frame size = 40 G_M60295_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M60295_IG02: mov rax, rcx test rax, rax je SHORT G_M60295_IG05 ;; bbWeight=1 PerfScore 1.50 G_M60295_IG03: mov rdx, 0xD1FFAB1E cmp qword ptr [rax], rdx je SHORT G_M60295_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M60295_IG04: xor rax, rax ;; bbWeight=0.12 PerfScore 0.03 G_M60295_IG05: test rax, rax je SHORT G_M60295_IG08 ;; bbWeight=1 PerfScore 1.25 G_M60295_IG06: mov rcx, rax ;; bbWeight=0.50 PerfScore 0.13 G_M60295_IG07: add rsp, 40 jmp RuntimeTypeHandle:IsInterface(RuntimeType):bool ;; bbWeight=0.50 PerfScore 1.13 G_M60295_IG08: mov rax, qword ptr [rcx] mov rax, qword ptr [rax+112] call qword ptr [rax]Type:GetAttributeFlagsImpl():int:this test al, 32 setne al movzx rax, al ;; bbWeight=0.50 PerfScore 4.25 G_M60295_IG09: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 68, prolog size 4, PerfScore 16.77, (MethodHash=1dcc1478) for method Type:get_IsInterface():bool:this ; ============================================================ ; Assembly listing for method RuntimeType:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) struct ( 8) [rbp-0x08] do-not-enreg[SB] must-init "struct address for call/obj" ; V02 tmp2 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[SB] must-init "struct address for call/obj" ; V03 tmp3 [V03 ] ( 1, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[SB] must-init "struct address for call/obj" ; V04 tmp4 [V04 ] ( 1, 1 ) struct ( 8) [rbp-0x20] do-not-enreg[SB] must-init "struct address for call/obj" ; V05 tmp5 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] must-init "argument with side effect" ; V06 tmp6 [V06 ] ( 1, 1 ) ref -> [rbp-0x30] must-init "argument with side effect" ; V07 tmp7 [V07 ] ( 1, 1 ) ref -> [rbp-0x38] must-init "argument with side effect" ; V08 tmp8 [V08 ] ( 1, 1 ) ref -> [rbp-0x40] must-init "argument with side effect" ; ; Lcl frame size = 96 G_M19746_IG01: push rbp sub rsp, 96 lea rbp, [rsp+60H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-40H], xmm4 vmovdqa xmmword ptr [rbp-30H], xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 6.08 G_M19746_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPEHANDLE mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call Type:GetTypeFromHandle(RuntimeTypeHandle):Type mov gword ptr [rbp-28H], rax mov rdx, gword ptr [rbp-28H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTCLASS mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPEHANDLE mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] call Type:GetTypeFromHandle(RuntimeTypeHandle):Type mov gword ptr [rbp-30H], rax mov rdx, gword ptr [rbp-30H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTCLASS mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPEHANDLE mov gword ptr [rbp-18H], rax mov rcx, gword ptr [rbp-18H] call Type:GetTypeFromHandle(RuntimeTypeHandle):Type mov gword ptr [rbp-38H], rax mov rdx, gword ptr [rbp-38H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTCLASS mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPEHANDLE mov gword ptr [rbp-20H], rax mov rcx, gword ptr [rbp-20H] call Type:GetTypeFromHandle(RuntimeTypeHandle):Type mov gword ptr [rbp-40H], rax mov rdx, gword ptr [rbp-40H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTCLASS mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 36.25 G_M19746_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 317, prolog size 34, PerfScore 76.53, (MethodHash=2ae8b2dd) for method RuntimeType:.cctor() ; ============================================================ ; Assembly listing for method CastHelpers:ChkCastClass(long,Object):Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 3 ) long -> rcx ; V01 arg1 [V01,T00] ( 6, 4.50) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M7526_IG01: ;; bbWeight=1 PerfScore 0.00 G_M7526_IG02: test rdx, rdx je SHORT G_M7526_IG04 ;; bbWeight=1 PerfScore 1.25 G_M7526_IG03: cmp qword ptr [rdx], rcx jne SHORT G_M7526_IG06 ;; bbWeight=0.50 PerfScore 1.50 G_M7526_IG04: mov rax, rdx ;; bbWeight=0.50 PerfScore 0.13 G_M7526_IG05: ret ;; bbWeight=0.50 PerfScore 0.50 G_M7526_IG06: jmp CastHelpers:ChkCastClassSpecial(long,Object):Object ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 19, prolog size 0, PerfScore 6.28, (MethodHash=5ea0e299) for method CastHelpers:ChkCastClass(long,Object):Object ; ============================================================ ; Assembly listing for method IntroducedMethodEnumerator:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5.50) byref -> rsi this ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T03] ( 2, 2 ) byref -> rcx "Inlining Arg" ; V03 tmp2 [V03,T04] ( 2, 2 ) long -> rcx ld-addr-op "Inlining Arg" ;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V05 tmp4 [V05,T01] ( 2, 4 ) byref -> rsi "Inlining Arg" ; V06 tmp5 [V06,T02] ( 2, 4 ) long -> rax ld-addr-op "Inlining Arg" ;* V07 tmp6 [V07 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; ; Lcl frame size = 32 G_M58641_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M58641_IG02: cmp byte ptr [rsi], 0 je SHORT G_M58641_IG04 ;; bbWeight=1 PerfScore 3.00 G_M58641_IG03: mov byte ptr [rsi], 0 jmp SHORT G_M58641_IG05 ;; bbWeight=0.50 PerfScore 1.50 G_M58641_IG04: lea rcx, bword ptr [rsi+8] mov rcx, qword ptr [rcx] test rcx, rcx je SHORT G_M58641_IG05 lea rcx, bword ptr [rsi+8] call RuntimeTypeHandle:GetNextIntroducedMethod(byref) ;; bbWeight=0.50 PerfScore 2.63 G_M58641_IG05: add rsi, 8 mov rax, qword ptr [rsi] test rax, rax setne al movzx rax, al ;; bbWeight=1 PerfScore 3.75 G_M58641_IG06: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 61, prolog size 5, PerfScore 20.23, (MethodHash=366d1aee) for method IntroducedMethodEnumerator:MoveNext():bool:this ; ============================================================ ; Assembly listing for method SpanHelpers:IndexOf(byref,ubyte,int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 20, 58.50) byref -> rcx ; V01 arg1 [V01,T20] ( 3, 3 ) ubyte -> rdx ; V02 arg2 [V02,T06] ( 6, 12 ) int -> r8 ; V03 loc0 [V03,T03] ( 14, 33 ) int -> rdx ; V04 loc1 [V04,T00] ( 49,170.50) long -> r9 ; V05 loc2 [V05,T01] ( 19,100 ) long -> r11 ; V06 loc3 [V06,T30] ( 2, 4 ) simd16 -> mm0 ; V07 loc4 [V07,T31] ( 2, 4 ) simd16 -> mm1 ; V08 loc5 [V08,T21] ( 3, 4.50) int -> r11 ; V09 loc6 [V09,T29] ( 2, 18 ) simd32 -> mm0 ; V10 loc7 [V10,T28] ( 2, 32 ) simd32 -> mm1 ; V11 loc8 [V11,T04] ( 3, 32.50) int -> rsi ; V12 loc9 [V12,T32] ( 2, 4 ) simd16 -> mm0 ; V13 loc10 [V13,T33] ( 2, 4 ) simd16 -> mm1 ; V14 loc11 [V14,T22] ( 3, 4.50) int -> r11 ;* V15 loc12 [V15 ] ( 0, 0 ) simd16 -> zero-ref ;* V16 loc13 [V16 ] ( 0, 0 ) simd16 -> zero-ref ;* V17 loc14 [V17 ] ( 0, 0 ) int -> zero-ref ;* V18 loc15 [V18 ] ( 0, 0 ) simd16 -> zero-ref ;* V19 loc16 [V19 ] ( 0, 0 ) int -> zero-ref ld-addr-op ;* V20 loc17 [V20 ] ( 0, 0 ) simd16 -> zero-ref ;* V21 loc18 [V21 ] ( 0, 0 ) simd16 -> zero-ref ;* V22 loc19 [V22 ] ( 0, 0 ) simd16 -> zero-ref ;* V23 loc20 [V23 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op ;* V24 loc21 [V24 ] ( 0, 0 ) simd32 -> zero-ref ;* V25 loc22 [V25 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op ;# V26 OutArgs [V26 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V27 tmp1 [V27,T24] ( 2, 1 ) long -> r11 "Inline stloc first use temp" ;* V28 tmp2 [V28 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V29 tmp3 [V29 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V30 tmp4 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V31 tmp5 [V31 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V32 tmp6 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V33 tmp7 [V33 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V34 tmp8 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V35 tmp9 [V35,T10] ( 2, 8 ) long -> rsi ld-addr-op "Inlining Arg" ;* V36 tmp10 [V36 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V37 tmp11 [V37 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V38 tmp12 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V39 tmp13 [V39,T11] ( 2, 8 ) long -> rsi ld-addr-op "Inlining Arg" ;* V40 tmp14 [V40 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V41 tmp15 [V41 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V42 tmp16 [V42 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V43 tmp17 [V43,T12] ( 2, 8 ) long -> rsi ld-addr-op "Inlining Arg" ;* V44 tmp18 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V45 tmp19 [V45 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V46 tmp20 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V47 tmp21 [V47,T13] ( 2, 8 ) long -> rsi ld-addr-op "Inlining Arg" ;* V48 tmp22 [V48 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V49 tmp23 [V49 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V50 tmp24 [V50 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V51 tmp25 [V51,T14] ( 2, 8 ) long -> rsi ld-addr-op "Inlining Arg" ;* V52 tmp26 [V52 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V53 tmp27 [V53 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V54 tmp28 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V55 tmp29 [V55,T15] ( 2, 8 ) long -> rsi ld-addr-op "Inlining Arg" ;* V56 tmp30 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V57 tmp31 [V57 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V58 tmp32 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V59 tmp33 [V59,T16] ( 2, 8 ) long -> rsi ld-addr-op "Inlining Arg" ;* V60 tmp34 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V61 tmp35 [V61 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V62 tmp36 [V62 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V63 tmp37 [V63 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V64 tmp38 [V64 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V65 tmp39 [V65 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V66 tmp40 [V66,T17] ( 2, 8 ) long -> rsi ld-addr-op "Inlining Arg" ;* V67 tmp41 [V67 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V68 tmp42 [V68 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V69 tmp43 [V69 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V70 tmp44 [V70,T18] ( 2, 8 ) long -> rsi ld-addr-op "Inlining Arg" ;* V71 tmp45 [V71 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V72 tmp46 [V72 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V73 tmp47 [V73 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V74 tmp48 [V74,T19] ( 2, 8 ) long -> rsi ld-addr-op "Inlining Arg" ;* V75 tmp49 [V75 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V76 tmp50 [V76 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V77 tmp51 [V77 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V78 tmp52 [V78 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V79 tmp53 [V79 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V80 tmp54 [V80 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V81 tmp55 [V81 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V82 tmp56 [V82 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V83 tmp57 [V83 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V84 tmp58 [V84,T25] ( 2, 1 ) int -> r8 "Inline return value spill temp" ;* V85 tmp59 [V85 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V86 tmp60 [V86 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V87 tmp61 [V87 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V88 tmp62 [V88 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V89 tmp63 [V89,T26] ( 2, 1 ) int -> r11 "Inline return value spill temp" ;* V90 tmp64 [V90 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V91 tmp65 [V91 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V92 tmp66 [V92 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V93 tmp67 [V93 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V94 tmp68 [V94,T27] ( 2, 1 ) int -> rax "Inline return value spill temp" ; V95 tmp69 [V95,T08] ( 12, 12 ) int -> rax "Single return block return value" ; V96 tmp70 [V96,T23] ( 2, 2 ) long -> r11 "Cast away GC" ; V97 tmp71 [V97,T05] ( 2, 16 ) long -> r11 "Cast away GC" ; V98 cse0 [V98,T09] ( 5, 8 ) int -> rax "CSE - conservative" ; V99 cse1 [V99,T07] ( 5, 14 ) long -> r10 "CSE - moderate" ; ; Lcl frame size = 0 G_M60608_IG01: push rsi vzeroupper ;; bbWeight=1 PerfScore 2.00 G_M60608_IG02: movzx rax, dl mov edx, eax xor r9, r9 mov r10d, r8d mov r11, r10 cmp r8d, 32 jl G_M60608_IG05 ;; bbWeight=1 PerfScore 2.50 G_M60608_IG03: mov r11, rcx and r11, 15 neg r11d add r11d, 16 and r11d, 15 cmp r11, 8 jb G_M60608_IG06 ;; bbWeight=0.50 PerfScore 1.25 G_M60608_IG04: add r11, -8 movzx rsi, byte ptr [rcx+r9] cmp esi, edx je G_M60608_IG23 lea rsi, [r9+1] movzx rsi, byte ptr [rcx+rsi] cmp esi, edx je G_M60608_IG24 lea rsi, [r9+2] movzx rsi, byte ptr [rcx+rsi] cmp esi, edx je G_M60608_IG25 lea rsi, [r9+3] movzx rsi, byte ptr [rcx+rsi] cmp esi, edx je G_M60608_IG26 lea rsi, [r9+4] movzx rsi, byte ptr [rcx+rsi] cmp esi, edx je G_M60608_IG27 lea rsi, [r9+5] movzx rsi, byte ptr [rcx+rsi] cmp esi, edx je G_M60608_IG28 lea rsi, [r9+6] movzx rsi, byte ptr [rcx+rsi] cmp esi, edx je G_M60608_IG29 lea rsi, [r9+7] movzx rsi, byte ptr [rcx+rsi] cmp esi, edx je G_M60608_IG30 add r9, 8 ;; bbWeight=2 PerfScore 60.00 G_M60608_IG05: cmp r11, 8 jae G_M60608_IG04 ;; bbWeight=16 PerfScore 20.00 G_M60608_IG06: cmp r11, 4 jb SHORT G_M60608_IG09 ;; bbWeight=4 PerfScore 5.00 G_M60608_IG07: add r11, -4 movzx rsi, byte ptr [rcx+r9] cmp esi, edx je G_M60608_IG23 lea rsi, [r9+1] movzx rsi, byte ptr [rcx+rsi] cmp esi, edx je G_M60608_IG24 lea rsi, [r9+2] movzx rsi, byte ptr [rcx+rsi] cmp esi, edx je G_M60608_IG25 lea rsi, [r9+3] movzx rsi, byte ptr [rcx+rsi] cmp esi, edx je G_M60608_IG26 add r9, 4 test r11, r11 je SHORT G_M60608_IG10 ;; bbWeight=2 PerfScore 32.50 G_M60608_IG08: dec r11 movzx rsi, byte ptr [rcx+r9] cmp esi, edx je G_M60608_IG23 inc r9 ;; bbWeight=8 PerfScore 30.00 G_M60608_IG09: test r11, r11 jne SHORT G_M60608_IG08 ;; bbWeight=16 PerfScore 20.00 G_M60608_IG10: cmp r9, r10 jae G_M60608_IG21 mov r11, rcx mov r11d, r11d add r11, r9 test r11b, 31 je SHORT G_M60608_IG13 ;; bbWeight=4 PerfScore 13.00 G_M60608_IG11: vmovd xmm0, eax vpbroadcastb xmm0, xmm0 vmovupd xmm1, xmmword ptr [rcx+r9] vpcmpeqb xmm0, xmm0, xmm1 vpmovmskb r11d, xmm0 test r11d, r11d jne SHORT G_M60608_IG12 add r9, 16 jmp SHORT G_M60608_IG13 ;; bbWeight=2 PerfScore 22.00 G_M60608_IG12: xor r8d, r8d tzcnt r8d, r11d mov eax, r8d add eax, r9d jmp G_M60608_IG31 ;; bbWeight=0.50 PerfScore 2.38 G_M60608_IG13: mov r11d, r8d sub r11d, r9d and r11d, -32 cmp r11, r9 jbe SHORT G_M60608_IG16 ;; bbWeight=4 PerfScore 8.00 G_M60608_IG14: vmovd xmm0, eax vpbroadcastb ymm0, ymm0 ;; bbWeight=2 PerfScore 4.00 G_M60608_IG15: vmovupd ymm1, ymmword ptr[rcx+r9] vpcmpeqb ymm1, ymm0, ymm1 vpmovmskb esi, ymm1 test esi, esi jne SHORT G_M60608_IG18 add r9, 32 cmp r11, r9 ja SHORT G_M60608_IG15 ;; bbWeight=16 PerfScore 132.00 G_M60608_IG16: mov r11d, r8d sub r11d, r9d and r11d, -16 cmp r11, r9 jbe SHORT G_M60608_IG20 ;; bbWeight=4 PerfScore 8.00 G_M60608_IG17: vmovd xmm0, eax vpbroadcastb xmm0, xmm0 vmovupd xmm1, xmmword ptr [rcx+r9] vpcmpeqb xmm0, xmm0, xmm1 vpmovmskb r11d, xmm0 test r11d, r11d jne SHORT G_M60608_IG19 add r9, 16 jmp SHORT G_M60608_IG20 ;; bbWeight=2 PerfScore 22.00 G_M60608_IG18: xor r11d, r11d tzcnt r11d, esi mov r10d, r11d mov eax, r10d add eax, r9d jmp SHORT G_M60608_IG31 ;; bbWeight=0.50 PerfScore 2.50 G_M60608_IG19: xor eax, eax tzcnt eax, r11d mov edx, eax mov eax, edx add eax, r9d jmp SHORT G_M60608_IG31 ;; bbWeight=0.50 PerfScore 2.50 G_M60608_IG20: cmp r9, r10 jae SHORT G_M60608_IG21 mov r11, r10 sub r11, r9 jmp G_M60608_IG05 ;; bbWeight=4 PerfScore 15.00 G_M60608_IG21: mov eax, -1 ;; bbWeight=0.50 PerfScore 0.13 G_M60608_IG22: vzeroupper pop rsi ret ;; bbWeight=0.50 PerfScore 1.25 G_M60608_IG23: mov eax, r9d jmp SHORT G_M60608_IG31 ;; bbWeight=0.50 PerfScore 1.13 G_M60608_IG24: lea eax, [r9+1] jmp SHORT G_M60608_IG31 ;; bbWeight=0.50 PerfScore 1.25 G_M60608_IG25: lea eax, [r9+2] jmp SHORT G_M60608_IG31 ;; bbWeight=0.50 PerfScore 1.25 G_M60608_IG26: lea eax, [r9+3] jmp SHORT G_M60608_IG31 ;; bbWeight=0.50 PerfScore 1.25 G_M60608_IG27: lea eax, [r9+4] jmp SHORT G_M60608_IG31 ;; bbWeight=0.50 PerfScore 1.25 G_M60608_IG28: lea eax, [r9+5] jmp SHORT G_M60608_IG31 ;; bbWeight=0.50 PerfScore 1.25 G_M60608_IG29: lea eax, [r9+6] jmp SHORT G_M60608_IG31 ;; bbWeight=0.50 PerfScore 1.25 G_M60608_IG30: lea eax, [r9+7] ;; bbWeight=0.50 PerfScore 0.25 G_M60608_IG31: vzeroupper pop rsi ret ;; bbWeight=0.50 PerfScore 1.25 ; Total bytes of code 601, prolog size 4, PerfScore 477.43, (MethodHash=9f18133f) for method SpanHelpers:IndexOf(byref,ubyte,int):int ; ============================================================ ; Assembly listing for method RuntimeType:FilterPreCalculate(bool,bool,bool):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 3 ) bool -> rcx ; V01 arg1 [V01,T03] ( 3, 3 ) bool -> rdx ; V02 arg2 [V02,T01] ( 4, 3 ) bool -> r8 ; V03 loc0 [V03,T00] ( 12, 7 ) int -> rax ;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 3, 2 ) int -> rax ; ; Lcl frame size = 0 G_M23329_IG01: ;; bbWeight=1 PerfScore 0.00 G_M23329_IG02: test cl, cl jne SHORT G_M23329_IG04 ;; bbWeight=1 PerfScore 1.25 G_M23329_IG03: mov eax, 32 jmp SHORT G_M23329_IG05 ;; bbWeight=0.50 PerfScore 1.13 G_M23329_IG04: mov eax, 16 ;; bbWeight=0.50 PerfScore 0.13 G_M23329_IG05: test dl, dl je SHORT G_M23329_IG08 ;; bbWeight=1 PerfScore 1.25 G_M23329_IG06: or eax, 2 test r8b, r8b je SHORT G_M23329_IG07 or eax, 72 jmp SHORT G_M23329_IG10 ;; bbWeight=0.50 PerfScore 1.88 G_M23329_IG07: or eax, 4 jmp SHORT G_M23329_IG10 ;; bbWeight=0.50 PerfScore 1.13 G_M23329_IG08: test r8b, r8b je SHORT G_M23329_IG09 or eax, 8 jmp SHORT G_M23329_IG10 ;; bbWeight=0.50 PerfScore 1.75 G_M23329_IG09: or eax, 4 ;; bbWeight=0.50 PerfScore 0.13 G_M23329_IG10: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 52, prolog size 0, PerfScore 14.83, (MethodHash=c7b4a4de) for method RuntimeType:FilterPreCalculate(bool,bool,bool):int ; ============================================================ ; Assembly listing for method ListBuilder`1:Add(__Canon):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 17, 11 ) byref -> rsi this ; V01 TypeCtx [V01,T01] ( 7, 4.50) long -> rcx ; V02 arg1 [V02,T02] ( 4, 3 ) ref -> rdi class-hnd ; V03 loc0 [V03,T08] ( 3, 1.50) int -> rbp ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "bubbling QMark1" ; V06 tmp2 [V06,T05] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V07 tmp3 [V07,T07] ( 2, 2 ) int -> rbp "bubbling QMark1" ; V08 tmp4 [V08,T06] ( 3, 2 ) long -> [rsp+0x28] "spilling Runtime Lookup tree" ; V09 cse0 [V09,T09] ( 3, 1.25) long -> rdx "CSE - moderate" ; V10 cse1 [V10,T10] ( 3, 1.25) long -> rdx "CSE - moderate" ; V11 cse2 [V11,T03] ( 4, 3 ) int -> rbx "CSE - aggressive" ; V12 cse3 [V12,T04] ( 5, 2.50) int -> rbp "CSE - aggressive" ; ; Lcl frame size = 56 G_M54243_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rdx mov rsi, rcx mov rcx, rdx mov rdi, r8 ;; bbWeight=1 PerfScore 6.00 G_M54243_IG02: mov ebx, dword ptr [rsi+16] test ebx, ebx jne SHORT G_M54243_IG04 ;; bbWeight=1 PerfScore 3.25 G_M54243_IG03: lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M54243_IG14 ;; bbWeight=0.50 PerfScore 1.88 G_M54243_IG04: cmp ebx, 1 jne SHORT G_M54243_IG09 mov ebp, dword ptr [rsi+20] cmp ebp, 2 jge SHORT G_M54243_IG05 mov dword ptr [rsi+20], 4 ;; bbWeight=0.50 PerfScore 2.75 G_M54243_IG05: mov ebp, dword ptr [rsi+20] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M54243_IG07 ;; bbWeight=0.50 PerfScore 4.63 G_M54243_IG06: mov qword ptr [rsp+28H], rdx jmp SHORT G_M54243_IG08 ;; bbWeight=0.25 PerfScore 0.75 G_M54243_IG07: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+28H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M54243_IG08: movsxd rdx, ebp mov rcx, qword ptr [rsp+28H] call CORINFO_HELP_NEWARR_1_OBJ mov rdx, rax mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, gword ptr [rsi] mov r8, gword ptr [rsi+8] xor edx, edx call CORINFO_HELP_ARRADDR_ST jmp SHORT G_M54243_IG13 ;; bbWeight=0.50 PerfScore 5.50 G_M54243_IG09: mov ebp, dword ptr [rsi+20] cmp ebp, ebx jne SHORT G_M54243_IG13 add ebp, ebp mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M54243_IG11 ;; bbWeight=0.50 PerfScore 5.38 G_M54243_IG10: jmp SHORT G_M54243_IG12 ;; bbWeight=0.25 PerfScore 0.50 G_M54243_IG11: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M54243_IG12: mov rcx, rdx mov rdx, rsi mov r8d, ebp call Array:Resize(byref,int) mov dword ptr [rsi+20], ebp ;; bbWeight=0.50 PerfScore 1.38 G_M54243_IG13: mov rcx, gword ptr [rsi] mov edx, dword ptr [rsi+16] mov r8, rdi call CORINFO_HELP_ARRADDR_ST ;; bbWeight=0.50 PerfScore 2.63 G_M54243_IG14: inc dword ptr [rsi+16] ;; bbWeight=1 PerfScore 5.00 G_M54243_IG15: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 240, prolog size 13, PerfScore 67.81, (MethodHash=e2672c1c) for method ListBuilder`1:Add(__Canon):this ; ============================================================ ; Assembly listing for method ListBuilder`1:ToArray():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 5.50) byref -> rsi this ; V01 TypeCtx [V01,T01] ( 9, 5.25) long -> rcx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref "bubbling QMark1" ; V04 tmp2 [V04,T07] ( 2, 2 ) int -> rdi "bubbling QMark1" ; V05 tmp3 [V05,T04] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V06 tmp4 [V06,T05] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V07 tmp5 [V07,T03] ( 3, 3 ) ref -> rdi class-hnd exact "dup spill" ; V08 tmp6 [V08,T06] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V09 cse0 [V09,T08] ( 3, 1.25) long -> rdx "CSE - moderate" ; V10 cse1 [V10,T09] ( 3, 1.25) long -> rdx "CSE - moderate" ; V11 cse2 [V11,T10] ( 3, 1.25) long -> rdx "CSE - moderate" ; V12 cse3 [V12,T02] ( 4, 3 ) int -> rdi "CSE - aggressive" ; ; Lcl frame size = 40 G_M43846_IG01: push rdi push rsi sub rsp, 40 mov qword ptr [rsp+20H], rdx mov rsi, rcx mov rcx, rdx ;; bbWeight=1 PerfScore 3.75 G_M43846_IG02: mov edi, dword ptr [rsi+16] test edi, edi jne SHORT G_M43846_IG08 ;; bbWeight=1 PerfScore 3.25 G_M43846_IG03: mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+32] test rdx, rdx je SHORT G_M43846_IG05 ;; bbWeight=0.50 PerfScore 3.63 G_M43846_IG04: jmp SHORT G_M43846_IG06 ;; bbWeight=0.25 PerfScore 0.50 G_M43846_IG05: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M43846_IG06: mov rcx, rdx ;; bbWeight=0.50 PerfScore 0.13 G_M43846_IG07: add rsp, 40 pop rsi pop rdi jmp Array:Empty():ref ;; bbWeight=0.50 PerfScore 1.63 G_M43846_IG08: cmp edi, 1 jne SHORT G_M43846_IG13 mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M43846_IG10 ;; bbWeight=0.50 PerfScore 4.25 G_M43846_IG09: jmp SHORT G_M43846_IG11 ;; bbWeight=0.25 PerfScore 0.50 G_M43846_IG10: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M43846_IG11: mov rcx, rdx mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax mov r8, gword ptr [rsi+8] mov rcx, rdi xor edx, edx call CORINFO_HELP_ARRADDR_ST mov rax, rdi ;; bbWeight=0.50 PerfScore 2.75 G_M43846_IG12: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M43846_IG13: mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M43846_IG15 ;; bbWeight=0.50 PerfScore 3.63 G_M43846_IG14: jmp SHORT G_M43846_IG16 ;; bbWeight=0.25 PerfScore 0.50 G_M43846_IG15: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M43846_IG16: mov rcx, rdx mov rdx, rsi mov r8d, edi call Array:Resize(byref,int) mov eax, dword ptr [rsi+16] mov dword ptr [rsi+20], eax mov rax, gword ptr [rsi] ;; bbWeight=0.50 PerfScore 3.38 G_M43846_IG17: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 221, prolog size 17, PerfScore 53.35, (MethodHash=ea6854b9) for method ListBuilder`1:ToArray():ref:this ; ============================================================ ; Assembly listing for method MemberInfoCache`1:Insert(byref,String,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 19, 10.50) ref -> [rbp+0x10] EH do-not-enreg[] this class-hnd EH-live ; V01 arg1 [V01,T05] ( 11, 6.50) byref -> rsi ; V02 arg2 [V02,T06] ( 6, 4 ) ref -> rdi class-hnd ; V03 arg3 [V03,T07] ( 4, 4 ) int -> rbx ; V04 loc0 [V04 ] ( 5, 4 ) bool -> [rbp-0x40] do-not-enreg[XF] addr-exposed ld-addr-op ; V05 loc1 [V05,T29] ( 3, 1.50) ref -> rax class-hnd ; V06 loc2 [V06,T30] ( 3, 1.50) ref -> rax class-hnd ; V07 loc3 [V07,T03] ( 6, 13.50) int -> rbx ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T13] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V10 tmp2 [V10,T21] ( 2, 2 ) byref -> r14 "impAppendStmt" ; V11 tmp3 [V11,T16] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V12 tmp4 [V12,T33] ( 2, 1.50) long -> rcx "impRuntimeLookup slot" ; V13 tmp5 [V13,T22] ( 2, 2 ) byref -> rbx "impAppendStmt" ; V14 tmp6 [V14,T23] ( 2, 2 ) ref -> rsi class-hnd "impAppendStmt" ; V15 tmp7 [V15,T17] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V16 tmp8 [V16,T14] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V17 tmp9 [V17,T24] ( 2, 2 ) byref -> r14 "impAppendStmt" ; V18 tmp10 [V18,T18] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V19 tmp11 [V19,T34] ( 2, 1.50) long -> rcx "impRuntimeLookup slot" ; V20 tmp12 [V20,T25] ( 2, 2 ) byref -> rbx "impAppendStmt" ; V21 tmp13 [V21,T26] ( 2, 2 ) ref -> rsi class-hnd "impAppendStmt" ; V22 tmp14 [V22,T19] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V23 tmp15 [V23,T15] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V24 tmp16 [V24,T27] ( 2, 2 ) byref -> rdi "impAppendStmt" ; V25 tmp17 [V25,T20] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V26 tmp18 [V26,T02] ( 2, 16 ) ref -> rax class-hnd "Inlining Arg" ;* V27 tmp19 [V27,T08] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V28 tmp20 [V28,T28] ( 2, 2 ) byref -> rdx "Inlining Arg" ; V29 tmp21 [V29,T00] ( 3, 24 ) ref -> rax "arr expr" ; V30 PSPSym [V30 ] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "PSPSym" ;* V31 tmp23 [V31 ] ( 0, 0 ) ref -> zero-ref "optAddCopies" ; V32 cse0 [V32,T12] ( 6, 2.50) long -> rdx "CSE - moderate" ; V33 cse1 [V33,T35] ( 3, 1.25) long -> rdx "CSE - moderate" ; V34 cse2 [V34,T36] ( 3, 1.25) long -> rdx "CSE - moderate" ; V35 cse3 [V35,T37] ( 3, 1.25) long -> rdx "CSE - moderate" ; V36 cse4 [V36,T10] ( 8, 4 ) long -> r12 "CSE - aggressive" ; V37 cse5 [V37,T31] ( 3, 1.50) byref -> rbx "CSE - moderate" ; V38 cse6 [V38,T32] ( 3, 1.50) byref -> rbx "CSE - moderate" ; V39 cse7 [V39,T09] ( 3, 5 ) ref -> rdi "CSE - aggressive" ; V40 cse8 [V40,T01] ( 4, 16 ) int -> rdx "CSE - aggressive" ; V41 cse9 [V41,T11] ( 8, 4 ) long -> r15 "CSE - aggressive" ; ; Lcl frame size = 64 G_M7973_IG01: push rbp push r15 push r14 push r12 push rdi push rsi push rbx sub rsp, 64 lea rbp, [rsp+70H] mov qword ptr [rbp-50H], rsp mov qword ptr [rbp-38H], rcx mov gword ptr [rbp+10H], rcx mov rsi, rdx mov rdi, r8 mov ebx, r9d ;; bbWeight=1 PerfScore 11.50 G_M7973_IG02: xor edx, edx mov dword ptr [rbp-40H], edx ;; bbWeight=1 PerfScore 1.25 G_M7973_IG03: cmp byte ptr [rbp-40H], 0 jne SHORT G_M7973_IG06 ;; bbWeight=1 PerfScore 2.00 G_M7973_IG04: lea rdx, [rbp-40H] mov rcx, gword ptr [rbp+10H] call Monitor:ReliableEnter(Object,byref) ;; bbWeight=1 PerfScore 2.50 G_M7973_IG05: cmp ebx, 2 ja G_M7973_IG32 mov ecx, ebx lea rdx, [reloc @RWD00] mov edx, dword ptr [rdx+4*rcx] lea rax, G_M7973_IG02 add rdx, rax jmp rdx ;; bbWeight=1 PerfScore 7.25 G_M7973_IG06: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M7973_IG07: call CORINFO_HELP_RNGCHKFAIL ;; bbWeight=0 PerfScore 0.00 G_M7973_IG08: mov rbx, gword ptr [rbp+10H] add rbx, 32 mov r14, rbx mov rcx, gword ptr [rbp+10H] mov r15, qword ptr [rcx] mov rcx, r15 mov rdx, qword ptr [rcx+48] mov r12, qword ptr [rdx] mov rdx, qword ptr [r12+16] test rdx, rdx je SHORT G_M7973_IG10 ;; bbWeight=0.50 PerfScore 6.00 G_M7973_IG09: jmp SHORT G_M7973_IG11 ;; bbWeight=0.25 PerfScore 0.50 G_M7973_IG10: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M7973_IG11: mov rcx, r14 mov r8, rdi call CerHashtable`2:get_Item(__Canon):__Canon:this test rax, rax jne SHORT G_M7973_IG15 mov rdx, gword ptr [rsi] mov rcx, gword ptr [rbp+10H] call MemberInfoCache`1:MergeWithGlobalList(ref):this mov rsi, gword ptr [rsi] mov rcx, r15 mov rdx, qword ptr [r12+16] test rdx, rdx je SHORT G_M7973_IG13 ;; bbWeight=0.50 PerfScore 6.13 G_M7973_IG12: jmp SHORT G_M7973_IG14 ;; bbWeight=0.25 PerfScore 0.50 G_M7973_IG13: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M7973_IG14: mov rcx, rbx mov r8, rdi mov r9, rsi call CerHashtable`2:set_Item(__Canon,__Canon):this jmp G_M7973_IG33 ;; bbWeight=0.50 PerfScore 1.88 G_M7973_IG15: mov rcx, rsi mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M7973_IG33 ;; bbWeight=0.50 PerfScore 1.75 G_M7973_IG16: mov rbx, gword ptr [rbp+10H] add rbx, 40 mov r14, rbx mov rcx, gword ptr [rbp+10H] mov r15, qword ptr [rcx] mov rcx, r15 mov rdx, qword ptr [rcx+48] mov r12, qword ptr [rdx] mov rdx, qword ptr [r12+16] test rdx, rdx je SHORT G_M7973_IG18 ;; bbWeight=0.50 PerfScore 6.00 G_M7973_IG17: jmp SHORT G_M7973_IG19 ;; bbWeight=0.25 PerfScore 0.50 G_M7973_IG18: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M7973_IG19: mov rcx, r14 mov r8, rdi call CerHashtable`2:get_Item(__Canon):__Canon:this test rax, rax jne SHORT G_M7973_IG23 mov rdx, gword ptr [rsi] mov rcx, gword ptr [rbp+10H] call MemberInfoCache`1:MergeWithGlobalList(ref):this mov rsi, gword ptr [rsi] mov rcx, r15 mov rdx, qword ptr [r12+16] test rdx, rdx je SHORT G_M7973_IG21 ;; bbWeight=0.50 PerfScore 6.13 G_M7973_IG20: jmp SHORT G_M7973_IG22 ;; bbWeight=0.25 PerfScore 0.50 G_M7973_IG21: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M7973_IG22: mov rcx, rbx mov r8, rdi mov r9, rsi call CerHashtable`2:set_Item(__Canon,__Canon):this jmp G_M7973_IG33 ;; bbWeight=0.50 PerfScore 1.88 G_M7973_IG23: mov rcx, rsi mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M7973_IG33 ;; bbWeight=0.50 PerfScore 1.75 G_M7973_IG24: mov rdx, gword ptr [rbp+10H] cmp byte ptr [rdx+24], 0 jne G_M7973_IG31 mov rdx, gword ptr [rsi] mov rcx, gword ptr [rbp+10H] call MemberInfoCache`1:MergeWithGlobalList(ref):this mov rcx, gword ptr [rbp+10H] mov rdi, gword ptr [rcx+8] mov ebx, dword ptr [rdi+8] test ebx, ebx jle SHORT G_M7973_IG27 ;; bbWeight=0.50 PerfScore 7.13 G_M7973_IG25: mov rax, rdi lea edx, [rbx-1] cmp edx, dword ptr [rax+8] jae G_M7973_IG07 movsxd rcx, edx mov rax, gword ptr [rax+8*rcx+16] test rax, rax jne SHORT G_M7973_IG27 ;; bbWeight=4 PerfScore 29.00 G_M7973_IG26: mov ebx, edx test ebx, ebx jg SHORT G_M7973_IG25 ;; bbWeight=4 PerfScore 6.00 G_M7973_IG27: mov rdi, gword ptr [rbp+10H] add rdi, 8 mov rcx, gword ptr [rbp+10H] mov r15, qword ptr [rcx] mov rcx, r15 mov rdx, qword ptr [rcx+48] mov r12, qword ptr [rdx] mov rdx, qword ptr [r12+32] test rdx, rdx je SHORT G_M7973_IG29 ;; bbWeight=0.50 PerfScore 5.88 G_M7973_IG28: jmp SHORT G_M7973_IG30 ;; bbWeight=0.25 PerfScore 0.50 G_M7973_IG29: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M7973_IG30: mov rcx, rdx mov rdx, rdi mov r8d, ebx call Array:Resize(byref,int) mov rdx, gword ptr [rbp+10H] add rdx, 24 mov byte ptr [rdx], 1 ;; bbWeight=0.50 PerfScore 2.00 G_M7973_IG31: mov rdx, gword ptr [rbp+10H] mov rdx, gword ptr [rdx+8] mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF jmp SHORT G_M7973_IG33 ;; bbWeight=0.50 PerfScore 3.13 G_M7973_IG32: mov rdx, gword ptr [rsi] mov rcx, gword ptr [rbp+10H] call MemberInfoCache`1:MergeWithGlobalList(ref):this nop ;; bbWeight=0.50 PerfScore 2.13 G_M7973_IG33: cmp byte ptr [rbp-40H], 0 je SHORT G_M7973_IG35 ;; bbWeight=1 PerfScore 2.00 G_M7973_IG34: mov rcx, gword ptr [rbp+10H] call Monitor:Exit(Object) ;; bbWeight=0.50 PerfScore 1.00 G_M7973_IG35: nop ;; bbWeight=1 PerfScore 0.25 G_M7973_IG36: lea rsp, [rbp-30H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.00 G_M7973_IG37: push rbp push r15 push r14 push r12 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+70H] ;; bbWeight=0 PerfScore 0.00 G_M7973_IG38: cmp byte ptr [rbp-40H], 0 je SHORT G_M7973_IG39 mov rcx, gword ptr [rbp+10H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M7973_IG39: nop ;; bbWeight=0 PerfScore 0.00 G_M7973_IG40: add rsp, 48 pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M7973_IG24 - G_M7973_IG02 dd G_M7973_IG08 - G_M7973_IG02 dd G_M7973_IG16 - G_M7973_IG02 ; Total bytes of code 697, prolog size 40, PerfScore 193.58, (MethodHash=7b2ae0da) for method MemberInfoCache`1:Insert(byref,String,int):this ; ============================================================ ; Assembly listing for method MemberInfoCache`1:MergeWithGlobalList(ref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T11] ( 7, 8 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T10] ( 6, 9 ) ref -> rsi class-hnd ; V02 loc0 [V02,T02] ( 15, 71 ) ref -> rbx class-hnd ; V03 loc1 [V03,T04] ( 6, 44.50) int -> rbp ; V04 loc2 [V04,T07] ( 7, 12.50) int -> r14 ; V05 loc3 [V05,T06] ( 6, 18.50) int -> r15 ; V06 loc4 [V06,T03] ( 6, 70 ) ref -> r13 class-hnd ;* V07 loc5 [V07,T18] ( 0, 0 ) bool -> zero-ref ; V08 loc6 [V08,T00] ( 11,150 ) int -> [rsp+0x3C] ; V09 loc7 [V09,T01] ( 7, 98 ) ref -> [rsp+0x20] class-hnd ; V10 loc8 [V10,T16] ( 3, 6 ) int -> [rsp+0x38] ; V11 loc9 [V11 ] ( 3, 6 ) ref -> [rsp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V13 tmp1 [V13,T12] ( 3, 10 ) long -> rcx "impRuntimeLookup slot" ; V14 tmp2 [V14,T14] ( 3, 8 ) long -> [rsp+0x28] "spilling Runtime Lookup tree" ;* V15 tmp3 [V15,T05] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V16 tmp4 [V16,T13] ( 4, 8 ) int -> rax "Inline return value spill temp" ; V17 tmp5 [V17,T08] ( 3, 12 ) int -> rax "Inlining Arg" ; V18 tmp6 [V18,T17] ( 3, 6 ) int -> rcx "Inline return value spill temp" ; V19 tmp7 [V19,T09] ( 3, 12 ) int -> rcx "Inlining Arg" ; V20 cse0 [V20,T19] ( 3, 5 ) long -> rdx "CSE - moderate" ; V21 cse1 [V21,T15] ( 4, 7 ) int -> r12 "CSE - moderate" ; ; Lcl frame size = 72 G_M16572_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 72 xor rax, rax mov qword ptr [rsp+30H], rax mov qword ptr [rsp+40H], rcx mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 11.00 G_M16572_IG02: mov rbx, gword ptr [rdi+8] test rbx, rbx jne SHORT G_M16572_IG05 ;; bbWeight=1 PerfScore 3.25 G_M16572_IG03: lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 1.00 G_M16572_IG04: add rsp, 72 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M16572_IG05: mov ebp, dword ptr [rbx+8] xor r14d, r14d xor r15d, r15d mov r12d, dword ptr [rsi+8] test r12d, r12d jle G_M16572_IG29 ;; bbWeight=0.50 PerfScore 2.88 G_M16572_IG06: movsxd rcx, r15d mov r13, gword ptr [rsi+8*rcx+16] xor eax, eax test ebp, ebp jle SHORT G_M16572_IG11 test rbx, rbx je SHORT G_M16572_IG12 ;; bbWeight=4 PerfScore 20.00 G_M16572_IG07: cmp dword ptr [rbx+8], ebp setge cl movzx rcx, cl test ebp, ebp setge dl movzx rdx, dl test ecx, edx je SHORT G_M16572_IG12 ;; bbWeight=4 PerfScore 24.00 G_M16572_IG08: mov dword ptr [rsp+3CH], eax movsxd rcx, eax mov r8, gword ptr [rbx+8*rcx+16] test r8, r8 je G_M16572_IG16 mov rcx, r13 mov gword ptr [rsp+20H], r8 mov rdx, r8 mov r9, qword ptr [r13] mov r9, qword ptr [r9+64] call qword ptr [r9+32]MemberInfo:CacheEquals(Object):bool:this test eax, eax jne SHORT G_M16572_IG15 ;; bbWeight=16 PerfScore 228.00 G_M16572_IG09: mov eax, dword ptr [rsp+3CH] inc eax cmp eax, ebp jl SHORT G_M16572_IG08 ;; bbWeight=16 PerfScore 40.00 G_M16572_IG10: mov dword ptr [rsp+3CH], eax jmp SHORT G_M16572_IG16 ;; bbWeight=4 PerfScore 12.00 G_M16572_IG11: mov dword ptr [rsp+3CH], eax jmp SHORT G_M16572_IG16 ;; bbWeight=2 PerfScore 6.00 G_M16572_IG12: cmp eax, dword ptr [rbx+8] jae G_M16572_IG31 mov dword ptr [rsp+3CH], eax movsxd rcx, eax mov r8, gword ptr [rbx+8*rcx+16] test r8, r8 je SHORT G_M16572_IG16 mov rcx, r13 mov gword ptr [rsp+20H], r8 mov rdx, r8 mov r9, qword ptr [r13] mov r9, qword ptr [r9+64] call qword ptr [r9+32]MemberInfo:CacheEquals(Object):bool:this test eax, eax jne SHORT G_M16572_IG15 ;; bbWeight=16 PerfScore 276.00 G_M16572_IG13: mov eax, dword ptr [rsp+3CH] inc eax cmp eax, ebp jl SHORT G_M16572_IG12 ;; bbWeight=16 PerfScore 40.00 G_M16572_IG14: mov dword ptr [rsp+3CH], eax jmp SHORT G_M16572_IG16 ;; bbWeight=2 PerfScore 6.00 G_M16572_IG15: mov rcx, rsi mov edx, r15d mov r8, gword ptr [rsp+20H] call CORINFO_HELP_ARRADDR_ST jmp G_M16572_IG28 ;; bbWeight=2 PerfScore 9.00 G_M16572_IG16: test r14d, r14d jne SHORT G_M16572_IG17 mov eax, dword ptr [rsp+3CH] mov r14d, eax ;; bbWeight=2 PerfScore 5.00 G_M16572_IG17: cmp dword ptr [rbx+8], r14d jg G_M16572_IG27 cmp byte ptr [rdi+24], 0 je SHORT G_M16572_IG18 mov eax, dword ptr [rbx+8] inc eax jmp SHORT G_M16572_IG23 ;; bbWeight=2 PerfScore 20.50 G_M16572_IG18: mov eax, dword ptr [rbx+8] add eax, eax cmp eax, 4 jle SHORT G_M16572_IG19 jmp SHORT G_M16572_IG20 ;; bbWeight=2 PerfScore 11.00 G_M16572_IG19: mov eax, 4 ;; bbWeight=2 PerfScore 0.50 G_M16572_IG20: mov ecx, r12d cmp eax, ecx jge SHORT G_M16572_IG21 jmp SHORT G_M16572_IG22 ;; bbWeight=2 PerfScore 7.00 G_M16572_IG21: mov ecx, eax ;; bbWeight=2 PerfScore 0.50 G_M16572_IG22: mov dword ptr [rsp+38H], ecx mov eax, dword ptr [rsp+38H] ;; bbWeight=2 PerfScore 4.00 G_M16572_IG23: mov gword ptr [rsp+30H], rbx mov rcx, qword ptr [rdi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+32] test rdx, rdx je SHORT G_M16572_IG25 ;; bbWeight=2 PerfScore 20.50 G_M16572_IG24: mov qword ptr [rsp+28H], rdx jmp SHORT G_M16572_IG26 ;; bbWeight=1 PerfScore 3.00 G_M16572_IG25: mov dword ptr [rsp+38H], eax mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+28H], rax mov eax, dword ptr [rsp+38H] ;; bbWeight=1 PerfScore 4.25 G_M16572_IG26: lea rdx, [rsp+30H] mov rcx, qword ptr [rsp+28H] mov r8d, eax call Array:Resize(byref,int) mov rbx, gword ptr [rsp+30H] ;; bbWeight=2 PerfScore 7.50 G_M16572_IG27: mov rcx, rbx mov edx, r14d mov r8, r13 call CORINFO_HELP_ARRADDR_ST inc r14d ;; bbWeight=2 PerfScore 4.00 G_M16572_IG28: inc r15d cmp r12d, r15d jg G_M16572_IG06 ;; bbWeight=4 PerfScore 6.00 G_M16572_IG29: lea rcx, bword ptr [rdi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 1.00 G_M16572_IG30: add rsp, 72 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M16572_IG31: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 513, prolog size 34, PerfScore 830.43, (MethodHash=7637bf43) for method MemberInfoCache`1:MergeWithGlobalList(ref):this ; ============================================================ ; Assembly listing for method CerHashtable`2:set_Item(__Canon,__Canon):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5 ) byref -> rsi this ; V01 TypeCtx [V01,T01] ( 5, 4 ) long -> rdx ; V02 arg1 [V02,T02] ( 3, 3 ) ref -> rdi class-hnd ; V03 arg2 [V03,T03] ( 3, 3 ) ref -> rbx class-hnd ; V04 loc0 [V04,T04] ( 4, 3 ) ref -> rcx class-hnd ; V05 loc1 [V05,T05] ( 3, 1.50) int -> r8 ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 48 G_M48883_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rdx mov rsi, rcx mov rdi, r8 mov rbx, r9 ;; bbWeight=1 PerfScore 5.00 G_M48883_IG02: mov rcx, gword ptr [rsi] test rcx, rcx je SHORT G_M48883_IG04 ;; bbWeight=1 PerfScore 3.25 G_M48883_IG03: mov r8d, dword ptr [rcx+24] lea r8d, [2*r8+2] mov rcx, gword ptr [rcx+8] cmp dword ptr [rcx+8], r8d jg SHORT G_M48883_IG05 mov rcx, rsi call CerHashtable`2:Rehash(int):this jmp SHORT G_M48883_IG05 ;; bbWeight=0.50 PerfScore 5.38 G_M48883_IG04: mov rcx, rsi mov r8d, 7 call CerHashtable`2:Rehash(int):this ;; bbWeight=0.50 PerfScore 0.75 G_M48883_IG05: mov rcx, gword ptr [rsi] mov rdx, rdi mov r8, rbx cmp dword ptr [rcx], ecx ;; bbWeight=1 PerfScore 4.50 G_M48883_IG06: add rsp, 48 pop rbx pop rsi pop rdi jmp Table:Insert(__Canon,__Canon):this ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 98, prolog size 21, PerfScore 32.43, (MethodHash=33c4410c) for method CerHashtable`2:set_Item(__Canon,__Canon):this ; ============================================================ ; Assembly listing for method CerHashtable`2:Rehash(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T06] ( 4, 4 ) byref -> rsi this ; V01 TypeCtx [V01,T05] ( 5, 4.25) long -> rdx ; V02 arg1 [V02,T09] ( 3, 3 ) int -> rdi ; V03 loc0 [V03,T07] ( 4, 6 ) ref -> rbx class-hnd exact ; V04 loc1 [V04,T10] ( 4, 3 ) ref -> r8 class-hnd ; V05 loc2 [V05,T03] ( 4, 9 ) ref -> rdi class-hnd ; V06 loc3 [V06,T04] ( 6, 7.50) ref -> rbp class-hnd ; V07 loc4 [V07,T00] ( 12, 38.50) int -> r14 ; V08 loc5 [V08,T01] ( 6, 20 ) ref -> rdx class-hnd ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T08] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V11 tmp2 [V11,T11] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ;* V12 tmp3 [V12 ] ( 0, 0 ) byref -> zero-ref "bubbling QMark1" ;* V13 tmp4 [V13 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V14 cse0 [V14,T13] ( 3, 2.25) long -> rcx "CSE - aggressive" ; V15 cse1 [V15,T12] ( 2, 2 ) long -> rcx "CSE - aggressive" ; V16 cse2 [V16,T02] ( 5, 9.50) int -> r15 "CSE - aggressive" ; ; Lcl frame size = 40 G_M3329_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rdx mov rsi, rcx mov edi, r8d ;; bbWeight=1 PerfScore 7.75 G_M3329_IG02: mov rcx, qword ptr [rdx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+40] test rcx, rcx je SHORT G_M3329_IG04 ;; bbWeight=1 PerfScore 7.25 G_M3329_IG03: jmp SHORT G_M3329_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M3329_IG04: mov rcx, rdx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M3329_IG05: call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, rbx mov edx, edi call Table:.ctor(int):this mov r8, gword ptr [rsi] test r8, r8 je G_M3329_IG15 ;; bbWeight=1 PerfScore 6.00 G_M3329_IG06: mov rdi, gword ptr [r8+8] mov rbp, gword ptr [r8+16] xor r14d, r14d mov r15d, dword ptr [rdi+8] test r15d, r15d jle SHORT G_M3329_IG15 test rbp, rbp setne r8b movzx r8, r8b test r8b, 1 je SHORT G_M3329_IG12 ;; bbWeight=0.50 PerfScore 5.13 G_M3329_IG07: cmp dword ptr [rbp+8], r15d jl SHORT G_M3329_IG12 ;; bbWeight=0.50 PerfScore 1.50 G_M3329_IG08: movsxd r8, r14d mov rdx, gword ptr [rdi+8*r8+16] test rdx, rdx je SHORT G_M3329_IG10 ;; bbWeight=4 PerfScore 14.00 G_M3329_IG09: movsxd r8, r14d mov r8, gword ptr [rbp+8*r8+16] mov rcx, rbx call Table:Insert(__Canon,__Canon):this ;; bbWeight=2 PerfScore 7.00 G_M3329_IG10: inc r14d cmp r15d, r14d jg SHORT G_M3329_IG08 ;; bbWeight=4 PerfScore 6.00 G_M3329_IG11: jmp SHORT G_M3329_IG15 ;; bbWeight=0.50 PerfScore 1.00 G_M3329_IG12: movsxd r8, r14d mov rdx, gword ptr [rdi+8*r8+16] test rdx, rdx je SHORT G_M3329_IG14 ;; bbWeight=4 PerfScore 14.00 G_M3329_IG13: cmp r14d, dword ptr [rbp+8] jae SHORT G_M3329_IG17 movsxd r8, r14d mov r8, gword ptr [rbp+8*r8+16] mov rcx, rbx call Table:Insert(__Canon,__Canon):this ;; bbWeight=2 PerfScore 13.00 G_M3329_IG14: inc r14d cmp r15d, r14d jg SHORT G_M3329_IG12 ;; bbWeight=4 PerfScore 6.00 G_M3329_IG15: mov rcx, rsi mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M3329_IG16: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 G_M3329_IG17: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 248, prolog size 23, PerfScore 120.36, (MethodHash=f9a1f2fe) for method CerHashtable`2:Rehash(int):this ; ============================================================ ; Assembly listing for method Table:.ctor(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 5, 5 ) int -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V04 tmp2 [V04,T03] ( 3, 3 ) long -> [rsp+0x28] "spilling Runtime Lookup tree" ; V05 tmp3 [V05,T08] ( 2, 2.50) long -> rcx "impRuntimeLookup slot" ; V06 tmp4 [V06,T04] ( 3, 3 ) long -> [rsp+0x20] "spilling Runtime Lookup tree" ; V07 cse0 [V07,T09] ( 3, 2.25) long -> rdx "CSE - aggressive" ; V08 cse1 [V08,T10] ( 3, 2.25) long -> rdx "CSE - aggressive" ; V09 cse2 [V09,T05] ( 3, 3 ) long -> rbp "CSE - aggressive" ; V10 cse3 [V10,T06] ( 3, 3 ) long -> rbx "CSE - aggressive" ; V11 cse4 [V11,T07] ( 3, 3 ) long -> rdi "CSE - aggressive" ; ; Lcl frame size = 56 G_M1844_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 5.75 G_M1844_IG02: mov ecx, edi call HashHelpers:GetPrime(int):int mov edi, eax mov rbx, qword ptr [rsi] mov rcx, rbx mov rdx, qword ptr [rcx+48] mov rbp, qword ptr [rdx] mov rdx, qword ptr [rbp+24] test rdx, rdx je SHORT G_M1844_IG04 ;; bbWeight=1 PerfScore 11.00 G_M1844_IG03: mov qword ptr [rsp+28H], rdx jmp SHORT G_M1844_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M1844_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+28H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M1844_IG05: movsxd rdi, edi mov rdx, rdi mov rcx, qword ptr [rsp+28H] call CORINFO_HELP_NEWARR_1_OBJ lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rbx mov rdx, qword ptr [rbp+32] test rdx, rdx je SHORT G_M1844_IG07 ;; bbWeight=1 PerfScore 7.75 G_M1844_IG06: mov qword ptr [rsp+20H], rdx jmp SHORT G_M1844_IG08 ;; bbWeight=0.25 PerfScore 0.75 G_M1844_IG07: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+20H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M1844_IG08: mov rdx, rdi mov rcx, qword ptr [rsp+20H] call CORINFO_HELP_NEWARR_1_OBJ lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 4.25 G_M1844_IG09: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 178, prolog size 13, PerfScore 52.43, (MethodHash=32e0f8cb) for method Table:.ctor(int):this ; ============================================================ ; Assembly listing for method Table:Insert(__Canon,__Canon):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T05] ( 4, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T06] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T08] ( 5, 4 ) int -> rax ; V04 loc1 [V04,T03] ( 4, 11 ) ref -> r14 class-hnd ; V05 loc2 [V05,T00] ( 10, 32 ) int -> r15 ; V06 loc3 [V06,T01] ( 2, 16 ) ref -> rdx class-hnd ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T07] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V09 tmp2 [V09,T12] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ;* V10 tmp3 [V10,T15] ( 0, 0 ) long -> zero-ref "impRuntimeLookup slot" ; V11 tmp4 [V11,T10] ( 2, 4 ) byref -> rax "impAppendStmt" ; V12 tmp5 [V12,T11] ( 2, 4 ) long -> rbp "impRuntimeLookup indirectOffset" ;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V14 cse0 [V14,T14] ( 3, 2.25) long -> rdx "CSE - aggressive" ; V15 cse1 [V15,T09] ( 4, 4 ) long -> rbp "CSE - aggressive" ; V16 cse2 [V16,T02] ( 5, 14.50) int -> rcx "CSE - aggressive" ; V17 cse3 [V17,T13] ( 2, 2 ) long -> rcx "CSE - aggressive" ; ; Lcl frame size = 40 G_M62808_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 8.00 G_M62808_IG02: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rbp, qword ptr [rdx] mov rdx, qword ptr [rbp+40] test rdx, rdx je SHORT G_M62808_IG04 ;; bbWeight=1 PerfScore 9.25 G_M62808_IG03: jmp SHORT G_M62808_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M62808_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M62808_IG05: mov rcx, rdx mov rdx, rdi call CerHashtable`2:GetHashCodeHelper(__Canon):int test eax, eax jge SHORT G_M62808_IG07 ;; bbWeight=1 PerfScore 2.75 G_M62808_IG06: not eax ;; bbWeight=0.50 PerfScore 0.13 G_M62808_IG07: mov r14, gword ptr [rsi+8] mov ecx, dword ptr [r14+8] cdq idiv edx:eax, ecx mov r15d, edx ;; bbWeight=1 PerfScore 31.25 G_M62808_IG08: cmp r15d, ecx jae SHORT G_M62808_IG13 movsxd rdx, r15d mov rdx, gword ptr [r14+8*rdx+16] test rdx, rdx je SHORT G_M62808_IG11 ;; bbWeight=8 PerfScore 38.00 G_M62808_IG09: inc r15d cmp ecx, r15d jg SHORT G_M62808_IG08 ;; bbWeight=4 PerfScore 6.00 G_M62808_IG10: sub r15d, ecx jmp SHORT G_M62808_IG08 ;; bbWeight=0.50 PerfScore 1.13 G_M62808_IG11: inc dword ptr [rsi+24] mov rcx, gword ptr [rsi+16] mov edx, r15d mov r8, rbx call CORINFO_HELP_ARRADDR_ST mov r8, qword ptr [rbp] mov rcx, r14 mov edx, r15d call CORINFO_HELP_LDELEMA_REF mov edx, dword ptr [rbp+16] mov rcx, rax mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 15.75 G_M62808_IG12: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 G_M62808_IG13: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 194, prolog size 26, PerfScore 136.78, (MethodHash=e6c00aa7) for method Table:Insert(__Canon,__Canon):this ; ============================================================ ; Assembly listing for method CerHashtable`2:GetHashCodeHelper(__Canon):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref ; V01 arg0 [V01,T01] ( 5, 4 ) ref -> rdx class-hnd ; V02 loc0 [V02,T02] ( 3, 2.50) ref -> rcx class-hnd ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 5, 6.74) ref -> rcx class-hnd "spilling QMark2" ; ; Lcl frame size = 0 G_M61760_IG01: ;; bbWeight=1 PerfScore 0.00 G_M61760_IG02: mov rcx, rdx test rcx, rcx je SHORT G_M61760_IG05 ;; bbWeight=1 PerfScore 1.50 G_M61760_IG03: mov rax, 0xD1FFAB1E cmp qword ptr [rcx], rax je SHORT G_M61760_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M61760_IG04: xor rcx, rcx ;; bbWeight=0.12 PerfScore 0.03 G_M61760_IG05: test rcx, rcx jne SHORT G_M61760_IG08 ;; bbWeight=1 PerfScore 1.25 G_M61760_IG06: mov rcx, rdx mov rax, qword ptr [rdx] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+24] ;; bbWeight=0.50 PerfScore 3.13 G_M61760_IG07: rex.jmp rax ;; bbWeight=0.50 PerfScore 1.00 G_M61760_IG08: jmp String:GetNonRandomizedHashCode():int:this ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 52, prolog size 0, PerfScore 13.92, (MethodHash=fe070ebf) for method CerHashtable`2:GetHashCodeHelper(__Canon):int ; ============================================================ ; Assembly listing for method RuntimeType:FilterApplyMethodBase(MethodBase,int,int,int,ref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T06] ( 10, 6 ) ref -> rbx class-hnd ; V01 arg1 [V01,T09] ( 4, 4 ) int -> rdx ; V02 arg2 [V02,T04] ( 9, 7 ) int -> rsi ; V03 arg3 [V03,T10] ( 5, 3.50) int -> rbp ; V04 arg4 [V04,T05] ( 4, 9 ) ref -> rdi class-hnd ; V05 loc0 [V05,T08] ( 6, 6 ) ref -> rbp class-hnd ;* V06 loc1 [V06,T14] ( 0, 0 ) bool -> zero-ref ; V07 loc2 [V07,T17] ( 2, 1 ) bool -> rcx ; V08 loc3 [V08,T18] ( 2, 1 ) bool -> rax ; V09 loc4 [V09,T13] ( 5, 2.50) ref -> rsi class-hnd ; V10 loc5 [V10,T00] ( 12, 40.50) int -> rsi ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V12 tmp1 [V12,T11] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ; V13 tmp2 [V13,T12] ( 3, 3 ) ref -> rax class-hnd "Inlining Arg" ; V14 tmp3 [V14,T16] ( 2, 2 ) ref -> rdx "argument with side effect" ; V15 cse0 [V15,T02] ( 3, 10 ) ref -> rcx "CSE - aggressive" ; V16 cse1 [V16,T03] ( 3, 10 ) ref -> rcx "CSE - aggressive" ; V17 cse2 [V17,T15] ( 4, 2 ) int -> rcx "CSE - aggressive" ; V18 cse3 [V18,T01] ( 11, 12.50) int -> r15 "CSE - aggressive" ; V19 cse4 [V19,T07] ( 8, 7.50) int -> r14 "CSE - aggressive" ; ; Lcl frame size = 40 G_M23399_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov rbx, rcx mov esi, r8d mov ebp, r9d mov rdi, gword ptr [rsp+80H] ;; bbWeight=1 PerfScore 8.00 G_M23399_IG02: xor esi, 2 mov ecx, esi and ecx, edx cmp ecx, edx jne G_M23399_IG23 ;; bbWeight=1 PerfScore 2.00 G_M23399_IG03: test bpl, 3 jne SHORT G_M23399_IG05 test bpl, 2 je SHORT G_M23399_IG04 mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+88] call qword ptr [rax+8]MethodBase:get_CallingConvention():int:this test al, 2 je G_M23399_IG23 ;; bbWeight=0.50 PerfScore 5.50 G_M23399_IG04: test bpl, 1 je SHORT G_M23399_IG05 mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+88] call qword ptr [rax+8]MethodBase:get_CallingConvention():int:this test al, 1 je G_M23399_IG23 ;; bbWeight=0.50 PerfScore 4.88 G_M23399_IG05: test rdi, rdi je G_M23399_IG21 mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+80] call gword ptr [rax+16]MethodBase:GetParametersNoCopy():ref:this mov rbp, rax mov r14d, dword ptr [rdi+8] mov r15d, dword ptr [rbp+8] cmp r14d, r15d je G_M23399_IG13 test esi, 0x3300 je G_M23399_IG23 ;; bbWeight=0.50 PerfScore 7.63 G_M23399_IG06: cmp r14d, r15d setg cl movzx rcx, cl test ecx, ecx je SHORT G_M23399_IG07 mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+88] call qword ptr [rax+8]MethodBase:get_CallingConvention():int:this test al, 2 jne G_M23399_IG21 jmp SHORT G_M23399_IG09 ;; bbWeight=0.50 PerfScore 6.63 G_M23399_IG07: test esi, 0xD1FFAB1E je SHORT G_M23399_IG09 ;; bbWeight=0.50 PerfScore 0.63 G_M23399_IG08: cmp r14d, r15d jae G_M23399_IG25 movsxd rcx, r14d mov rcx, gword ptr [rbp+8*rcx+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+32]ParameterInfo:get_Attributes():int:this test al, 16 jne G_M23399_IG21 ;; bbWeight=0.50 PerfScore 5.88 G_M23399_IG09: test r15d, r15d je G_M23399_IG23 ;; bbWeight=0.50 PerfScore 0.63 G_M23399_IG10: lea ecx, [r15-1] cmp r14d, ecx setl al movzx rax, al test eax, eax jne G_M23399_IG23 ;; bbWeight=0.50 PerfScore 1.63 G_M23399_IG11: cmp ecx, r15d jae G_M23399_IG25 movsxd rcx, ecx mov rsi, gword ptr [rbp+8*rcx+16] mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+56]ParameterInfo:get_ParameterType():Type:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+88] call qword ptr [rax+24]Type:IsArrayImpl():bool:this test eax, eax je G_M23399_IG23 ;; bbWeight=0.50 PerfScore 9.63 G_M23399_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, rsi xor r8d, r8d mov rax, qword ptr [rsi] mov rax, qword ptr [rax+72] call qword ptr [rax+32]ParameterInfo:IsDefined(Type,bool):bool:this test eax, eax jne SHORT G_M23399_IG21 jmp G_M23399_IG23 ;; bbWeight=0.50 PerfScore 6.13 G_M23399_IG13: test esi, 0x10000 je SHORT G_M23399_IG21 test esi, 256 jne SHORT G_M23399_IG21 xor esi, esi test r15d, r15d jle SHORT G_M23399_IG21 cmp r14d, r15d jl SHORT G_M23399_IG18 ;; bbWeight=0.50 PerfScore 2.63 G_M23399_IG14: movsxd rcx, esi mov rcx, gword ptr [rdi+8*rcx+16] test rcx, rcx je SHORT G_M23399_IG16 ;; bbWeight=4 PerfScore 14.00 G_M23399_IG15: movsxd rdx, esi mov rdx, gword ptr [rbp+8*rdx+16] call SignatureTypeExtensions:MatchesParameterTypeExactly(Type,ParameterInfo):bool test eax, eax je SHORT G_M23399_IG23 ;; bbWeight=2 PerfScore 9.00 G_M23399_IG16: inc esi cmp r15d, esi jg SHORT G_M23399_IG14 ;; bbWeight=4 PerfScore 6.00 G_M23399_IG17: jmp SHORT G_M23399_IG21 ;; bbWeight=0.50 PerfScore 1.00 G_M23399_IG18: cmp esi, r14d jae SHORT G_M23399_IG25 movsxd rcx, esi mov rcx, gword ptr [rdi+8*rcx+16] test rcx, rcx je SHORT G_M23399_IG20 ;; bbWeight=4 PerfScore 19.00 G_M23399_IG19: movsxd rdx, esi mov rdx, gword ptr [rbp+8*rdx+16] call SignatureTypeExtensions:MatchesParameterTypeExactly(Type,ParameterInfo):bool test eax, eax je SHORT G_M23399_IG23 ;; bbWeight=2 PerfScore 9.00 G_M23399_IG20: inc esi cmp r15d, esi jg SHORT G_M23399_IG18 ;; bbWeight=4 PerfScore 6.00 G_M23399_IG21: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M23399_IG22: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M23399_IG23: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M23399_IG24: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M23399_IG25: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 509, prolog size 29, PerfScore 181.15, (MethodHash=c9b2a498) for method RuntimeType:FilterApplyMethodBase(MethodBase,int,int,int,ref):bool ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:Invoke(Object,int,Binder,ref,CultureInfo):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 5, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T04] ( 4, 4 ) int -> rbx ; V03 arg3 [V03,T06] ( 3, 3 ) ref -> r9 class-hnd ; V04 arg4 [V04,T07] ( 2, 5 ) ref -> rbp class-hnd ; V05 arg5 [V05,T12] ( 1, 1 ) ref -> [rsp+0x98] class-hnd ; V06 loc0 [V06,T01] ( 5, 7 ) ref -> r14 class-hnd ; V07 loc1 [V07,T08] ( 3, 2 ) bool -> rbx ; V08 loc2 [V08,T11] ( 2, 1 ) ref -> rsi class-hnd ; V09 loc3 [V09,T00] ( 6, 20.50) int -> rdi ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T09] ( 2, 2 ) ref -> r8 "argument with side effect" ; V12 tmp2 [V12,T10] ( 2, 2 ) ref -> r8 "argument with side effect" ; V13 cse0 [V13,T05] ( 4, 5.50) int -> r15 "CSE - aggressive" ; ; Lcl frame size = 56 G_M55436_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 mov rsi, rcx mov rdi, rdx mov ebx, r8d mov rbp, gword ptr [rsp+90H] ;; bbWeight=1 PerfScore 8.00 G_M55436_IG02: mov gword ptr [rsp+20H], rbp mov rcx, gword ptr [rsp+98H] mov gword ptr [rsp+28H], rcx mov rcx, rsi mov rdx, rdi mov r8d, ebx call RuntimeMethodInfo:InvokeArgumentsCheck(Object,int,Binder,ref,CultureInfo):ref:this mov r14, rax test ebx, 0xD1FFAB1E sete bl movzx rbx, bl test r14, r14 je SHORT G_M55436_IG04 ;; bbWeight=1 PerfScore 7.75 G_M55436_IG03: mov r15d, dword ptr [r14+8] test r15d, r15d jne SHORT G_M55436_IG07 ;; bbWeight=0.50 PerfScore 1.63 G_M55436_IG04: mov rcx, rsi call RuntimeMethodInfo:get_Signature():Signature:this mov r8, rax ;; bbWeight=0.50 PerfScore 0.75 G_M55436_IG05: mov dword ptr [rsp+90H], ebx mov rcx, rdi xor rdx, rdx xor r9d, r9d ;; bbWeight=0.50 PerfScore 0.88 G_M55436_IG06: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 jmp RuntimeMethodHandle:InvokeMethod(Object,ref,Signature,bool,bool):Object ;; bbWeight=0.50 PerfScore 2.63 G_M55436_IG07: mov rcx, rsi call RuntimeMethodInfo:get_Signature():Signature:this mov r8, rax mov dword ptr [rsp+20H], ebx mov rdx, r14 mov rcx, rdi xor r9d, r9d call RuntimeMethodHandle:InvokeMethod(Object,ref,Signature,bool,bool):Object mov rsi, rax xor edi, edi test r15d, r15d jle SHORT G_M55436_IG09 ;; bbWeight=0.50 PerfScore 3.00 G_M55436_IG08: movsxd r8, edi mov r8, gword ptr [r14+8*r8+16] mov rcx, rbp mov edx, edi call CORINFO_HELP_ARRADDR_ST inc edi cmp r15d, edi jg SHORT G_M55436_IG08 ;; bbWeight=4 PerfScore 21.00 G_M55436_IG09: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M55436_IG10: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 ; Total bytes of code 213, prolog size 29, PerfScore 69.18, (MethodHash=77342773) for method RuntimeMethodInfo:Invoke(Object,int,Binder,ref,CultureInfo):Object:this ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:InvokeArgumentsCheck(Object,int,Binder,ref,CultureInfo):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 2.50) int -> rbp ; V03 arg3 [V03,T02] ( 3, 2.50) ref -> rbx class-hnd ; V04 arg4 [V04,T06] ( 3, 2 ) ref -> r14 class-hnd ; V05 arg5 [V05,T11] ( 1, 0.50) ref -> [rsp+0x98] class-hnd ; V06 loc0 [V06,T05] ( 3, 2.50) ref -> r15 class-hnd ; V07 loc1 [V07,T09] ( 2, 2 ) int -> r12 ; V08 loc2 [V08,T04] ( 3, 3 ) int -> r13 ; V09 loc3 [V09,T10] ( 2, 2 ) int -> rax ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T07] ( 3, 2 ) int -> r13 ; V12 tmp2 [V12,T12] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V13 tmp3 [V13,T13] ( 2, 0 ) ref -> rcx "argument with side effect" ; V14 tmp4 [V14,T14] ( 2, 0 ) ref -> rdx "argument with side effect" ; V15 rat0 [V15,T08] ( 2, 2 ) ref -> rdx "Fast tail call lowering is creating a new local variable" ; ; Lcl frame size = 40 G_M37966_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov ebp, r8d mov rbx, r9 mov r14, gword ptr [rsp+90H] ;; bbWeight=1 PerfScore 10.25 G_M37966_IG02: mov rcx, rsi call RuntimeMethodInfo:get_Signature():Signature:this mov r15, rax mov rcx, gword ptr [r15+8] mov r12d, dword ptr [rcx+8] test r14, r14 jne SHORT G_M37966_IG04 ;; bbWeight=1 PerfScore 6.75 G_M37966_IG03: xor r13d, r13d jmp SHORT G_M37966_IG05 ;; bbWeight=0.50 PerfScore 1.13 G_M37966_IG04: mov r13d, dword ptr [r14+8] ;; bbWeight=0.50 PerfScore 1.00 G_M37966_IG05: mov rcx, rsi call RuntimeMethodInfo:get_InvocationFlags():int:this test eax, 258 je SHORT G_M37966_IG07 ;; bbWeight=1 PerfScore 2.50 G_M37966_IG06: mov rcx, rsi call RuntimeMethodInfo:ThrowNoInvokeException():this ;; bbWeight=0.50 PerfScore 0.63 G_M37966_IG07: mov rcx, rsi mov rdx, rdi call RuntimeMethodInfo:CheckConsistency(Object):this cmp r12d, r13d jne SHORT G_M37966_IG13 ;; bbWeight=1 PerfScore 2.75 G_M37966_IG08: test r13d, r13d je SHORT G_M37966_IG11 ;; bbWeight=1 PerfScore 1.25 G_M37966_IG09: mov rdx, r14 mov rdi, gword ptr [rsp+98H] mov gword ptr [rsp+90H], rdi mov gword ptr [rsp+98H], r15 mov rcx, rsi mov r8, rbx mov r9d, ebp ;; bbWeight=0.50 PerfScore 2.00 G_M37966_IG10: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 jmp MethodBase:CheckArguments(ref,Binder,int,CultureInfo,Signature):ref:this ;; bbWeight=0.50 PerfScore 3.13 G_M37966_IG11: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M37966_IG12: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M37966_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x50DB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call TargetParameterCountException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 257, prolog size 16, PerfScore 59.83, (MethodHash=dd616bb1) for method RuntimeMethodInfo:InvokeArgumentsCheck(Object,int,Binder,ref,CultureInfo):ref:this ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:get_Signature():Signature:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4.50) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T03] ( 4, 3.50) ref -> rax ; V05 tmp3 [V05,T01] ( 4, 4 ) ref -> rdi class-hnd exact "NewObj constructor temp" ;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V07 tmp5 [V07,T04] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ;* V08 tmp6 [V08,T05] ( 0, 0 ) long -> zero-ref V06.m_handle(offs=0x00) P-INDEP "field V06.m_handle (fldOffset=0x0)" ; ; Lcl frame size = 56 G_M35395_IG01: push rdi push rsi sub rsp, 56 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M35395_IG02: mov rax, gword ptr [rsi+48] test rax, rax jne SHORT G_M35395_IG04 ;; bbWeight=1 PerfScore 3.25 G_M35395_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, gword ptr [rsi+56] mov gword ptr [rsp+20H], rsi mov gword ptr [rsp+28H], rcx mov rcx, rdi xor r9, r9 xor rdx, rdx xor r8d, r8d call Signature:GetSignature(long,int,RuntimeFieldHandleInternal,IRuntimeMethodInfo,RuntimeType):this lea rcx, bword ptr [rsi+48] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 4.75 G_M35395_IG04: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 88, prolog size 6, PerfScore 21.55, (MethodHash=810975bc) for method RuntimeMethodInfo:get_Signature():Signature:this ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:get_InvocationFlags():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 7 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T02] ( 4, 2 ) int -> rdi ; V02 loc1 [V02,T01] ( 7, 3.50) ref -> rbx class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ; V05 tmp2 [V05,T04] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ; V06 tmp3 [V06,T05] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ; ; Lcl frame size = 32 G_M24271_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M24271_IG02: test byte ptr [rsi+88], 1 jne G_M24271_IG10 ;; bbWeight=1 PerfScore 3.00 G_M24271_IG03: xor edi, edi mov rcx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]RuntimeMethodInfo:get_DeclaringType():Type:this mov rbx, rax mov rcx, rsi mov rax, 0xD1FFAB1E call qword ptr [rax]RuntimeMethodInfo:get_ContainsGenericParameters():bool:this test eax, eax jne SHORT G_M24271_IG05 mov rcx, rsi call RuntimeMethodInfo:get_Signature():Signature:this mov rcx, gword ptr [rax+24] call RuntimeMethodInfo:IsDisallowedByRefType(Type):bool test eax, eax jne SHORT G_M24271_IG05 test rbx, rbx je SHORT G_M24271_IG04 mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+168] call qword ptr [rax]Type:get_ContainsGenericParameters():bool:this test eax, eax jne SHORT G_M24271_IG05 ;; bbWeight=0.50 PerfScore 12.00 G_M24271_IG04: mov rcx, rsi call RuntimeMethodInfo:get_Signature():Signature:this test byte ptr [rax+48], 2 je SHORT G_M24271_IG06 ;; bbWeight=0.50 PerfScore 2.13 G_M24271_IG05: mov edi, 2 jmp SHORT G_M24271_IG09 ;; bbWeight=0.50 PerfScore 1.13 G_M24271_IG06: test rbx, rbx je SHORT G_M24271_IG07 mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+96] call qword ptr [rax+48]Type:get_IsByRefLike():bool:this test eax, eax jne SHORT G_M24271_IG08 ;; bbWeight=0.50 PerfScore 4.88 G_M24271_IG07: mov rcx, rsi call RuntimeMethodInfo:get_Signature():Signature:this mov rcx, gword ptr [rax+24] mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]RuntimeType:get_IsByRefLike():bool:this test eax, eax je SHORT G_M24271_IG09 ;; bbWeight=0.50 PerfScore 4.88 G_M24271_IG08: mov edi, 256 ;; bbWeight=0.50 PerfScore 0.13 G_M24271_IG09: or edi, 1 mov dword ptr [rsi+88], edi ;; bbWeight=0.50 PerfScore 0.63 G_M24271_IG10: mov eax, dword ptr [rsi+88] ;; bbWeight=1 PerfScore 2.00 G_M24271_IG11: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 199, prolog size 7, PerfScore 56.90, (MethodHash=e02ea130) for method RuntimeMethodInfo:get_InvocationFlags():int:this ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:get_DeclaringType():Type:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" ; ; Lcl frame size = 0 G_M52734_IG01: ;; bbWeight=1 PerfScore 0.00 G_M52734_IG02: mov rax, gword ptr [rcx+8] cmp byte ptr [rax+140], 0 je SHORT G_M52734_IG05 ;; bbWeight=1 PerfScore 5.00 G_M52734_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M52734_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M52734_IG05: mov rax, gword ptr [rcx+56] ;; bbWeight=0.50 PerfScore 1.00 G_M52734_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 21, prolog size 0, PerfScore 9.23, (MethodHash=96783201) for method RuntimeMethodInfo:get_DeclaringType():Type:this ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:get_ContainsGenericParameters():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 7, 5 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T03] ( 3, 5 ) ref -> rsi class-hnd ; V02 loc1 [V02,T01] ( 5, 16.50) int -> rdi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T08] ( 2, 1 ) bool -> rax "Inline stloc first use temp" ;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V06 tmp3 [V06,T06] ( 2, 2 ) long -> rcx "Inlining Arg" ; V07 tmp4 [V07,T05] ( 2, 2 ) ref -> rax class-hnd "dup spill" ; V08 tmp5 [V08,T07] ( 4, 1.75) ref -> rsi ; V09 cse0 [V09,T04] ( 3, 5 ) int -> rbx "CSE - aggressive" ; V10 rat0 [V10,T00] ( 6, 27 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 32 G_M53125_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M53125_IG02: mov rcx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]RuntimeMethodInfo:get_DeclaringType():Type:this test rax, rax je SHORT G_M53125_IG05 ;; bbWeight=1 PerfScore 6.75 G_M53125_IG03: mov rcx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]RuntimeMethodInfo:get_DeclaringType():Type:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+168] call qword ptr [rax]Type:get_ContainsGenericParameters():bool:this test eax, eax je SHORT G_M53125_IG05 mov eax, 1 ;; bbWeight=0.50 PerfScore 6.13 G_M53125_IG04: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M53125_IG05: mov rcx, qword ptr [rsi+72] call RuntimeMethodHandle:HasMethodInstantiation(long):bool test eax, eax jne SHORT G_M53125_IG07 xor eax, eax ;; bbWeight=0.50 PerfScore 2.25 G_M53125_IG06: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M53125_IG07: mov rcx, rsi call RuntimeMethodHandle:GetMethodInstantiationPublic(IRuntimeMethodInfo):ref mov rsi, rax test rsi, rsi jne SHORT G_M53125_IG09 ;; bbWeight=0.50 PerfScore 1.38 G_M53125_IG08: mov rcx, 0xD1FFAB1E mov edx, 12 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0.25 PerfScore 0.94 G_M53125_IG09: xor edi, edi mov ebx, dword ptr [rsi+8] test ebx, ebx jle SHORT G_M53125_IG12 ;; bbWeight=0.50 PerfScore 1.75 G_M53125_IG10: movsxd rcx, edi mov rax, gword ptr [rsi+8*rcx+16] mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+168] call qword ptr [rax]Type:get_ContainsGenericParameters():bool:this test eax, eax jne SHORT G_M53125_IG14 ;; bbWeight=4 PerfScore 43.00 G_M53125_IG11: inc edi cmp ebx, edi jg SHORT G_M53125_IG10 ;; bbWeight=4 PerfScore 6.00 G_M53125_IG12: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M53125_IG13: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M53125_IG14: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M53125_IG15: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 216, prolog size 7, PerfScore 99.04, (MethodHash=40d7307a) for method RuntimeMethodInfo:get_ContainsGenericParameters():bool:this ; ============================================================ ; Assembly listing for method RuntimeType:get_ContainsGenericParameters():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 loc0 [V01 ] ( 2, 2 ) struct ( 8) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03 ] ( 2, 2 ) ref -> [rsp+0x20] do-not-enreg[X] addr-exposed V01.m_type(offs=0x00) P-DEP "field V01.m_type (fldOffset=0x0)" ; V04 rat0 [V04,T00] ( 3, 6 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 40 G_M54668_IG01: sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax ;; bbWeight=1 PerfScore 1.50 G_M54668_IG02: call Type:GetRootElementType():Type:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+80] call gword ptr [rax+16]Type:GetTypeHandleInternal():RuntimeTypeHandle:this mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rsp+20H] call RuntimeTypeHandle:GetTypeChecked():RuntimeType:this mov rcx, rax call RuntimeTypeHandle:ContainsGenericVariables(RuntimeType):bool nop ;; bbWeight=1 PerfScore 12.25 G_M54668_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 58, prolog size 11, PerfScore 20.80, (MethodHash=803f2a73) for method RuntimeType:get_ContainsGenericParameters():bool:this ; ============================================================ ; Assembly listing for method Type:GetRootElementType():Type:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 5 ) ref -> rcx this class-hnd ; V01 loc0 [V01,T00] ( 7, 22 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M37745_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M37745_IG02: mov rsi, rcx mov rax, qword ptr [rcx] mov rax, qword ptr [rax+96] call qword ptr [rax+56]Type:HasElementTypeImpl():bool:this test eax, eax je SHORT G_M37745_IG04 ;; bbWeight=1 PerfScore 8.50 G_M37745_IG03: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+104] call gword ptr [rax]Type:GetElementType():Type:this mov rsi, rax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+96] call qword ptr [rax+56]Type:HasElementTypeImpl():bool:this test eax, eax jne SHORT G_M37745_IG03 ;; bbWeight=4 PerfScore 64.00 G_M37745_IG04: mov rax, rsi ;; bbWeight=1 PerfScore 0.25 G_M37745_IG05: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 63, prolog size 5, PerfScore 82.05, (MethodHash=c3c66c8e) for method Type:GetRootElementType():Type:this ; ============================================================ ; Assembly listing for method RuntimeType:HasElementTypeImpl():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 3, 2 ) bool -> rax "Inline return value spill temp" ; V03 tmp2 [V03,T01] ( 5, 3 ) ubyte -> rax "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M16201_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M16201_IG02: call RuntimeTypeHandle:GetCorElementType(RuntimeType):ubyte cmp eax, 20 je SHORT G_M16201_IG05 ;; bbWeight=1 PerfScore 2.25 G_M16201_IG03: cmp eax, 29 je SHORT G_M16201_IG05 cmp eax, 15 je SHORT G_M16201_IG05 ;; bbWeight=0.25 PerfScore 0.63 G_M16201_IG04: cmp eax, 16 sete al movzx rax, al jmp SHORT G_M16201_IG06 ;; bbWeight=0.50 PerfScore 1.75 G_M16201_IG05: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M16201_IG06: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 45, prolog size 4, PerfScore 10.75, (MethodHash=67e3c0b6) for method RuntimeType:HasElementTypeImpl():bool:this ; ============================================================ ; Assembly listing for method Type:GetTypeHandleInternal():RuntimeTypeHandle:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M20466_IG01: ;; bbWeight=1 PerfScore 0.00 G_M20466_IG02: mov rax, qword ptr [rcx] mov rax, qword ptr [rax+144] mov rax, qword ptr [rax+16] ;; bbWeight=1 PerfScore 6.00 G_M20466_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 17, prolog size 0, PerfScore 9.70, (MethodHash=4bf5b00d) for method Type:GetTypeHandleInternal():RuntimeTypeHandle:this ; ============================================================ ; Assembly listing for method RuntimeType:get_TypeHandle():RuntimeTypeHandle:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref V02.m_type(offs=0x00) P-INDEP "field V02.m_type (fldOffset=0x0)" ; ; Lcl frame size = 0 G_M62262_IG01: ;; bbWeight=1 PerfScore 0.00 G_M62262_IG02: mov rax, rcx ;; bbWeight=1 PerfScore 0.25 G_M62262_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 1.65, (MethodHash=603d0cc9) for method RuntimeType:get_TypeHandle():RuntimeTypeHandle:this ; ============================================================ ; Assembly listing for method RuntimeTypeHandle:GetTypeChecked():RuntimeType:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rcx this ; V01 loc0 [V01,T01] ( 3, 3 ) ref -> rax class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 2, 0 ) ref -> rcx "argument with side effect" ; V05 tmp3 [V05,T04] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 32 G_M11748_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M11748_IG02: mov rax, gword ptr [rcx] test rax, rax je SHORT G_M11748_IG04 ;; bbWeight=1 PerfScore 3.25 G_M11748_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M11748_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x432D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rcx, rsi xor rdx, rdx call ArgumentNullException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 89, prolog size 5, PerfScore 15.15, (MethodHash=6708d21b) for method RuntimeTypeHandle:GetTypeChecked():RuntimeType:this ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:IsDisallowedByRefType(Type):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 5 ) ref -> rsi class-hnd ; V01 loc0 [V01,T01] ( 4, 2 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M50894_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M50894_IG02: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+88] call qword ptr [rax+32]Type:IsByRefImpl():bool:this test eax, eax jne SHORT G_M50894_IG05 ;; bbWeight=1 PerfScore 8.50 G_M50894_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M50894_IG04: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M50894_IG05: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+104] call gword ptr [rax]Type:GetElementType():Type:this mov rsi, rax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+96] call qword ptr [rax+48]Type:get_IsByRefLike():bool:this test eax, eax jne SHORT G_M50894_IG07 mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi sete al movzx rax, al ;; bbWeight=0.50 PerfScore 9.38 G_M50894_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M50894_IG07: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M50894_IG08: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 106, prolog size 5, PerfScore 32.85, (MethodHash=330c3931) for method RuntimeMethodInfo:IsDisallowedByRefType(Type):bool ; ============================================================ ; Assembly listing for method RuntimeType:IsByRefImpl():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 2 ) ubyte -> rax "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M8677_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M8677_IG02: call RuntimeTypeHandle:GetCorElementType(RuntimeType):ubyte cmp eax, 16 sete al movzx rax, al ;; bbWeight=1 PerfScore 2.50 G_M8677_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 23, prolog size 4, PerfScore 6.30, (MethodHash=b7e5de1a) for method RuntimeType:IsByRefImpl():bool:this ; ============================================================ ; Assembly listing for method RuntimeType:get_IsByRefLike():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M9951_IG01: ;; bbWeight=1 PerfScore 0.00 G_M9951_IG02: jmp RuntimeTypeHandle:IsByRefLike(RuntimeType):bool ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 5, prolog size 0, PerfScore 2.50, (MethodHash=eb10d920) for method RuntimeType:get_IsByRefLike():bool:this ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:CheckConsistency(Object):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 2.50) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp3 [V05,T02] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ; V06 tmp4 [V06,T05] ( 2, 0 ) ref -> rdx class-hnd "Inlining Arg" ; V07 tmp5 [V07,T06] ( 2, 0 ) ref -> rdx class-hnd "Inlining Arg" ; V08 tmp6 [V08,T07] ( 2, 0 ) ref -> rcx "argument with side effect" ; V09 tmp7 [V09,T08] ( 2, 0 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 32 G_M52173_IG01: push rsi sub rsp, 32 mov rsi, rdx ;; bbWeight=1 PerfScore 1.50 G_M52173_IG02: test byte ptr [rcx+84], 16 jne SHORT G_M52173_IG04 ;; bbWeight=1 PerfScore 3.00 G_M52173_IG03: mov rcx, gword ptr [rcx+56] cmp dword ptr [rcx], ecx mov rdx, rsi call RuntimeTypeHandle:IsInstanceOfType(RuntimeType,Object):bool test eax, eax je SHORT G_M52173_IG05 ;; bbWeight=0.50 PerfScore 3.25 G_M52173_IG04: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M52173_IG05: test rsi, rsi jne SHORT G_M52173_IG06 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xFE2D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi xor r8, r8 call TargetException:.ctor(String,Exception):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M52173_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xFDC7 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi xor r8, r8 call TargetException:.ctor(String,Exception):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 184, prolog size 5, PerfScore 27.90, (MethodHash=a5993432) for method RuntimeMethodInfo:CheckConsistency(Object):this ; ============================================================ ; Assembly listing for method MethodBase:CheckArguments(ref,Binder,int,CultureInfo,Signature):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T11] ( 6, 10 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T10] ( 5, 11 ) ref -> rsi class-hnd ; V02 arg2 [V02,T13] ( 4, 10 ) ref -> rbx class-hnd ; V03 arg3 [V03,T14] ( 4, 10 ) int -> rbp ; V04 arg4 [V04,T15] ( 2, 8 ) ref -> r14 class-hnd ; V05 arg5 [V05,T16] ( 2, 8 ) ref -> r15 class-hnd ; V06 loc0 [V06,T09] ( 6, 15 ) ref -> r13 class-hnd exact ; V07 loc1 [V07,T05] ( 11, 21 ) ref -> [rsp+0x40] class-hnd ; V08 loc2 [V08,T00] ( 14, 49 ) int -> [rsp+0x5C] ; V09 loc3 [V09,T04] ( 8, 28 ) ref -> [rsp+0x38] class-hnd ; V10 loc4 [V10,T08] ( 4, 16 ) ref -> [rsp+0x30] class-hnd ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V12 tmp1 [V12,T03] ( 4, 32 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" ; V13 tmp2 [V13,T17] ( 8, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V14 tmp3 [V14,T18] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V15 tmp4 [V15,T02] ( 6, 48 ) ref -> r11 "arr expr" ; V16 tmp5 [V16,T19] ( 2, 0 ) ref -> rcx "argument with side effect" ; V17 cse0 [V17,T12] ( 6, 12 ) int -> r12 "CSE - aggressive" ; V18 cse1 [V18,T06] ( 6, 20 ) long -> [rsp+0x50] "CSE - aggressive" ; V19 cse2 [V19,T07] ( 6, 20 ) long -> [rsp+0x48] "CSE - aggressive" ; V20 rat0 [V20,T01] ( 12, 48 ) ref -> rcx "virtual vtable call" ; TEMP_01 ref -> [rsp+0x60] ; ; Lcl frame size = 104 G_M37480_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 104 xor rax, rax mov qword ptr [rsp+60H], rax mov rdi, rcx mov rsi, rdx mov rbx, r8 mov ebp, r9d mov r14, gword ptr [rsp+D0H] mov r15, gword ptr [rsp+D8H] ;; bbWeight=1 PerfScore 12.50 G_M37480_IG02: mov r12d, dword ptr [rsi+8] movsxd rdx, r12d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_OBJ mov r13, rax xor rax, rax mov gword ptr [rsp+40H], rax xor r8d, r8d test r12d, r12d jle G_M37480_IG14 cmp dword ptr [r13+8], r12d jl G_M37480_IG09 ;; bbWeight=1 PerfScore 9.50 G_M37480_IG03: movsxd r9, r8d mov r10, gword ptr [rsi+8*r9+16] mov gword ptr [rsp+38H], r10 mov r11, gword ptr [r15+8] mov dword ptr [rsp+5CH], r8d cmp r8d, dword ptr [r11+8] jae G_M37480_IG17 mov qword ptr [rsp+50H], r9 mov rdx, gword ptr [r11+8*r9+16] mov gword ptr [rsp+30H], rdx mov rcx, 0xD1FFAB1E mov edx, 153 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rsp+38H] cmp rax, gword ptr [rcx] jne G_M37480_IG07 ;; bbWeight=4 PerfScore 76.00 G_M37480_IG04: mov rdx, gword ptr [rsp+40H] test rdx, rdx jne SHORT G_M37480_IG05 mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+80] call gword ptr [rax+16]MethodBase:GetParametersNoCopy():ref:this mov rdx, rax ;; bbWeight=2 PerfScore 19.50 G_M37480_IG05: mov eax, dword ptr [rsp+5CH] cmp eax, dword ptr [rdx+8] jae G_M37480_IG17 mov gword ptr [rsp+40H], rdx mov r8, qword ptr [rsp+50H] mov rcx, gword ptr [rdx+8*r8+16] mov r9, qword ptr [rcx] mov r9, qword ptr [r9+72] call gword ptr [r9+8]ParameterInfo:get_DefaultValue():Object:this mov gword ptr [rsp+60H], rax mov rcx, 0xD1FFAB1E mov edx, 242 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rsp+60H] cmp rax, gword ptr [rcx] je G_M37480_IG16 ;; bbWeight=2 PerfScore 43.50 G_M37480_IG06: mov rax, gword ptr [rsp+40H] mov rdx, qword ptr [rsp+50H] mov rcx, gword ptr [rax+8*rdx+16] mov r8, qword ptr [rcx] mov r8, qword ptr [r8+72] call gword ptr [r8+8]ParameterInfo:get_DefaultValue():Object:this ;; bbWeight=2 PerfScore 22.00 G_M37480_IG07: mov dword ptr [rsp+20H], ebp mov rcx, gword ptr [rsp+30H] mov rdx, rax mov r8, rbx mov r9, r14 cmp dword ptr [rcx], ecx call RuntimeType:CheckValue(Object,Binder,CultureInfo,int):Object:this mov rdx, qword ptr [rsp+50H] lea rcx, bword ptr [r13+8*rdx+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov eax, dword ptr [rsp+5CH] inc eax cmp r12d, eax mov r8d, eax jg G_M37480_IG03 ;; bbWeight=4 PerfScore 51.00 G_M37480_IG08: jmp G_M37480_IG14 ;; bbWeight=1 PerfScore 2.00 G_M37480_IG09: movsxd r9, r8d mov rcx, gword ptr [rsi+8*r9+16] mov gword ptr [rsp+38H], rcx mov r11, gword ptr [r15+8] mov dword ptr [rsp+5CH], r8d cmp r8d, dword ptr [r11+8] jae G_M37480_IG17 mov qword ptr [rsp+48H], r9 mov rcx, gword ptr [r11+8*r9+16] mov gword ptr [rsp+30H], rcx mov rcx, 0xD1FFAB1E mov edx, 153 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rsp+38H] cmp rax, gword ptr [rcx] jne G_M37480_IG13 ;; bbWeight=4 PerfScore 76.00 G_M37480_IG10: mov rdx, gword ptr [rsp+40H] test rdx, rdx jne SHORT G_M37480_IG11 mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+80] call gword ptr [rax+16]MethodBase:GetParametersNoCopy():ref:this mov rdx, rax ;; bbWeight=2 PerfScore 19.50 G_M37480_IG11: mov eax, dword ptr [rsp+5CH] cmp eax, dword ptr [rdx+8] jae G_M37480_IG17 mov gword ptr [rsp+40H], rdx mov r8, qword ptr [rsp+48H] mov rcx, gword ptr [rdx+8*r8+16] mov r9, qword ptr [rcx] mov r9, qword ptr [r9+72] call gword ptr [r9+8]ParameterInfo:get_DefaultValue():Object:this mov gword ptr [rsp+60H], rax mov rcx, 0xD1FFAB1E mov edx, 242 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rsp+60H] cmp rax, gword ptr [rcx] je G_M37480_IG16 ;; bbWeight=2 PerfScore 43.50 G_M37480_IG12: mov rax, gword ptr [rsp+40H] mov rdx, qword ptr [rsp+48H] mov rcx, gword ptr [rax+8*rdx+16] mov r8, qword ptr [rcx] mov r8, qword ptr [r8+72] call gword ptr [r8+8]ParameterInfo:get_DefaultValue():Object:this mov rdx, rax mov rax, rdx ;; bbWeight=2 PerfScore 23.00 G_M37480_IG13: mov dword ptr [rsp+20H], ebp mov rcx, gword ptr [rsp+30H] mov rdx, rax mov r8, rbx mov r9, r14 cmp dword ptr [rcx], ecx call RuntimeType:CheckValue(Object,Binder,CultureInfo,int):Object:this mov r8d, dword ptr [rsp+5CH] cmp r8d, dword ptr [r13+8] jae G_M37480_IG17 mov rdx, qword ptr [rsp+48H] lea rcx, bword ptr [r13+8*rdx+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov eax, dword ptr [rsp+5CH] inc eax cmp r12d, eax mov r8d, eax jg G_M37480_IG09 ;; bbWeight=4 PerfScore 67.00 G_M37480_IG14: mov rax, r13 ;; bbWeight=1 PerfScore 0.25 G_M37480_IG15: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M37480_IG16: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x583D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov ecx, 0x1C0DF mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS lea rcx, bword ptr [rsi+120] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M37480_IG17: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 870, prolog size 23, PerfScore 557.50, (MethodHash=d0836d97) for method MethodBase:CheckArguments(ref,Binder,int,CultureInfo,Signature):ref:this ; ============================================================ ; Assembly listing for method Type:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd exact "NewObj constructor temp" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init "argument with side effect" ; V05 tmp5 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] must-init "argument with side effect" ; ; Lcl frame size = 80 G_M6494_IG01: push rbp sub rsp, 80 lea rbp, [rsp+50H] xor rax, rax mov qword ptr [rbp-28H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 5.33 G_M6494_IG02: mov rcx, 0xD1FFAB1E mov word ptr [rcx], 46 mov rcx, 0xD1FFAB1E call Array:Empty():ref mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 0x607 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov r8, 0xD1FFAB1E mov rcx, gword ptr [rbp-08H] xor rdx, rdx mov r9, 0xD1FFAB1E call MulticastDelegate:CtorOpened(Object,long,long):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, 0xD1FFAB1E mov edx, 154 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-20H], rdx mov rdx, gword ptr [rbp-20H] mov r8, 0xD1FFAB1E mov rcx, gword ptr [rbp-10H] call MulticastDelegate:CtorClosed(Object,long):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-18H], rax mov rcx, 0xD1FFAB1E mov edx, 154 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-28H], rdx mov rdx, gword ptr [rbp-28H] mov r8, 0xD1FFAB1E mov rcx, gword ptr [rbp-18H] call MulticastDelegate:CtorClosed(Object,long):this ;; bbWeight=1 PerfScore 39.00 G_M6494_IG03: mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-18H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 2.50 G_M6494_IG04: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 398, prolog size 30, PerfScore 88.93, (MethodHash=4793e6a1) for method Type:.cctor() ; ============================================================ ; Assembly listing for method Array:Empty():ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V03 cse0 [V03,T02] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M4550_IG01: sub rsp, 40 mov qword ptr [rsp+20H], rcx ;; bbWeight=1 PerfScore 1.25 G_M4550_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M4550_IG04 ;; bbWeight=1 PerfScore 5.25 G_M4550_IG03: jmp SHORT G_M4550_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M4550_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M4550_IG05: mov rcx, rdx call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov rax, gword ptr [rax] ;; bbWeight=1 PerfScore 3.25 G_M4550_IG06: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 58, prolog size 9, PerfScore 17.68, (MethodHash=c6aaee39) for method Array:Empty():ref ; ============================================================ ; Assembly listing for method EmptyArray`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00 ] ( 1, 1 ) long -> [rbp+0x10] ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02 ] ( 1, 1 ) long -> [rbp-0x10] "spilling Runtime Lookup tree" ; TEMP_01 byref -> [rbp-0x18] ; ; Lcl frame size = 64 G_M47611_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] xor rax, rax mov qword ptr [rbp-18H], rax mov qword ptr [rbp-08H], rcx mov qword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 5.00 G_M47611_IG02: mov rcx, qword ptr [rbp+10H] mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] cmp qword ptr [rcx+16], 0 je SHORT G_M47611_IG04 ;; bbWeight=1 PerfScore 8.00 G_M47611_IG03: mov rcx, qword ptr [rbp+10H] mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+16] mov qword ptr [rbp-10H], rcx jmp SHORT G_M47611_IG05 ;; bbWeight=0.50 PerfScore 5.00 G_M47611_IG04: mov rcx, qword ptr [rbp+10H] mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rbp-10H], rax ;; bbWeight=0.50 PerfScore 1.63 G_M47611_IG05: mov rcx, qword ptr [rbp+10H] call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov bword ptr [rbp-18H], rax mov rcx, qword ptr [rbp-10H] xor rdx, rdx call CORINFO_HELP_NEWARR_1_OBJ mov rcx, bword ptr [rbp-18H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 7.75 G_M47611_IG06: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 129, prolog size 20, PerfScore 42.28, (MethodHash=aece4604) for method EmptyArray`1:.cctor() ; ============================================================ ; Assembly listing for method Missing:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M2178_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M2178_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call Missing:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M2178_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=f065f77d) for method Missing:.cctor() ; ============================================================ ; Assembly listing for method Missing:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M4509_IG01: ;; bbWeight=1 PerfScore 0.00 G_M4509_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=c82cee62) for method Missing:.ctor():this ; ============================================================ ; Assembly listing for method MulticastDelegate:CtorOpened(Object,long,long):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 arg2 [V02,T01] ( 3, 3 ) long -> rdi ; V03 arg3 [V03,T02] ( 3, 3 ) long -> rbx ;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M22468_IG01: push rdi push rsi push rbx mov rsi, rcx mov rdi, r8 mov rbx, r9 ;; bbWeight=1 PerfScore 3.75 G_M22468_IG02: lea rcx, bword ptr [rsi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov qword ptr [rsi+24], rbx mov qword ptr [rsi+32], rdi ;; bbWeight=1 PerfScore 3.75 G_M22468_IG03: pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.50 ; Total bytes of code 36, prolog size 3, PerfScore 13.60, (MethodHash=b0a4a83b) for method MulticastDelegate:CtorOpened(Object,long,long):this ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method RuntimeType:CheckValue(Object,Binder,CultureInfo,int):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 16, 9.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 16, 9 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 2.50) ref -> rbx class-hnd ; V03 arg3 [V03,T04] ( 3, 2.50) ref -> rbp class-hnd ; V04 arg4 [V04,T20] ( 1, 0.50) int -> [rsp+0x80] ; V05 loc0 [V05,T17] ( 2, 1 ) bool -> rcx ; V06 loc1 [V06,T13] ( 3, 1.50) bool -> r14 ; V07 loc2 [V07,T16] ( 2, 1 ) ref -> rax class-hnd ; V08 loc3 [V08,T10] ( 4, 2 ) ref -> r14 class-hnd ; V09 loc4 [V09,T12] ( 3, 1.50) ref -> rcx class-hnd ; V10 loc5 [V10,T08] ( 5, 2.50) ref -> r15 class-hnd ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V12 tmp1 [V12,T14] ( 3, 1.50) int -> rcx ; V13 tmp2 [V13,T21] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V14 tmp3 [V14,T06] ( 4, 3.24) ref -> r15 class-hnd "spilling QMark2" ; V15 tmp4 [V15,T07] ( 3, 3 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V16 tmp5 [V16,T09] ( 3, 2.24) ref -> rdx "CASTCLASS eval op1" ; V17 tmp6 [V17,T15] ( 3, 1.24) long -> rax "fgInsertCommaFormTemp is creating a new local variable" ; V18 tmp7 [V18,T05] ( 5, 3.74) ref -> rcx class-hnd "spilling QMark2" ; V19 tmp8 [V19,T18] ( 2, 1 ) ubyte -> rax "Inline stloc first use temp" ; V20 tmp9 [V20,T19] ( 2, 1 ) ubyte -> rax "Inline stloc first use temp" ; V21 tmp10 [V21,T11] ( 2, 2 ) long -> rdi "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V23 tmp12 [V23,T02] ( 6, 6 ) ref -> rax "Single return block return value" ; V24 tmp13 [V24,T22] ( 2, 0 ) ref -> rcx "argument with side effect" ; V25 tmp14 [V25,T23] ( 2, 0 ) ref -> rbp "argument with side effect" ; V26 tmp15 [V26,T24] ( 2, 0 ) ref -> rdx "argument with side effect" ; V27 tmp16 [V27,T25] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M41349_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 ;; bbWeight=1 PerfScore 7.25 G_M41349_IG02: cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rdi call RuntimeTypeHandle:IsInstanceOfType(RuntimeType,Object):bool test eax, eax je SHORT G_M41349_IG06 ;; bbWeight=1 PerfScore 4.75 G_M41349_IG03: mov rcx, rdi call Object:GetType():Type:this cmp rax, rsi je SHORT G_M41349_IG05 mov rcx, rsi call RuntimeTypeHandle:IsValueType(RuntimeType):bool test eax, eax je SHORT G_M41349_IG05 mov rcx, rsi mov rdx, rdi mov r8d, 1 ;; bbWeight=0.50 PerfScore 2.88 G_M41349_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 jmp RuntimeType:AllocateValueType(RuntimeType,Object,bool):Object ;; bbWeight=0.50 PerfScore 2.63 G_M41349_IG05: mov rax, rdi jmp G_M41349_IG25 ;; bbWeight=0.50 PerfScore 1.13 G_M41349_IG06: mov rcx, rsi call RuntimeTypeHandle:GetCorElementType(RuntimeType):ubyte cmp eax, 16 sete cl movzx rcx, cl test ecx, ecx je SHORT G_M41349_IG09 mov rcx, rsi call RuntimeTypeHandle:GetElementType(RuntimeType):RuntimeType mov r14, rax cmp dword ptr [r14], r14d mov rcx, r14 mov rdx, rdi call RuntimeTypeHandle:IsInstanceOfType(RuntimeType,Object):bool test eax, eax jne SHORT G_M41349_IG07 test rdi, rdi jne SHORT G_M41349_IG11 ;; bbWeight=0.50 PerfScore 5.75 G_M41349_IG07: mov rcx, r14 mov rdx, rdi xor r8d, r8d ;; bbWeight=0.50 PerfScore 0.38 G_M41349_IG08: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 jmp RuntimeType:AllocateValueType(RuntimeType,Object,bool):Object ;; bbWeight=0.50 PerfScore 2.63 G_M41349_IG09: test rdi, rdi jne SHORT G_M41349_IG10 xor rax, rax jmp G_M41349_IG25 ;; bbWeight=0.50 PerfScore 1.75 G_M41349_IG10: mov rax, 0xD1FFAB1E cmp rsi, gword ptr [rax] jne SHORT G_M41349_IG11 mov rax, rdi jmp G_M41349_IG25 ;; bbWeight=0.50 PerfScore 2.75 G_M41349_IG11: mov rcx, rsi call RuntimeTypeHandle:GetCorElementType(RuntimeType):ubyte cmp eax, 15 je SHORT G_M41349_IG12 mov rcx, rsi mov rax, 0xD1FFAB1E call qword ptr [rax]Type:get_IsEnum():bool:this test eax, eax jne SHORT G_M41349_IG12 mov rcx, rsi call RuntimeTypeHandle:IsPrimitive(RuntimeType):bool movzx rcx, al jmp SHORT G_M41349_IG13 ;; bbWeight=0.50 PerfScore 5.38 G_M41349_IG12: mov ecx, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M41349_IG13: movzx r14, cl test r14d, r14d je G_M41349_IG22 mov r15, rdi mov rcx, 0xD1FFAB1E cmp qword ptr [r15], rcx je SHORT G_M41349_IG15 ;; bbWeight=0.50 PerfScore 2.50 G_M41349_IG14: xor r15, r15 ;; bbWeight=0.12 PerfScore 0.03 G_M41349_IG15: test r15, r15 je SHORT G_M41349_IG19 mov rdx, gword ptr [r15+8] mov rcx, rdx test rcx, rcx je SHORT G_M41349_IG18 ;; bbWeight=0.50 PerfScore 2.38 G_M41349_IG16: mov rax, 0xD1FFAB1E cmp qword ptr [rcx], rax je SHORT G_M41349_IG18 ;; bbWeight=0.25 PerfScore 0.81 G_M41349_IG17: mov rcx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rcx, rax ;; bbWeight=0.12 PerfScore 0.18 G_M41349_IG18: jmp SHORT G_M41349_IG20 ;; bbWeight=0.50 PerfScore 1.00 G_M41349_IG19: mov rcx, rdi call Object:GetType():Type:this mov rcx, rax ;; bbWeight=0.50 PerfScore 0.75 G_M41349_IG20: mov rdx, rsi call RuntimeType:CanValueSpecialCast(RuntimeType,RuntimeType):bool test eax, eax je SHORT G_M41349_IG22 test r15, r15 je SHORT G_M41349_IG21 mov rdi, qword ptr [r15+16] mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov qword ptr [rax+8], rdi jmp SHORT G_M41349_IG25 ;; bbWeight=0.50 PerfScore 5.00 G_M41349_IG21: mov rax, rdi jmp SHORT G_M41349_IG25 ;; bbWeight=0.50 PerfScore 1.13 G_M41349_IG22: test dword ptr [rsp+80H], 0x10000 jne SHORT G_M41349_IG26 ;; bbWeight=0.50 PerfScore 1.00 G_M41349_IG23: mov dword ptr [rsp+80H], r14d mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9, rbp ;; bbWeight=0.50 PerfScore 1.00 G_M41349_IG24: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 jmp RuntimeType:TryChangeType(Object,Binder,CultureInfo,bool):Object:this ;; bbWeight=0.50 PerfScore 2.63 G_M41349_IG25: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M41349_IG26: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov ecx, 0x4FF7 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbp, rax mov rcx, rdi call Object:GetType():Type:this mov rdx, rax mov rcx, rbp mov r8, rsi call SR:Format(String,Object,Object):String mov rdx, rax mov rcx, rbx call ArgumentException:.ctor(String):this mov rcx, rbx call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 562, prolog size 24, PerfScore 114.10, (MethodHash=80e35e7a) for method RuntimeType:CheckValue(Object,Binder,CultureInfo,int):Object:this ; ============================================================ ; Assembly listing for method Runnable_0:Run(IHost,String) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 9, 11 ) ref -> rbx class-hnd ; V01 arg1 [V01,T21] ( 3, 2.50) ref -> rsi class-hnd ; V02 loc0 [V02,T06] ( 14, 8 ) ref -> r14 class-hnd exact ; V03 loc1 [V03,T03] ( 14, 11.87) ref -> rdi class-hnd exact ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V06 loc4 [V06,T04] ( 7, 11 ) ref -> [rbp-0x100] EH do-not-enreg[] class-hnd EH-live ; V07 loc5 [V07,T07] ( 2, 8 ) ref -> rdx class-hnd ; V08 loc6 [V08,T44] ( 5, 1.50) ref -> [rbp-0x108] EH do-not-enreg[] class-hnd EH-live ; V09 loc7 [V09 ] ( 2, 1 ) struct (80) [rbp-0x80] do-not-enreg[XSB] must-init addr-exposed ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T08] ( 3, 6 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V12 tmp2 [V12,T09] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V13 tmp3 [V13,T10] ( 3, 6 ) ref -> r15 class-hnd "impAppendStmt" ; V14 tmp4 [V14 ] ( 2, 4 ) struct (16) [rbp-0x90] do-not-enreg[XSB] addr-exposed "struct address for call/obj" ; V15 tmp5 [V15,T35] ( 2, 4 ) struct ( 8) [rbp-0x98] do-not-enreg[SFB] "NewObj constructor temp" ; V16 tmp6 [V16,T11] ( 3, 6 ) ref -> r15 class-hnd "impAppendStmt" ; V17 tmp7 [V17,T00] ( 20, 20 ) ref -> r15 class-hnd exact "NewObj constructor temp" ; V18 tmp8 [V18,T23] ( 4, 4 ) ref -> r12 class-hnd exact "NewObj constructor temp" ; V19 tmp9 [V19,T24] ( 4, 4 ) ref -> r12 class-hnd exact "NewObj constructor temp" ; V20 tmp10 [V20,T25] ( 4, 4 ) ref -> r12 class-hnd exact "NewObj constructor temp" ; V21 tmp11 [V21,T26] ( 4, 4 ) ref -> r12 class-hnd exact "NewObj constructor temp" ; V22 tmp12 [V22,T27] ( 4, 4 ) ref -> r12 class-hnd exact "NewObj constructor temp" ; V23 tmp13 [V23,T28] ( 4, 4 ) ref -> r12 class-hnd exact "NewObj constructor temp" ; V24 tmp14 [V24,T29] ( 4, 4 ) ref -> r12 class-hnd exact "NewObj constructor temp" ; V25 tmp15 [V25,T38] ( 2, 2 ) ref -> rcx class-hnd exact "NewObj constructor temp" ; V26 tmp16 [V26,T12] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V27 tmp17 [V27,T36] ( 2, 4 ) struct (16) [rbp-0xA8] do-not-enreg[SB] "Inlining Arg" ;* V28 tmp18 [V28 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SB] "Inlining Arg" ; V29 tmp19 [V29,T13] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ;* V30 tmp20 [V30 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg" ;* V31 tmp21 [V31 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg" ; V32 tmp22 [V32,T14] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V33 tmp23 [V33,T15] ( 3, 6 ) ref -> r15 class-hnd "Inlining Arg" ; V34 tmp24 [V34,T16] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V35 tmp25 [V35,T17] ( 3, 6 ) ref -> r15 class-hnd "Inlining Arg" ; V36 tmp26 [V36,T18] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V37 tmp27 [V37,T19] ( 3, 6 ) ref -> r15 class-hnd "Inlining Arg" ; V38 tmp28 [V38,T20] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ;* V39 tmp29 [V39 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1" ; V40 tmp30 [V40,T22] ( 3, 4.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ;* V41 tmp31 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" ; V42 tmp32 [V42,T05] ( 5, 10 ) ref -> r15 class-hnd exact "NewObj constructor temp" ; V43 tmp33 [V43,T30] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V44 tmp34 [V44,T37] ( 4, 3.25) ref -> rcx ;* V45 tmp35 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V46 tmp36 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V47 tmp37 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V48 tmp38 [V48 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V49 tmp39 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V50 tmp40 [V50 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V51 tmp41 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V52 tmp42 [V52,T39] ( 2, 2 ) ref -> rdx class-hnd "Inlining Arg" ; V53 tmp43 [V53,T40] ( 2, 2 ) ref -> rdx class-hnd "Inlining Arg" ; V54 tmp44 [V54,T41] ( 2, 2 ) ref -> rdx class-hnd "Inlining Arg" ; V55 tmp45 [V55,T42] ( 2, 2 ) ref -> rdx class-hnd "Inlining Arg" ;* V56 tmp46 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V57 tmp47 [V57,T31] ( 2, 4 ) ref -> rcx "argument with side effect" ; V58 tmp48 [V58,T01] ( 2, 16 ) ref -> rdx "argument with side effect" ; V59 tmp49 [V59,T32] ( 2, 4 ) ref -> rdx "argument with side effect" ; V60 tmp50 [V60,T33] ( 2, 4 ) ref -> r15 "argument with side effect" ; V61 tmp51 [V61,T34] ( 2, 4 ) ref -> rdx "argument with side effect" ; V62 tmp52 [V62 ] ( 2, 2 ) struct (80) [rbp-0xF8] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V63 tmp53 [V63,T43] ( 2, 2 ) ref -> rbx "argument with side effect" ; V64 PSPSym [V64 ] ( 1, 1 ) long -> [rbp-0x110] do-not-enreg[X] addr-exposed "PSPSym" ;* V65 cse0 [V65,T45] ( 0, 0 ) long -> zero-ref "CSE - moderate" ; ; Lcl frame size = 256 G_M16186_IG01: push rbp push r15 push r14 push r12 push rdi push rsi push rbx sub rsp, 256 vzeroupper lea rbp, [rsp+130H] xor rax, rax mov qword ptr [rbp-F8H], rax vxorps xmm4, xmm4 mov rax, -192 vmovdqa xmmword ptr [rbp+rax-30H], xmm4 vmovdqa xmmword ptr [rbp+rax-20H], xmm4 vmovdqa xmmword ptr [rbp+rax-10H], xmm4 add rax, 48 jne SHORT -5 instr mov qword ptr [rbp-110H], rsp mov rbx, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 16.33 G_M16186_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rcx, r14 call Runnable_0:.ctor():this mov dword ptr [r14+40], 512 mov rcx, rbx mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IHost:WriteLine():this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi call BenchmarkEnvironmentInfo:.ctor():this mov rcx, rdi mov rax, 0xD1FFAB1E call gword ptr [rax]BenchmarkEnvironmentInfo:ToFormattedString():IEnumerable`1:this mov rcx, rax mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-100H], rax ;; bbWeight=1 PerfScore 18.50 G_M16186_IG03: mov rcx, gword ptr [rbp-100H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M16186_IG05 ;; bbWeight=1 PerfScore 5.75 G_M16186_IG04: mov rcx, gword ptr [rbp-100H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerator`1:get_Current():__Canon:this mov rdx, rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] call String:Concat(String,String):String mov rdx, rax mov rcx, rbx mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IHost:WriteLine(String):this mov rcx, gword ptr [rbp-100H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M16186_IG04 ;; bbWeight=4 PerfScore 71.00 G_M16186_IG05: mov rcx, gword ptr [rbp-100H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi xor rdx, rdx call Job:.ctor(String):this mov rcx, 0xD1FFAB1E mov edx, 268 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov r15, gword ptr [rdx] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, [rbp-90H] call Guid:Parse(String):Guid vmovupd xmm0, xmmword ptr [rbp-90H] vmovupd xmmword ptr [rbp-A8H], xmm0 cmp dword ptr [r15], r15d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST vmovdqu xmm0, xmmword ptr [rbp-A8H] vmovdqu xmmword ptr [rax+8], xmm0 mov r8, rax mov rcx, rdi mov rdx, r15 call CharacteristicObject:SetValue(Characteristic,Object):this mov rcx, 0xD1FFAB1E mov edx, 281 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r15, gword ptr [rcx] vmovsd xmm0, qword ptr [reloc @RWD08] vmovsd qword ptr [rbp-98H], xmm0 cmp dword ptr [r15], r15d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r8, qword ptr [rbp-98H] mov qword ptr [rax+8], r8 mov r8, rax mov rcx, rdi mov rdx, r15 call CharacteristicObject:SetValue(Characteristic,Object):this mov rcx, 0xD1FFAB1E mov r15, gword ptr [rcx] cmp dword ptr [r15], r15d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], 20 mov r8, rax mov rcx, rdi mov rdx, r15 call CharacteristicObject:SetValue(Characteristic,Object):this mov rcx, 0xD1FFAB1E mov r15, gword ptr [rcx] cmp dword ptr [r15], r15d ;; bbWeight=1 PerfScore 52.75 G_M16186_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], 15 mov r8, rax mov rcx, rdi mov rdx, r15 call CharacteristicObject:SetValue(Characteristic,Object):this mov rcx, 0xD1FFAB1E mov r15, gword ptr [rcx] cmp dword ptr [r15], r15d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], 1 mov r8, rax mov rcx, rdi mov rdx, r15 call CharacteristicObject:SetValue(Characteristic,Object):this mov rcx, rdi call CharacteristicObject:AssertIsRoot():this cmp byte ptr [rdi+24], 0 jne SHORT G_M16186_IG08 ;; bbWeight=1 PerfScore 16.50 G_M16186_IG07: mov byte ptr [rdi+24], 1 ;; bbWeight=0.25 PerfScore 0.25 G_M16186_IG08: mov rcx, 0xD1FFAB1E cmp qword ptr [rdi], rcx je SHORT G_M16186_IG10 ;; bbWeight=1 PerfScore 3.25 G_M16186_IG09: mov rdx, rdi call CORINFO_HELP_CHKCASTCLASS_SPECIAL ;; bbWeight=0.12 PerfScore 0.15 G_M16186_IG10: mov rcx, 0xD1FFAB1E mov r15, gword ptr [rcx] mov rcx, rdi call Job:get_DisplayInfo():String:this mov rdx, rax mov rcx, r15 call String:Concat(String,String):String mov rdx, rax mov rcx, rbx mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IHost:WriteLine(String):this mov rcx, rbx mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IHost:WriteLine():this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov dword ptr [r15+32], -2 mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M16186_IG12 ;; bbWeight=1 PerfScore 20.00 G_M16186_IG11: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M16186_IG12: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [r15+36], eax lea rcx, bword ptr [r15+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, r15 mov rdx, rbx call ValidationErrorReporter:ReportIfAny(IEnumerable`1,IHost):bool test eax, eax je SHORT G_M16186_IG14 ;; bbWeight=1 PerfScore 8.50 G_M16186_IG13: lea rsp, [rbp-30H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.50 G_M16186_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov rcx, 0xD1FFAB1E xor edx, edx call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [r15+72] call CORINFO_HELP_ASSIGN_REF mov qword ptr [r15+120], 1 lea rcx, bword ptr [r15+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r12, rax lea rcx, bword ptr [r12+8] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [r12+24], rdx lea rcx, bword ptr [r15+24] mov rdx, r12 call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r12, rax lea rcx, bword ptr [r12+8] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [r12+24], rdx lea rcx, bword ptr [r15+16] mov rdx, r12 call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r12, rax lea rcx, bword ptr [r12+8] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [r12+24], rdx lea rcx, bword ptr [r15+32] mov rdx, r12 call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r12, rax lea rcx, bword ptr [r12+8] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [r12+24], rdx lea rcx, bword ptr [r15+40] mov rdx, r12 call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST ;; bbWeight=0.50 PerfScore 17.88 G_M16186_IG15: mov r12, rax lea rcx, bword ptr [r12+8] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [r12+24], rdx lea rcx, bword ptr [r15+48] mov rdx, r12 call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r12, rax lea rcx, bword ptr [r12+8] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [r12+24], rdx lea rcx, bword ptr [r15+56] mov rdx, r12 call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r12, rax lea rcx, bword ptr [r12+8] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [r12+24], rdx lea rcx, bword ptr [r15+64] mov rdx, r12 call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [r14+48] lea rcx, bword ptr [r15+80] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [r14+56] lea rcx, bword ptr [r15+88] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [r14+64] lea rcx, bword ptr [r15+96] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [r14+72] lea rcx, bword ptr [r15+104] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r15+72] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov qword ptr [r15+120], 1 mov byte ptr [r15+128], 1 lea rcx, bword ptr [r15+112] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rcx, rax mov rdx, r15 mov rax, 0xD1FFAB1E call gword ptr [rax]EngineFactory:CreateReadyToRun(EngineParameters):IEngine:this mov gword ptr [rbp-108H], rax ;; bbWeight=0.50 PerfScore 21.50 G_M16186_IG16: lea rdx, [rbp-80H] mov rcx, gword ptr [rbp-108H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEngine:Run():RunResults:this lea rdi, bword ptr [rbp-F8H] lea rsi, bword ptr [rbp-80H] mov ecx, 10 rep movsq mov rcx, rbx lea rdx, bword ptr [rbp-F8H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IHost:ReportResults(RunResults):this mov rcx, r14 call Runnable_0:__TrickTheJIT__():this nop ;; bbWeight=0.50 PerfScore 18.50 G_M16186_IG17: mov rcx, gword ptr [rbp-108H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this nop ;; bbWeight=0.50 PerfScore 2.38 G_M16186_IG18: lea rsp, [rbp-30H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.50 G_M16186_IG19: push rbp push r15 push r14 push r12 push rdi push rsi push rbx sub rsp, 48 vzeroupper mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+130H] ;; bbWeight=0 PerfScore 0.00 G_M16186_IG20: cmp gword ptr [rbp-100H], 0 je SHORT G_M16186_IG21 mov rcx, gword ptr [rbp-100H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M16186_IG21: nop ;; bbWeight=0 PerfScore 0.00 G_M16186_IG22: add rsp, 48 pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M16186_IG23: push rbp push r15 push r14 push r12 push rdi push rsi push rbx sub rsp, 48 vzeroupper mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+130H] ;; bbWeight=0 PerfScore 0.00 G_M16186_IG24: cmp gword ptr [rbp-108H], 0 je SHORT G_M16186_IG25 mov rcx, gword ptr [rbp-108H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M16186_IG25: nop ;; bbWeight=0 PerfScore 0.00 G_M16186_IG26: add rsp, 48 pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 41ADCD6500000000h ; Total bytes of code 1959, prolog size 88, PerfScore 475.45, (MethodHash=2398c0c5) for method Runnable_0:Run(IHost,String) ; ============================================================ ; Assembly listing for method Runnable_0:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 12, 12 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T07] ( 2, 4 ) ref -> rax class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T01] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp3 [V04,T08] ( 2, 4 ) ref -> rdx class-hnd "dup spill" ;* V05 tmp4 [V05,T17] ( 0, 0 ) ref -> zero-ref ; V06 tmp5 [V06,T11] ( 4, 3.50) ref -> rdx ; V07 tmp6 [V07,T09] ( 2, 4 ) ref -> rdx class-hnd "dup spill" ;* V08 tmp7 [V08,T18] ( 0, 0 ) ref -> zero-ref ; V09 tmp8 [V09,T12] ( 4, 3.50) ref -> rdx ; V10 tmp9 [V10,T10] ( 2, 4 ) ref -> rdx class-hnd "dup spill" ;* V11 tmp10 [V11,T19] ( 0, 0 ) ref -> zero-ref ; V12 tmp11 [V12,T13] ( 4, 3.50) ref -> rdx ; V13 tmp12 [V13,T02] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V14 tmp13 [V14,T03] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V15 tmp14 [V15,T04] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V16 tmp15 [V16,T05] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V17 tmp16 [V17,T06] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ;* V18 tmp17 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V19 tmp18 [V19,T14] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V20 tmp19 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V21 tmp20 [V21,T15] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V22 tmp21 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V23 tmp22 [V23,T16] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V24 tmp23 [V24 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V25 tmp24 [V25 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V26 tmp25 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V27 cse0 [V27,T20] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 40 G_M30075_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M30075_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST lea rcx, bword ptr [rsi+96] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx lea rcx, bword ptr [rsi+48] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 6 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rcx] test rdx, rdx jne SHORT G_M30075_IG05 ;; bbWeight=1 PerfScore 14.25 G_M30075_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M30075_IG13 ;; bbWeight=0.50 PerfScore 2.50 G_M30075_IG04: lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, rdi ;; bbWeight=0.50 PerfScore 2.25 G_M30075_IG05: lea rcx, bword ptr [rsi+56] call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rcx] test rdx, rdx jne SHORT G_M30075_IG08 ;; bbWeight=1 PerfScore 5.00 G_M30075_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M30075_IG13 ;; bbWeight=0.50 PerfScore 2.50 G_M30075_IG07: lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, rdi ;; bbWeight=0.50 PerfScore 2.25 G_M30075_IG08: lea rcx, bword ptr [rsi+64] call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rcx] test rdx, rdx jne SHORT G_M30075_IG11 ;; bbWeight=1 PerfScore 5.00 G_M30075_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M30075_IG13 ;; bbWeight=0.50 PerfScore 2.50 G_M30075_IG10: lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, rdi ;; bbWeight=0.50 PerfScore 2.25 G_M30075_IG11: lea rcx, bword ptr [rsi+72] call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx lea rcx, bword ptr [rsi+80] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx lea rcx, bword ptr [rsi+88] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 14.25 G_M30075_IG12: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M30075_IG13: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 571, prolog size 6, PerfScore 114.60, (MethodHash=91848a84) for method Runnable_0:.ctor():this ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method ConsoleHost:WriteLine():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 rat0 [V02,T00] ( 3, 6 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 0 G_M36121_IG01: ;; bbWeight=1 PerfScore 0.00 G_M36121_IG02: mov rcx, gword ptr [rcx+8] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+96] mov rax, qword ptr [rax+8] ;; bbWeight=1 PerfScore 8.00 G_M36121_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 18, prolog size 0, PerfScore 11.80, (MethodHash=35bc72e6) for method ConsoleHost:WriteLine():this ; ============================================================ ; Assembly listing for method SyncTextWriter:WriteLine():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02 ] ( 4, 6 ) ubyte -> [rbp-0x10] do-not-enreg[X] addr-exposed "Synchronized method monitor acquired boolean" ; V03 tmp2 [V03,T02] ( 2, 2 ) ref -> [rbp-0x18] EH do-not-enreg[] must-init EH-live "Synchronized method monitor acquired boolean" ; V04 PSPSym [V04 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "PSPSym" ; V05 rat0 [V05,T01] ( 3, 6 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 56 G_M61787_IG01: push rbp push rsi sub rsp, 56 lea rbp, [rsp+40H] xor rax, rax mov qword ptr [rbp-18H], rax mov qword ptr [rbp-20H], rsp mov rsi, rcx ;; bbWeight=1 PerfScore 5.25 G_M61787_IG02: xor edx, edx mov dword ptr [rbp-10H], edx ;; bbWeight=1 PerfScore 1.25 G_M61787_IG03: mov gword ptr [rbp-18H], rsi lea rdx, [rbp-10H] mov rcx, rsi call CORINFO_HELP_MON_ENTER mov rcx, gword ptr [rsi+32] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+96] call qword ptr [rax+8]TextWriter:WriteLine():this lea rdx, [rbp-10H] mov rcx, rsi call CORINFO_HELP_MON_EXIT nop ;; bbWeight=1 PerfScore 13.75 G_M61787_IG04: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 G_M61787_IG05: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+40H] ;; bbWeight=0 PerfScore 0.00 G_M61787_IG06: lea rdx, [rbp-10H] mov rcx, gword ptr [rbp-18H] call CORINFO_HELP_MON_EXIT nop ;; bbWeight=0 PerfScore 0.00 G_M61787_IG07: add rsp, 40 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 119, prolog size 24, PerfScore 34.65, (MethodHash=ca690ea4) for method SyncTextWriter:WriteLine():this ; ============================================================ ; Assembly listing for method TextWriter:WriteLine():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M46204_IG01: ;; bbWeight=1 PerfScore 0.00 G_M46204_IG02: mov rdx, gword ptr [rcx+8] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+72] mov rax, qword ptr [rax+56] ;; bbWeight=1 PerfScore 8.00 G_M46204_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 18, prolog size 0, PerfScore 11.80, (MethodHash=9f404b83) for method TextWriter:WriteLine():this ; ============================================================ ; Assembly listing for method StreamWriter:Write(ref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 17, 14.25) ref -> rsi this class-hnd ; V01 arg1 [V01,T12] ( 5, 4 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V07 tmp5 [V07,T28] ( 3, 0.75) ref -> r14 class-hnd "Inline stloc first use temp" ; V08 tmp6 [V08 ] ( 3, 1.50) byref -> [rsp+0x30] must-init pinned "Inline stloc first use temp" ;* V09 tmp7 [V09 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ; V10 tmp8 [V10 ] ( 4, 1.75) byref -> [rsp+0x28] must-init pinned "Inline stloc first use temp" ; V11 tmp9 [V11,T19] ( 2, 2.25) long -> rbp "Inline stloc first use temp" ; V12 tmp10 [V12,T11] ( 4, 6.25) long -> rdi "Inline stloc first use temp" ; V13 tmp11 [V13,T05] ( 7, 9.50) int -> rbx "Inline stloc first use temp" ; V14 tmp12 [V14,T03] ( 7, 11.25) int -> r14 "Inline stloc first use temp" ; V15 tmp13 [V15,T01] ( 6, 12 ) int -> r13 "Inline stloc first use temp" ; V16 tmp14 [V16,T16] ( 2, 4 ) int -> rcx "Inline stloc first use temp" ; V17 tmp15 [V17,T07] ( 5, 8.25) int -> rbp "Inline stloc first use temp" ; V18 tmp16 [V18,T08] ( 4, 8 ) int -> rdx "Inline stloc first use temp" ; V19 tmp17 [V19,T02] ( 3, 12 ) ref -> rax class-hnd "impAppendStmt" ; V20 tmp18 [V20,T09] ( 2, 8 ) int -> rcx "Strict ordering of exceptions for Array store" ; V21 tmp19 [V21,T15] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V22 tmp20 [V22,T23] ( 2, 2 ) int -> rcx "Inline stloc first use temp" ;* V23 tmp21 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V24 tmp22 [V24,T14] ( 3, 4 ) int -> r13 "Inline return value spill temp" ; V25 tmp23 [V25,T04] ( 3, 10 ) int -> r12 "Inlining Arg" ; V26 tmp24 [V26,T10] ( 2, 8 ) long -> r8 "Inlining Arg" ;* V27 tmp25 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V28 tmp26 [V28 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V29 tmp27 [V29,T22] ( 2, 2 ) byref -> rdi V03._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ; V30 tmp28 [V30,T24] ( 2, 2 ) int -> rbx V03._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ; V31 tmp29 [V31,T20] ( 3, 2 ) byref -> rdi V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ; V32 tmp30 [V32,T21] ( 3, 2 ) int -> rbx V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V33 tmp31 [V33,T25] ( 2, 1 ) byref -> rdi V05._value(offs=0x00) P-INDEP "field V05._value (fldOffset=0x0)" ; V34 tmp32 [V34,T17] ( 4, 3.50) byref -> rdi V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V35 tmp33 [V35,T13] ( 6, 4.75) int -> rbx V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ;* V36 tmp34 [V36,T29] ( 0, 0 ) byref -> zero-ref V23._pointer(offs=0x00) P-INDEP "field V23._pointer (fldOffset=0x0)" ;* V37 tmp35 [V37 ] ( 0, 0 ) int -> zero-ref V23._length(offs=0x08) P-INDEP "field V23._length (fldOffset=0x8)" ; V38 tmp36 [V38,T26] ( 2, 1 ) long -> rdi "Cast away GC" ; V39 tmp37 [V39,T27] ( 2, 1 ) long -> rbp "Cast away GC" ; V40 cse0 [V40,T18] ( 4, 2.75) ref -> r14 "CSE - moderate" ; V41 cse1 [V41,T06] ( 6, 8.50) int -> r15 "CSE - aggressive" ; ; Lcl frame size = 56 G_M61250_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 xor rax, rax mov qword ptr [rsp+30H], rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 10.75 G_M61250_IG02: test rdx, rdx jne SHORT G_M61250_IG04 ;; bbWeight=1 PerfScore 1.25 G_M61250_IG03: xor rdi, rdi xor ebx, ebx jmp SHORT G_M61250_IG05 ;; bbWeight=0.50 PerfScore 1.25 G_M61250_IG04: lea rdi, bword ptr [rdx+16] mov ebx, dword ptr [rdx+8] ;; bbWeight=0.50 PerfScore 1.25 G_M61250_IG05: mov rcx, gword ptr [rsi+72] mov ecx, dword ptr [rcx+52] test ecx, 0xD1FFAB1E je G_M61250_IG24 ;; bbWeight=1 PerfScore 5.25 G_M61250_IG06: cmp ebx, 4 jg SHORT G_M61250_IG10 ;; bbWeight=1 PerfScore 1.25 G_M61250_IG07: mov ecx, dword ptr [rsi+84] sub ecx, dword ptr [rsi+80] cmp ecx, ebx jl SHORT G_M61250_IG10 xor ebp, ebp test ebx, ebx jle G_M61250_IG19 mov r14, gword ptr [rsi+64] ;; bbWeight=0.25 PerfScore 2.19 G_M61250_IG08: mov rax, r14 mov edx, dword ptr [rsi+80] lea ecx, [rdx+1] mov dword ptr [rsi+80], ecx movsxd rcx, ebp movzx rcx, word ptr [rdi+2*rcx] mov r15d, dword ptr [rax+8] cmp edx, r15d jae G_M61250_IG26 movsxd rdx, edx mov word ptr [rax+2*rdx+16], cx inc ebp cmp ebp, ebx jl SHORT G_M61250_IG08 ;; bbWeight=2 PerfScore 24.00 G_M61250_IG09: jmp G_M61250_IG19 ;; bbWeight=0.25 PerfScore 0.50 G_M61250_IG10: cmp byte ptr [rsi+91], 0 jne G_M61250_IG25 ;; bbWeight=0.25 PerfScore 0.75 G_M61250_IG11: mov r14, gword ptr [rsi+64] mov bword ptr [rsp+30H], rdi mov r15d, dword ptr [r14+8] cmp r15d, 0 jbe G_M61250_IG26 add r14, 16 mov bword ptr [rsp+28H], r14 mov rbp, bword ptr [rsp+28H] mov r14d, dword ptr [rsi+80] test ebx, ebx jle SHORT G_M61250_IG18 ;; bbWeight=0.25 PerfScore 2.94 G_M61250_IG12: cmp r15d, r14d jne SHORT G_M61250_IG14 ;; bbWeight=2 PerfScore 2.50 G_M61250_IG13: mov rcx, rsi xor edx, edx xor r8d, r8d call StreamWriter:Flush(bool,bool):this xor r14d, r14d ;; bbWeight=1 PerfScore 2.00 G_M61250_IG14: mov r12d, r15d sub r12d, r14d cmp r12d, ebx jle SHORT G_M61250_IG16 ;; bbWeight=2 PerfScore 3.50 G_M61250_IG15: mov r13d, ebx jmp SHORT G_M61250_IG17 ;; bbWeight=1 PerfScore 2.25 G_M61250_IG16: mov r13d, r12d ;; bbWeight=1 PerfScore 0.25 G_M61250_IG17: lea ecx, [r13+r13] movsxd r8, ecx movsxd rcx, r14d lea rcx, [rbp+2*rcx] test r8, r8 jl SHORT G_M61250_IG23 mov rdx, rdi call Buffer:Memmove(long,long,long) add dword ptr [rsi+80], r13d add r14d, r13d movsxd rcx, r13d lea rdi, [rdi+2*rcx] sub ebx, r13d test ebx, ebx jg SHORT G_M61250_IG12 ;; bbWeight=2 PerfScore 29.00 G_M61250_IG18: xor rcx, rcx mov bword ptr [rsp+28H], rcx mov bword ptr [rsp+30H], rcx ;; bbWeight=0.25 PerfScore 0.56 G_M61250_IG19: cmp byte ptr [rsi+88], 0 je SHORT G_M61250_IG21 ;; bbWeight=0.50 PerfScore 1.50 G_M61250_IG20: mov rcx, rsi mov edx, 1 xor r8d, r8d call StreamWriter:Flush(bool,bool):this ;; bbWeight=0.25 PerfScore 0.44 G_M61250_IG21: xor rax, rax mov bword ptr [rsp+30H], rax mov bword ptr [rsp+28H], rax ;; bbWeight=1 PerfScore 2.25 G_M61250_IG22: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M61250_IG23: call CORINFO_HELP_OVERFLOW ;; bbWeight=0 PerfScore 0.00 G_M61250_IG24: call StreamWriter:ThrowAsyncIOInProgress() int3 ;; bbWeight=0 PerfScore 0.00 G_M61250_IG25: mov rcx, rsi call StreamWriter:g__ThrowObjectDisposedException|75_0():this int3 ;; bbWeight=0 PerfScore 0.00 G_M61250_IG26: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 382, prolog size 31, PerfScore 139.08, (MethodHash=03d910bd) for method StreamWriter:Write(ref):this ; ============================================================ ; Assembly listing for method BenchmarkEnvironmentInfo:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 12, 12 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" ; V03 tmp2 [V03,T02] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" ; V04 tmp3 [V04,T03] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" ; V05 tmp4 [V05,T05] ( 2, 4 ) bool -> rax "Inlining Arg" ; V06 tmp5 [V06,T04] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" ; V07 tmp6 [V07,T06] ( 2, 4 ) bool -> rax "Inlining Arg" ; V08 tmp7 [V08,T07] ( 2, 4 ) bool -> rax "Inlining Arg" ; V09 tmp8 [V09,T08] ( 2, 4 ) bool -> rcx "Inlining Arg" ; V10 tmp9 [V10,T09] ( 2, 4 ) long -> rax "Inlining Arg" ; V11 tmp10 [V11,T10] ( 2, 4 ) bool -> rax "Inlining Arg" ; ; Lcl frame size = 32 G_M8277_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M8277_IG02: call RuntimeInformation:GetArchitecture():String lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF call RuntimeInformation:GetRuntimeVersion():String lea rcx, bword ptr [rsi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF call RuntimeInformation:GetConfiguration():String lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF call RuntimeInformation:HasRyuJit():bool movzx rax, al mov byte ptr [rsi+49], al call RuntimeInformation:GetJitInfo():String lea rcx, bword ptr [rsi+32] mov rdx, rax call CORINFO_HELP_ASSIGN_REF call GCSettings:get_IsServerGC():bool movzx rax, al mov byte ptr [rsi+50], al call GCSettings:GetGCLatencyMode():int test eax, eax setne al movzx rax, al mov byte ptr [rsi+51], al call Debugger:get_IsAttached():bool movzx rcx, al mov byte ptr [rsi+48], cl mov rcx, 0xD1FFAB1E mov edx, 384 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] mov qword ptr [rsi+40], rax call RuntimeInformation:get_IsRunningInContainer():bool movzx rax, al mov byte ptr [rsi+52], al ;; bbWeight=1 PerfScore 28.25 G_M8277_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 179, prolog size 5, PerfScore 49.40, (MethodHash=c366dfaa) for method BenchmarkEnvironmentInfo:.ctor():this ; ============================================================ ; Assembly listing for method RuntimeInformation:GetArchitecture():String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T01] ( 2, 2 ) int -> rsi ld-addr-op ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; ; Lcl frame size = 32 G_M6717_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M6717_IG02: call RuntimeInformation:GetCurrentPlatform():int mov esi, eax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], esi mov rcx, rax mov rax, 0xD1FFAB1E call gword ptr [rax]Enum:ToString():String:this nop ;; bbWeight=1 PerfScore 7.25 G_M6717_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 52, prolog size 5, PerfScore 15.45, (MethodHash=135be5c2) for method RuntimeInformation:GetArchitecture():String ; ============================================================ ; Assembly listing for method RuntimeInformation:GetCurrentPlatform():int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T00] ( 3, 3 ) int -> rax ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 32 G_M60504_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M60504_IG02: call RuntimeInformation:get_ProcessArchitecture():int cmp eax, 3 ja SHORT G_M60504_IG11 mov eax, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rax] lea rdx, G_M60504_IG02 add rcx, rdx jmp rcx ;; bbWeight=1 PerfScore 8.25 G_M60504_IG03: mov eax, 3 ;; bbWeight=0.50 PerfScore 0.13 G_M60504_IG04: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M60504_IG05: mov eax, 4 ;; bbWeight=0.50 PerfScore 0.13 G_M60504_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M60504_IG07: mov eax, 2 ;; bbWeight=0.50 PerfScore 0.13 G_M60504_IG08: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M60504_IG09: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M60504_IG10: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M60504_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call ArgumentOutOfRangeException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M60504_IG09 - G_M60504_IG02 dd G_M60504_IG07 - G_M60504_IG02 dd G_M60504_IG03 - G_M60504_IG02 dd G_M60504_IG05 - G_M60504_IG02 ; Total bytes of code 118, prolog size 5, PerfScore 25.30, (MethodHash=45b513a7) for method RuntimeInformation:GetCurrentPlatform():int ; ============================================================ ; Assembly listing for method RuntimeInformation:get_ProcessArchitecture():int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T00] ( 4, 3.50) int -> rax ; V01 loc1 [V01 ] ( 2, 1 ) struct (48) [rbp-0x30] do-not-enreg[XSF] addr-exposed ld-addr-op ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 3 ) int -> rax "dup spill" ;* V04 cse0 [V04,T02] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 80 G_M19375_IG01: push rbp sub rsp, 80 lea rbp, [rsp+50H] ;; bbWeight=1 PerfScore 1.75 G_M19375_IG02: mov rcx, 0xD1FFAB1E mov edx, 11 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov eax, dword ptr [rcx] cmp eax, -1 jne SHORT G_M19375_IG04 ;; bbWeight=1 PerfScore 5.00 G_M19375_IG03: lea rcx, [rbp-30H] call Kernel32:GetSystemInfo(byref) movzx rcx, word ptr [rbp-30H] call RuntimeInformation:Map(ushort):int mov rdx, 0xD1FFAB1E mov dword ptr [rdx], eax ;; bbWeight=0.50 PerfScore 2.38 G_M19375_IG04: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 83, prolog size 10, PerfScore 19.43, (MethodHash=a388b450) for method RuntimeInformation:get_ProcessArchitecture():int ; ============================================================ ; Assembly listing for method RuntimeInformation:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M44310_IG01: push rbp mov rbp, rsp ;; bbWeight=1 PerfScore 1.25 G_M44310_IG02: mov rax, 0xD1FFAB1E mov dword ptr [rax], -1 mov rax, 0xD1FFAB1E mov dword ptr [rax], -1 ;; bbWeight=1 PerfScore 2.50 G_M44310_IG03: pop rbp ret ;; bbWeight=1 PerfScore 1.50 ; Total bytes of code 38, prolog size 4, PerfScore 9.05, (MethodHash=cea752e9) for method RuntimeInformation:.cctor() ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(byref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 4 ) byref -> rsi ;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ; V02 loc1 [V02 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04 ] ( 3, 3 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "stub argument" ; V05 tmp2 [V05,T02] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V06 FramesRoot [V06,T00] ( 6, 6 ) long -> rdi "Pinvoke FrameListRoot" ; V07 PInvokeFrame [V07 ] ( 8, 8 ) blk (72) [rbp-0x90] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V08 tmp5 [V08,T03] ( 2, 4 ) long -> rcx "Cast away GC" ; ; Lcl frame size = 120 G_M34789_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] mov qword ptr [rbp-48H], r10 xor rdx, rdx mov qword ptr [rbp-40H], rdx mov rsi, rcx ;; bbWeight=1 PerfScore 11.25 G_M34789_IG02: lea rcx, [rbp-88H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rcx, rsp mov qword ptr [rbp-68H], rcx mov rcx, rbp mov qword ptr [rbp-58H], rcx lea rcx, bword ptr [rbp-88H] mov qword ptr [rdi+16], rcx mov bword ptr [rbp-40H], rsi mov rcx, qword ptr [rbp-48H] mov rcx, qword ptr [rcx+32] mov rax, qword ptr [rcx] mov rcx, rsi mov rdx, qword ptr [rbp-48H] mov qword ptr [rbp-78H], rdx lea rdx, G_M34789_IG04 mov qword ptr [rbp-60H], rdx mov byte ptr [rdi+12], 0 ;; bbWeight=1 PerfScore 17.25 G_M34789_IG03: call rax ;; bbWeight=1 PerfScore 3.00 G_M34789_IG04: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M34789_IG05 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M34789_IG05: mov rax, bword ptr [rbp-80H] mov qword ptr [rdi+16], rax ;; bbWeight=1 PerfScore 2.00 G_M34789_IG06: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 179, prolog size 34, PerfScore 64.40, (MethodHash=207e781a) for method ILStubClass:IL_STUB_PInvoke(byref) ; ============================================================ ; Assembly listing for method RuntimeInformation:Map(ushort):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> rcx ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 cse0 [V02,T01] ( 6, 4 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 0 G_M40131_IG01: ;; bbWeight=1 PerfScore 0.00 G_M40131_IG02: movzx rax, cx cmp eax, 5 ja SHORT G_M40131_IG04 ;; bbWeight=1 PerfScore 1.50 G_M40131_IG03: test eax, eax je SHORT G_M40131_IG10 cmp eax, 5 je SHORT G_M40131_IG06 jmp SHORT G_M40131_IG10 ;; bbWeight=0.50 PerfScore 2.25 G_M40131_IG04: cmp eax, 9 je SHORT G_M40131_IG08 cmp eax, 12 jne SHORT G_M40131_IG10 mov eax, 3 ;; bbWeight=0.50 PerfScore 1.38 G_M40131_IG05: ret ;; bbWeight=0.50 PerfScore 0.50 G_M40131_IG06: mov eax, 2 ;; bbWeight=0.50 PerfScore 0.13 G_M40131_IG07: ret ;; bbWeight=0.50 PerfScore 0.50 G_M40131_IG08: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M40131_IG09: ret ;; bbWeight=0.50 PerfScore 0.50 G_M40131_IG10: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M40131_IG11: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 50, prolog size 0, PerfScore 12.50, (MethodHash=a3c4633c) for method RuntimeInformation:Map(ushort):int ; ============================================================ ; Assembly listing for method Enum:ToString():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4.50) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdi class-hnd "non-inline candidate call" ; V03 tmp2 [V03,T02] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp3 [V04,T04] ( 3, 2.50) ref -> rax ; V05 tmp4 [V05,T03] ( 2, 4 ) long -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M10895_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M10895_IG02: mov rcx, rsi call Object:GetType():Type:this mov rdi, rax mov rcx, rsi call Enum:ToUInt64():long:this mov rdx, rax mov rcx, rdi call Enum:InternalFormat(RuntimeType,long):String test rax, rax jne SHORT G_M10895_IG05 ;; bbWeight=1 PerfScore 5.50 G_M10895_IG03: mov rcx, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M10895_IG04: add rsp, 40 pop rsi pop rdi jmp Enum:ValueToString():String:this ;; bbWeight=0.50 PerfScore 1.63 G_M10895_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 65, prolog size 6, PerfScore 17.38, (MethodHash=fe6cd570) for method Enum:ToString():String:this ; ============================================================ ; Assembly listing for method Enum:ToUInt64():long:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 5 ) ref -> rcx this class-hnd ; V01 loc0 [V01,T02] ( 12, 6.50) byref -> rsi ; V02 loc1 [V02,T05] ( 2, 2 ) ubyte -> rax ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T04] ( 3, 3 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V06 tmp3 [V06,T06] ( 2, 2 ) long -> rax ld-addr-op "Inlining Arg" ;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V09 tmp6 [V09,T07] ( 2, 2 ) long -> rax ld-addr-op "Inlining Arg" ; V10 tmp7 [V10,T00] ( 12, 13 ) long -> rax "Single return block return value" ; V11 tmp8 [V11,T09] ( 2, 0 ) ref -> rcx "argument with side effect" ; V12 tmp9 [V12,T10] ( 2, 0 ) ref -> rdx "argument with side effect" ; V13 rat0 [V13,T03] ( 3, 6 ) int -> rax "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 32 G_M57857_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M57857_IG02: cmp dword ptr [rcx], ecx lea rsi, bword ptr [rcx+8] call Enum:InternalGetCorElementType():ubyte:this add eax, -2 cmp eax, 23 ja G_M57857_IG15 mov ecx, eax lea rax, [reloc @RWD00] mov eax, dword ptr [rax+4*rcx] lea rdx, G_M57857_IG02 add rax, rdx jmp rax ;; bbWeight=1 PerfScore 11.00 G_M57857_IG03: movsx rcx, byte ptr [rsi] movsxd rax, ecx jmp SHORT G_M57857_IG14 ;; bbWeight=0.50 PerfScore 2.13 G_M57857_IG04: movzx rax, byte ptr [rsi] jmp SHORT G_M57857_IG14 ;; bbWeight=0.50 PerfScore 2.00 G_M57857_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST movzx rcx, byte ptr [rsi] mov byte ptr [rax+8], cl mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call Convert:ToUInt64(Object,IFormatProvider):long jmp SHORT G_M57857_IG14 ;; bbWeight=0.50 PerfScore 4.88 G_M57857_IG06: movsx rax, word ptr [rsi] movsxd rax, eax jmp SHORT G_M57857_IG14 ;; bbWeight=0.50 PerfScore 2.13 G_M57857_IG07: movzx rax, word ptr [rsi] jmp SHORT G_M57857_IG14 ;; bbWeight=0.50 PerfScore 2.00 G_M57857_IG08: mov eax, dword ptr [rsi] movsxd rax, eax jmp SHORT G_M57857_IG14 ;; bbWeight=0.50 PerfScore 2.13 G_M57857_IG09: mov eax, dword ptr [rsi] jmp SHORT G_M57857_IG14 ;; bbWeight=0.50 PerfScore 2.00 G_M57857_IG10: mov rax, qword ptr [rsi] jmp SHORT G_M57857_IG14 ;; bbWeight=0.50 PerfScore 2.00 G_M57857_IG11: mov rax, qword ptr [rsi] jmp SHORT G_M57857_IG14 ;; bbWeight=0.50 PerfScore 2.00 G_M57857_IG12: mov rax, qword ptr [rsi] jmp SHORT G_M57857_IG14 ;; bbWeight=0.50 PerfScore 2.00 G_M57857_IG13: mov rax, qword ptr [rsi] ;; bbWeight=0.50 PerfScore 1.00 G_M57857_IG14: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M57857_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xDC37 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M57857_IG05 - G_M57857_IG02 dd G_M57857_IG07 - G_M57857_IG02 dd G_M57857_IG03 - G_M57857_IG02 dd G_M57857_IG04 - G_M57857_IG02 dd G_M57857_IG06 - G_M57857_IG02 dd G_M57857_IG07 - G_M57857_IG02 dd G_M57857_IG08 - G_M57857_IG02 dd G_M57857_IG09 - G_M57857_IG02 dd G_M57857_IG10 - G_M57857_IG02 dd G_M57857_IG11 - G_M57857_IG02 dd G_M57857_IG09 - G_M57857_IG02 dd G_M57857_IG11 - G_M57857_IG02 dd G_M57857_IG15 - G_M57857_IG02 dd G_M57857_IG15 - G_M57857_IG02 dd G_M57857_IG15 - G_M57857_IG02 dd G_M57857_IG15 - G_M57857_IG02 dd G_M57857_IG15 - G_M57857_IG02 dd G_M57857_IG15 - G_M57857_IG02 dd G_M57857_IG15 - G_M57857_IG02 dd G_M57857_IG15 - G_M57857_IG02 dd G_M57857_IG15 - G_M57857_IG02 dd G_M57857_IG15 - G_M57857_IG02 dd G_M57857_IG12 - G_M57857_IG02 dd G_M57857_IG13 - G_M57857_IG02 ; Total bytes of code 227, prolog size 5, PerfScore 60.95, (MethodHash=27761dfe) for method Enum:ToUInt64():long:this ; ============================================================ ; Assembly listing for method Enum:InternalFormat(RuntimeType,long):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 3.50) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 4, 3 ) long -> rdi ; V02 loc0 [V02,T02] ( 4, 3 ) ref -> rdx class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M45339_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 2.75 G_M45339_IG02: mov rcx, rsi mov edx, 1 call Enum:GetEnumInfo(RuntimeType,bool):EnumInfo mov rdx, rax cmp byte ptr [rdx+24], 0 jne SHORT G_M45339_IG05 ;; bbWeight=1 PerfScore 4.75 G_M45339_IG03: mov rcx, rdx mov rdx, rdi ;; bbWeight=0.50 PerfScore 0.25 G_M45339_IG04: add rsp, 40 pop rsi pop rdi jmp Enum:GetEnumName(EnumInfo,long):String ;; bbWeight=0.50 PerfScore 1.63 G_M45339_IG05: mov rcx, rsi mov r8, rdi ;; bbWeight=0.50 PerfScore 0.25 G_M45339_IG06: add rsp, 40 pop rsi pop rdi jmp Enum:InternalFlagsFormat(RuntimeType,EnumInfo,long):String ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 68, prolog size 6, PerfScore 18.05, (MethodHash=ad044ee4) for method Enum:InternalFormat(RuntimeType,long):String ; ============================================================ ; Assembly listing for method Enum:GetEnumInfo(RuntimeType,bool):EnumInfo ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 9, 5.75) ref -> [rbp+0x10] class-hnd ; V01 arg1 [V01,T03] ( 4, 3 ) bool -> rdi ; V02 loc0 [V02,T04] ( 6, 4.50) ref -> r14 class-hnd ; V03 loc1 [V03 ] ( 3, 1.50) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V04 loc2 [V04 ] ( 3, 1.50) ref -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V05 loc3 [V05 ] ( 3, 1.50) struct ( 8) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V06 loc4 [V06,T31] ( 2, 1 ) bool -> rsi ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1" ; V09 tmp2 [V09,T01] ( 5, 6.74) ref -> r14 class-hnd "spilling QMark2" ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V11 tmp4 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref ;* V13 tmp6 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ;* V17 tmp10 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ; V18 tmp11 [V18,T19] ( 3, 1.50) int -> r9 ; V19 tmp12 [V19,T02] ( 5, 5 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V20 tmp13 [V20,T10] ( 3, 2 ) ref -> r14 class-hnd "Inline return value spill temp" ;* V21 tmp14 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" ; V22 tmp15 [V22,T09] ( 3, 2.50) ref -> rcx ; V23 tmp16 [V23,T11] ( 3, 2 ) ref -> rcx class-hnd "Inline return value spill temp" ; V24 tmp17 [V24,T29] ( 2, 1 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V25 tmp18 [V25,T07] ( 2, 4 ) long -> rcx ld-addr-op "Inlining Arg" ;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V27 tmp20 [V27,T16] ( 2, 2 ) long -> rcx "Inlining Arg" ;* V28 tmp21 [V28 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V29 tmp22 [V29,T12] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V32 tmp25 [V32 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V33 tmp26 [V33,T13] ( 2, 2 ) ref -> rdx class-hnd "Inlining Arg" ; V34 tmp27 [V34,T14] ( 2, 2 ) ref -> rdi class-hnd "Inlining Arg" ; V35 tmp28 [V35,T18] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ; V36 tmp29 [V36,T28] ( 3, 1 ) ref -> rax class-hnd "Inline stloc first use temp" ; V37 tmp30 [V37,T17] ( 2, 2 ) long -> rcx ld-addr-op "Inlining Arg" ;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V39 tmp32 [V39,T32] ( 2, 1 ) long -> rcx "Inlining Arg" ;* V40 tmp33 [V40 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V41 tmp34 [V41,T30] ( 2, 1 ) byref -> rcx "Inlining Arg" ; V42 tmp35 [V42,T06] ( 2, 4 ) ref -> rax "Single return block return value" ; V43 FramesRoot [V43,T05] ( 6, 4 ) long -> rbx "Pinvoke FrameListRoot" ; V44 PInvokeFrame [V44 ] ( 8, 6 ) blk (72) [rbp-0xA8] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V45 tmp38 [V45 ] ( 3, 1.50) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed V05.m_type(offs=0x00) P-DEP "field V05.m_type (fldOffset=0x0)" ; V46 tmp39 [V46,T33] ( 2, 1 ) long -> r14 V10._ptr(offs=0x00) P-INDEP "field V10._ptr (fldOffset=0x0)" ; V47 tmp40 [V47,T34] ( 2, 1 ) long -> rax V10._handle(offs=0x08) P-INDEP "field V10._handle (fldOffset=0x8)" ; V48 tmp41 [V48,T35] ( 2, 1 ) long -> rdx V11._ptr(offs=0x00) P-INDEP "field V11._ptr (fldOffset=0x0)" ; V49 tmp42 [V49,T20] ( 3, 1.50) long -> r14 V12._ptr(offs=0x00) P-INDEP "field V12._ptr (fldOffset=0x0)" ; V50 tmp43 [V50,T21] ( 3, 1.50) long -> rax V12._handle(offs=0x08) P-INDEP "field V12._handle (fldOffset=0x8)" ; V51 tmp44 [V51,T22] ( 3, 1.50) long -> rdx V13._ptr(offs=0x00) P-INDEP "field V13._ptr (fldOffset=0x0)" ; V52 tmp45 [V52,T23] ( 3, 1.50) long -> r8 V14._ptr(offs=0x00) P-INDEP "field V14._ptr (fldOffset=0x0)" ; V53 tmp46 [V53,T24] ( 3, 1.50) long -> r14 V15._ptr(offs=0x00) P-INDEP "field V15._ptr (fldOffset=0x0)" ; V54 tmp47 [V54,T25] ( 3, 1.50) long -> rax V15._handle(offs=0x08) P-INDEP "field V15._handle (fldOffset=0x8)" ; V55 tmp48 [V55,T26] ( 3, 1.50) long -> rdx V16._ptr(offs=0x00) P-INDEP "field V16._ptr (fldOffset=0x0)" ; V56 tmp49 [V56,T27] ( 3, 1.50) long -> r8 V17._ptr(offs=0x00) P-INDEP "field V17._ptr (fldOffset=0x0)" ;* V57 tmp50 [V57,T38] ( 0, 0 ) ref -> zero-ref V30.m_type(offs=0x00) P-INDEP "field V30.m_type (fldOffset=0x0)" ; V58 tmp51 [V58,T36] ( 2, 1 ) long -> rdx V31._ptr(offs=0x00) P-INDEP "field V31._ptr (fldOffset=0x0)" ; V59 tmp52 [V59,T37] ( 2, 1 ) long -> r8 V32._ptr(offs=0x00) P-INDEP "field V32._ptr (fldOffset=0x0)" ; V60 tmp53 [V60 ] ( 2, 2 ) struct (16) [rbp-0x60] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V61 tmp54 [V61,T08] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V62 tmp55 [V62,T15] ( 2, 2 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 152 G_M38616_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 152 lea rbp, [rsp+D0H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 xor rsi, rsi mov qword ptr [rbp-40H], rsi mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 11.83 G_M38616_IG02: lea rcx, [rbp-A0H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rbx, rax mov rcx, rsp mov qword ptr [rbp-80H], rcx mov rcx, rbp mov qword ptr [rbp-70H], rcx mov rcx, qword ptr [rsi+16] test rcx, rcx je SHORT G_M38616_IG04 ;; bbWeight=1 PerfScore 7.75 G_M38616_IG03: mov rcx, qword ptr [rsi+16] mov rcx, gword ptr [rcx] jmp SHORT G_M38616_IG05 ;; bbWeight=0.50 PerfScore 3.00 G_M38616_IG04: xor rcx, rcx ;; bbWeight=0.50 PerfScore 0.13 G_M38616_IG05: test rcx, rcx jne SHORT G_M38616_IG07 ;; bbWeight=1 PerfScore 1.25 G_M38616_IG06: xor r14, r14 jmp SHORT G_M38616_IG08 ;; bbWeight=0.50 PerfScore 1.13 G_M38616_IG07: mov r14, gword ptr [rcx+120] ;; bbWeight=0.50 PerfScore 1.00 G_M38616_IG08: test r14, r14 je SHORT G_M38616_IG11 ;; bbWeight=1 PerfScore 1.25 G_M38616_IG09: mov rcx, 0xD1FFAB1E cmp qword ptr [r14], rcx je SHORT G_M38616_IG11 ;; bbWeight=0.25 PerfScore 0.81 G_M38616_IG10: xor r14, r14 ;; bbWeight=0.12 PerfScore 0.03 G_M38616_IG11: test r14, r14 je SHORT G_M38616_IG13 ;; bbWeight=1 PerfScore 1.25 G_M38616_IG12: test dil, dil je G_M38616_IG24 cmp gword ptr [r14+16], 0 jne G_M38616_IG24 ;; bbWeight=0.50 PerfScore 2.13 G_M38616_IG13: xor rcx, rcx mov gword ptr [rbp-40H], rcx mov gword ptr [rbp-48H], rcx mov gword ptr [rbp+10H], rsi mov gword ptr [rbp-50H], rsi lea r14, bword ptr [rbp-50H] lea rcx, bword ptr [rbp-50H] call RuntimeTypeHandle:get_Value():long:this lea rdx, [rbp-40H] lea r8, [rbp-48H] test dil, dil jne SHORT G_M38616_IG14 xor r9d, r9d jmp SHORT G_M38616_IG15 ;; bbWeight=0.50 PerfScore 5.38 G_M38616_IG14: mov r9d, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M38616_IG15: lea rcx, bword ptr [rbp-60H] mov qword ptr [rcx], r14 mov qword ptr [rcx+8], rax lea rcx, bword ptr [rbp-60H] mov rax, 0xD1FFAB1E mov qword ptr [rbp-90H], rax lea rax, G_M38616_IG18 mov qword ptr [rbp-78H], rax lea rax, bword ptr [rbp-A0H] mov qword ptr [rbx+16], rax mov byte ptr [rbx+12], 0 ;; bbWeight=0.50 PerfScore 4.38 G_M38616_IG16: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M38616_IG17: call qword ptr [rax]Enum:GetEnumValuesAndNames(QCallTypeHandle,ObjectHandleOnStack,ObjectHandleOnStack,int) ;; bbWeight=0.50 PerfScore 1.50 G_M38616_IG18: mov byte ptr [rbx+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M38616_IG19 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M38616_IG19: mov rcx, bword ptr [rbp-98H] mov qword ptr [rbx+16], rcx mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, gword ptr [rbp+10H] xor r8d, r8d mov rax, 0xD1FFAB1E call qword ptr [rax]RuntimeType:IsDefined(Type,bool):bool:this mov esi, eax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rdx, gword ptr [rbp-40H] mov rdi, gword ptr [rbp-48H] mov byte ptr [r14+24], sil lea rcx, bword ptr [r14+8] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r14+16] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rsi, gword ptr [rbp+10H] mov rcx, qword ptr [rsi+16] test rcx, rcx je SHORT G_M38616_IG22 ;; bbWeight=0.50 PerfScore 10.13 G_M38616_IG20: mov rcx, qword ptr [rsi+16] mov rax, gword ptr [rcx] test rax, rax je SHORT G_M38616_IG22 ;; bbWeight=0.25 PerfScore 1.31 G_M38616_IG21: jmp SHORT G_M38616_IG23 ;; bbWeight=0.50 PerfScore 1.00 G_M38616_IG22: mov rcx, rsi call RuntimeType:InitializeCache():RuntimeTypeCache:this ;; bbWeight=0.50 PerfScore 0.63 G_M38616_IG23: lea rcx, bword ptr [rax+120] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 0.88 G_M38616_IG24: mov rax, r14 ;; bbWeight=1 PerfScore 0.25 G_M38616_IG25: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 485, prolog size 42, PerfScore 115.19, (MethodHash=f3936927) for method Enum:GetEnumInfo(RuntimeType,bool):EnumInfo ; ============================================================ ; Assembly listing for method RuntimeType:IsDefined(Type,bool):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rdx class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) bool -> rdi ; V03 loc0 [V03,T05] ( 3, 3 ) ref -> rdx class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 4 ) ref -> rax "CASTCLASS eval op1" ; V06 tmp2 [V06,T01] ( 5, 6.74) ref -> rdx class-hnd "spilling QMark2" ; V07 tmp3 [V07,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp4 [V08,T07] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> rcx "argument with side effect" ; V11 tmp7 [V11,T10] ( 2, 0 ) ref -> rdi "argument with side effect" ; V12 tmp8 [V12,T11] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M63436_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov edi, r8d ;; bbWeight=1 PerfScore 2.75 G_M63436_IG02: test rdx, rdx je SHORT G_M63436_IG09 ;; bbWeight=1 PerfScore 1.25 G_M63436_IG03: mov rcx, rdx mov rax, qword ptr [rdx] mov rax, qword ptr [rax+88] call gword ptr [rax+8]Type:get_UnderlyingSystemType():Type:this mov rdx, rax test rdx, rdx je SHORT G_M63436_IG06 ;; bbWeight=1 PerfScore 8.75 G_M63436_IG04: mov r8, 0xD1FFAB1E cmp qword ptr [rdx], r8 je SHORT G_M63436_IG06 ;; bbWeight=0.25 PerfScore 0.81 G_M63436_IG05: xor rdx, rdx ;; bbWeight=0.12 PerfScore 0.03 G_M63436_IG06: test rdx, rdx je SHORT G_M63436_IG10 ;; bbWeight=1 PerfScore 1.25 G_M63436_IG07: movzx r8, dil mov rcx, rsi ;; bbWeight=1 PerfScore 0.50 G_M63436_IG08: add rsp, 40 pop rsi pop rdi jmp CustomAttribute:IsDefined(RuntimeType,RuntimeType,bool):bool ;; bbWeight=1 PerfScore 3.25 G_M63436_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 245 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M63436_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x4B99 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 245 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 229, prolog size 6, PerfScore 41.49, (MethodHash=c8350833) for method RuntimeType:IsDefined(Type,bool):bool:this ; ============================================================ ; Assembly listing for method RuntimeType:get_UnderlyingSystemType():Type:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M4850_IG01: ;; bbWeight=1 PerfScore 0.00 G_M4850_IG02: mov rax, rcx ;; bbWeight=1 PerfScore 0.25 G_M4850_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 1.65, (MethodHash=51aded0d) for method RuntimeType:get_UnderlyingSystemType():Type:this ; ============================================================ ; Assembly listing for method CustomAttribute:IsDefined(RuntimeType,RuntimeType,bool):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 16, 31 ) ref -> rsi class-hnd ; V01 arg1 [V01,T05] ( 5, 7 ) ref -> rdi class-hnd ; V02 arg2 [V02,T07] ( 3, 2.50) bool -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T09] ( 2, 2 ) ref -> rbp class-hnd "impAppendStmt" ; V05 tmp2 [V05,T10] ( 2, 2 ) ref -> rax "CASTCLASS eval op1" ; V06 tmp3 [V06,T08] ( 5, 3.74) ref -> rsi class-hnd "spilling QMark2" ; V07 tmp4 [V07,T02] ( 2, 16 ) ref -> rbp class-hnd "impAppendStmt" ; V08 tmp5 [V08,T03] ( 2, 16 ) ref -> rax "CASTCLASS eval op1" ; V09 tmp6 [V09,T01] ( 5, 26.96) ref -> rsi class-hnd "spilling QMark2" ; V10 tmp7 [V10,T11] ( 2, 2 ) int -> rdx "Inlining Arg" ; V11 tmp8 [V11,T04] ( 2, 16 ) int -> rdx "argument with side effect" ; V12 cse0 [V12,T06] ( 3, 5 ) int -> rbx "CSE - aggressive" ; ; Lcl frame size = 40 G_M463_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 5.00 G_M463_IG02: cmp dword ptr [rsi], esi mov rcx, rsi call RuntimeTypeHandle:GetElementType(RuntimeType):RuntimeType test rax, rax jne G_M463_IG15 ;; bbWeight=1 PerfScore 4.50 G_M463_IG03: mov rcx, rsi mov rdx, rdi call PseudoCustomAttribute:IsDefined(RuntimeType,RuntimeType):bool test eax, eax jne G_M463_IG17 ;; bbWeight=0.50 PerfScore 1.38 G_M463_IG04: mov rcx, rsi call RuntimeTypeHandle:GetModule(RuntimeType):RuntimeModule mov rbp, rax mov rcx, rsi call RuntimeTypeHandle:GetToken(RuntimeType):int mov edx, eax xor ecx, ecx mov dword ptr [rsp+20H], ecx mov rcx, rbp mov r8, rdi xor r9d, r9d call CustomAttribute:IsCustomAttributeDefined(RuntimeModule,int,RuntimeType,int,bool):bool test eax, eax jne G_M463_IG17 ;; bbWeight=0.50 PerfScore 3.63 G_M463_IG05: movzx rbx, bl test ebx, ebx je SHORT G_M463_IG15 ;; bbWeight=0.50 PerfScore 0.75 G_M463_IG06: mov rcx, rsi call RuntimeType:GetBaseType():RuntimeType:this mov rsi, rax test rsi, rsi je SHORT G_M463_IG09 ;; bbWeight=0.50 PerfScore 1.38 G_M463_IG07: mov rax, 0xD1FFAB1E cmp qword ptr [rsi], rax je SHORT G_M463_IG09 ;; bbWeight=0.25 PerfScore 0.81 G_M463_IG08: xor rsi, rsi ;; bbWeight=0.12 PerfScore 0.03 G_M463_IG09: test rsi, rsi je SHORT G_M463_IG15 ;; bbWeight=0.50 PerfScore 0.63 G_M463_IG10: cmp dword ptr [rsi], esi mov rcx, rsi call RuntimeTypeHandle:GetModule(RuntimeType):RuntimeModule mov rbp, rax mov rcx, rsi call RuntimeTypeHandle:GetToken(RuntimeType):int mov edx, eax mov dword ptr [rsp+20H], ebx mov rcx, rbp mov r8, rdi xor r9d, r9d call CustomAttribute:IsCustomAttributeDefined(RuntimeModule,int,RuntimeType,int,bool):bool test eax, eax jne SHORT G_M463_IG17 ;; bbWeight=4 PerfScore 36.00 G_M463_IG11: mov rcx, rsi call RuntimeType:GetBaseType():RuntimeType:this mov rsi, rax test rsi, rsi je SHORT G_M463_IG14 ;; bbWeight=4 PerfScore 11.00 G_M463_IG12: mov rax, 0xD1FFAB1E cmp qword ptr [rsi], rax je SHORT G_M463_IG14 ;; bbWeight=1 PerfScore 3.25 G_M463_IG13: xor rsi, rsi ;; bbWeight=0.48 PerfScore 0.12 G_M463_IG14: test rsi, rsi jne SHORT G_M463_IG10 ;; bbWeight=4 PerfScore 5.00 G_M463_IG15: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M463_IG16: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M463_IG17: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M463_IG18: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 257, prolog size 8, PerfScore 102.66, (MethodHash=c5bdfe30) for method CustomAttribute:IsDefined(RuntimeType,RuntimeType,bool):bool ; ============================================================ ; Assembly listing for method PseudoCustomAttribute:IsDefined(RuntimeType,RuntimeType):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 6, 4 ) ref -> rdi class-hnd ; V01 arg1 [V01,T00] ( 7, 5 ) ref -> rsi class-hnd ; V02 loc0 [V02,T02] ( 4, 3 ) bool -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 2 ) int -> rcx ; V05 tmp2 [V05,T03] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ; V06 tmp3 [V06,T05] ( 2, 2 ) byref -> rax "Inlining Arg" ; ; Lcl frame size = 32 G_M13365_IG01: push rdi push rsi push rbx sub rsp, 32 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 3.75 G_M13365_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi je SHORT G_M13365_IG04 ;; bbWeight=1 PerfScore 2.50 G_M13365_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi sete cl movzx rcx, cl jmp SHORT G_M13365_IG05 ;; bbWeight=0.50 PerfScore 2.38 G_M13365_IG04: mov ecx, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M13365_IG05: movzx rbx, cl test ebx, ebx jne SHORT G_M13365_IG08 ;; bbWeight=1 PerfScore 1.50 G_M13365_IG06: mov rcx, 0xD1FFAB1E mov edx, 0x5B0 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] cmp dword ptr [rcx], ecx mov rdx, rsi call Dictionary`2:FindValue(__Canon):byref:this test rax, rax jne SHORT G_M13365_IG08 xor eax, eax ;; bbWeight=0.50 PerfScore 4.25 G_M13365_IG07: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M13365_IG08: test ebx, ebx jne SHORT G_M13365_IG09 mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi jne SHORT G_M13365_IG11 ;; bbWeight=0.50 PerfScore 1.88 G_M13365_IG09: cmp dword ptr [rdi], edi mov rcx, rdi call RuntimeTypeHandle:GetAttributes(RuntimeType):int test eax, 0x2000 je SHORT G_M13365_IG11 mov eax, 1 ;; bbWeight=0.50 PerfScore 2.38 G_M13365_IG10: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M13365_IG11: test ebx, ebx jne SHORT G_M13365_IG12 mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi jne SHORT G_M13365_IG14 ;; bbWeight=0.50 PerfScore 1.88 G_M13365_IG12: cmp dword ptr [rdi], edi mov rcx, rdi call RuntimeTypeHandle:GetAttributes(RuntimeType):int test eax, 0x1000 je SHORT G_M13365_IG14 mov eax, 1 ;; bbWeight=0.50 PerfScore 2.38 G_M13365_IG13: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M13365_IG14: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M13365_IG15: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 247, prolog size 7, PerfScore 53.33, (MethodHash=90e2cbca) for method PseudoCustomAttribute:IsDefined(RuntimeType,RuntimeType):bool ; ============================================================ ; Assembly listing for method PseudoCustomAttribute:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M41361_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M41361_IG02: call PseudoCustomAttribute:CreatePseudoCustomAttributeDictionary():Dictionary`2 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 2.75 G_M41361_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 40, prolog size 10, PerfScore 10.50, (MethodHash=3a115e6e) for method PseudoCustomAttribute:.cctor() ; ============================================================ ; Assembly listing for method PseudoCustomAttribute:CreatePseudoCustomAttributeDictionary():Dictionary`2 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V01 loc1 [V01,T04] ( 3, 6 ) ref -> rdi class-hnd exact ; V02 loc2 [V02,T06] ( 2, 5 ) ref -> rsi class-hnd exact ; V03 loc3 [V03,T02] ( 5, 17 ) int -> rbx ;* V04 loc4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T01] ( 13, 26 ) ref -> rsi class-hnd exact "dup spill" ; V07 tmp2 [V07,T05] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V08 tmp3 [V08,T03] ( 3, 16.96) ref -> rdx "CASTCLASS eval op1" ; V09 tmp4 [V09,T07] ( 3, 4.96) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V10 tmp5 [V10,T00] ( 6, 34.96) ref -> r8 class-hnd "spilling QMark2" ;* V11 tmp6 [V11,T19] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V12 tmp7 [V12 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; V13 tmp8 [V13,T08] ( 2, 4 ) ref -> r8 "argument with side effect" ; V14 tmp9 [V14,T09] ( 2, 4 ) ref -> r8 "argument with side effect" ; V15 tmp10 [V15,T10] ( 2, 4 ) ref -> r8 "argument with side effect" ; V16 tmp11 [V16,T11] ( 2, 4 ) ref -> r8 "argument with side effect" ; V17 tmp12 [V17,T12] ( 2, 4 ) ref -> r8 "argument with side effect" ; V18 tmp13 [V18,T13] ( 2, 4 ) ref -> r8 "argument with side effect" ; V19 tmp14 [V19,T14] ( 2, 4 ) ref -> r8 "argument with side effect" ; V20 tmp15 [V20,T15] ( 2, 4 ) ref -> r8 "argument with side effect" ; V21 tmp16 [V21,T16] ( 2, 4 ) ref -> r8 "argument with side effect" ; V22 tmp17 [V22,T17] ( 2, 4 ) ref -> r8 "argument with side effect" ; V23 tmp18 [V23,T18] ( 2, 4 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 32 G_M29997_IG01: push rdi push rsi push rbx sub rsp, 32 ;; bbWeight=1 PerfScore 3.25 G_M29997_IG02: mov rcx, 0xD1FFAB1E mov edx, 11 call CORINFO_HELP_NEWARR_1_OBJ mov rsi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, rsi xor edx, edx call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, rsi mov edx, 1 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, rsi mov edx, 2 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, rsi mov edx, 3 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, rsi mov edx, 4 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, rsi mov edx, 5 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, rsi mov edx, 6 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, rsi mov edx, 7 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, rsi mov edx, 8 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, rsi mov edx, 9 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 32.00 G_M29997_IG03: call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, rsi mov edx, 10 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov edx, 11 xor r8, r8 call Dictionary`2:.ctor(int,IEqualityComparer`1):this xor ebx, ebx ;; bbWeight=1 PerfScore 6.25 G_M29997_IG04: movsxd rcx, ebx mov rdx, gword ptr [rsi+8*rcx+16] mov r8, rdx test r8, r8 je SHORT G_M29997_IG07 ;; bbWeight=4 PerfScore 15.00 G_M29997_IG05: mov rcx, 0xD1FFAB1E cmp qword ptr [r8], rcx je SHORT G_M29997_IG07 ;; bbWeight=1 PerfScore 3.25 G_M29997_IG06: call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov r8, rax ;; bbWeight=0.48 PerfScore 0.60 G_M29997_IG07: mov rcx, rdi mov rdx, r8 mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this inc ebx cmp ebx, 11 jl SHORT G_M29997_IG04 ;; bbWeight=4 PerfScore 13.00 G_M29997_IG08: mov rax, rdi ;; bbWeight=1 PerfScore 0.25 G_M29997_IG09: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 478, prolog size 7, PerfScore 124.15, (MethodHash=abf68ad2) for method PseudoCustomAttribute:CreatePseudoCustomAttributeDictionary():Dictionary`2 ; ============================================================ ; Assembly listing for method CastHelpers:StelemRef_Helper(byref,long,Object) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T08] ( 4, 3 ) byref -> rax ; V01 arg1 [V01,T05] ( 5, 4.50) long -> rdx ; V02 arg2 [V02,T06] ( 5, 4 ) ref -> r8 class-hnd ;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 3, 8 ) long -> r9 "impAppendStmt" ; V06 tmp2 [V06,T11] ( 2, 4 ) long -> r9 "Inlining Arg" ;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V08 tmp4 [V08,T12] ( 2, 4 ) long -> r10 "NewObj constructor temp" ; V09 tmp5 [V09,T14] ( 3, 2 ) int -> rcx "Inline return value spill temp" ; V10 tmp6 [V10,T07] ( 4, 6 ) byref -> r11 "Inline stloc first use temp" ; V11 tmp7 [V11,T04] ( 4, 7 ) int -> rcx "Inline stloc first use temp" ; V12 tmp8 [V12,T00] ( 5, 9 ) int -> r10 "Inline stloc first use temp" ; V13 tmp9 [V13,T03] ( 5, 7.25) byref -> rsi "Inline stloc first use temp" ; V14 tmp10 [V14,T01] ( 5, 8.25) int -> rdi "Inline stloc first use temp" ; V15 tmp11 [V15,T13] ( 2, 4 ) long -> rbx "Inline stloc first use temp" ; V16 tmp12 [V16,T09] ( 5, 4.50) long -> rbx "Inline stloc first use temp" ; V17 tmp13 [V17,T10] ( 2, 4 ) ref -> r11 class-hnd "Inlining Arg" ; V18 tmp14 [V18,T15] ( 2, 2 ) int -> rcx "Inline stloc first use temp" ; V19 tmp15 [V19,T16] ( 2, 2 ) long -> r10 "Inline stloc first use temp" ;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V22 tmp18 [V22 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; ; Lcl frame size = 32 G_M11050_IG01: push rdi push rsi push rbx sub rsp, 32 mov rax, rcx ;; bbWeight=1 PerfScore 3.50 G_M11050_IG02: mov r9, qword ptr [r8] mov r10, rdx mov rcx, 0xD1FFAB1E mov r11, gword ptr [rcx] add r11, 16 mov ecx, dword ptr [r11] mov rsi, r9 rol rsi, 32 xor r10, rsi mov rsi, 0xD1FFAB1E imul r10, rsi shr r10, cl mov ecx, r10d xor r10d, r10d ;; bbWeight=1 PerfScore 14.00 G_M11050_IG03: lea esi, [rcx+1] movsxd rsi, esi lea rsi, [rsi+2*rsi] lea rsi, bword ptr [r11+8*rsi] mov edi, dword ptr [rsi] mov rbx, qword ptr [rsi+8] and edi, -2 cmp rbx, r9 jne SHORT G_M11050_IG05 ;; bbWeight=2 PerfScore 14.50 G_M11050_IG04: mov rbx, qword ptr [rsi+16] xor rbx, rdx cmp rbx, 1 jbe SHORT G_M11050_IG07 ;; bbWeight=1 PerfScore 3.50 G_M11050_IG05: test edi, edi je SHORT G_M11050_IG09 inc r10d add ecx, r10d and ecx, dword ptr [r11+4] cmp r10d, 8 jl SHORT G_M11050_IG03 ;; bbWeight=2 PerfScore 10.00 G_M11050_IG06: jmp SHORT G_M11050_IG09 ;; bbWeight=0.25 PerfScore 0.50 G_M11050_IG07: cmp edi, dword ptr [rsi] jne SHORT G_M11050_IG09 ;; bbWeight=0.25 PerfScore 0.75 G_M11050_IG08: mov rcx, rbx shr rcx, 32 jne SHORT G_M11050_IG15 mov ecx, ebx jmp SHORT G_M11050_IG10 ;; bbWeight=0.50 PerfScore 2.75 G_M11050_IG09: mov ecx, 2 ;; bbWeight=0.50 PerfScore 0.13 G_M11050_IG10: cmp ecx, 1 jne SHORT G_M11050_IG13 ;; bbWeight=1 PerfScore 1.25 G_M11050_IG11: mov rcx, rax mov rdx, r8 call CastHelpers:WriteBarrier(byref,Object) nop ;; bbWeight=0.50 PerfScore 0.88 G_M11050_IG12: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M11050_IG13: mov rcx, rax call CastHelpers:StelemRef_Helper_NoCacheLookup(byref,long,Object) nop ;; bbWeight=0.50 PerfScore 0.75 G_M11050_IG14: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M11050_IG15: call CORINFO_HELP_OVERFLOW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 202, prolog size 10, PerfScore 75.45, (MethodHash=3269d4d5) for method CastHelpers:StelemRef_Helper(byref,long,Object) ; ============================================================ ; Assembly listing for method CastHelpers:StelemRef_Helper_NoCacheLookup(byref,long,Object) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) byref -> rsi ; V01 arg1 [V01,T02] ( 3, 3 ) long -> rdx ; V02 arg2 [V02,T00] ( 6, 6 ) ref -> rax class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 32 G_M46042_IG01: push rsi sub rsp, 32 mov rsi, rcx mov rax, r8 ;; bbWeight=1 PerfScore 1.75 G_M46042_IG02: mov rcx, rdx mov rdx, rax call CastHelpers:IsInstanceOfAny_NoCacheLookup(long,Object):Object test rax, rax je SHORT G_M46042_IG04 mov rcx, rsi mov rdx, rax ;; bbWeight=1 PerfScore 3.25 G_M46042_IG03: add rsp, 32 pop rsi jmp CastHelpers:WriteBarrier(byref,Object) ;; bbWeight=1 PerfScore 2.75 G_M46042_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call ArrayTypeMismatchException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 78, prolog size 11, PerfScore 15.55, (MethodHash=fd6b4c25) for method CastHelpers:StelemRef_Helper_NoCacheLookup(byref,long,Object) ; ============================================================ ; Assembly listing for method RuntimeType:GetHashCode():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M51193_IG01: ;; bbWeight=1 PerfScore 0.00 G_M51193_IG02: jmp RuntimeHelpers:GetHashCode(Object):int ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 5, prolog size 0, PerfScore 2.50, (MethodHash=bc263806) for method RuntimeType:GetHashCode():int:this ; ============================================================ ; Assembly listing for method EqualityComparer`1:get_Default():EqualityComparer`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M59161_IG01: sub rsp, 40 mov qword ptr [rsp+20H], rcx ;; bbWeight=1 PerfScore 1.25 G_M59161_IG02: call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov rax, gword ptr [rax] ;; bbWeight=1 PerfScore 3.00 G_M59161_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 22, prolog size 9, PerfScore 7.70, (MethodHash=0a0918e6) for method EqualityComparer`1:get_Default():EqualityComparer`1 ; ============================================================ ; Assembly listing for method EqualityComparer`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00 ] ( 1, 1 ) long -> [rbp+0x10] ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[SB] must-init "struct address for call/obj" ; V03 tmp2 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init "argument with side effect" ; TEMP_01 byref -> [rbp-0x20] ; ; Lcl frame size = 64 G_M26090_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 xor rax, rax mov qword ptr [rbp-10H], rax mov qword ptr [rbp-08H], rcx mov qword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 6.33 G_M26090_IG02: mov rcx, qword ptr [rbp+10H] mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPEHANDLE mov gword ptr [rbp-10H], rax mov rcx, qword ptr [rbp+10H] call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov bword ptr [rbp-20H], rax mov rcx, gword ptr [rbp-10H] call Type:GetTypeFromHandle(RuntimeTypeHandle):Type mov rcx, rax call ComparerHelpers:CreateDefaultEqualityComparer(Type):Object mov gword ptr [rbp-18H], rax mov rdx, gword ptr [rbp-18H] mov rcx, qword ptr [rbp+10H] call CORINFO_HELP_CHKCASTCLASS mov rcx, bword ptr [rbp-20H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 21.75 G_M26090_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 122, prolog size 29, PerfScore 42.48, (MethodHash=f53d9a15) for method EqualityComparer`1:.cctor() ; ============================================================ ; Assembly listing for method ComparerHelpers:CreateDefaultEqualityComparer(Type):Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 4.12) ref -> rsi class-hnd ; V01 loc0 [V01,T03] ( 6, 4 ) ref -> rdi class-hnd ; V02 loc1 [V02,T00] ( 14, 8 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T11] ( 3, 1.24) long -> rdx "fgInsertCommaFormTemp is creating a new local variable" ; V05 tmp2 [V05,T02] ( 3, 4.50) ref -> rcx class-hnd "spilling QMark2" ; V06 tmp3 [V06,T04] ( 3, 3 ) ref -> rbp class-hnd exact "dup spill" ; V07 tmp4 [V07,T07] ( 2, 2 ) ref -> rbx class-hnd "impAppendStmt" ; V08 tmp5 [V08,T06] ( 3, 2.50) ref -> rax ; V09 tmp6 [V09,T08] ( 2, 2 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V10 tmp7 [V10,T05] ( 3, 3 ) ref -> rax "argument with side effect" ; V11 tmp8 [V11,T09] ( 2, 2 ) ref -> rcx "argument with side effect" ; V12 tmp9 [V12,T10] ( 2, 2 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 40 G_M17796_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 4.50 G_M17796_IG02: xor rdi, rdi mov rcx, rsi test rcx, rcx je SHORT G_M17796_IG05 ;; bbWeight=1 PerfScore 1.75 G_M17796_IG03: mov rdx, 0xD1FFAB1E cmp qword ptr [rcx], rdx je SHORT G_M17796_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M17796_IG04: mov rcx, rdx mov rdx, rsi call CORINFO_HELP_CHKCASTCLASS_SPECIAL ;; bbWeight=0.12 PerfScore 0.18 G_M17796_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi jne SHORT G_M17796_IG07 ;; bbWeight=1 PerfScore 2.50 G_M17796_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax jmp G_M17796_IG10 ;; bbWeight=0.50 PerfScore 1.75 G_M17796_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rbx, rax mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rbp, rax mov rcx, rbp mov r8, rsi xor edx, edx call CORINFO_HELP_ARRADDR_ST mov rcx, rbx mov rdx, rbp mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]RuntimeType:MakeGenericType(ref):Type:this mov rcx, rax mov rdx, rsi mov rax, qword ptr [rax] mov rax, qword ptr [rax+168] call qword ptr [rax+32]Type:IsAssignableFrom(Type):bool:this test eax, eax je SHORT G_M17796_IG08 mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax mov rdx, rsi call RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(RuntimeType,RuntimeType):Object mov rdi, rax jmp SHORT G_M17796_IG10 ;; bbWeight=0.50 PerfScore 12.25 G_M17796_IG08: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+96] call qword ptr [rax+16]Type:get_IsGenericType():bool:this test eax, eax je SHORT G_M17796_IG09 mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+104] call gword ptr [rax+16]Type:GetGenericTypeDefinition():Type:this mov rbx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rbx, rax jne SHORT G_M17796_IG10 mov rcx, rsi call ComparerHelpers:TryCreateNullableEqualityComparer(RuntimeType):Object mov rdi, rax jmp SHORT G_M17796_IG10 ;; bbWeight=0.50 PerfScore 11.00 G_M17796_IG09: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+112] call qword ptr [rax+24]Type:get_IsEnum():bool:this test eax, eax je SHORT G_M17796_IG10 mov rcx, rsi call ComparerHelpers:TryCreateEnumEqualityComparer(RuntimeType):Object mov rdi, rax ;; bbWeight=0.50 PerfScore 5.00 G_M17796_IG10: mov rax, rdi test rax, rax jne SHORT G_M17796_IG13 ;; bbWeight=1 PerfScore 1.50 G_M17796_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax mov rdx, rsi ;; bbWeight=0.50 PerfScore 0.88 G_M17796_IG12: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(RuntimeType,RuntimeType):Object ;; bbWeight=0.50 PerfScore 2.13 G_M17796_IG13: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 363, prolog size 11, PerfScore 82.17, (MethodHash=c127ba7b) for method ComparerHelpers:CreateDefaultEqualityComparer(Type):Object ; ============================================================ ; Assembly listing for method RuntimeType:MakeGenericType(ref):Type:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T09] ( 11, 7 ) ref -> [rbp+0x10] EH do-not-enreg[] this class-hnd EH-live ; V01 arg1 [V01,T04] ( 8, 13 ) ref -> rsi class-hnd ; V02 loc0 [V02,T05] ( 8, 15 ) ref -> [rbp-0x48] EH do-not-enreg[] class-hnd exact EH-live ; V03 loc1 [V03,T11] ( 4, 5.50) bool -> rbx ; V04 loc2 [V04,T10] ( 4, 6 ) bool -> r14 ; V05 loc3 [V05,T16] ( 2, 1 ) ref -> rdx class-hnd ; V06 loc4 [V06,T17] ( 2, 1 ) ref -> rax class-hnd ; V07 loc5 [V07,T01] ( 10, 37 ) int -> r15 ; V08 loc6 [V08,T02] ( 10, 32 ) ref -> rcx class-hnd ; V09 loc7 [V09,T03] ( 6, 24 ) ref -> r13 class-hnd ; V10 loc8 [V10 ] ( 2, 1 ) struct ( 8) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op ;* V11 loc9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ;* V12 loc10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V13 OutArgs [V13 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V14 tmp1 [V14,T00] ( 8, 49.92) ref -> r13 class-hnd "spilling QMark2" ; V15 tmp2 [V15,T19] ( 8, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V16 tmp3 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V17 tmp4 [V17,T23] ( 2, 0 ) ref -> r8 class-hnd "impSpillSpecialSideEff" ; V18 tmp5 [V18,T12] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V19 tmp6 [V19,T20] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V20 tmp7 [V20,T21] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V21 tmp8 [V21,T22] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V22 tmp9 [V22,T24] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V23 tmp10 [V23 ] ( 2, 1 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed V10.m_type(offs=0x00) P-DEP "field V10.m_type (fldOffset=0x0)" ; V24 tmp11 [V24,T18] ( 2, 1 ) ref -> rcx V16.m_type(offs=0x00) P-INDEP "field V16.m_type (fldOffset=0x0)" ; V25 tmp12 [V25,T25] ( 2, 0 ) ref -> rdx "argument with side effect" ; V26 tmp13 [V26,T26] ( 2, 0 ) ref -> rcx "argument with side effect" ; V27 tmp14 [V27,T27] ( 2, 0 ) ref -> rcx "argument with side effect" ; V28 tmp15 [V28,T28] ( 2, 0 ) ref -> rdx "argument with side effect" ; V29 tmp16 [V29,T29] ( 2, 0 ) ref -> rcx "argument with side effect" ; V30 tmp17 [V30,T30] ( 2, 0 ) ref -> rdi "argument with side effect" ; V31 tmp18 [V31,T31] ( 2, 0 ) ref -> r8 "argument with side effect" ; V32 tmp19 [V32,T32] ( 2, 0 ) ref -> rcx "argument with side effect" ; V33 tmp20 [V33,T13] ( 2, 2 ) ref -> rdx "argument with side effect" ; V34 tmp21 [V34,T14] ( 2, 2 ) ref -> rdx "argument with side effect" ; V35 PSPSym [V35 ] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "PSPSym" ;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref "optAddCopies" ; V37 tmp24 [V37,T15] ( 2, 2 ) ref -> rax "optAddCopies" ; V38 cse0 [V38,T06] ( 7, 13 ) int -> rdi "CSE - aggressive" ; V39 cse1 [V39,T07] ( 3, 12 ) long -> r12 "CSE - aggressive" ; V40 cse2 [V40,T08] ( 3, 12 ) long -> r12 "CSE - aggressive" ; ; Lcl frame size = 56 G_M22593_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 56 lea rbp, [rsp+70H] xor rax, rax mov qword ptr [rbp-40H], rax mov qword ptr [rbp-50H], rsp mov gword ptr [rbp+10H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 12.25 G_M22593_IG02: test rsi, rsi je G_M22593_IG27 ;; bbWeight=1 PerfScore 1.25 G_M22593_IG03: mov edi, dword ptr [rsi+8] movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-48H], rax mov rcx, gword ptr [rbp+10H] cmp dword ptr [rcx], ecx mov rcx, gword ptr [rbp+10H] call RuntimeTypeHandle:IsGenericTypeDefinition(RuntimeType):bool test eax, eax je G_M22593_IG28 ;; bbWeight=1 PerfScore 10.75 G_M22593_IG04: mov rcx, gword ptr [rbp+10H] mov rax, 0xD1FFAB1E call gword ptr [rax]RuntimeType:GetGenericArguments():ref:this cmp dword ptr [rax+8], edi jne G_M22593_IG29 ;; bbWeight=1 PerfScore 7.25 G_M22593_IG05: xor ebx, ebx xor r14d, r14d xor r15d, r15d test edi, edi jle G_M22593_IG19 mov rcx, gword ptr [rbp-48H] cmp dword ptr [rcx+8], edi jl SHORT G_M22593_IG13 ;; bbWeight=1 PerfScore 6.00 G_M22593_IG06: movsxd r12, r15d mov rcx, gword ptr [rsi+8*r12+16] test rcx, rcx je G_M22593_IG30 ;; bbWeight=4 PerfScore 14.00 G_M22593_IG07: mov r13, rcx mov rax, 0xD1FFAB1E cmp qword ptr [r13], rax je SHORT G_M22593_IG09 ;; bbWeight=4 PerfScore 14.00 G_M22593_IG08: xor r13, r13 ;; bbWeight=0.48 PerfScore 0.12 G_M22593_IG09: test r13, r13 jne SHORT G_M22593_IG11 ;; bbWeight=4 PerfScore 5.00 G_M22593_IG10: mov r14d, 1 mov rax, qword ptr [rcx] mov rax, qword ptr [rax+112] call qword ptr [rax+56]Type:get_IsSignatureType():bool:this test eax, eax je SHORT G_M22593_IG11 mov ebx, 1 ;; bbWeight=2 PerfScore 17.50 G_M22593_IG11: mov rdx, gword ptr [rbp-48H] lea rcx, bword ptr [rdx+8*r12+16] mov rdx, r13 call CORINFO_HELP_ASSIGN_REF inc r15d cmp edi, r15d jg SHORT G_M22593_IG06 ;; bbWeight=4 PerfScore 19.00 G_M22593_IG12: jmp SHORT G_M22593_IG19 ;; bbWeight=1 PerfScore 2.00 G_M22593_IG13: movsxd r12, r15d mov rcx, gword ptr [rsi+8*r12+16] test rcx, rcx je G_M22593_IG30 ;; bbWeight=4 PerfScore 14.00 G_M22593_IG14: mov r13, rcx mov rax, 0xD1FFAB1E cmp qword ptr [r13], rax je SHORT G_M22593_IG16 ;; bbWeight=4 PerfScore 14.00 G_M22593_IG15: xor r13, r13 ;; bbWeight=0.48 PerfScore 0.12 G_M22593_IG16: test r13, r13 jne SHORT G_M22593_IG18 ;; bbWeight=4 PerfScore 5.00 G_M22593_IG17: mov r14d, 1 mov rax, qword ptr [rcx] mov rax, qword ptr [rax+112] call qword ptr [rax+56]Type:get_IsSignatureType():bool:this test eax, eax je SHORT G_M22593_IG18 mov ebx, 1 ;; bbWeight=2 PerfScore 17.50 G_M22593_IG18: mov rdx, gword ptr [rbp-48H] cmp r15d, dword ptr [rdx+8] jae G_M22593_IG31 mov rdx, gword ptr [rbp-48H] lea rcx, bword ptr [rdx+8*r12+16] mov rdx, r13 call CORINFO_HELP_ASSIGN_REF inc r15d cmp edi, r15d jg SHORT G_M22593_IG13 ;; bbWeight=4 PerfScore 35.00 G_M22593_IG19: test r14d, r14d je SHORT G_M22593_IG24 ;; bbWeight=1 PerfScore 1.25 G_M22593_IG20: test ebx, ebx je SHORT G_M22593_IG22 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov rdx, gword ptr [rbp+10H] mov r8, rsi call SignatureConstructedGenericType:.ctor(Type,ref):this mov rax, rdi ;; bbWeight=0.50 PerfScore 2.75 G_M22593_IG21: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M22593_IG22: mov rcx, rsi call Object:MemberwiseClone():Object:this mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTARRAY mov rdx, rax mov rcx, gword ptr [rbp+10H] call TypeBuilderInstantiation:MakeGenericType(Type,ref):Type nop ;; bbWeight=0.50 PerfScore 2.63 G_M22593_IG23: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M22593_IG24: mov rcx, gword ptr [rbp+10H] call RuntimeType:GetGenericArgumentsInternal():ref:this mov rdx, rax mov rcx, gword ptr [rbp-48H] call RuntimeType:SanityCheckGenericArguments(ref,ref) nop ;; bbWeight=0.50 PerfScore 2.25 G_M22593_IG25: mov rcx, gword ptr [rbp+10H] mov gword ptr [rbp-40H], rcx lea rcx, bword ptr [rbp-40H] mov rdx, gword ptr [rbp-48H] call RuntimeTypeHandle:Instantiate(ref):RuntimeType:this nop ;; bbWeight=0.50 PerfScore 2.38 G_M22593_IG26: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M22593_IG27: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1824 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M22593_IG28: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x4F1B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, gword ptr [rbp+10H] call SR:Format(String,Object):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M22593_IG29: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x6B75 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1824 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M22593_IG30: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x924F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M22593_IG31: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 G_M22593_IG32: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+70H] ;; bbWeight=0 PerfScore 0.00 G_M22593_IG33: mov r8, rdx mov rcx, gword ptr [rbp+10H] mov rdx, gword ptr [rbp-48H] call RuntimeType:ValidateGenericArguments(MemberInfo,ref,Exception) call CORINFO_HELP_RETHROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 917, prolog size 38, PerfScore 305.94, (MethodHash=99a5a7be) for method RuntimeType:MakeGenericType(ref):Type:this ; ============================================================ ; Assembly listing for method RuntimeType:GetGenericArguments():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 loc0 [V01,T03] ( 2, 2 ) ref -> rax class-hnd ; V02 loc1 [V02 ] ( 2, 2 ) struct ( 8) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 4, 3.50) ref -> rax ; V05 tmp2 [V05 ] ( 2, 2 ) ref -> [rsp+0x20] do-not-enreg[X] addr-exposed V02.m_type(offs=0x00) P-DEP "field V02.m_type (fldOffset=0x0)" ; V06 rat0 [V06,T00] ( 3, 6 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 40 G_M46485_IG01: sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax ;; bbWeight=1 PerfScore 1.50 G_M46485_IG02: call Type:GetRootElementType():Type:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+80] call gword ptr [rax+16]Type:GetTypeHandleInternal():RuntimeTypeHandle:this mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rsp+20H] call RuntimeTypeHandle:GetInstantiationPublic():ref:this test rax, rax jne SHORT G_M46485_IG04 ;; bbWeight=1 PerfScore 12.00 G_M46485_IG03: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M46485_IG04: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 67, prolog size 11, PerfScore 22.58, (MethodHash=16184a6a) for method RuntimeType:GetGenericArguments():ref:this ; ============================================================ ; Assembly listing for method RuntimeTypeHandle:GetInstantiationPublic():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rsi this ; V01 loc0 [V01 ] ( 2, 2 ) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V02 loc1 [V02 ] ( 3, 3 ) struct ( 8) [rbp-0x48] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V07 tmp4 [V07,T03] ( 2, 4 ) ref -> rax "Single return block return value" ; V08 FramesRoot [V08,T00] ( 6, 6 ) long -> rdi "Pinvoke FrameListRoot" ; V09 PInvokeFrame [V09 ] ( 8, 8 ) blk (72) [rbp-0xA0] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V10 tmp7 [V10 ] ( 3, 3 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed V02.m_type(offs=0x00) P-DEP "field V02.m_type (fldOffset=0x0)" ; V11 tmp8 [V11,T04] ( 2, 2 ) long -> rsi V04._ptr(offs=0x00) P-INDEP "field V04._ptr (fldOffset=0x0)" ; V12 tmp9 [V12,T05] ( 2, 2 ) long -> rax V04._handle(offs=0x08) P-INDEP "field V04._handle (fldOffset=0x8)" ; V13 tmp10 [V13,T06] ( 2, 2 ) long -> rdx V05._ptr(offs=0x00) P-INDEP "field V05._ptr (fldOffset=0x0)" ; V14 tmp11 [V14,T07] ( 2, 2 ) long -> rdx V06._ptr(offs=0x00) P-INDEP "field V06._ptr (fldOffset=0x0)" ; V15 tmp12 [V15 ] ( 2, 4 ) struct (16) [rbp-0x58] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V16 tmp13 [V16,T01] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 136 G_M11104_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] xor rdx, rdx mov qword ptr [rbp-40H], rdx mov qword ptr [rbp-48H], rdx mov rsi, rcx ;; bbWeight=1 PerfScore 11.25 G_M11104_IG02: lea rcx, [rbp-98H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rcx, rsp mov qword ptr [rbp-78H], rcx mov rcx, rbp mov qword ptr [rbp-68H], rcx mov rcx, rsi call RuntimeTypeHandle:GetNativeHandle():RuntimeTypeHandle:this mov gword ptr [rbp-48H], rax lea rsi, bword ptr [rbp-48H] lea rcx, bword ptr [rbp-48H] call RuntimeTypeHandle:get_Value():long:this lea rdx, [rbp-40H] lea rcx, bword ptr [rbp-58H] mov qword ptr [rcx], rsi mov qword ptr [rcx+8], rax lea rcx, bword ptr [rbp-58H] xor r8d, r8d mov rax, 0xD1FFAB1E mov qword ptr [rbp-88H], rax lea rax, G_M11104_IG05 mov qword ptr [rbp-70H], rax lea rax, bword ptr [rbp-98H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=1 PerfScore 18.25 G_M11104_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M11104_IG04: call qword ptr [rax]RuntimeTypeHandle:GetInstantiation(QCallTypeHandle,ObjectHandleOnStack,int) ;; bbWeight=1 PerfScore 3.00 G_M11104_IG05: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M11104_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M11104_IG06: mov rax, bword ptr [rbp-90H] mov qword ptr [rdi+16], rax mov rax, gword ptr [rbp-40H] ;; bbWeight=1 PerfScore 3.00 G_M11104_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 237, prolog size 37, PerfScore 72.45, (MethodHash=abdad49f) for method RuntimeTypeHandle:GetInstantiationPublic():ref:this ; ============================================================ ; Assembly listing for method RuntimeType:GetGenericArgumentsInternal():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 loc0 [V01 ] ( 2, 2 ) struct ( 8) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03 ] ( 2, 2 ) ref -> [rsp+0x20] do-not-enreg[X] addr-exposed V01.m_type(offs=0x00) P-DEP "field V01.m_type (fldOffset=0x0)" ; V04 rat0 [V04,T00] ( 3, 6 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 40 G_M28306_IG01: sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax ;; bbWeight=1 PerfScore 1.50 G_M28306_IG02: call Type:GetRootElementType():Type:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+80] call gword ptr [rax+16]Type:GetTypeHandleInternal():RuntimeTypeHandle:this mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rsp+20H] call RuntimeTypeHandle:GetInstantiationInternal():ref:this nop ;; bbWeight=1 PerfScore 11.00 G_M28306_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 50, prolog size 11, PerfScore 18.75, (MethodHash=a658916d) for method RuntimeType:GetGenericArgumentsInternal():ref:this ; ============================================================ ; Assembly listing for method RuntimeTypeHandle:GetInstantiationInternal():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rsi this ; V01 loc0 [V01 ] ( 2, 2 ) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V02 loc1 [V02 ] ( 3, 3 ) struct ( 8) [rbp-0x48] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V07 tmp4 [V07,T03] ( 2, 4 ) ref -> rax "Single return block return value" ; V08 FramesRoot [V08,T00] ( 6, 6 ) long -> rdi "Pinvoke FrameListRoot" ; V09 PInvokeFrame [V09 ] ( 8, 8 ) blk (72) [rbp-0xA0] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V10 tmp7 [V10 ] ( 3, 3 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed V02.m_type(offs=0x00) P-DEP "field V02.m_type (fldOffset=0x0)" ; V11 tmp8 [V11,T04] ( 2, 2 ) long -> rsi V04._ptr(offs=0x00) P-INDEP "field V04._ptr (fldOffset=0x0)" ; V12 tmp9 [V12,T05] ( 2, 2 ) long -> rax V04._handle(offs=0x08) P-INDEP "field V04._handle (fldOffset=0x8)" ; V13 tmp10 [V13,T06] ( 2, 2 ) long -> rdx V05._ptr(offs=0x00) P-INDEP "field V05._ptr (fldOffset=0x0)" ; V14 tmp11 [V14,T07] ( 2, 2 ) long -> rdx V06._ptr(offs=0x00) P-INDEP "field V06._ptr (fldOffset=0x0)" ; V15 tmp12 [V15 ] ( 2, 4 ) struct (16) [rbp-0x58] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V16 tmp13 [V16,T01] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 136 G_M27846_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] xor rdx, rdx mov qword ptr [rbp-40H], rdx mov qword ptr [rbp-48H], rdx mov rsi, rcx ;; bbWeight=1 PerfScore 11.25 G_M27846_IG02: lea rcx, [rbp-98H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rcx, rsp mov qword ptr [rbp-78H], rcx mov rcx, rbp mov qword ptr [rbp-68H], rcx mov rcx, rsi call RuntimeTypeHandle:GetNativeHandle():RuntimeTypeHandle:this mov gword ptr [rbp-48H], rax lea rsi, bword ptr [rbp-48H] lea rcx, bword ptr [rbp-48H] call RuntimeTypeHandle:get_Value():long:this lea rdx, [rbp-40H] lea rcx, bword ptr [rbp-58H] mov qword ptr [rcx], rsi mov qword ptr [rcx+8], rax lea rcx, bword ptr [rbp-58H] mov r8d, 1 mov rax, 0xD1FFAB1E mov qword ptr [rbp-88H], rax lea rax, G_M27846_IG05 mov qword ptr [rbp-70H], rax lea rax, bword ptr [rbp-98H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=1 PerfScore 18.25 G_M27846_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M27846_IG04: call qword ptr [rax]RuntimeTypeHandle:GetInstantiation(QCallTypeHandle,ObjectHandleOnStack,int) ;; bbWeight=1 PerfScore 3.00 G_M27846_IG05: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M27846_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M27846_IG06: mov rax, bword ptr [rbp-90H] mov qword ptr [rdi+16], rax mov rax, gword ptr [rbp-40H] ;; bbWeight=1 PerfScore 3.00 G_M27846_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 240, prolog size 37, PerfScore 72.75, (MethodHash=e5da9339) for method RuntimeTypeHandle:GetInstantiationInternal():ref:this ; ============================================================ ; Assembly listing for method RuntimeType:SanityCheckGenericArguments(ref,ref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 5, 8 ) ref -> rsi class-hnd ; V01 arg1 [V01,T04] ( 4, 3 ) ref -> rdi class-hnd ; V02 loc0 [V02,T00] ( 5, 17 ) int -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T05] ( 8, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T06] ( 3, 0 ) ref -> rsi class-hnd exact "Single-def Box Helper" ; V06 tmp3 [V06,T10] ( 2, 0 ) ref -> rbx class-hnd "impImportAndPushBox" ; V07 tmp4 [V07,T07] ( 3, 0 ) ref -> rbp class-hnd exact "Single-def Box Helper" ; V08 tmp5 [V08,T08] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V09 tmp6 [V09,T09] ( 3, 0 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V10 tmp7 [V10,T11] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V11 tmp8 [V11,T12] ( 2, 0 ) ref -> rcx "argument with side effect" ; V12 tmp9 [V12,T13] ( 2, 0 ) ref -> rcx "argument with side effect" ; V13 tmp10 [V13,T14] ( 2, 0 ) ref -> rdx "argument with side effect" ; V14 cse0 [V14,T01] ( 3, 12 ) ref -> rcx "CSE - aggressive" ; V15 cse1 [V15,T03] ( 5, 7 ) int -> rbp "CSE - aggressive" ; ; Lcl frame size = 40 G_M30086_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 4.75 G_M30086_IG02: test rsi, rsi je SHORT G_M30086_IG08 ;; bbWeight=1 PerfScore 1.25 G_M30086_IG03: xor ebx, ebx mov ebp, dword ptr [rsi+8] test ebp, ebp jle SHORT G_M30086_IG06 ;; bbWeight=1 PerfScore 3.50 G_M30086_IG04: movsxd rcx, ebx mov rcx, gword ptr [rsi+8*rcx+16] test rcx, rcx je SHORT G_M30086_IG09 ;; bbWeight=4 PerfScore 14.00 G_M30086_IG05: call RuntimeType:ThrowIfTypeNeverValidGenericArgument(RuntimeType) inc ebx cmp ebp, ebx jg SHORT G_M30086_IG04 ;; bbWeight=4 PerfScore 10.00 G_M30086_IG06: cmp dword ptr [rdi+8], ebp jne G_M30086_IG10 ;; bbWeight=1 PerfScore 3.00 G_M30086_IG07: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M30086_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, rbp call ArgumentNullException:.ctor():this mov rcx, rbp call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M30086_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x924F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rdi+112], 0xD1FFAB1E mov dword ptr [rdi+116], 0xD1FFAB1E lea rcx, bword ptr [rdi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rdi+116], 0xD1FFAB1E mov dword ptr [rdi+116], 0xD1FFAB1E mov dword ptr [rdi+116], 0xD1FFAB1E mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M30086_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x8259 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov dword ptr [rsi+8], ebp mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov ecx, dword ptr [rdi+8] mov dword ptr [rbp+8], ecx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov r8, rbp mov rdx, rsi mov rcx, rbx call SR:Format(String,Object,Object):String mov rdx, rax mov rcx, rdi call ArgumentException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 337, prolog size 8, PerfScore 73.45, (MethodHash=73398a79) for method RuntimeType:SanityCheckGenericArguments(ref,ref) ; ============================================================ ; Assembly listing for method RuntimeType:ThrowIfTypeNeverValidGenericArgument(RuntimeType) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 7, 6 ) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T03] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T01] ( 2, 2 ) ubyte -> rax "Inline stloc first use temp" ; V04 tmp3 [V04,T02] ( 2, 2 ) ubyte -> rax "Inline stloc first use temp" ; V05 tmp4 [V05,T04] ( 2, 0 ) ref -> rcx "argument with side effect" ; V06 tmp5 [V06,T05] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp6 [V07,T06] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M1502_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M1502_IG02: cmp dword ptr [rsi], esi mov rcx, rsi call RuntimeTypeHandle:GetCorElementType(RuntimeType):ubyte cmp eax, 15 je SHORT G_M1502_IG04 mov rcx, rsi call RuntimeTypeHandle:GetCorElementType(RuntimeType):ubyte cmp eax, 16 je SHORT G_M1502_IG04 mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi je SHORT G_M1502_IG04 ;; bbWeight=1 PerfScore 9.50 G_M1502_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M1502_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x80FB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, rsi call SR:Format(String,Object):String mov rdx, rax mov rcx, rdi call ArgumentException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 143, prolog size 6, PerfScore 28.55, (MethodHash=b126fa21) for method RuntimeType:ThrowIfTypeNeverValidGenericArgument(RuntimeType) ; ============================================================ ; Assembly listing for method RuntimeTypeHandle:Instantiate(ref):RuntimeType:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 3 ) byref -> rdi this ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> [rbp+0x18] class-hnd ; V02 loc0 [V02,T06] ( 3, 3 ) ref -> rax class-hnd ; V03 loc1 [V03 ] ( 2, 2 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op ; V04 loc2 [V04,T07] ( 3, 2 ) long -> r14 ; V05 loc3 [V05 ] ( 4, 2.50) ref -> [rbp-0x48] must-init pinned class-hnd ; V06 loc4 [V06 ] ( 3, 3 ) ref -> [rbp-0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V07 loc5 [V07 ] ( 3, 3 ) struct ( 8) [rbp-0x58] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V10 tmp2 [V10,T05] ( 2, 4 ) int -> r8 "impAppendStmt" ;* V11 tmp3 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ;* V12 tmp4 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V13 tmp5 [V13,T04] ( 2, 4 ) ref -> rax "Single return block return value" ; V14 FramesRoot [V14,T00] ( 6, 6 ) long -> rbx "Pinvoke FrameListRoot" ; V15 PInvokeFrame [V15 ] ( 8, 8 ) blk (72) [rbp-0xB0] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V16 tmp8 [V16 ] ( 3, 3 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed V07.m_type(offs=0x00) P-DEP "field V07.m_type (fldOffset=0x0)" ; V17 tmp9 [V17,T08] ( 2, 2 ) long -> rdi V09._ptr(offs=0x00) P-INDEP "field V09._ptr (fldOffset=0x0)" ; V18 tmp10 [V18,T09] ( 2, 2 ) long -> rax V09._handle(offs=0x08) P-INDEP "field V09._handle (fldOffset=0x8)" ; V19 tmp11 [V19,T10] ( 2, 2 ) long -> r9 V11._ptr(offs=0x00) P-INDEP "field V11._ptr (fldOffset=0x0)" ; V20 tmp12 [V20,T11] ( 2, 2 ) long -> r9 V12._ptr(offs=0x00) P-INDEP "field V12._ptr (fldOffset=0x0)" ; V21 tmp13 [V21,T12] ( 2, 2 ) long -> r14 "Cast away GC" ; V22 tmp14 [V22 ] ( 2, 4 ) struct (16) [rbp-0x68] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V23 tmp15 [V23,T02] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 152 G_M3390_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 152 lea rbp, [rsp+D0H] vxorps xmm4, xmm4 vmovdqu xmmword ptr [rbp-58H], xmm4 xor rsi, rsi mov qword ptr [rbp-48H], rsi mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 11.83 G_M3390_IG02: lea rcx, [rbp-A8H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rbx, rax mov rdx, rsp mov qword ptr [rbp-88H], rdx mov rdx, rbp mov qword ptr [rbp-78H], rdx lea rdx, [rbp-40H] mov gword ptr [rbp+18H], rsi mov rcx, rsi call RuntimeTypeHandle:CopyRuntimeTypeHandles(ref,byref):ref mov gword ptr [rbp-48H], rax test rax, rax je SHORT G_M3390_IG04 ;; bbWeight=1 PerfScore 9.50 G_M3390_IG03: mov rcx, gword ptr [rbp-48H] cmp dword ptr [rcx+8], 0 jne SHORT G_M3390_IG05 ;; bbWeight=0.50 PerfScore 2.00 G_M3390_IG04: xor r14, r14 jmp SHORT G_M3390_IG06 ;; bbWeight=0.50 PerfScore 1.13 G_M3390_IG05: mov rcx, gword ptr [rbp-48H] cmp dword ptr [rcx+8], 0 jbe G_M3390_IG12 mov r14, gword ptr [rbp-48H] add r14, 16 ;; bbWeight=0.50 PerfScore 2.63 G_M3390_IG06: xor rcx, rcx mov gword ptr [rbp-50H], rcx mov rcx, rdi call RuntimeTypeHandle:GetNativeHandle():RuntimeTypeHandle:this mov gword ptr [rbp-58H], rax lea rdi, bword ptr [rbp-58H] lea rcx, bword ptr [rbp-58H] call RuntimeTypeHandle:get_Value():long:this mov r8d, dword ptr [rbp-40H] lea r9, [rbp-50H] lea rcx, bword ptr [rbp-68H] mov qword ptr [rcx], rdi mov qword ptr [rcx+8], rax lea rcx, bword ptr [rbp-68H] mov rdx, r14 mov rax, 0xD1FFAB1E mov qword ptr [rbp-98H], rax lea rax, G_M3390_IG09 mov qword ptr [rbp-80H], rax lea rax, bword ptr [rbp-A8H] mov qword ptr [rbx+16], rax mov byte ptr [rbx+12], 0 ;; bbWeight=1 PerfScore 16.00 G_M3390_IG07: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M3390_IG08: call qword ptr [rax]RuntimeTypeHandle:Instantiate(QCallTypeHandle,long,int,ObjectHandleOnStack) ;; bbWeight=1 PerfScore 3.00 G_M3390_IG09: mov byte ptr [rbx+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M3390_IG10 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M3390_IG10: mov rax, bword ptr [rbp-A0H] mov qword ptr [rbx+16], rax mov rax, gword ptr [rbp-50H] ;; bbWeight=1 PerfScore 3.00 G_M3390_IG11: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M3390_IG12: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 326, prolog size 42, PerfScore 95.13, (MethodHash=21d3f2c1) for method RuntimeTypeHandle:Instantiate(ref):RuntimeType:this ; ============================================================ ; Assembly listing for method RuntimeTypeHandle:CopyRuntimeTypeHandles(ref,byref):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T05] ( 6, 11.50) ref -> rsi class-hnd ; V01 arg1 [V01,T07] ( 4, 3 ) byref -> rdi ; V02 loc0 [V02,T04] ( 7, 14 ) ref -> rbp class-hnd exact ; V03 loc1 [V03,T01] ( 12, 44.50) int -> r14 ;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "Strict ordering of exceptions for Array store" ; V07 tmp2 [V07,T03] ( 6, 16 ) long -> r15 "Inline return value spill temp" ; V08 tmp3 [V08,T02] ( 6, 20 ) ref -> rax V04.m_type(offs=0x00) P-INDEP "field V04.m_type (fldOffset=0x0)" ; V09 cse0 [V09,T06] ( 7, 10.50) int -> rbx "CSE - aggressive" ; V10 rat0 [V10,T00] ( 6, 48 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 40 G_M34443_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 6.75 G_M34443_IG02: test rsi, rsi je SHORT G_M34443_IG04 ;; bbWeight=1 PerfScore 1.25 G_M34443_IG03: mov ebx, dword ptr [rsi+8] test ebx, ebx jne SHORT G_M34443_IG06 ;; bbWeight=0.50 PerfScore 1.63 G_M34443_IG04: xor eax, eax mov dword ptr [rdi], eax ;; bbWeight=0.50 PerfScore 0.63 G_M34443_IG05: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M34443_IG06: movsxd rdx, ebx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbp, rax xor r14d, r14d test ebx, ebx jle SHORT G_M34443_IG16 cmp dword ptr [rbp+8], ebx jl SHORT G_M34443_IG12 ;; bbWeight=0.50 PerfScore 3.13 G_M34443_IG07: movsxd rcx, r14d mov rcx, gword ptr [rsi+8*rcx+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+80] call gword ptr [rax+16]Type:GetTypeHandleInternal():RuntimeTypeHandle:this test rax, rax jne SHORT G_M34443_IG09 ;; bbWeight=4 PerfScore 42.00 G_M34443_IG08: xor r15, r15 jmp SHORT G_M34443_IG10 ;; bbWeight=2 PerfScore 4.50 G_M34443_IG09: mov r15, qword ptr [rax+24] ;; bbWeight=2 PerfScore 4.00 G_M34443_IG10: movsxd rcx, r14d mov qword ptr [rbp+8*rcx+16], r15 inc r14d cmp ebx, r14d jg SHORT G_M34443_IG07 ;; bbWeight=4 PerfScore 11.00 G_M34443_IG11: jmp SHORT G_M34443_IG16 ;; bbWeight=0.50 PerfScore 1.00 G_M34443_IG12: movsxd rcx, r14d mov rcx, gword ptr [rsi+8*rcx+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+80] call gword ptr [rax+16]Type:GetTypeHandleInternal():RuntimeTypeHandle:this test rax, rax jne SHORT G_M34443_IG14 ;; bbWeight=4 PerfScore 42.00 G_M34443_IG13: xor r15, r15 jmp SHORT G_M34443_IG15 ;; bbWeight=2 PerfScore 4.50 G_M34443_IG14: mov r15, qword ptr [rax+24] ;; bbWeight=2 PerfScore 4.00 G_M34443_IG15: cmp r14d, dword ptr [rbp+8] jae SHORT G_M34443_IG18 movsxd rax, r14d mov qword ptr [rbp+8*rax+16], r15 inc r14d cmp ebx, r14d jg SHORT G_M34443_IG12 ;; bbWeight=4 PerfScore 23.00 G_M34443_IG16: mov eax, dword ptr [rbp+8] mov dword ptr [rdi], eax mov rax, rbp ;; bbWeight=0.50 PerfScore 1.63 G_M34443_IG17: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M34443_IG18: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 211, prolog size 12, PerfScore 176.35, (MethodHash=39077974) for method RuntimeTypeHandle:CopyRuntimeTypeHandles(ref,byref):ref ; ============================================================ ; Assembly listing for method RuntimeType:IsAssignableFrom(Type):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 10, 10 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T02] ( 11, 18 ) ref -> rsi class-hnd ; V02 loc0 [V02,T09] ( 3, 3 ) ref -> rcx class-hnd ; V03 loc1 [V03,T04] ( 3, 10 ) ref -> rdi class-hnd ; V04 loc2 [V04,T01] ( 5, 33 ) int -> rbx ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T08] ( 2, 4 ) ref -> rax "CASTCLASS eval op1" ; V07 tmp2 [V07,T06] ( 5, 7.50) ref -> rcx class-hnd "spilling QMark2" ; V08 tmp3 [V08,T07] ( 2, 4 ) ref -> rcx class-hnd "spilling QMark2" ; V09 tmp4 [V09,T10] ( 1, 0 ) int -> rax "Single return block return value" ; V10 cse0 [V10,T05] ( 3, 10 ) int -> rbp "CSE - aggressive" ; V11 rat0 [V11,T00] ( 3, 48 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 40 G_M8882_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 4.75 G_M8882_IG02: test rsi, rsi je G_M8882_IG18 ;; bbWeight=1 PerfScore 1.25 G_M8882_IG03: cmp rsi, rdi je G_M8882_IG16 ;; bbWeight=1 PerfScore 1.25 G_M8882_IG04: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+88] call gword ptr [rax+8]Type:get_UnderlyingSystemType():Type:this mov rcx, rax test rcx, rcx je SHORT G_M8882_IG07 ;; bbWeight=1 PerfScore 8.75 G_M8882_IG05: mov rdx, 0xD1FFAB1E cmp qword ptr [rcx], rdx je SHORT G_M8882_IG07 ;; bbWeight=0.50 PerfScore 1.63 G_M8882_IG06: xor rcx, rcx ;; bbWeight=0.25 PerfScore 0.06 G_M8882_IG07: test rcx, rcx je SHORT G_M8882_IG09 mov rdx, rdi ;; bbWeight=1 PerfScore 1.50 G_M8882_IG08: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp RuntimeTypeHandle:CanCastTo(RuntimeType,RuntimeType):bool ;; bbWeight=1 PerfScore 4.25 G_M8882_IG09: mov rcx, rsi mov rdx, 0xD1FFAB1E cmp qword ptr [rcx], rdx jne G_M8882_IG18 ;; bbWeight=1 PerfScore 3.50 G_M8882_IG10: mov rcx, rsi mov rdx, rdi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+168] call qword ptr [rax+24]Type:IsSubclassOf(Type):bool:this test eax, eax jne SHORT G_M8882_IG16 ;; bbWeight=1 PerfScore 8.75 G_M8882_IG11: mov rcx, rdi call Type:get_IsInterface():bool:this test eax, eax je SHORT G_M8882_IG13 mov rcx, rsi mov rdx, rdi ;; bbWeight=1 PerfScore 3.00 G_M8882_IG12: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp Type:ImplementInterface(Type):bool:this ;; bbWeight=1 PerfScore 4.25 G_M8882_IG13: cmp dword ptr [rdi], edi mov rcx, rdi call RuntimeTypeHandle:IsGenericVariable(RuntimeType):bool test eax, eax je SHORT G_M8882_IG18 mov rcx, rdi mov rax, 0xD1FFAB1E call gword ptr [rax]RuntimeType:GetGenericParameterConstraints():ref:this mov rdi, rax xor ebx, ebx mov ebp, dword ptr [rdi+8] test ebp, ebp jle SHORT G_M8882_IG16 ;; bbWeight=1 PerfScore 11.75 G_M8882_IG14: movsxd rcx, ebx mov rcx, gword ptr [rdi+8*rcx+16] mov rdx, rsi mov rax, qword ptr [rcx] mov rax, qword ptr [rax+168] call qword ptr [rax+32]Type:IsAssignableFrom(Type):bool:this test eax, eax je SHORT G_M8882_IG18 ;; bbWeight=8 PerfScore 86.00 G_M8882_IG15: inc ebx cmp ebp, ebx jg SHORT G_M8882_IG14 ;; bbWeight=8 PerfScore 12.00 G_M8882_IG16: mov eax, 1 ;; bbWeight=1 PerfScore 0.25 G_M8882_IG17: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M8882_IG18: xor eax, eax ;; bbWeight=1 PerfScore 0.25 G_M8882_IG19: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M8882_IG20: movzx rax, al ;; bbWeight=0 PerfScore 0.00 G_M8882_IG21: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 279, prolog size 8, PerfScore 187.59, (MethodHash=7617dd4d) for method RuntimeType:IsAssignableFrom(Type):bool:this ; ============================================================ ; Assembly listing for method RuntimeType:get_IsGenericType():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M25399_IG01: ;; bbWeight=1 PerfScore 0.00 G_M25399_IG02: jmp RuntimeTypeHandle:HasInstantiation(RuntimeType):bool ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 5, prolog size 0, PerfScore 2.50, (MethodHash=40ec9cc8) for method RuntimeType:get_IsGenericType():bool:this ; ============================================================ ; Assembly listing for method Type:get_IsEnum():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M2417_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M2417_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+168] mov rax, qword ptr [rax+24] ;; bbWeight=1 PerfScore 7.75 G_M2417_IG03: add rsp, 32 pop rsi rex.jmp rax ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 51, prolog size 8, PerfScore 17.10, (MethodHash=c9c7f68e) for method Type:get_IsEnum():bool:this ; ============================================================ ; Assembly listing for method ObjectEqualityComparer`1:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M59808_IG01: ;; bbWeight=1 PerfScore 0.00 G_M59808_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=13d1165f) for method ObjectEqualityComparer`1:.ctor():this ; ============================================================ ; Assembly listing for method CastHelpers:ChkCastClassSpecial(long,Object):Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 7, 22.50) long -> rcx ; V01 arg1 [V01,T02] ( 5, 4 ) ref -> rdx class-hnd ; V02 loc0 [V02,T00] ( 17, 77 ) long -> rax ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M43367_IG01: ;; bbWeight=1 PerfScore 0.00 G_M43367_IG02: mov rax, qword ptr [rdx] ;; bbWeight=1 PerfScore 2.00 G_M43367_IG03: mov rax, qword ptr [rax+16] cmp rax, rcx je SHORT G_M43367_IG06 ;; bbWeight=8 PerfScore 26.00 G_M43367_IG04: test rax, rax je SHORT G_M43367_IG05 mov rax, qword ptr [rax+16] cmp rax, rcx je SHORT G_M43367_IG06 test rax, rax je SHORT G_M43367_IG05 mov rax, qword ptr [rax+16] cmp rax, rcx je SHORT G_M43367_IG06 test rax, rax je SHORT G_M43367_IG05 mov rax, qword ptr [rax+16] cmp rax, rcx je SHORT G_M43367_IG06 test rax, rax jne SHORT G_M43367_IG03 ;; bbWeight=4 PerfScore 59.00 G_M43367_IG05: jmp CastHelpers:ChkCast_Helper(long,Object):Object ;; bbWeight=0.50 PerfScore 1.00 G_M43367_IG06: mov rax, rdx ;; bbWeight=0.50 PerfScore 0.13 G_M43367_IG07: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 68, prolog size 0, PerfScore 95.43, (MethodHash=7fd15698) for method CastHelpers:ChkCastClassSpecial(long,Object):Object ; ============================================================ ; Assembly listing for method CustomAttribute:IsCustomAttributeDefined(RuntimeModule,int,RuntimeType,int,bool):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 6, 8 ) ref -> rdi class-hnd ; V01 arg1 [V01,T00] ( 4, 7 ) int -> rsi ; V02 arg2 [V02,T06] ( 4, 7 ) ref -> rbx class-hnd ; V03 arg3 [V03,T07] ( 3, 6 ) int -> r14 ; V04 arg4 [V04,T10] ( 1, 4 ) bool -> r15 ; V05 loc0 [V05,T05] ( 5, 10 ) ref -> r12 class-hnd ; V06 loc1 [V06 ] ( 2, 4.50) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V07 loc2 [V07 ] ( 2, 4.50) struct (24) [rbp-0x60] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V08 loc3 [V08,T01] ( 5, 16.50) int -> r14 ; V09 loc4 [V09 ] ( 1, 4 ) ref -> [rbp-0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V10 loc5 [V10 ] ( 1, 4 ) ref -> [rbp-0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V11 loc6 [V11 ] ( 1, 4 ) bool -> [rbp-0x78] do-not-enreg[X] addr-exposed ld-addr-op ; V12 loc7 [V12,T02] ( 5, 16.50) int -> r10 ; V13 OutArgs [V13 ] ( 1, 1 ) lclBlk (80) [rsp+0x00] "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V15 tmp2 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ;* V16 tmp3 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V17 tmp4 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ; V18 tmp5 [V18 ] ( 2, 4.50) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed V06.m_keepalive(offs=0x00) P-DEP "field V06.m_keepalive (fldOffset=0x0)" ; V19 tmp6 [V19 ] ( 2, 4.50) long -> [rbp-0x40] do-not-enreg[X] addr-exposed V06.m_metadataImport2(offs=0x08) P-DEP "field V06.m_metadataImport2 (fldOffset=0x8)" ; V20 tmp7 [V20,T08] ( 2, 8 ) int -> rcx V14.Value(offs=0x00) P-INDEP "field V14.Value (fldOffset=0x0)" ;* V21 tmp8 [V21,T11] ( 0, 0 ) int -> zero-ref V15.Value(offs=0x00) P-INDEP "field V15.Value (fldOffset=0x0)" ;* V22 tmp9 [V22,T12] ( 0, 0 ) int -> zero-ref V16.Value(offs=0x00) P-INDEP "field V16.Value (fldOffset=0x0)" ; V23 tmp10 [V23,T09] ( 2, 8 ) int -> rax V17.Value(offs=0x00) P-INDEP "field V17.Value (fldOffset=0x0)" ; V24 cse0 [V24,T04] ( 6, 10 ) int -> r13 "CSE - aggressive" ; ; Lcl frame size = 152 G_M62338_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 152 vzeroupper lea rbp, [rsp+D0H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-70H], xmm4 vmovdqa xmmword ptr [rbp-60H], xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 xor rax, rax mov qword ptr [rbp-40H], rax mov rdi, rcx mov esi, edx mov rbx, r8 mov r14d, r9d mov r15d, dword ptr [rbp+30H] ;; bbWeight=1 PerfScore 16.33 G_M62338_IG02: mov rcx, rdi mov edx, esi call CustomAttributeData:GetCustomAttributeRecords(RuntimeModule,int):ref mov r12, rax test rbx, rbx je G_M62338_IG09 ;; bbWeight=1 PerfScore 3.00 G_M62338_IG03: cmp dword ptr [rdi], edi lea rcx, bword ptr [rbp-48H] mov rdx, rdi call ModuleHandle:GetMetadataImport(RuntimeModule):MetadataImport xor eax, eax vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-60H], xmm0 mov qword ptr [rbp-50H], rax xor r14d, r14d mov r13d, dword ptr [r12+8] test r13d, r13d jle G_M62338_IG12 ;; bbWeight=0.50 PerfScore 4.92 G_M62338_IG04: movsxd rdx, r14d lea rdx, [rdx+2*rdx] mov ecx, dword ptr [r12+8*rdx+32] mov gword ptr [rsp+20H], rbx movzx rdx, r15b mov dword ptr [rsp+28H], edx lea rdx, [rbp-60H] mov qword ptr [rsp+30H], rdx lea rdx, [rbp-68H] mov qword ptr [rsp+38H], rdx lea rdx, [rbp-70H] mov qword ptr [rsp+40H], rdx lea rdx, [rbp-78H] mov qword ptr [rsp+48H], rdx lea rdx, bword ptr [rbp-48H] mov r8, rdi mov r9d, esi call CustomAttribute:FilterCustomAttributeRecord(MetadataToken,byref,RuntimeModule,MetadataToken,RuntimeType,bool,byref,byref,byref,byref):bool test eax, eax jne SHORT G_M62338_IG07 ;; bbWeight=4 PerfScore 57.00 G_M62338_IG05: inc r14d cmp r13d, r14d jg SHORT G_M62338_IG04 ;; bbWeight=4 PerfScore 6.00 G_M62338_IG06: jmp SHORT G_M62338_IG12 ;; bbWeight=0.50 PerfScore 1.00 G_M62338_IG07: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M62338_IG08: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M62338_IG09: xor r10d, r10d mov r13d, dword ptr [r12+8] test r13d, r13d jle SHORT G_M62338_IG12 ;; bbWeight=0.50 PerfScore 1.75 G_M62338_IG10: movsxd rax, r10d lea rax, [rax+2*rax] mov eax, dword ptr [r12+8*rax+32] cmp eax, r14d je SHORT G_M62338_IG14 ;; bbWeight=4 PerfScore 16.00 G_M62338_IG11: inc r10d cmp r13d, r10d jg SHORT G_M62338_IG10 ;; bbWeight=4 PerfScore 6.00 G_M62338_IG12: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M62338_IG13: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M62338_IG14: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M62338_IG15: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 ; Total bytes of code 329, prolog size 70, PerfScore 154.13, (MethodHash=b3000c7d) for method CustomAttribute:IsCustomAttributeDefined(RuntimeModule,int,RuntimeType,int,bool):bool ; ============================================================ ; Assembly listing for method CustomAttributeData:GetCustomAttributeRecords(RuntimeModule,int):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T09] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T10] ( 3, 3 ) int -> rsi ; V02 loc0 [V02 ] ( 3, 6 ) struct (16) [rsp+0x88] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V03 loc1 [V03 ] ( 6, 10.50) struct (80) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ptr unsafe-buffer ; V04 loc2 [V04,T06] ( 5, 9.50) ref -> rsi class-hnd exact ; V05 loc3 [V05,T00] ( 7, 18.50) int -> rdi ; V06 tmp0 [V06 ] ( 1, 1 ) int -> [rsp+0x84] do-not-enreg[X] addr-exposed "GSCookie dummy" ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp2 [V08,T07] ( 3, 8 ) int -> r8 "Inline return value spill temp" ; V09 tmp3 [V09 ] ( 3, 8 ) byref -> [rsp+0x78] must-init pinned ptr "Inline stloc first use temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref ptr "Inline stloc first use temp" ; V11 tmp5 [V11,T01] ( 2, 16 ) byref -> r9 "Inlining Arg" ; V12 tmp6 [V12,T02] ( 2, 16 ) byref -> rax "Inlining Arg" ; V13 tmp7 [V13 ] ( 1, 1 ) ref -> [rsp+0x88] do-not-enreg[X] addr-exposed V02.m_keepalive(offs=0x00) P-DEP "field V02.m_keepalive (fldOffset=0x0)" ; V14 tmp8 [V14 ] ( 3, 6 ) long -> [rsp+0x90] do-not-enreg[X] addr-exposed V02.m_metadataImport2(offs=0x08) P-DEP "field V02.m_metadataImport2 (fldOffset=0x8)" ; V15 tmp9 [V15,T04] ( 3, 12 ) ref -> rcx "arr expr" ; V16 tmp10 [V16,T08] ( 2, 8 ) long -> r8 "Cast away GC" ; V17 GsCookie [V17 ] ( 1, 1 ) long -> [rsp+0x98] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V18 tmp12 [V18,T12] ( 3, 3 ) ref -> rdx "shadowVar" ; V19 cse0 [V19,T05] ( 3, 12 ) long -> rcx "CSE - aggressive" ; V20 cse1 [V20,T11] ( 3, 5 ) int -> rbx "CSE - aggressive" ; V21 cse2 [V21,T03] ( 5, 12 ) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 160 G_M5099_IG01: push rdi push rsi push rbx sub rsp, 160 xor rax, rax mov qword ptr [rsp+28H], rax vxorps xmm4, xmm4 mov rax, -96 vmovdqa xmmword ptr [rsp+rax+90H], xmm4 vmovdqa xmmword ptr [rsp+rax+A0H], xmm4 vmovdqa xmmword ptr [rsp+rax+B0H], xmm4 add rax, 48 jne SHORT -5 instr mov qword ptr [rsp+90H], rax mov rax, 0xD1FFAB1E mov qword ptr [rsp+98H], rax mov esi, edx ;; bbWeight=1 PerfScore 11.83 G_M5099_IG02: mov rdx, rcx ;; bbWeight=1 PerfScore 0.25 G_M5099_IG03: cmp dword ptr [rdx], edx lea rcx, bword ptr [rsp+88H] call ModuleHandle:GetMetadataImport(RuntimeModule):MetadataImport lea r9, [rsp+28H] mov rcx, qword ptr [rsp+90H] mov r8d, esi mov edx, 0xD1FFAB1E call MetadataImport:_Enum(long,int,int,byref) cmp dword ptr [rsp+30H], 0 jne SHORT G_M5099_IG07 ;; bbWeight=1 PerfScore 8.50 G_M5099_IG04: mov rcx, 0xD1FFAB1E mov edx, 17 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] mov rcx, 0xD1FFAB1E cmp qword ptr [rsp+98H], rcx je SHORT G_M5099_IG05 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 3.50 G_M5099_IG05: nop ;; bbWeight=0.50 PerfScore 0.13 G_M5099_IG06: add rsp, 160 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M5099_IG07: mov edx, dword ptr [rsp+30H] movsxd rdx, edx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rsi, rax xor edi, edi mov ebx, dword ptr [rsi+8] test ebx, ebx jle SHORT G_M5099_IG12 ;; bbWeight=0.50 PerfScore 3.13 G_M5099_IG08: cmp gword ptr [rsp+28H], 0 je SHORT G_M5099_IG10 ;; bbWeight=4 PerfScore 8.00 G_M5099_IG09: mov rcx, gword ptr [rsp+28H] cmp edi, dword ptr [rcx+8] jae SHORT G_M5099_IG15 movsxd rdx, edi mov r8d, dword ptr [rcx+4*rdx+16] jmp SHORT G_M5099_IG11 ;; bbWeight=2 PerfScore 16.50 G_M5099_IG10: lea rdx, bword ptr [rsp+38H] mov bword ptr [rsp+78H], rdx mov r8, bword ptr [rsp+78H] movsxd rdx, edi mov r8d, dword ptr [r8+4*rdx] ;; bbWeight=2 PerfScore 9.50 G_M5099_IG11: xor rcx, rcx mov bword ptr [rsp+78H], rcx lea rcx, [rdx+2*rdx] lea r9, bword ptr [rsi+8*rcx+32] lea rax, bword ptr [rsi+8*rcx+16] mov rcx, qword ptr [rsp+90H] mov edx, r8d mov r8, r9 mov r9, rax call MetadataImport:_GetCustomAttributeProps(long,int,byref,byref) inc edi cmp ebx, edi jg SHORT G_M5099_IG08 ;; bbWeight=4 PerfScore 32.00 G_M5099_IG12: mov rax, rsi mov rcx, 0xD1FFAB1E cmp qword ptr [rsp+98H], rcx je SHORT G_M5099_IG13 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.75 G_M5099_IG13: nop ;; bbWeight=0.50 PerfScore 0.13 G_M5099_IG14: add rsp, 160 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M5099_IG15: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 392, prolog size 92, PerfScore 137.56, (MethodHash=5061ec14) for method CustomAttributeData:GetCustomAttributeRecords(RuntimeModule,int):ref ; ============================================================ ; Assembly listing for method ModuleHandle:GetMetadataImport(RuntimeModule):MetadataImport ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T00] ( 5, 5 ) byref -> rsi ; V01 arg0 [V01,T01] ( 5, 5 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V04 tmp2 [V04,T02] ( 2, 4 ) long -> rbx "Inlining Arg" ; V05 tmp3 [V05,T03] ( 2, 2 ) ref -> rdx V03.m_keepalive(offs=0x00) P-INDEP "field V03.m_keepalive (fldOffset=0x0)" ; V06 tmp4 [V06,T04] ( 2, 2 ) long -> rbx V03.m_metadataImport2(offs=0x08) P-INDEP "field V03.m_metadataImport2 (fldOffset=0x8)" ; ; Lcl frame size = 32 G_M27035_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M27035_IG02: cmp dword ptr [rdi], edi mov rcx, rdi call ModuleHandle:_GetMetadataImport(RuntimeModule):long mov rbx, rax mov rdx, rdi mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov qword ptr [rsi+8], rbx mov rax, rsi ;; bbWeight=1 PerfScore 6.25 G_M27035_IG03: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 52, prolog size 7, PerfScore 17.95, (MethodHash=3cf59664) for method ModuleHandle:GetMetadataImport(RuntimeModule):MetadataImport ; ============================================================ ; Assembly listing for method EmptyArray`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M47611_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M47611_IG02: mov rcx, 0xD1FFAB1E xor rdx, rdx call CORINFO_HELP_NEWARR_1_VC mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 3.25 G_M47611_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 52, prolog size 10, PerfScore 12.20, (MethodHash=aece4604) for method EmptyArray`1:.cctor() ; ============================================================ ; Assembly listing for method Enum:GetEnumName(EnumInfo,long):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) long -> rdx ; V02 loc0 [V02,T03] ( 4, 3 ) int -> rax ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 4, 8 ) ref -> rcx class-hnd "Inlining Arg" ; V05 tmp2 [V05,T04] ( 3, 3 ) ref -> rcx "arr expr" ; ; Lcl frame size = 48 G_M27268_IG01: push rsi sub rsp, 48 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M27268_IG02: mov rcx, gword ptr [rsi+8] test rcx, rcx je SHORT G_M27268_IG08 ;; bbWeight=1 PerfScore 3.25 G_M27268_IG03: xor r8, r8 mov gword ptr [rsp+20H], r8 mov r8d, dword ptr [rcx+8] mov r9, rdx xor edx, edx call Array:BinarySearch(ref,int,int,long,IComparer`1):int test eax, eax jl SHORT G_M27268_IG06 ;; bbWeight=1 PerfScore 6.00 G_M27268_IG04: mov rcx, gword ptr [rsi+16] cmp eax, dword ptr [rcx+8] jae SHORT G_M27268_IG09 movsxd rax, eax mov rax, gword ptr [rcx+8*rax+16] ;; bbWeight=0.50 PerfScore 3.63 G_M27268_IG05: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M27268_IG06: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M27268_IG07: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M27268_IG08: mov ecx, 2 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M27268_IG09: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 91, prolog size 5, PerfScore 25.35, (MethodHash=db9e957b) for method Enum:GetEnumName(EnumInfo,long):String ; ============================================================ ; Assembly listing for method Array:BinarySearch(ref,int,int,long,IComparer`1):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 5 ) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 5, 5 ) int -> rdi ; V02 arg2 [V02,T02] ( 5, 5 ) int -> rbx ; V03 arg3 [V03,T03] ( 3, 3 ) long -> rbp ; V04 arg4 [V04,T05] ( 1, 1 ) ref -> [rsp+0x80] class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T04] ( 2, 4 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 56 G_M61286_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 mov rsi, rcx mov edi, edx mov ebx, r8d mov rbp, r9 ;; bbWeight=1 PerfScore 5.25 G_M61286_IG02: test rsi, rsi je SHORT G_M61286_IG08 ;; bbWeight=1 PerfScore 1.25 G_M61286_IG03: test edi, edi jl SHORT G_M61286_IG09 ;; bbWeight=1 PerfScore 1.25 G_M61286_IG04: test ebx, ebx jl SHORT G_M61286_IG10 ;; bbWeight=1 PerfScore 1.25 G_M61286_IG05: mov ecx, dword ptr [rsi+8] sub ecx, edi cmp ecx, ebx jl SHORT G_M61286_IG11 ;; bbWeight=1 PerfScore 3.50 G_M61286_IG06: mov rcx, 0xD1FFAB1E mov edx, 18 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov qword ptr [rsp+20H], rbp mov rbp, gword ptr [rsp+80H] mov gword ptr [rsp+28H], rbp mov rdx, rsi mov r8d, edi mov r9d, ebx mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IArraySortHelper`1:BinarySearch(ref,int,int,long,IComparer`1):int:this nop ;; bbWeight=1 PerfScore 11.25 G_M61286_IG07: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M61286_IG08: mov ecx, 2 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M61286_IG09: call ThrowHelper:ThrowIndexArgumentOutOfRange_NeedNonNegNumException() int3 ;; bbWeight=0 PerfScore 0.00 G_M61286_IG10: call ThrowHelper:ThrowLengthArgumentOutOfRange_ArgumentOutOfRange_NeedNonNegNum() int3 ;; bbWeight=0 PerfScore 0.00 G_M61286_IG11: mov ecx, 13 call ThrowHelper:ThrowArgumentException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 167, prolog size 8, PerfScore 43.70, (MethodHash=db441099) for method Array:BinarySearch(ref,int,int,long,IComparer`1):int ; ============================================================ ; Assembly listing for method ArraySortHelper`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M18674_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M18674_IG02: call ArraySortHelper`1:CreateArraySortHelper():IArraySortHelper`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 2.75 G_M18674_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 40, prolog size 10, PerfScore 10.50, (MethodHash=b28eb70d) for method ArraySortHelper`1:.cctor() ; ============================================================ ; Assembly listing for method ArraySortHelper`1:CreateArraySortHelper():IArraySortHelper`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T04] ( 2, 2 ) ref -> rax class-hnd ; V01 loc1 [V01 ] ( 2, 2 ) struct ( 8) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> rsi class-hnd exact "dup spill" ; V04 tmp2 [V04,T01] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V06 tmp4 [V06 ] ( 2, 2 ) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed V01.m_type(offs=0x00) P-DEP "field V01.m_type (fldOffset=0x0)" ; V07 tmp5 [V07,T05] ( 2, 2 ) ref -> rax V05.m_type(offs=0x00) P-INDEP "field V05.m_type (fldOffset=0x0)" ; V08 tmp6 [V08,T02] ( 2, 4 ) ref -> r8 "argument with side effect" ; V09 tmp7 [V09,T03] ( 2, 4 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 48 G_M16339_IG01: push rsi sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax ;; bbWeight=1 PerfScore 2.50 G_M16339_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov gword ptr [rsp+28H], rax mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rsi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, rsi xor edx, edx call CORINFO_HELP_ARRADDR_ST lea rcx, bword ptr [rsp+28H] mov rdx, rsi call RuntimeTypeHandle:Instantiate(ref):RuntimeType:this mov rcx, rax call RuntimeTypeHandle:Allocate(RuntimeType):Object mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTINTERFACE nop ;; bbWeight=1 PerfScore 11.75 G_M16339_IG03: add rsp, 48 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 129, prolog size 12, PerfScore 28.90, (MethodHash=75e0c02c) for method ArraySortHelper`1:CreateArraySortHelper():IArraySortHelper`1 ; ============================================================ ; Assembly listing for method GenericArraySortHelper`1:BinarySearch(ref,int,int,long,IComparer`1):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd ; V02 arg2 [V02,T01] ( 4, 4 ) int -> rdi ; V03 arg3 [V03,T02] ( 4, 4 ) int -> rbx ; V04 arg4 [V04,T05] ( 2, 2 ) long -> r15 ; V05 arg5 [V05,T04] ( 3, 3 ) ref -> r14 class-hnd ; V06 loc0 [V06,T03] ( 4, 3 ) int -> [rbp-0x2C] EH do-not-enreg[] EH-live ;* V07 loc1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T06] ( 2, 0 ) ref -> rdx class-hnd "impSpillSpecialSideEff" ; V10 PSPSym [V10 ] ( 1, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 56 G_M62438_IG01: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 56 lea rbp, [rsp+60H] mov qword ptr [rbp-38H], rsp mov rsi, rdx mov edi, r8d mov ebx, r9d mov r15, qword ptr [rbp+30H] mov r14, gword ptr [rbp+38H] ;; bbWeight=1 PerfScore 10.50 G_M62438_IG02: test r14, r14 je SHORT G_M62438_IG03 mov rcx, 0xD1FFAB1E mov edx, 19 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rcx, 0xD1FFAB1E cmp r14, gword ptr [rcx] jne SHORT G_M62438_IG04 ;; bbWeight=1 PerfScore 6.00 G_M62438_IG03: mov rcx, rsi mov edx, edi mov r8d, ebx mov r9, r15 call GenericArraySortHelper`1:BinarySearch(ref,int,int,long):int mov dword ptr [rbp-2CH], eax jmp SHORT G_M62438_IG05 ;; bbWeight=1 PerfScore 5.00 G_M62438_IG04: mov gword ptr [rsp+20H], r14 mov rcx, rsi mov edx, edi mov r8d, ebx mov r9, r15 call ArraySortHelper`1:InternalBinarySearch(ref,int,int,long,IComparer`1):int mov dword ptr [rbp-2CH], eax ;; bbWeight=1 PerfScore 4.00 G_M62438_IG05: mov eax, dword ptr [rbp-2CH] ;; bbWeight=1 PerfScore 1.00 G_M62438_IG06: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 4.50 G_M62438_IG07: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 56 mov rbp, qword ptr [rcx+40] mov qword ptr [rsp+28H], rbp lea rbp, [rbp+60H] ;; bbWeight=0 PerfScore 0.00 G_M62438_IG08: mov ecx, 61 call ThrowHelper:ThrowInvalidOperationException(int,Exception) xor eax, eax mov dword ptr [rbp-2CH], eax lea rax, G_M62438_IG05 ;; bbWeight=0 PerfScore 0.00 G_M62438_IG09: add rsp, 56 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 199, prolog size 38, PerfScore 50.90, (MethodHash=0cc10c19) for method GenericArraySortHelper`1:BinarySearch(ref,int,int,long,IComparer`1):int:this ; ============================================================ ; Assembly listing for method GenericArraySortHelper`1:BinarySearch(ref,int,int,long):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd ; V01 arg1 [V01,T09] ( 3, 3 ) int -> rdx ; V02 arg2 [V02,T10] ( 3, 3 ) int -> r8 ; V03 arg3 [V03,T08] ( 4, 7 ) long -> r9 ; V04 loc0 [V04,T01] ( 8, 17.50) int -> rdx ; V05 loc1 [V05,T04] ( 5, 12 ) int -> r8 ; V06 loc2 [V06,T02] ( 6, 16.50) int -> r10 ; V07 loc3 [V07,T05] ( 3, 12 ) int -> rsi ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" ; V10 tmp2 [V10,T07] ( 4, 10 ) int -> rsi "Inline return value spill temp" ; V11 tmp3 [V11,T00] ( 3, 18 ) byref -> r11 "Inlining Arg" ; V12 cse0 [V12,T11] ( 2, 5 ) int -> rax "CSE - aggressive" ; V13 cse1 [V13,T06] ( 2, 8 ) long -> r11 "CSE - aggressive" ; ; Lcl frame size = 32 G_M13691_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M13691_IG02: lea r8d, [rdx+r8-1] cmp edx, r8d jg SHORT G_M13691_IG13 mov eax, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.25 G_M13691_IG03: mov r10d, r8d sub r10d, edx sar r10d, 1 add r10d, edx cmp r10d, eax jae SHORT G_M13691_IG17 movsxd r11, r10d lea r11, bword ptr [rcx+8*r11+16] cmp qword ptr [r11], r9 jae SHORT G_M13691_IG05 ;; bbWeight=4 PerfScore 27.00 G_M13691_IG04: mov esi, -1 jmp SHORT G_M13691_IG08 ;; bbWeight=2 PerfScore 4.50 G_M13691_IG05: cmp qword ptr [r11], r9 jbe SHORT G_M13691_IG07 ;; bbWeight=1 PerfScore 3.00 G_M13691_IG06: mov esi, 1 jmp SHORT G_M13691_IG08 ;; bbWeight=2 PerfScore 4.50 G_M13691_IG07: xor esi, esi ;; bbWeight=2 PerfScore 0.50 G_M13691_IG08: test esi, esi je SHORT G_M13691_IG15 ;; bbWeight=4 PerfScore 5.00 G_M13691_IG09: test esi, esi jge SHORT G_M13691_IG11 ;; bbWeight=4 PerfScore 5.00 G_M13691_IG10: lea edx, [r10+1] jmp SHORT G_M13691_IG12 ;; bbWeight=2 PerfScore 5.00 G_M13691_IG11: lea r8d, [r10-1] ;; bbWeight=2 PerfScore 1.00 G_M13691_IG12: cmp edx, r8d jle SHORT G_M13691_IG03 ;; bbWeight=4 PerfScore 5.00 G_M13691_IG13: mov eax, edx not eax ;; bbWeight=0.50 PerfScore 0.25 G_M13691_IG14: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M13691_IG15: mov eax, r10d ;; bbWeight=0.50 PerfScore 0.13 G_M13691_IG16: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M13691_IG17: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 117, prolog size 5, PerfScore 79.83, (MethodHash=02f2ca84) for method GenericArraySortHelper`1:BinarySearch(ref,int,int,long):int ; ============================================================ ; Assembly listing for method RuntimeInformation:GetRuntimeVersion():String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T10] ( 4, 2 ) ref -> rcx class-hnd ; V01 loc1 [V01,T04] ( 10, 5 ) ref -> rsi class-hnd ; V02 loc2 [V02,T09] ( 5, 2.50) int -> rdi ; V03 loc3 [V03,T28] ( 3, 1.50) int -> rax ; V04 loc4 [V04,T11] ( 4, 2 ) ref -> rbx class-hnd ;* V05 loc5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V06 loc6 [V06 ] ( 2, 1 ) ref -> [rsp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V07 loc7 [V07,T29] ( 2, 1 ) ref -> rdi class-hnd ; V08 loc8 [V08,T30] ( 2, 1 ) ref -> rbx class-hnd ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T24] ( 3, 1.50) ref -> rsi ; V11 tmp2 [V11,T01] ( 9, 9 ) ref -> rbp class-hnd exact "dup spill" ; V12 tmp3 [V12,T14] ( 2, 2 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" ; V13 tmp4 [V13,T15] ( 2, 2 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" ; V14 tmp5 [V14,T16] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V15 tmp6 [V15,T25] ( 3, 1.50) ref -> rcx ; V16 tmp7 [V16,T26] ( 3, 1.50) ref -> rcx ; V17 tmp8 [V17,T17] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V18 tmp9 [V18,T12] ( 4, 2 ) ref -> rcx ; V19 tmp10 [V19,T27] ( 3, 1.50) ref -> rsi ; V20 tmp11 [V20,T06] ( 3, 3 ) ref -> rax class-hnd exact "dup spill" ; V21 tmp12 [V21,T07] ( 3, 3 ) ref -> rbx class-hnd "impAppendStmt" ; V22 tmp13 [V22,T02] ( 8, 8 ) ref -> r14 class-hnd exact "dup spill" ; V23 tmp14 [V23,T18] ( 2, 2 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" ; V24 tmp15 [V24,T19] ( 2, 2 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" ; V25 tmp16 [V25,T20] ( 2, 2 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" ;* V26 tmp17 [V26,T34] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V27 tmp18 [V27 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V28 tmp19 [V28 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V29 tmp20 [V29 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V30 tmp21 [V30,T05] ( 4, 4 ) ref -> rsi class-hnd "Inlining Arg" ; V31 tmp22 [V31,T03] ( 6, 7 ) ref -> rax "Single return block return value" ; V32 tmp23 [V32,T31] ( 2, 1 ) byref -> rax V27._pointer(offs=0x00) P-INDEP "field V27._pointer (fldOffset=0x0)" ; V33 tmp24 [V33,T35] ( 2, 1 ) int -> rcx V27._length(offs=0x08) P-INDEP "field V27._length (fldOffset=0x8)" ; V34 tmp25 [V34,T32] ( 2, 1 ) byref -> rax V28._pointer(offs=0x00) P-INDEP "field V28._pointer (fldOffset=0x0)" ;* V35 tmp26 [V35,T36] ( 0, 0 ) int -> zero-ref V28._length(offs=0x08) P-INDEP "field V28._length (fldOffset=0x8)" ; V36 tmp27 [V36,T33] ( 2, 1 ) byref -> rax V29._value(offs=0x00) P-INDEP "field V29._value (fldOffset=0x0)" ; V37 tmp28 [V37 ] ( 2, 2 ) struct (16) [rsp+0x38] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V38 tmp29 [V38,T08] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V39 tmp30 [V39,T21] ( 2, 2 ) ref -> rbx "argument with side effect" ; V40 tmp31 [V40,T23] ( 2, 2 ) int -> rdx "argument with side effect" ; V41 tmp32 [V41,T22] ( 2, 2 ) ref -> rcx "argument with side effect" ; V42 cse0 [V42,T13] ( 4, 2 ) int -> rbp "CSE - moderate" ; V43 rat0 [V43,T00] ( 12, 12 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 80 G_M37838_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 80 vxorps xmm4, xmm4 vmovdqu xmmword ptr [rsp+38H], xmm4 xor rax, rax mov qword ptr [rsp+48H], rax ;; bbWeight=1 PerfScore 7.83 G_M37838_IG02: mov rcx, 0xD1FFAB1E mov edx, 215 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E cmp byte ptr [rcx], 0 je G_M37838_IG10 ;; bbWeight=1 PerfScore 4.75 G_M37838_IG03: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] call Type:GetType(String):Type mov rcx, rax test rcx, rcx jne SHORT G_M37838_IG04 xor rcx, rcx jmp SHORT G_M37838_IG05 ;; bbWeight=0.50 PerfScore 3.50 G_M37838_IG04: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, 40 mov rax, 0xD1FFAB1E call gword ptr [rax]Type:GetMethod(String,int):MethodInfo:this mov rcx, rax ;; bbWeight=0.50 PerfScore 3.00 G_M37838_IG05: test rcx, rcx je G_M37838_IG16 xor rdx, rdx mov gword ptr [rsp+20H], rdx mov gword ptr [rsp+28H], rdx xor r8d, r8d xor r9, r9 mov rax, qword ptr [rcx] mov rax, qword ptr [rax+88] call gword ptr [rax+56]MethodBase:Invoke(Object,int,Binder,ref,CultureInfo):Object:this mov rcx, rax test rcx, rcx jne SHORT G_M37838_IG06 xor rsi, rsi jmp SHORT G_M37838_IG07 ;; bbWeight=0.50 PerfScore 7.38 G_M37838_IG06: mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call gword ptr [rax+8]Object:ToString():String:this mov rsi, rax ;; bbWeight=0.50 PerfScore 3.63 G_M37838_IG07: test rsi, rsi je G_M37838_IG09 lea rcx, bword ptr [rsi+12] mov r8d, dword ptr [rsi+8] mov edx, 40 call SpanHelpers:IndexOf(byref,ushort,int):int mov edi, eax lea rcx, bword ptr [rsi+12] mov r8d, dword ptr [rsi+8] mov edx, 41 call SpanHelpers:IndexOf(byref,ushort,int):int cmp edi, -1 je G_M37838_IG09 cmp eax, -1 je G_M37838_IG09 mov r8d, eax sub r8d, edi dec r8d lea edx, [rdi+1] mov rcx, rsi call String:Substring(int,int):String:this mov rbx, rax mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_VC mov word ptr [rax+16], 32 cmp dword ptr [rbx], ebx add rax, 16 mov ecx, 1 lea rdx, bword ptr [rsp+38H] mov bword ptr [rdx], rax mov dword ptr [rdx+8], ecx mov rcx, rbx lea rdx, bword ptr [rsp+38H] mov r8d, 0xD1FFAB1E mov r9d, 1 call String:SplitInternal(ReadOnlySpan`1,int,int):ref:this mov rbx, rax mov ebp, dword ptr [rbx+8] cmp ebp, 2 jle G_M37838_IG09 mov rcx, 0xD1FFAB1E mov edx, 6 call CORINFO_HELP_NEWARR_1_OBJ mov r14, rax mov rcx, rsi mov r8d, edi xor edx, edx call String:Substring(int,int):String:this lea rcx, bword ptr [r14+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r14+24] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF cmp ebp, 0 jbe G_M37838_IG18 ;; bbWeight=0.50 PerfScore 18.88 G_M37838_IG08: mov rdx, gword ptr [rbx+16] lea rcx, bword ptr [r14+32] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r14+40] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF cmp ebp, 1 jbe G_M37838_IG18 mov rdx, gword ptr [rbx+24] lea rcx, bword ptr [r14+48] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r14+56] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF mov rcx, r14 call String:Concat(ref):String mov rsi, rax ;; bbWeight=0.50 PerfScore 8.63 G_M37838_IG09: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, rsi call String:Concat(String,String):String jmp G_M37838_IG17 ;; bbWeight=0.50 PerfScore 2.75 G_M37838_IG10: call RuntimeInformation:get_IsFullFramework():bool test eax, eax je SHORT G_M37838_IG11 call FrameworkVersionHelper:GetFrameworkDescription():String jmp G_M37838_IG17 ;; bbWeight=0.50 PerfScore 2.63 G_M37838_IG11: call RuntimeInformation:get_IsNetCore():bool test eax, eax je G_M37838_IG15 lea rcx, [rsp+48H] call CoreRuntime:TryGetVersion(byref):bool test eax, eax jne SHORT G_M37838_IG12 mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] jmp SHORT G_M37838_IG13 ;; bbWeight=0.50 PerfScore 4.63 G_M37838_IG12: mov rsi, gword ptr [rsp+48H] cmp dword ptr [rsi], esi mov rcx, rsi call Version:get_DefaultFormatFieldCount():int:this mov edx, eax mov rcx, rsi call Version:ToString(int):String:this mov rsi, rax ;; bbWeight=0.50 PerfScore 3.00 G_M37838_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax call IntrospectionExtensions:GetTypeInfo(Type):TypeInfo mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+80] call gword ptr [rax+48]Type:get_Assembly():Assembly:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+48]Assembly:get_Location():String:this mov rcx, rax call FileVersionInfo:GetVersionInfo(String):FileVersionInfo mov rdi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax call IntrospectionExtensions:GetTypeInfo(Type):TypeInfo mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+80] call gword ptr [rax+48]Type:get_Assembly():Assembly:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+48]Assembly:get_Location():String:this mov rcx, rax call FileVersionInfo:GetVersionInfo(String):FileVersionInfo mov rbx, rax mov rcx, 0xD1FFAB1E mov edx, 7 call CORINFO_HELP_NEWARR_1_OBJ mov rbp, rax lea rcx, bword ptr [rbp+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbp+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbp+32] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rdi+32] lea rcx, bword ptr [rbp+40] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbp+48] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rbx+32] lea rcx, bword ptr [rbp+56] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbp+64] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF mov rcx, rbp call String:Concat(ref):String ;; bbWeight=0.50 PerfScore 31.88 G_M37838_IG14: jmp SHORT G_M37838_IG17 ;; bbWeight=0.50 PerfScore 1.00 G_M37838_IG15: call RuntimeInformation:get_IsCoreRT():bool test eax, eax je SHORT G_M37838_IG16 call RuntimeInformation:get_FrameworkDescription():String mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] cmp dword ptr [rcx], ecx call String:Replace(String,String):String:this jmp SHORT G_M37838_IG17 ;; bbWeight=0.50 PerfScore 6.50 G_M37838_IG16: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M37838_IG17: add rsp, 80 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M37838_IG18: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1013, prolog size 27, PerfScore 216.33, (MethodHash=736d6c31) for method RuntimeInformation:GetRuntimeVersion():String ; ============================================================ ; Assembly listing for method RuntimeInformation:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init "argument with side effect" ; ; Lcl frame size = 48 G_M44310_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M44310_IG02: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] call Type:GetType(String):Type mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] xor rdx, rdx call Type:op_Inequality(Type,Type):bool mov rdx, 0xD1FFAB1E mov byte ptr [rdx], al ;; bbWeight=1 PerfScore 7.75 G_M44310_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 67, prolog size 16, PerfScore 19.45, (MethodHash=cea752e9) for method RuntimeInformation:.cctor() ; ============================================================ ; Assembly listing for method Type:GetType(String):Type ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd ; V01 loc0 [V01 ] ( 2, 2 ) int -> [rsp+0x20] do-not-enreg[X] addr-exposed ld-addr-op ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M63072_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M63072_IG02: mov dword ptr [rsp+20H], 1 lea r9, [rsp+20H] xor edx, edx xor r8d, r8d call RuntimeType:GetType(String,bool,bool,byref):RuntimeType nop ;; bbWeight=1 PerfScore 3.25 G_M63072_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 33, prolog size 4, PerfScore 8.05, (MethodHash=0ce4099f) for method Type:GetType(String):Type ; ============================================================ ; Assembly listing for method RuntimeType:GetType(String,bool,bool,byref):RuntimeType ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) bool -> rbx ; V02 arg2 [V02,T03] ( 3, 3 ) bool -> rbp ; V03 arg3 [V03,T01] ( 3, 3 ) byref -> rdi ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T06] ( 2, 0 ) ref -> rdx "argument with side effect" ; V07 tmp3 [V07,T04] ( 2, 4 ) ref -> rax "argument with side effect" ; ; Lcl frame size = 40 G_M63846_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov ebx, edx mov ebp, r8d mov rdi, r9 ;; bbWeight=1 PerfScore 5.25 G_M63846_IG02: test rsi, rsi je SHORT G_M63846_IG05 ;; bbWeight=1 PerfScore 1.25 G_M63846_IG03: call AssemblyLoadContext:get_CurrentContextualReflectionContext():AssemblyLoadContext mov gword ptr [rsp+20H], rax movzx rdx, bl movzx r8, bpl mov r9, rdi mov rcx, rsi call RuntimeTypeHandle:GetTypeByName(String,bool,bool,byref,AssemblyLoadContext):RuntimeType nop ;; bbWeight=1 PerfScore 4.25 G_M63846_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M63846_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x17E8 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 120, prolog size 8, PerfScore 26.00, (MethodHash=e9d10699) for method RuntimeType:GetType(String,bool,bool,byref):RuntimeType ; ============================================================ ; Assembly listing for method RuntimeTypeHandle:GetTypeByName(String,bool,bool,byref,AssemblyLoadContext):RuntimeType ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 3.75) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 4, 3 ) bool -> rdx ; V02 arg2 [V02,T03] ( 3, 2.50) bool -> r8 ; V03 arg3 [V03,T02] ( 3, 2.50) byref -> r9 ; V04 arg4 [V04,T13] ( 1, 0.50) ref -> [rbp+0x30] class-hnd ; V05 loc0 [V05 ] ( 3, 1.50) ref -> [rbp-0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V06 loc1 [V06 ] ( 3, 1.50) ref -> [rbp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V07 loc2 [V07 ] ( 2, 1 ) ref -> [rbp-0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V10 tmp2 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V11 tmp3 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V12 tmp4 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ; V13 tmp5 [V13,T14] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V14 tmp6 [V14,T05] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V15 tmp7 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V16 tmp8 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V17 tmp9 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V18 tmp10 [V18,T06] ( 2, 1 ) long -> r9 V09._ptr(offs=0x00) P-INDEP "field V09._ptr (fldOffset=0x0)" ; V19 tmp11 [V19,T07] ( 2, 1 ) long -> rax V10._ptr(offs=0x00) P-INDEP "field V10._ptr (fldOffset=0x0)" ; V20 tmp12 [V20,T08] ( 2, 1 ) long -> r10 V11._ptr(offs=0x00) P-INDEP "field V11._ptr (fldOffset=0x0)" ; V21 tmp13 [V21,T09] ( 2, 1 ) long -> r11 V12._ptr(offs=0x00) P-INDEP "field V12._ptr (fldOffset=0x0)" ; V22 tmp14 [V22,T10] ( 2, 1 ) long -> rax V15._ptr(offs=0x00) P-INDEP "field V15._ptr (fldOffset=0x0)" ; V23 tmp15 [V23,T11] ( 2, 1 ) long -> r10 V16._ptr(offs=0x00) P-INDEP "field V16._ptr (fldOffset=0x0)" ; V24 tmp16 [V24,T12] ( 2, 1 ) long -> r11 V17._ptr(offs=0x00) P-INDEP "field V17._ptr (fldOffset=0x0)" ; V25 tmp17 [V25,T15] ( 2, 0 ) ref -> rcx "argument with side effect" ; V26 tmp18 [V26,T16] ( 2, 0 ) ref -> rdx "argument with side effect" ; V27 tmp19 [V27,T04] ( 2, 2 ) long -> r9 "Cast away GC" ; ; Lcl frame size = 88 G_M64347_IG01: push rbp push rsi sub rsp, 88 lea rbp, [rsp+60H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 xor rax, rax mov qword ptr [rbp-10H], rax ;; bbWeight=1 PerfScore 5.33 G_M64347_IG02: test rcx, rcx je SHORT G_M64347_IG04 ;; bbWeight=1 PerfScore 1.25 G_M64347_IG03: cmp dword ptr [rcx+8], 0 ja SHORT G_M64347_IG07 ;; bbWeight=0.25 PerfScore 0.75 G_M64347_IG04: test dl, dl jne SHORT G_M64347_IG09 ;; bbWeight=0.50 PerfScore 0.63 G_M64347_IG05: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M64347_IG06: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=0.50 PerfScore 1.25 G_M64347_IG07: xor rax, rax mov gword ptr [rbp-10H], rax mov gword ptr [rbp-18H], rax mov rax, gword ptr [rbp+30H] mov gword ptr [rbp-20H], rax lea rax, [rbp-20H] lea r10, [rbp-10H] lea r11, [rbp-18H] mov qword ptr [rsp+20H], rax mov qword ptr [rsp+28H], r10 mov qword ptr [rsp+30H], r11 movzx r8, r8b movzx rdx, dl call RuntimeTypeHandle:GetTypeByName(String,bool,bool,StackCrawlMarkHandle,ObjectHandleOnStack,ObjectHandleOnStack,ObjectHandleOnStack) mov rax, gword ptr [rbp-10H] ;; bbWeight=0.50 PerfScore 5.63 G_M64347_IG08: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=0.50 PerfScore 1.25 G_M64347_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x5701 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call TypeLoadException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 186, prolog size 26, PerfScore 35.01, (MethodHash=3ce704a4) for method RuntimeTypeHandle:GetTypeByName(String,bool,bool,byref,AssemblyLoadContext):RuntimeType ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(String,bool,bool,StackCrawlMarkHandle,ObjectHandleOnStack,ObjectHandleOnStack,ObjectHandleOnStack) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 4 ) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) bool -> rdi ; V02 arg2 [V02,T03] ( 3, 3 ) bool -> rbx ;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ;* V05 arg5 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ;* V06 arg6 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ;* V07 loc0 [V07 ] ( 0, 0 ) int -> zero-ref ; V08 loc1 [V08,T06] ( 3, 2.50) long -> rcx ; V09 loc2 [V09 ] ( 1, 0.50) ref -> [rbp-0x40] must-init pinned class-hnd ; V10 loc3 [V10,T07] ( 2, 2 ) int -> rdx ; V11 loc4 [V11,T08] ( 2, 2 ) int -> r8 ;* V12 loc5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ;* V13 loc6 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ;* V14 loc7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ;* V15 loc8 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ; V16 OutArgs [V16 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V17 tmp1 [V17 ] ( 3, 3 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "stub argument" ; V18 tmp2 [V18,T04] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V19 FramesRoot [V19,T00] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V20 PInvokeFrame [V20 ] ( 8, 8 ) blk (72) [rbp-0x90] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V21 tmp5 [V21,T05] ( 2, 2 ) long -> r14 V03._ptr(offs=0x00) P-INDEP "field V03._ptr (fldOffset=0x0)" ; V22 tmp6 [V22,T13] ( 1, 1 ) long -> [rbp+0x30] V04._ptr(offs=0x00) P-INDEP "field V04._ptr (fldOffset=0x0)" ; V23 tmp7 [V23,T14] ( 1, 1 ) long -> [rbp+0x38] V05._ptr(offs=0x00) P-INDEP "field V05._ptr (fldOffset=0x0)" ; V24 tmp8 [V24,T15] ( 1, 1 ) long -> [rbp+0x40] V06._ptr(offs=0x00) P-INDEP "field V06._ptr (fldOffset=0x0)" ; V25 tmp9 [V25,T09] ( 2, 2 ) long -> r9 V12._ptr(offs=0x00) P-INDEP "field V12._ptr (fldOffset=0x0)" ; V26 tmp10 [V26,T10] ( 2, 2 ) long -> rsi V13._ptr(offs=0x00) P-INDEP "field V13._ptr (fldOffset=0x0)" ; V27 tmp11 [V27,T11] ( 2, 2 ) long -> rdi V14._ptr(offs=0x00) P-INDEP "field V14._ptr (fldOffset=0x0)" ; V28 tmp12 [V28,T12] ( 2, 2 ) long -> rbx V15._ptr(offs=0x00) P-INDEP "field V15._ptr (fldOffset=0x0)" ; ; Lcl frame size = 152 G_M31696_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 152 lea rbp, [rsp+D0H] mov qword ptr [rbp-48H], r10 xor rbx, rbx mov qword ptr [rbp-40H], rbx mov rsi, rcx mov edi, edx mov ebx, r8d mov r14, r9 ;; bbWeight=1 PerfScore 12.00 G_M31696_IG02: lea rcx, [rbp-88H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-68H], rcx mov rcx, rbp mov qword ptr [rbp-58H], rcx lea rcx, bword ptr [rbp-88H] mov qword ptr [r15+16], rcx xor rcx, rcx test rsi, rsi je SHORT G_M31696_IG04 ;; bbWeight=1 PerfScore 7.50 G_M31696_IG03: mov gword ptr [rbp-40H], rsi lea rcx, bword ptr [rsi+12] ;; bbWeight=0.50 PerfScore 0.75 G_M31696_IG04: test dil, dil setne dl movzx rdx, dl test bl, bl setne r8b movzx r8, r8b mov r9, r14 mov rsi, qword ptr [rbp+30H] mov rdi, qword ptr [rbp+38H] mov rbx, qword ptr [rbp+40H] mov rax, qword ptr [rbp-48H] mov rax, qword ptr [rax+32] mov rax, qword ptr [rax] mov qword ptr [rsp+20H], rsi mov qword ptr [rsp+28H], rdi mov qword ptr [rsp+30H], rbx mov r10, qword ptr [rbp-48H] mov qword ptr [rbp-78H], r10 lea r10, G_M31696_IG06 mov qword ptr [rbp-60H], r10 mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 19.25 G_M31696_IG05: call rax ;; bbWeight=1 PerfScore 3.00 G_M31696_IG06: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M31696_IG07 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M31696_IG07: mov rax, bword ptr [rbp-80H] mov qword ptr [r15+16], rax ;; bbWeight=1 PerfScore 2.00 G_M31696_IG08: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 249, prolog size 37, PerfScore 82.40, (MethodHash=ceba842f) for method ILStubClass:IL_STUB_PInvoke(String,bool,bool,StackCrawlMarkHandle,ObjectHandleOnStack,ObjectHandleOnStack,ObjectHandleOnStack) ; ============================================================ ; Assembly listing for method AssemblyLoadContext:OnTypeResolve(RuntimeAssembly,String):RuntimeAssembly ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> r8 class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rax class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M40872_IG01: mov r8, rcx mov rax, rdx ;; bbWeight=1 PerfScore 0.50 G_M40872_IG02: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, r8 mov r8, rax ;; bbWeight=1 PerfScore 2.75 G_M40872_IG03: jmp AssemblyLoadContext:InvokeResolveEvent(ResolveEventHandler,RuntimeAssembly,String):RuntimeAssembly ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 30, prolog size 6, PerfScore 8.25, (MethodHash=19436057) for method AssemblyLoadContext:OnTypeResolve(RuntimeAssembly,String):RuntimeAssembly ; ============================================================ ; Assembly listing for method AssemblyLoadContext:InvokeResolveEvent(ResolveEventHandler,RuntimeAssembly,String):RuntimeAssembly ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T10] ( 6, 6.50) ref -> rdi class-hnd ; V01 arg1 [V01,T26] ( 3, 2.50) ref -> rbx class-hnd ; V02 arg2 [V02,T04] ( 4, 4.50) ref -> rsi class-hnd ; V03 loc0 [V03,T27] ( 2, 4.50) ref -> r14 class-hnd exact ; V04 loc1 [V04,T23] ( 3, 5 ) ref -> rbx class-hnd ; V05 loc2 [V05,T06] ( 5, 16.50) int -> r15 ; V06 loc3 [V06,T09] ( 3, 10 ) ref -> r13 class-hnd ; V07 loc4 [V07,T01] ( 10, 24 ) ref -> [rbp-0x40] class-hnd ; V08 loc5 [V08,T11] ( 3, 8.50) ref -> rax class-hnd ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T28] ( 4, 4 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V11 tmp2 [V11,T05] ( 3, 16.96) ref -> rdx "CASTCLASS eval op1" ; V12 tmp3 [V12,T25] ( 3, 4.96) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V13 tmp4 [V13,T00] ( 5, 26.96) ref -> r13 class-hnd "spilling QMark2" ;* V14 tmp5 [V14,T31] ( 0, 0 ) ref -> zero-ref ; V15 tmp6 [V15,T13] ( 3, 6 ) ref -> r13 ;* V16 tmp7 [V16,T29] ( 0, 0 ) ref -> zero-ref ; V17 tmp8 [V17,T14] ( 3, 6 ) ref -> r13 ; V18 tmp9 [V18,T15] ( 3, 6 ) ref -> registers ;* V19 tmp10 [V19,T32] ( 0, 0 ) ref -> zero-ref ; V20 tmp11 [V20,T16] ( 3, 6 ) ref -> r13 ; V21 tmp12 [V21,T17] ( 3, 6 ) ref -> [rbp-0x48] ;* V22 tmp13 [V22,T30] ( 0, 0 ) ref -> zero-ref ; V23 tmp14 [V23,T18] ( 3, 6 ) ref -> r13 ; V24 tmp15 [V24,T19] ( 3, 6 ) ref -> [rbp-0x50] ; V25 tmp16 [V25,T20] ( 3, 6 ) ref -> r9 ; V26 tmp17 [V26,T12] ( 2, 4 ) bool -> rax "Inline return value spill temp" ; V27 tmp18 [V27,T03] ( 4, 22 ) ref -> rcx class-hnd "Inlining Arg" ; V28 tmp19 [V28,T21] ( 3, 6 ) bool -> rcx "Inline return value spill temp" ;* V29 tmp20 [V29,T22] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V30 tmp21 [V30,T07] ( 2, 16 ) ref -> rdx "argument with side effect" ; V31 cse0 [V31,T24] ( 3, 5 ) int -> r12 "CSE - moderate" ; V32 rat0 [V32,T02] ( 3, 24 ) ref -> rax "delegate invoke call" ; V33 rat1 [V33,T08] ( 3, 12 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 56 G_M20833_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 56 lea rbp, [rsp+70H] mov rdi, rcx mov rbx, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 9.50 G_M20833_IG02: test rdi, rdi jne SHORT G_M20833_IG05 ;; bbWeight=1 PerfScore 1.25 G_M20833_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M20833_IG04: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M20833_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax lea rcx, bword ptr [r14+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r14+16] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, rdi mov rax, 0xD1FFAB1E call gword ptr [rax]MulticastDelegate:GetInvocationList():ref:this mov rbx, rax xor r15d, r15d mov r12d, dword ptr [rbx+8] test r12d, r12d jle G_M20833_IG25 ;; bbWeight=0.50 PerfScore 6.13 G_M20833_IG06: movsxd rcx, r15d mov rdx, gword ptr [rbx+8*rcx+16] mov r13, rdx test r13, r13 je SHORT G_M20833_IG09 ;; bbWeight=4 PerfScore 15.00 G_M20833_IG07: mov rcx, 0xD1FFAB1E cmp qword ptr [r13], rcx je SHORT G_M20833_IG09 ;; bbWeight=1 PerfScore 3.25 G_M20833_IG08: call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov r13, rax ;; bbWeight=0.48 PerfScore 0.60 G_M20833_IG09: mov rcx, 0xD1FFAB1E mov edx, 203 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rax, r13 mov rcx, gword ptr [rax+8] mov r8, r14 call gword ptr [rax+24]ResolveEventHandler:Invoke(Object,ResolveEventArgs):Assembly:this mov gword ptr [rbp-40H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] test rcx, rcx je SHORT G_M20833_IG15 ;; bbWeight=4 PerfScore 55.00 G_M20833_IG10: cmp rcx, rdi je SHORT G_M20833_IG12 ;; bbWeight=1 PerfScore 1.25 G_M20833_IG11: mov rdx, rdi mov r8, 0xD1FFAB1E call qword ptr [r8]MulticastDelegate:Equals(Object):bool:this test eax, eax je SHORT G_M20833_IG14 ;; bbWeight=2 PerfScore 9.50 G_M20833_IG12: call AssemblyLoadContext:IsTracingEnabled():bool test eax, eax je SHORT G_M20833_IG13 mov rcx, r13 mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]MulticastDelegate:GetMethodImpl():MethodInfo:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+64] call gword ptr [rax+48]MemberInfo:get_Name():String:this mov r13, rax mov rax, gword ptr [rbp-40H] test rax, rax jne SHORT G_M20833_IG16 xor rdx, rdx jmp SHORT G_M20833_IG17 ;; bbWeight=2 PerfScore 39.50 G_M20833_IG13: mov rax, gword ptr [rbp-40H] jmp G_M20833_IG23 ;; bbWeight=1 PerfScore 3.00 G_M20833_IG14: mov rax, gword ptr [rbp-40H] jmp G_M20833_IG23 ;; bbWeight=1 PerfScore 3.00 G_M20833_IG15: mov rax, gword ptr [rbp-40H] jmp G_M20833_IG23 ;; bbWeight=2 PerfScore 6.00 G_M20833_IG16: mov rcx, rax mov gword ptr [rbp-40H], rax mov rdx, qword ptr [rax] mov rdx, qword ptr [rdx+72] call gword ptr [rdx+24]Assembly:get_FullName():String:this mov rdx, rax mov rax, gword ptr [rbp-40H] ;; bbWeight=2 PerfScore 19.00 G_M20833_IG17: test rax, rax je SHORT G_M20833_IG18 xor ecx, ecx jmp SHORT G_M20833_IG19 ;; bbWeight=2 PerfScore 7.00 G_M20833_IG18: mov ecx, 1 ;; bbWeight=2 PerfScore 0.50 G_M20833_IG19: mov gword ptr [rbp-48H], rdx test ecx, ecx jne SHORT G_M20833_IG20 mov rcx, rax mov gword ptr [rbp-40H], rax mov r8, qword ptr [rax] mov r8, qword ptr [r8+72] call qword ptr [r8+40]Assembly:get_IsDynamic():bool:this test eax, eax mov rax, gword ptr [rbp-40H] je SHORT G_M20833_IG21 ;; bbWeight=2 PerfScore 25.50 G_M20833_IG20: mov rdx, gword ptr [rbp-48H] mov r8, rdx xor r9, r9 mov gword ptr [rbp-40H], rax jmp SHORT G_M20833_IG22 ;; bbWeight=2 PerfScore 9.00 G_M20833_IG21: mov rdx, gword ptr [rbp-48H] mov gword ptr [rbp-50H], rdx mov rcx, rax mov gword ptr [rbp-40H], rax mov rdx, qword ptr [rax] mov rdx, qword ptr [rdx+72] call gword ptr [rdx+48]Assembly:get_Location():String:this mov r9, rax mov r8, gword ptr [rbp-50H] ;; bbWeight=2 PerfScore 23.00 G_M20833_IG22: mov rcx, rsi mov rdx, r13 call AssemblyLoadContext:TraceAssemblyResolveHandlerInvoked(String,String,String,String):bool mov rax, gword ptr [rbp-40H] ;; bbWeight=2 PerfScore 5.00 G_M20833_IG23: mov rcx, rax call AssemblyLoadContext:GetRuntimeAssembly(Assembly):RuntimeAssembly test rax, rax jne SHORT G_M20833_IG27 ;; bbWeight=4 PerfScore 10.00 G_M20833_IG24: inc r15d cmp r12d, r15d jg G_M20833_IG06 ;; bbWeight=4 PerfScore 6.00 G_M20833_IG25: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M20833_IG26: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M20833_IG27: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 ; Total bytes of code 541, prolog size 21, PerfScore 320.58, (MethodHash=d801ae9e) for method AssemblyLoadContext:InvokeResolveEvent(ResolveEventHandler,RuntimeAssembly,String):RuntimeAssembly ; ============================================================ ; Assembly listing for method RuntimeInformation:get_IsFullFramework():bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 2, 4 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 40 G_M10201_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M10201_IG02: call RuntimeInformation:get_FrameworkDescription():String mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, 5 cmp dword ptr [rcx], ecx ;; bbWeight=1 PerfScore 5.75 G_M10201_IG03: add rsp, 40 jmp String:StartsWith(String,int):bool:this ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 42, prolog size 4, PerfScore 12.45, (MethodHash=6befd826) for method RuntimeInformation:get_IsFullFramework():bool ; ============================================================ ; Assembly listing for method RuntimeInformation:get_FrameworkDescription():String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T00] ( 8, 4 ) ref -> rsi class-hnd ; V01 loc1 [V01,T07] ( 3, 1.50) int -> rax ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 2 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T04] ( 3, 1.50) ref -> rax ; V05 tmp3 [V05,T05] ( 3, 1.50) ref -> rsi ; V06 tmp4 [V06,T06] ( 3, 1.50) ref -> rdx ; V07 tmp5 [V07,T02] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V08 tmp6 [V08,T03] ( 2, 2 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M25805_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M25805_IG02: mov rcx, 0xD1FFAB1E cmp gword ptr [rcx], 0 jne G_M25805_IG09 ;; bbWeight=1 PerfScore 3.25 G_M25805_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax call RuntimeTypeHandle:GetAssembly(RuntimeType):RuntimeAssembly mov rdx, rax mov rcx, 0xD1FFAB1E call CustomAttributeExtensions:GetCustomAttribute(Assembly):__Canon test rax, rax jne SHORT G_M25805_IG04 xor rsi, rsi jmp SHORT G_M25805_IG05 ;; bbWeight=0.50 PerfScore 3.75 G_M25805_IG04: mov rsi, gword ptr [rax+8] ;; bbWeight=0.50 PerfScore 1.00 G_M25805_IG05: test rsi, rsi je SHORT G_M25805_IG06 lea rcx, bword ptr [rsi+12] mov r8d, dword ptr [rsi+8] mov edx, 43 call SpanHelpers:IndexOf(byref,ushort,int):int cmp eax, -1 je SHORT G_M25805_IG06 mov rcx, rsi mov r8d, eax xor edx, edx call String:Substring(int,int):String:this mov rsi, rax ;; bbWeight=0.50 PerfScore 4.13 G_M25805_IG06: mov rcx, rsi call String:IsNullOrWhiteSpace(String):bool test eax, eax je SHORT G_M25805_IG07 mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rcx] jmp SHORT G_M25805_IG08 ;; bbWeight=0.50 PerfScore 3.38 G_M25805_IG07: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, rsi call String:Concat(String,String):String mov rdx, rax ;; bbWeight=0.50 PerfScore 1.88 G_M25805_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 0.63 G_M25805_IG09: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=1 PerfScore 2.25 G_M25805_IG10: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 208, prolog size 5, PerfScore 44.05, (MethodHash=bf419b32) for method RuntimeInformation:get_FrameworkDescription():String ; ============================================================ ; Assembly listing for method CustomAttributeExtensions:GetCustomAttribute(Assembly):__Canon ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx ; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx "argument with side effect" ; V05 cse0 [V05,T04] ( 3, 3 ) long -> rdi "CSE - aggressive" ; ; Lcl frame size = 40 G_M37748_IG01: push rdi push rsi sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 3.50 G_M37748_IG02: mov rdi, qword ptr [rcx+16] mov rcx, qword ptr [rdi] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, rsi mov r8d, 1 call Attribute:GetCustomAttribute(Assembly,Type,bool):Attribute mov rdx, rax mov rcx, qword ptr [rdi] call CORINFO_HELP_CHKCASTANY nop ;; bbWeight=1 PerfScore 10.25 G_M37748_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 62, prolog size 11, PerfScore 22.20, (MethodHash=d4ac6c8b) for method CustomAttributeExtensions:GetCustomAttribute(Assembly):__Canon ; ============================================================ ; Assembly listing for method Attribute:GetCustomAttribute(Assembly,Type,bool):Attribute ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) bool -> r8 ; V03 loc0 [V03,T03] ( 4, 3 ) ref -> rax class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T06] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp3 [V07,T07] ( 2, 0 ) ref -> rdx "argument with side effect" ; V08 cse0 [V08,T04] ( 4, 2 ) int -> rcx "CSE - aggressive" ; ; Lcl frame size = 32 G_M16042_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M16042_IG02: movzx r8, r8b call Attribute:GetCustomAttributes(Assembly,Type,bool):ref test rax, rax je SHORT G_M16042_IG04 ;; bbWeight=1 PerfScore 2.50 G_M16042_IG03: mov ecx, dword ptr [rax+8] test ecx, ecx jne SHORT G_M16042_IG06 ;; bbWeight=0.50 PerfScore 1.63 G_M16042_IG04: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M16042_IG05: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M16042_IG06: cmp ecx, 1 jne SHORT G_M16042_IG08 cmp ecx, 0 jbe SHORT G_M16042_IG09 mov rax, gword ptr [rax+16] ;; bbWeight=0.50 PerfScore 2.25 G_M16042_IG07: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M16042_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xFC8B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call AmbiguousMatchException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M16042_IG09: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 128, prolog size 5, PerfScore 22.30, (MethodHash=84dfc155) for method Attribute:GetCustomAttribute(Assembly,Type,bool):Attribute ; ============================================================ ; Assembly listing for method Attribute:GetCustomAttributes(Assembly,Type,bool):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 5 ) ref -> rdi class-hnd ; V01 arg1 [V01,T00] ( 7, 6.50) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) bool -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T07] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp3 [V06,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V07 tmp4 [V07,T06] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V08 tmp5 [V08,T10] ( 2, 0 ) ref -> rdx "argument with side effect" ; V09 tmp6 [V09,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp7 [V10,T03] ( 2, 4 ) ref -> rdx "argument with side effect" ; V11 tmp8 [V11,T12] ( 2, 0 ) ref -> rcx "argument with side effect" ; V12 tmp9 [V12,T13] ( 2, 0 ) ref -> rdx "argument with side effect" ; V13 tmp10 [V13,T04] ( 2, 4 ) ref -> rdx "argument with side effect" ; V14 cse0 [V14,T05] ( 3, 2.50) ref -> rbp "CSE - aggressive" ; ; Lcl frame size = 40 G_M46996_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rdi, rcx mov rsi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 5.00 G_M46996_IG02: test rdi, rdi je SHORT G_M46996_IG07 test rsi, rsi je G_M46996_IG08 ;; bbWeight=1 PerfScore 2.50 G_M46996_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rbp, rax mov rdx, rbp mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+168] call qword ptr [rax+24]Type:IsSubclassOf(Type):bool:this test eax, eax jne SHORT G_M46996_IG05 ;; bbWeight=1 PerfScore 10.25 G_M46996_IG04: cmp rbp, rsi jne G_M46996_IG09 ;; bbWeight=0.50 PerfScore 0.63 G_M46996_IG05: movzx r8, bl mov rcx, rdi mov rdx, rsi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+88] call gword ptr [rax+48]Assembly:GetCustomAttributes(Type,bool):ref:this mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTARRAY nop ;; bbWeight=1 PerfScore 9.50 G_M46996_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M46996_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 219 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M46996_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 245 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M46996_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x7F57 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 311, prolog size 8, PerfScore 62.23, (MethodHash=6d03486b) for method Attribute:GetCustomAttributes(Assembly,Type,bool):ref ; ============================================================ ; Assembly listing for method RuntimeAssembly:GetCustomAttributes(Type,bool):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rdx class-hnd ;* V02 arg2 [V02 ] ( 0, 0 ) bool -> zero-ref ; V03 loc0 [V03,T04] ( 3, 3 ) ref -> rdx class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 4 ) ref -> rax "CASTCLASS eval op1" ; V06 tmp2 [V06,T01] ( 5, 6.74) ref -> rdx class-hnd "spilling QMark2" ; V07 tmp3 [V07,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp4 [V08,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp5 [V09,T07] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp6 [V10,T08] ( 2, 0 ) ref -> rcx "argument with side effect" ; V11 tmp7 [V11,T09] ( 2, 0 ) ref -> rdi "argument with side effect" ; V12 tmp8 [V12,T10] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M15972_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M15972_IG02: test rdx, rdx je SHORT G_M15972_IG09 ;; bbWeight=1 PerfScore 1.25 G_M15972_IG03: mov rcx, rdx mov rax, qword ptr [rdx] mov rax, qword ptr [rax+88] call gword ptr [rax+8]Type:get_UnderlyingSystemType():Type:this mov rdx, rax test rdx, rdx je SHORT G_M15972_IG06 ;; bbWeight=1 PerfScore 8.75 G_M15972_IG04: mov rcx, 0xD1FFAB1E cmp qword ptr [rdx], rcx je SHORT G_M15972_IG06 ;; bbWeight=0.25 PerfScore 0.81 G_M15972_IG05: xor rdx, rdx ;; bbWeight=0.12 PerfScore 0.03 G_M15972_IG06: test rdx, rdx je SHORT G_M15972_IG10 ;; bbWeight=1 PerfScore 1.25 G_M15972_IG07: mov rcx, rsi ;; bbWeight=1 PerfScore 0.25 G_M15972_IG08: add rsp, 40 pop rsi pop rdi jmp CustomAttribute:GetCustomAttributes(RuntimeAssembly,RuntimeType):ref ;; bbWeight=1 PerfScore 3.25 G_M15972_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 245 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M15972_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x4B99 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 245 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 222, prolog size 6, PerfScore 40.29, (MethodHash=5925c19b) for method RuntimeAssembly:GetCustomAttributes(Type,bool):ref:this ; ============================================================ ; Assembly listing for method CustomAttribute:GetCustomAttributes(RuntimeAssembly,RuntimeType):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 6 ) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdi class-hnd ; V02 loc0 [V02,T04] ( 2, 2 ) int -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> rdx "argument with side effect" ; V05 tmp2 [V05,T03] ( 2, 4 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 32 G_M2085_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M2085_IG02: cmp dword ptr [rsi], esi mov rcx, rsi call RuntimeAssembly:GetToken(RuntimeAssembly):int mov ebx, eax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+96] call gword ptr [rax+24]Assembly:get_ManifestModule():Module:this mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS mov rcx, rax mov edx, ebx mov r9, rdi xor r8d, r8d ;; bbWeight=1 PerfScore 13.25 G_M2085_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp CustomAttribute:GetCustomAttributes(RuntimeModule,int,int,RuntimeType):ref ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 79, prolog size 7, PerfScore 28.65, (MethodHash=d193f7da) for method CustomAttribute:GetCustomAttributes(RuntimeAssembly,RuntimeType):ref ; ============================================================ ; Assembly listing for method RuntimeAssembly:get_ManifestModule():Module:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M899_IG01: ;; bbWeight=1 PerfScore 0.00 G_M899_IG02: jmp RuntimeAssembly:GetManifestModule(RuntimeAssembly):RuntimeModule ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 5, prolog size 0, PerfScore 2.50, (MethodHash=73aafc7c) for method RuntimeAssembly:get_ManifestModule():Module:this ; ============================================================ ; Assembly listing for method CustomAttribute:GetCustomAttributes(RuntimeModule,int,int,RuntimeType):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T05] ( 3, 3 ) int -> rdx ; V02 arg2 [V02,T06] ( 3, 3 ) int -> rdi ; V03 arg3 [V03,T02] ( 7, 5.50) ref -> rsi class-hnd ; V04 loc0 [V04 ] ( 8, 17 ) struct (24) [rsp+0x70] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V05 loc1 [V05,T13] ( 2, 2 ) bool -> rcx ;* V06 loc2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V07 loc3 [V07,T03] ( 3, 6 ) ref -> rsi class-hnd ; V08 loc4 [V08,T14] ( 2, 2 ) struct (24) [rsp+0x58] do-not-enreg[SB] must-init ld-addr-op ; V09 loc5 [V09,T00] ( 7, 21 ) int -> rdi ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T12] ( 3, 2 ) int -> rax ; V12 tmp2 [V12,T11] ( 3, 2 ) ref -> rsi ; V13 tmp3 [V13,T01] ( 3, 8 ) ref -> r8 class-hnd "Inline return value spill temp" ; V14 tmp4 [V14 ] ( 4, 9 ) ref -> [rsp+0x70] do-not-enreg[X] addr-exposed V04._items(offs=0x00) P-DEP "field V04._items (fldOffset=0x0)" ; V15 tmp5 [V15 ] ( 2, 3 ) ref -> [rsp+0x78] do-not-enreg[X] addr-exposed V04._item(offs=0x08) P-DEP "field V04._item (fldOffset=0x8)" ; V16 tmp6 [V16 ] ( 4, 7 ) int -> [rsp+0x80] do-not-enreg[X] addr-exposed V04._count(offs=0x10) P-DEP "field V04._count (fldOffset=0x10)" ; V17 tmp7 [V17 ] ( 1, 1 ) int -> [rsp+0x84] do-not-enreg[X] addr-exposed V04._capacity(offs=0x14) P-DEP "field V04._capacity (fldOffset=0x14)" ; V18 tmp8 [V18 ] ( 2, 4 ) struct (24) [rsp+0x40] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V19 tmp9 [V19,T09] ( 2, 4 ) long -> r8 "argument with side effect" ; V20 tmp10 [V20,T07] ( 2, 4 ) ref -> [rsp+0x30] "argument with side effect" ; V21 tmp11 [V21,T10] ( 2, 4 ) int -> [rsp+0x3C] "argument with side effect" ; V22 tmp12 [V22,T08] ( 2, 4 ) ref -> r9 "argument with side effect" ; ; Lcl frame size = 136 G_M1697_IG01: push rdi push rsi sub rsp, 136 vzeroupper vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 vmovdqa xmmword ptr [rsp+50H], xmm4 vmovdqa xmmword ptr [rsp+60H], xmm4 vmovdqa xmmword ptr [rsp+70H], xmm4 xor rax, rax mov qword ptr [rsp+80H], rax mov edi, r8d mov rsi, r9 ;; bbWeight=1 PerfScore 9.33 G_M1697_IG02: xor r8d, r8d vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+58H], xmm0 mov qword ptr [rsp+68H], r8 lea r8, bword ptr [rsp+70H] mov gword ptr [rsp+30H], rcx mov dword ptr [rsp+3CH], edx mov r9, rsi xor eax, eax mov dword ptr [rsp+20H], eax ;; bbWeight=1 PerfScore 6.58 G_M1697_IG03: vmovdqu xmm0, xmmword ptr [rsp+58H] vmovdqu xmmword ptr [rsp+40H], xmm0 mov rax, qword ptr [rsp+68H] mov qword ptr [rsp+50H], rax ;; bbWeight=1 PerfScore 4.00 G_M1697_IG04: mov rcx, r8 mov rdx, gword ptr [rsp+30H] mov r8d, dword ptr [rsp+3CH] lea rax, bword ptr [rsp+40H] mov bword ptr [rsp+28H], rax call CustomAttribute:AddCustomAttributes(byref,RuntimeModule,int,RuntimeType,bool,ListBuilder`1) test rsi, rsi je SHORT G_M1697_IG06 ;; bbWeight=1 PerfScore 6.00 G_M1697_IG05: mov rcx, rsi mov rax, 0xD1FFAB1E call qword ptr [rax]RuntimeType:IsValueTypeImpl():bool:this test al, al jne SHORT G_M1697_IG06 mov rcx, rsi mov rax, 0xD1FFAB1E call qword ptr [rax]RuntimeType:get_ContainsGenericParameters():bool:this jmp SHORT G_M1697_IG07 ;; bbWeight=0.50 PerfScore 5.13 G_M1697_IG06: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M1697_IG07: movzx rcx, al test ecx, ecx jne SHORT G_M1697_IG09 ;; bbWeight=1 PerfScore 1.50 G_M1697_IG08: jmp SHORT G_M1697_IG10 ;; bbWeight=0.50 PerfScore 1.00 G_M1697_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rsi, rax ;; bbWeight=0.50 PerfScore 0.75 G_M1697_IG10: mov edx, edi add edx, dword ptr [rsp+80H] mov rcx, rsi call CustomAttribute:CreateAttributeArrayHelper(RuntimeType,int):ref mov rsi, rax xor edi, edi cmp dword ptr [rsp+80H], 0 jle SHORT G_M1697_IG15 ;; bbWeight=1 PerfScore 5.00 G_M1697_IG11: cmp gword ptr [rsp+70H], 0 jne SHORT G_M1697_IG13 ;; bbWeight=4 PerfScore 8.00 G_M1697_IG12: mov r8, gword ptr [rsp+78H] jmp SHORT G_M1697_IG14 ;; bbWeight=2 PerfScore 6.00 G_M1697_IG13: mov r8, gword ptr [rsp+70H] cmp edi, dword ptr [r8+8] jae SHORT G_M1697_IG17 mov rcx, gword ptr [rsp+70H] movsxd rdx, edi mov r8, gword ptr [rcx+8*rdx+16] ;; bbWeight=2 PerfScore 14.50 G_M1697_IG14: mov rcx, rsi mov edx, edi call CORINFO_HELP_ARRADDR_ST inc edi cmp edi, dword ptr [rsp+80H] jl SHORT G_M1697_IG11 ;; bbWeight=4 PerfScore 15.00 G_M1697_IG15: mov rax, rsi ;; bbWeight=1 PerfScore 0.25 G_M1697_IG16: add rsp, 136 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M1697_IG17: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 331, prolog size 56, PerfScore 119.42, (MethodHash=a009f95e) for method CustomAttribute:GetCustomAttributes(RuntimeModule,int,int,RuntimeType):ref ; ============================================================ ; Assembly listing for method CustomAttribute:AddCustomAttributes(byref,RuntimeModule,int,RuntimeType,bool,ListBuilder`1) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T41] ( 3, 4 ) byref -> r15 ; V01 arg1 [V01,T16] ( 8, 26 ) ref -> rsi class-hnd ; V02 arg2 [V02,T21] ( 4, 7 ) int -> rdi ; V03 arg3 [V03,T27] ( 4, 7 ) ref -> rbx class-hnd ; V04 arg4 [V04,T43] ( 1, 4 ) bool -> r12 ; V05 arg5 [V05,T37] ( 1, 8 ) byref -> r14 ld-addr-op ; V06 loc0 [V06,T40] ( 4, 6 ) ref -> r13 class-hnd ; V07 loc1 [V07 ] ( 2, 4.50) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V08 loc2 [V08,T22] ( 5, 16.50) int -> [rbp-0x4C] ; V09 loc3 [V09,T23] ( 4, 16 ) byref -> rdx ; V10 loc4 [V10 ] ( 13, 58 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed ld-addr-op ; V11 loc5 [V11,T17] ( 5, 26 ) long -> [rbp-0x60] ; V12 loc6 [V12 ] ( 7, 34 ) ref -> [rbp-0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V13 loc7 [V13 ] ( 3, 8 ) ref -> [rbp-0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V14 loc8 [V14 ] ( 2, 6 ) bool -> [rbp-0x78] do-not-enreg[X] addr-exposed ld-addr-op ; V15 loc9 [V15 ] ( 5, 24 ) int -> [rbp-0x80] do-not-enreg[X] addr-exposed ld-addr-op ; V16 loc10 [V16,T20] ( 5, 22 ) ref -> [rbp-0xC0] class-hnd ; V17 loc11 [V17,T42] ( 2, 4 ) int -> rdx ; V18 loc12 [V18,T02] ( 4, 50 ) int -> [rbp-0x84] ; V19 loc13 [V19 ] ( 6, 40 ) ref -> [rbp-0x90] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V20 loc14 [V20 ] ( 3, 32 ) bool -> [rbp-0x98] do-not-enreg[X] addr-exposed ld-addr-op ; V21 loc15 [V21 ] ( 7, 64 ) ref -> [rbp-0xA0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V22 loc16 [V22 ] ( 5, 48 ) ref -> [rbp-0xA8] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V23 loc17 [V23,T07] ( 4, 32 ) ref -> rcx class-hnd ; V24 loc18 [V24,T06] ( 5, 40 ) ref -> [rbp-0xC8] class-hnd ; V25 loc19 [V25,T18] ( 3, 24 ) ref -> [rbp-0xD0] class-hnd ; V26 loc20 [V26,T51] ( 2, 0 ) ref -> rsi class-hnd ; V27 OutArgs [V27 ] ( 1, 1 ) lclBlk (80) [rsp+0x00] "OutgoingArgSpace" ;* V28 tmp1 [V28 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V29 tmp2 [V29 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V30 tmp3 [V30 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ;* V31 tmp4 [V31 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ; V32 tmp5 [V32,T08] ( 2, 32 ) ref -> [rbp-0xD8] class-hnd "impAppendStmt" ; V33 tmp6 [V33,T19] ( 3, 24 ) ref -> rcx ; V34 tmp7 [V34,T03] ( 3, 48 ) ref -> [rbp-0xE0] class-hnd exact "dup spill" ; V35 tmp8 [V35,T46] ( 9, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V36 tmp9 [V36,T52] ( 2, 0 ) ref -> rsi class-hnd "impSpillSpecialSideEff" ; V37 tmp10 [V37,T49] ( 3, 0 ) ref -> rdi ; V38 tmp11 [V38,T50] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V39 tmp12 [V39,T47] ( 9, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V40 tmp13 [V40,T48] ( 9, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V41 tmp14 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V42 tmp15 [V42,T24] ( 2, 16 ) long -> r11 ld-addr-op "Inlining Arg" ;* V43 tmp16 [V43 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V44 tmp17 [V44,T25] ( 2, 16 ) long -> r11 "Inlining Arg" ;* V45 tmp18 [V45 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V46 tmp19 [V46 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V47 tmp20 [V47 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V48 tmp21 [V48,T28] ( 2, 8 ) long -> rcx ld-addr-op "Inlining Arg" ; V49 tmp22 [V49,T29] ( 2, 8 ) long -> rcx "Inlining Arg" ; V50 tmp23 [V50,T53] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V51 tmp24 [V51,T30] ( 2, 8 ) long -> rcx ld-addr-op "Inlining Arg" ; V52 tmp25 [V52,T31] ( 2, 8 ) long -> rcx "Inlining Arg" ;* V53 tmp26 [V53 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V54 tmp27 [V54,T32] ( 2, 8 ) long -> rcx "Inlining Arg" ; V55 tmp28 [V55,T33] ( 2, 8 ) long -> rdx ld-addr-op "Inlining Arg" ; V56 tmp29 [V56,T34] ( 2, 8 ) long -> rdx "Inlining Arg" ;* V57 tmp30 [V57 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V58 tmp31 [V58 ] ( 3, 48 ) long -> [rbp-0xB0] do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp" ;* V59 tmp32 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V60 tmp33 [V60,T00] ( 2, 64 ) long -> rdx ld-addr-op "Inlining Arg" ;* V61 tmp34 [V61 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V62 tmp35 [V62,T01] ( 2, 64 ) long -> rcx "Inlining Arg" ;* V63 tmp36 [V63 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V64 tmp37 [V64,T04] ( 3, 48 ) ref -> rcx class-hnd "Inlining Arg" ; V65 tmp38 [V65,T09] ( 2, 32 ) ref -> rdx class-hnd "Inlining Arg" ; V66 tmp39 [V66,T10] ( 2, 32 ) ref -> r8 class-hnd "Inlining Arg" ; V67 tmp40 [V67,T11] ( 2, 32 ) ref -> r9 class-hnd exact "Inlining Arg" ; V68 tmp41 [V68,T05] ( 3, 48 ) ref -> rcx class-hnd "Inlining Arg" ; V69 tmp42 [V69,T12] ( 2, 32 ) ref -> rdx class-hnd "Inlining Arg" ;* V70 tmp43 [V70,T26] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V71 tmp44 [V71,T54] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V72 tmp45 [V72,T13] ( 2, 32 ) ref -> rcx class-hnd "Inlining Arg" ; V73 tmp46 [V73,T14] ( 2, 32 ) ref -> rdx class-hnd "Inlining Arg" ; V74 tmp47 [V74,T35] ( 2, 8 ) long -> rcx ld-addr-op "Inlining Arg" ;* V75 tmp48 [V75 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V76 tmp49 [V76,T55] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V77 tmp50 [V77 ] ( 2, 4.50) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed V07.m_keepalive(offs=0x00) P-DEP "field V07.m_keepalive (fldOffset=0x0)" ; V78 tmp51 [V78 ] ( 2, 4.50) long -> [rbp-0x40] do-not-enreg[X] addr-exposed V07.m_metadataImport2(offs=0x08) P-DEP "field V07.m_metadataImport2 (fldOffset=0x8)" ; V79 tmp52 [V79,T36] ( 2, 8 ) int -> rcx V29.Value(offs=0x00) P-INDEP "field V29.Value (fldOffset=0x0)" ;* V80 tmp53 [V80,T44] ( 0, 0 ) int -> zero-ref V30.Value(offs=0x00) P-INDEP "field V30.Value (fldOffset=0x0)" ;* V81 tmp54 [V81,T45] ( 0, 0 ) int -> zero-ref V46.Value(offs=0x00) P-INDEP "field V46.Value (fldOffset=0x0)" ; V82 tmp55 [V82,T56] ( 2, 0 ) ref -> rcx "argument with side effect" ; V83 tmp56 [V83,T57] ( 2, 0 ) ref -> rcx "argument with side effect" ; V84 tmp57 [V84,T58] ( 2, 0 ) ref -> rcx "argument with side effect" ; V85 tmp58 [V85,T15] ( 2, 32 ) ref -> rax "argument with side effect" ; V86 tmp59 [V86,T59] ( 2, 0 ) ref -> rdx "argument with side effect" ; V87 tmp60 [V87,T60] ( 2, 0 ) ref -> rcx "argument with side effect" ; V88 PSPSym [V88 ] ( 1, 1 ) long -> [rbp-0xF0] do-not-enreg[X] addr-exposed "PSPSym" ;* V89 cse0 [V89,T38] ( 0, 0 ) long -> zero-ref "CSE - moderate" ; V90 cse1 [V90,T39] ( 5, 6 ) int -> [rbp-0xB4] "CSE - moderate" ; TEMP_01 ref -> [rbp-0xE8] ; ; Lcl frame size = 264 G_M2328_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 264 lea rbp, [rsp+140H] xor rax, rax mov qword ptr [rbp-E8H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-E0H], xmm4 mov rax, -144 vmovdqa xmmword ptr [rbp+rax-40H], xmm4 vmovdqa xmmword ptr [rbp+rax-30H], xmm4 vmovdqa xmmword ptr [rbp+rax-20H], xmm4 add rax, 48 jne SHORT -5 instr mov qword ptr [rbp-40H], rax mov qword ptr [rbp-F0H], rsp mov r15, rcx mov rsi, rdx mov edi, r8d mov rbx, r9 mov r12d, dword ptr [rbp+30H] mov r14, bword ptr [rbp+38H] ;; bbWeight=1 PerfScore 20.83 G_M2328_IG02: mov rcx, rsi mov edx, edi call CustomAttributeData:GetCustomAttributeRecords(RuntimeModule,int):ref mov r13, rax test rbx, rbx jne SHORT G_M2328_IG05 ;; bbWeight=1 PerfScore 3.00 G_M2328_IG03: mov eax, dword ptr [r13+8] test eax, eax jne SHORT G_M2328_IG05 ;; bbWeight=0.50 PerfScore 1.63 G_M2328_IG04: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M2328_IG05: cmp dword ptr [rsi], esi lea rcx, bword ptr [rbp-48H] mov rdx, rsi call ModuleHandle:GetMetadataImport(RuntimeModule):MetadataImport xor eax, eax mov edx, dword ptr [r13+8] mov r10d, edx mov dword ptr [rbp-B4H], r10d test r10d, r10d jle G_M2328_IG25 ;; bbWeight=0.50 PerfScore 4.25 G_M2328_IG06: mov dword ptr [rbp-4CH], eax movsxd rdx, eax lea rdx, [rdx+2*rdx] lea rdx, bword ptr [r13+8*rdx+16] mov rcx, qword ptr [rdx+8] mov qword ptr [rbp-58H], rcx mov r11, qword ptr [rbp-58H] mov ecx, dword ptr [rdx] movsxd r9, ecx add r11, r9 mov qword ptr [rbp-60H], r11 mov ecx, dword ptr [rdx+16] mov gword ptr [rsp+20H], rbx movzx rdx, r12b mov dword ptr [rsp+28H], edx mov bword ptr [rsp+30H], r14 lea rdx, [rbp-68H] mov qword ptr [rsp+38H], rdx lea rdx, [rbp-70H] mov qword ptr [rsp+40H], rdx lea rdx, [rbp-78H] mov qword ptr [rsp+48H], rdx lea rdx, bword ptr [rbp-48H] mov r8, rsi mov r9d, edi call CustomAttribute:FilterCustomAttributeRecord(MetadataToken,byref,RuntimeModule,MetadataToken,RuntimeType,bool,byref,byref,byref,byref):bool test eax, eax je G_M2328_IG24 ;; bbWeight=4 PerfScore 97.00 G_M2328_IG07: mov edx, dword ptr [rbp-78H] movzx rdx, dl mov rcx, gword ptr [rbp-68H] call RuntimeConstructorInfo:CheckCanCreateInstance(Type,bool) cmp gword ptr [rbp-70H], 0 je SHORT G_M2328_IG08 mov rax, qword ptr [rbp-60H] mov qword ptr [rsp+20H], rax lea r9, [rbp-80H] mov qword ptr [rsp+28H], r9 lea r9, [rbp-58H] mov rcx, rsi mov rdx, gword ptr [rbp-68H] mov r8, gword ptr [rbp-70H] call CustomAttribute:CreateCaObject(RuntimeModule,RuntimeType,IRuntimeMethodInfo,byref,long,byref):Object jmp G_M2328_IG11 ;; bbWeight=2 PerfScore 29.00 G_M2328_IG08: xor ecx, ecx mov dword ptr [rsp+20H], ecx mov rcx, gword ptr [rbp-68H] xor edx, edx mov r8d, 1 mov r9d, 1 cmp dword ptr [rcx], ecx call RuntimeType:CreateInstanceDefaultCtor(bool,bool,bool,bool):Object:this mov gword ptr [rbp-C0H], rax mov rcx, qword ptr [rbp-58H] mov r8, qword ptr [rbp-60H] mov edx, r8d sub edx, ecx jne SHORT G_M2328_IG09 xor ecx, ecx mov dword ptr [rbp-80H], ecx mov rax, gword ptr [rbp-C0H] jmp SHORT G_M2328_IG11 ;; bbWeight=2 PerfScore 29.50 G_M2328_IG09: mov rcx, qword ptr [rbp-58H] xor edx, edx call Marshal:ReadInt16(long,int):short cmp eax, 1 jne G_M2328_IG26 ;; bbWeight=2 PerfScore 7.00 G_M2328_IG10: mov rcx, qword ptr [rbp-58H] add rcx, 2 mov qword ptr [rbp-58H], rcx mov rcx, qword ptr [rbp-58H] xor edx, edx call Marshal:ReadInt16(long,int):short mov dword ptr [rbp-80H], eax mov rdx, qword ptr [rbp-58H] add rdx, 2 mov qword ptr [rbp-58H], rdx mov rax, gword ptr [rbp-C0H] ;; bbWeight=2 PerfScore 17.50 G_M2328_IG11: xor r10d, r10d mov dword ptr [rbp-84H], r10d cmp dword ptr [rbp-80H], 0 mov gword ptr [rbp-C0H], rax jle G_M2328_IG22 ;; bbWeight=2 PerfScore 8.50 G_M2328_IG12: mov rdx, qword ptr [rbp-58H] mov qword ptr [rbp-B0H], rdx lea rdx, [rbp-98H] mov qword ptr [rsp+20H], rdx lea rdx, [rbp-A0H] mov qword ptr [rsp+28H], rdx lea rdx, [rbp-A8H] mov qword ptr [rsp+30H], rdx lea rdx, [rbp-B0H] lea r9, [rbp-90H] mov rcx, rsi mov r8, qword ptr [rbp-60H] call CustomAttribute:_GetPropertyOrFieldData(RuntimeModule,long,long,byref,byref,byref,byref) mov rcx, qword ptr [rbp-B0H] mov qword ptr [rbp-58H], rcx ;; bbWeight=16 PerfScore 188.00 G_M2328_IG13: cmp byte ptr [rbp-98H], 0 je G_M2328_IG20 ;; bbWeight=16 PerfScore 32.00 G_M2328_IG14: cmp gword ptr [rbp-A0H], 0 jne SHORT G_M2328_IG15 cmp gword ptr [rbp-A8H], 0 je SHORT G_M2328_IG15 mov rcx, gword ptr [rbp-A8H] call Object:GetType():Type:this mov gword ptr [rbp-A0H], rax mov rax, gword ptr [rbp-A0H] mov gword ptr [rbp-E8H], rax mov rcx, 0xD1FFAB1E mov edx, 0x5AF call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rbp-E8H] cmp rax, gword ptr [rcx] jne SHORT G_M2328_IG15 mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-A0H], rcx ;; bbWeight=8 PerfScore 144.00 G_M2328_IG15: cmp gword ptr [rbp-A0H], 0 je SHORT G_M2328_IG16 mov rcx, gword ptr [rbp-68H] mov rdx, gword ptr [rbp-90H] mov r8, gword ptr [rbp-A0H] mov r9, 0xD1FFAB1E mov r9, gword ptr [r9] cmp dword ptr [rcx], ecx mov gword ptr [rsp+20H], r8 mov gword ptr [rsp+28H], r9 xor r8, r8 mov gword ptr [rsp+30H], r8 mov r8d, 28 xor r9, r9 mov rax, 0xD1FFAB1E call gword ptr [rax]Type:GetProperty(String,int,Binder,Type,ref,ref):PropertyInfo:this mov rcx, rax jmp SHORT G_M2328_IG17 ;; bbWeight=8 PerfScore 148.00 G_M2328_IG16: mov rcx, gword ptr [rbp-68H] mov rdx, gword ptr [rbp-90H] cmp dword ptr [rcx], ecx mov r8d, 28 mov rax, 0xD1FFAB1E call gword ptr [rax]Type:GetProperty(String,int):PropertyInfo:this mov rcx, rax ;; bbWeight=8 PerfScore 62.00 G_M2328_IG17: test rcx, rcx je G_M2328_IG19 mov edx, 1 mov rax, qword ptr [rcx] mov rax, qword ptr [rax+88] call gword ptr [rax+24]PropertyInfo:GetSetMethod(bool):MethodInfo:this mov rcx, rax mov gword ptr [rbp-C8H], rax mov rdx, qword ptr [rax] mov rdx, qword ptr [rdx+80] call qword ptr [rdx+40]MethodBase:get_Attributes():int:this and eax, 7 cmp eax, 6 jne G_M2328_IG21 ;; bbWeight=8 PerfScore 146.00 G_M2328_IG18: mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-E0H], rax lea rcx, bword ptr [rax+16] mov rdx, gword ptr [rbp-A8H] call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp-E0H] mov gword ptr [rsp+20H], rcx xor rcx, rcx mov gword ptr [rsp+28H], rcx mov rcx, gword ptr [rbp-C8H] mov rdx, gword ptr [rbp-C0H] xor r8d, r8d xor r9, r9 mov rax, qword ptr [rcx] mov rax, qword ptr [rax+88] call gword ptr [rax+56]MethodBase:Invoke(Object,int,Binder,ref,CultureInfo):Object:this jmp G_M2328_IG21 ;; bbWeight=8 PerfScore 158.00 G_M2328_IG19: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xFD9B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, gword ptr [rbp-90H] call SR:Format(String,Object):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF xor rcx, rcx mov gword ptr [rsi+32], rcx mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M2328_IG20: mov rcx, gword ptr [rbp-68H] mov rdx, gword ptr [rbp-90H] mov r8d, 28 mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]RuntimeType:GetField(String,int):FieldInfo:this mov gword ptr [rbp-D0H], rax mov rdx, gword ptr [rbp-A8H] mov gword ptr [rbp-D8H], rdx call Type:get_DefaultBinder():Binder xor rdx, rdx mov gword ptr [rsp+28H], rdx mov gword ptr [rsp+20H], rax mov rdx, gword ptr [rbp-C0H] mov r8, gword ptr [rbp-D8H] mov rcx, gword ptr [rbp-D0H] xor r9d, r9d mov rax, qword ptr [rcx] mov rax, qword ptr [rax+88] call qword ptr [rax+8]FieldInfo:SetValue(Object,Object,int,Binder,CultureInfo):this nop ;; bbWeight=8 PerfScore 194.00 G_M2328_IG21: mov r10d, dword ptr [rbp-84H] inc r10d cmp r10d, dword ptr [rbp-80H] mov dword ptr [rbp-84H], r10d jl G_M2328_IG12 ;; bbWeight=16 PerfScore 68.00 G_M2328_IG22: mov rcx, qword ptr [rbp-58H] mov r8, qword ptr [rbp-60H] cmp rcx, r8 jne G_M2328_IG27 ;; bbWeight=2 PerfScore 6.50 G_M2328_IG23: mov rcx, r15 mov r8, gword ptr [rbp-C0H] mov rdx, 0xD1FFAB1E call ListBuilder`1:Add(__Canon):this ;; bbWeight=2 PerfScore 5.00 G_M2328_IG24: mov eax, dword ptr [rbp-4CH] inc eax mov ecx, dword ptr [rbp-B4H] cmp ecx, eax mov dword ptr [rbp-B4H], ecx jg G_M2328_IG06 ;; bbWeight=4 PerfScore 18.00 G_M2328_IG25: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M2328_IG26: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x3A47 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF xor rcx, rcx mov gword ptr [rsi+32], rcx mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M2328_IG27: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x3A47 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF xor rcx, rcx mov gword ptr [rsi+32], rcx mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M2328_IG28: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 88 mov rbp, qword ptr [rcx+80] mov qword ptr [rsp+50H], rbp lea rbp, [rbp+140H] ;; bbWeight=0 PerfScore 0.00 G_M2328_IG29: mov rsi, rdx cmp byte ptr [rbp-98H], 0 jne SHORT G_M2328_IG30 call SR:get_RFLCT_InvalidFieldFail():String mov rdi, rax jmp SHORT G_M2328_IG31 ;; bbWeight=0 PerfScore 0.00 G_M2328_IG30: call SR:get_RFLCT_InvalidPropFail():String mov rdi, rax ;; bbWeight=0 PerfScore 0.00 G_M2328_IG31: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, rdi mov rdx, gword ptr [rbp-90H] call SR:Format(String,Object):String mov rdx, rax mov rcx, rbx mov r8, rsi call CustomAttributeFormatException:.ctor(String,Exception):this mov rcx, rbx call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1691, prolog size 113, PerfScore 1562.81, (MethodHash=7c25f6e7) for method CustomAttribute:AddCustomAttributes(byref,RuntimeModule,int,RuntimeType,bool,ListBuilder`1) ; ============================================================ ; Assembly listing for method CustomAttribute:FilterCustomAttributeRecord(MetadataToken,byref,RuntimeModule,MetadataToken,RuntimeType,bool,byref,byref,byref,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref ; V01 arg1 [V01,T01] ( 10, 6.50) byref -> rsi ; V02 arg2 [V02 ] ( 8, 5.50) ref -> [rbp+0x20] do-not-enreg[X] addr-exposed ld-addr-op class-hnd ;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ; V04 arg4 [V04,T52] ( 1, 1 ) ref -> [rbp+0x30] class-hnd ; V05 arg5 [V05,T55] ( 1, 0.50) bool -> [rbp+0x38] ; V06 arg6 [V06,T53] ( 1, 0.50) byref -> [rbp+0x40] ; V07 arg7 [V07,T08] ( 7, 4.50) byref -> r14 ; V08 arg8 [V08,T12] ( 6, 3.50) byref -> [rbp+0x50] ; V09 arg9 [V09,T39] ( 2, 1.50) byref -> r12 ;* V10 loc0 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V11 loc1 [V11,T43] ( 2, 1 ) bool -> rcx ;* V12 loc2 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ; V13 loc3 [V13 ] ( 3, 1.50) struct ( 8) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V14 loc4 [V14 ] ( 3, 1.50) struct ( 8) [rbp-0x48] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V15 loc5 [V15,T44] ( 2, 1 ) bool -> rax ;* V16 loc6 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ;* V17 loc7 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ;* V18 loc8 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ; V19 OutArgs [V19 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V20 tmp1 [V20,T05] ( 3, 6 ) ref -> [rbp-0xD0] class-hnd "impAppendStmt" ; V21 tmp2 [V21,T11] ( 2, 4 ) ref -> rdx "CASTCLASS eval op1" ; V22 tmp3 [V22,T02] ( 5, 6.74) ref -> rdx class-hnd "spilling QMark2" ;* V23 tmp4 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ;* V24 tmp5 [V24 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V25 tmp6 [V25 ] ( 0, 0 ) struct (16) zero-ref ;* V26 tmp7 [V26 ] ( 0, 0 ) struct (16) zero-ref ; V27 tmp8 [V27,T30] ( 3, 1.50) long -> rbx ;* V28 tmp9 [V28 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V29 tmp10 [V29 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V30 tmp11 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V31 tmp12 [V31,T13] ( 3, 3 ) ref -> r12 class-hnd "impAppendStmt" ;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V33 tmp14 [V33 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ;* V34 tmp15 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V35 tmp16 [V35 ] ( 2, 2 ) int -> [rbp-0x50] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V36 tmp17 [V36,T14] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ;* V37 tmp18 [V37 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V38 tmp19 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ;* V39 tmp20 [V39 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ;* V40 tmp21 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V41 tmp22 [V41 ] ( 3, 1.50) struct (16) [rbp-0x60] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V42 tmp23 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ; V43 tmp24 [V43 ] ( 4, 2 ) struct (16) [rbp-0x70] do-not-enreg[XSB] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V44 tmp25 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V45 tmp26 [V45,T56] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V46 tmp27 [V46,T57] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V47 tmp28 [V47 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ; V48 tmp29 [V48,T15] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ;* V49 tmp30 [V49 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ;* V50 tmp31 [V50 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V51 tmp32 [V51 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ;* V52 tmp33 [V52 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V53 tmp34 [V53 ] ( 2, 1 ) int -> [rbp-0x78] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V54 tmp35 [V54,T23] ( 2, 2 ) int -> rdx "Inlining Arg" ;* V55 tmp36 [V55 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ;* V56 tmp37 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V57 tmp38 [V57 ] ( 2, 1 ) int -> [rbp-0x80] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V58 tmp39 [V58,T24] ( 2, 2 ) int -> rdi "Inlining Arg" ;* V59 tmp40 [V59 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ;* V60 tmp41 [V60 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V61 tmp42 [V61 ] ( 2, 1 ) int -> [rbp-0x88] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V62 tmp43 [V62,T25] ( 2, 2 ) int -> rdi "Inlining Arg" ;* V63 tmp44 [V63 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ;* V64 tmp45 [V64 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V65 tmp46 [V65 ] ( 2, 1 ) int -> [rbp-0x90] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V66 tmp47 [V66,T26] ( 2, 2 ) int -> rdi "Inlining Arg" ;* V67 tmp48 [V67 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ;* V68 tmp49 [V68 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V69 tmp50 [V69 ] ( 2, 1 ) int -> [rbp-0x98] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V70 tmp51 [V70,T27] ( 2, 2 ) int -> rdi "Inlining Arg" ; V71 tmp52 [V71,T16] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ;* V72 tmp53 [V72 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ;* V73 tmp54 [V73 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V74 tmp55 [V74 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V75 tmp56 [V75,T20] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ;* V76 tmp57 [V76 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V77 tmp58 [V77,T21] ( 2, 2 ) ref -> rdx class-hnd "Inlining Arg" ; V78 tmp59 [V78,T04] ( 5, 6 ) int -> rax "Single return block return value" ; V79 FramesRoot [V79,T10] ( 6, 4 ) long -> r13 "Pinvoke FrameListRoot" ; V80 PInvokeFrame [V80 ] ( 8, 6 ) blk (72) [rbp-0x118] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V81 tmp62 [V81,T03] ( 7, 4.50) int -> rdi V00.Value(offs=0x00) P-INDEP "field V00.Value (fldOffset=0x0)" ; V82 tmp63 [V82,T06] ( 6, 3.50) int -> rbx V03.Value(offs=0x00) P-INDEP "field V03.Value (fldOffset=0x0)" ; V83 tmp64 [V83,T31] ( 3, 1.50) int -> rax V10.m_length(offs=0x00) P-INDEP "field V10.m_length (fldOffset=0x0)" ; V84 tmp65 [V84,T32] ( 3, 1.50) long -> r9 V10.m_constArray(offs=0x08) P-INDEP "field V10.m_constArray (fldOffset=0x8)" ; V85 tmp66 [V85,T07] ( 10, 5 ) int -> rdi V12.Value(offs=0x00) P-INDEP "field V12.Value (fldOffset=0x0)" ; V86 tmp67 [V86 ] ( 3, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed V13.m_type(offs=0x00) P-DEP "field V13.m_type (fldOffset=0x0)" ; V87 tmp68 [V87 ] ( 3, 1.50) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed V14.m_type(offs=0x00) P-DEP "field V14.m_type (fldOffset=0x0)" ; V88 tmp69 [V88,T40] ( 2, 1 ) ref -> rax V16.m_value(offs=0x00) P-INDEP "field V16.m_value (fldOffset=0x0)" ;* V89 tmp70 [V89,T54] ( 0, 0 ) ref -> zero-ref V17.m_type(offs=0x00) P-INDEP "field V17.m_type (fldOffset=0x0)" ; V90 tmp71 [V90,T41] ( 2, 1 ) ref -> rcx V18.m_ptr(offs=0x00) P-INDEP "field V18.m_ptr (fldOffset=0x0)" ; V91 tmp72 [V91,T29] ( 3, 1.50) ref -> rsi V23.m_type(offs=0x00) P-INDEP "field V23.m_type (fldOffset=0x0)" ; V92 tmp73 [V92,T45] ( 2, 1 ) long -> rsi V24._ptr(offs=0x00) P-INDEP "field V24._ptr (fldOffset=0x0)" ; V93 tmp74 [V93,T46] ( 2, 1 ) long -> rax V24._handle(offs=0x08) P-INDEP "field V24._handle (fldOffset=0x8)" ; V94 tmp75 [V94,T33] ( 3, 1.50) long -> rsi V25._ptr(offs=0x00) P-INDEP "field V25._ptr (fldOffset=0x0)" ; V95 tmp76 [V95,T34] ( 3, 1.50) long -> rdi V25._handle(offs=0x08) P-INDEP "field V25._handle (fldOffset=0x8)" ; V96 tmp77 [V96,T35] ( 3, 1.50) long -> rsi V26._ptr(offs=0x00) P-INDEP "field V26._ptr (fldOffset=0x0)" ; V97 tmp78 [V97,T36] ( 3, 1.50) long -> rdi V26._handle(offs=0x08) P-INDEP "field V26._handle (fldOffset=0x8)" ; V98 tmp79 [V98,T47] ( 2, 1 ) long -> r14 V28._ptr(offs=0x00) P-INDEP "field V28._ptr (fldOffset=0x0)" ; V99 tmp80 [V99,T48] ( 2, 1 ) long -> rax V28._handle(offs=0x08) P-INDEP "field V28._handle (fldOffset=0x8)" ; V100 tmp81 [V100,T49] ( 2, 1 ) long -> rcx V29._ptr(offs=0x00) P-INDEP "field V29._ptr (fldOffset=0x0)" ; V101 tmp82 [V101,T50] ( 2, 1 ) long -> rdx V29._module(offs=0x08) P-INDEP "field V29._module (fldOffset=0x8)" ;* V102 tmp83 [V102 ] ( 0, 0 ) int -> zero-ref V33.Value(offs=0x00) P-INDEP "field V33.Value (fldOffset=0x0)" ; V103 tmp84 [V103,T37] ( 3, 1.50) int -> rax V37.m_length(offs=0x00) P-INDEP "field V37.m_length (fldOffset=0x0)" ; V104 tmp85 [V104,T38] ( 3, 1.50) long -> r9 V37.m_constArray(offs=0x08) P-INDEP "field V37.m_constArray (fldOffset=0x8)" ; V105 tmp86 [V105,T51] ( 2, 1 ) int -> rcx V38.Value(offs=0x00) P-INDEP "field V38.Value (fldOffset=0x0)" ;* V106 tmp87 [V106 ] ( 0, 0 ) int -> zero-ref V39.Value(offs=0x00) P-INDEP "field V39.Value (fldOffset=0x0)" ; V107 tmp88 [V107 ] ( 2, 1 ) int -> [rbp-0x60] do-not-enreg[X] addr-exposed V41.m_length(offs=0x00) P-DEP "field V41.m_length (fldOffset=0x0)" ; V108 tmp89 [V108 ] ( 2, 1 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed V41.m_constArray(offs=0x08) P-DEP "field V41.m_constArray (fldOffset=0x8)" ;* V109 tmp90 [V109 ] ( 0, 0 ) int -> zero-ref V42.Value(offs=0x00) P-INDEP "field V42.Value (fldOffset=0x0)" ; V110 tmp91 [V110 ] ( 3, 1.50) int -> [rbp-0x70] do-not-enreg[X] addr-exposed V43.m_length(offs=0x00) P-DEP "field V43.m_length (fldOffset=0x0)" ; V111 tmp92 [V111 ] ( 3, 1.50) long -> [rbp-0x68] do-not-enreg[X] addr-exposed V43.m_constArray(offs=0x08) P-DEP "field V43.m_constArray (fldOffset=0x8)" ;* V112 tmp93 [V112 ] ( 0, 0 ) int -> zero-ref V47.Value(offs=0x00) P-INDEP "field V47.Value (fldOffset=0x0)" ;* V113 tmp94 [V113 ] ( 0, 0 ) int -> zero-ref V49.Value(offs=0x00) P-INDEP "field V49.Value (fldOffset=0x0)" ;* V114 tmp95 [V114 ] ( 0, 0 ) int -> zero-ref V51.Value(offs=0x00) P-INDEP "field V51.Value (fldOffset=0x0)" ;* V115 tmp96 [V115 ] ( 0, 0 ) int -> zero-ref V55.Value(offs=0x00) P-INDEP "field V55.Value (fldOffset=0x0)" ;* V116 tmp97 [V116 ] ( 0, 0 ) int -> zero-ref V59.Value(offs=0x00) P-INDEP "field V59.Value (fldOffset=0x0)" ;* V117 tmp98 [V117 ] ( 0, 0 ) int -> zero-ref V63.Value(offs=0x00) P-INDEP "field V63.Value (fldOffset=0x0)" ;* V118 tmp99 [V118 ] ( 0, 0 ) int -> zero-ref V67.Value(offs=0x00) P-INDEP "field V67.Value (fldOffset=0x0)" ;* V119 tmp100 [V119 ] ( 0, 0 ) int -> zero-ref V72.Value(offs=0x00) P-INDEP "field V72.Value (fldOffset=0x0)" ; V120 tmp101 [V120,T42] ( 2, 1 ) ref -> rsi V74.m_type(offs=0x00) P-INDEP "field V74.m_type (fldOffset=0x0)" ; V121 tmp102 [V121,T22] ( 2, 2 ) ref -> r8 "argument with side effect" ; V122 tmp103 [V122 ] ( 2, 2 ) struct (16) [rbp-0xA8] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V123 tmp104 [V123,T17] ( 3, 3 ) byref -> r8 stack-byref "BlockOp address local" ; V124 tmp105 [V124 ] ( 2, 2 ) struct (16) [rbp-0xB8] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V125 tmp106 [V125,T18] ( 3, 3 ) byref -> r8 stack-byref "BlockOp address local" ; V126 tmp107 [V126 ] ( 2, 2 ) struct (16) [rbp-0xC8] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V127 tmp108 [V127,T19] ( 3, 3 ) byref -> r8 stack-byref "BlockOp address local" ; V128 tmp109 [V128,T28] ( 2, 2 ) long -> rbx "argument with side effect" ; V129 cse0 [V129,T09] ( 8, 4 ) int -> r12 "CSE - aggressive" ; V130 rat0 [V130,T00] ( 12, 12 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 264 G_M4690_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 264 vzeroupper lea rbp, [rsp+140H] xor rbx, rbx mov qword ptr [rbp-40H], rbx mov qword ptr [rbp-48H], rbx mov gword ptr [rbp+20H], r8 mov edi, ecx mov rsi, rdx mov ebx, r9d mov r14, bword ptr [rbp+48H] mov r15, bword ptr [rbp+50H] mov r12, bword ptr [rbp+58H] ;; bbWeight=1 PerfScore 16.75 G_M4690_IG02: lea rcx, [rbp-110H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r13, rax mov rcx, rsp mov qword ptr [rbp-F0H], rcx mov rcx, rbp mov qword ptr [rbp-E0H], rcx xor rcx, rcx mov gword ptr [r15], rcx mov byte ptr [r12], 0 mov rax, gword ptr [rbp+20H] mov gword ptr [rbp-D0H], rax mov rcx, qword ptr [rsi+8] lea r8, [rbp-50H] mov edx, edi call MetadataImport:_GetParentToken(long,int,byref) mov rcx, gword ptr [rbp-D0H] mov edx, dword ptr [rbp-50H] xor r8, r8 xor r9, r9 mov rax, qword ptr [rcx] mov rax, qword ptr [rax+96] call gword ptr [rax+8]Module:ResolveType(int,ref,ref):Type:this mov rdx, rax test rdx, rdx je SHORT G_M4690_IG05 ;; bbWeight=1 PerfScore 23.50 G_M4690_IG03: mov rcx, 0xD1FFAB1E cmp qword ptr [rdx], rcx je SHORT G_M4690_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M4690_IG04: xor rdx, rdx ;; bbWeight=0.12 PerfScore 0.03 G_M4690_IG05: mov rcx, r14 call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, gword ptr [r14] mov rcx, gword ptr [rbp+30H] mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]RuntimeType:IsAssignableFrom(TypeInfo):bool:this test eax, eax jne SHORT G_M4690_IG07 ;; bbWeight=1 PerfScore 10.75 G_M4690_IG06: xor eax, eax jmp G_M4690_IG29 ;; bbWeight=0.50 PerfScore 1.13 G_M4690_IG07: mov rcx, gword ptr [r14] mov edx, dword ptr [rbp+38H] movzx rdx, dl mov r8, bword ptr [rbp+40H] call CustomAttribute:AttributeUsageCheck(RuntimeType,bool,byref):bool test eax, eax jne SHORT G_M4690_IG08 xor eax, eax jmp G_M4690_IG29 ;; bbWeight=0.50 PerfScore 4.38 G_M4690_IG08: mov rcx, gword ptr [r14] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+112] call qword ptr [rax]Type:GetAttributeFlagsImpl():int:this test eax, 0x4000 je SHORT G_M4690_IG09 xor eax, eax jmp G_M4690_IG29 ;; bbWeight=0.50 PerfScore 6.25 G_M4690_IG09: mov ecx, edi and ecx, 0xD1FFAB1E cmp ecx, 0xD1FFAB1E jne SHORT G_M4690_IG10 mov rcx, qword ptr [rsi+8] lea r8, bword ptr [rbp-60H] mov edx, edi call MetadataImport:_GetMemberRefProps(long,int,byref) mov eax, dword ptr [rbp-60H] mov r9, qword ptr [rbp-58H] jmp SHORT G_M4690_IG11 ;; bbWeight=0.50 PerfScore 4.75 G_M4690_IG10: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-70H], xmm0 mov rcx, qword ptr [rsi+8] lea r8, bword ptr [rbp-70H] mov edx, edi call MetadataImport:_GetSigOfMethodDef(long,int,byref) mov eax, dword ptr [rbp-70H] mov r9, qword ptr [rbp-68H] ;; bbWeight=0.50 PerfScore 3.54 G_M4690_IG11: test eax, eax jle G_M4690_IG31 ;; bbWeight=0.50 PerfScore 0.63 G_M4690_IG12: test byte ptr [r9], 5 setne cl mov byte ptr [r12], cl cmp eax, 1 jle G_M4690_IG32 ;; bbWeight=0.50 PerfScore 2.63 G_M4690_IG13: cmp byte ptr [r9+1], 0 setne cl movzx rcx, cl test ecx, ecx je SHORT G_M4690_IG15 mov rcx, gword ptr [r14] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+96] call qword ptr [rax+16]Type:get_IsGenericType():bool:this test eax, eax je SHORT G_M4690_IG14 mov r12, gword ptr [rbp+20H] mov rcx, gword ptr [r14] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+104] call gword ptr [rax+24]Type:get_GenericTypeArguments():ref:this mov r8, rax mov edx, edi mov rcx, r12 xor r9, r9 mov rax, qword ptr [r12] mov rax, qword ptr [rax+88] call gword ptr [rax+48]Module:ResolveMethod(int,ref,ref):MethodBase:this mov rcx, rax mov rax, qword ptr [rcx] mov rax, qword ptr [rax+96] call gword ptr [rax]MethodBase:get_MethodHandle():RuntimeMethodHandle:this mov rcx, r15 mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF jmp SHORT G_M4690_IG15 ;; bbWeight=0.50 PerfScore 21.75 G_M4690_IG14: mov rcx, gword ptr [rbp+20H] cmp dword ptr [rcx], ecx mov edx, edi xor r8, r8 xor r9, r9 call ModuleHandle:ResolveMethodHandleInternal(RuntimeModule,int,ref,ref):IRuntimeMethodInfo mov rdx, rax mov rcx, r15 call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 3.13 G_M4690_IG15: xor edi, edi mov r12d, ebx and r12d, 0xD1FFAB1E cmp r12d, 0xD1FFAB1E jne SHORT G_M4690_IG16 mov rcx, qword ptr [rsi+8] lea r8, [rbp-78H] mov edx, ebx call MetadataImport:_GetParentToken(long,int,byref) mov edx, dword ptr [rbp-78H] mov rcx, qword ptr [rsi+8] lea r8, [rbp-80H] call MetadataImport:_GetParentToken(long,int,byref) mov edi, dword ptr [rbp-80H] jmp G_M4690_IG20 ;; bbWeight=0.50 PerfScore 6.63 G_M4690_IG16: cmp r12d, 0xD1FFAB1E je SHORT G_M4690_IG17 cmp r12d, 0xD1FFAB1E je SHORT G_M4690_IG17 cmp r12d, 0xD1FFAB1E je SHORT G_M4690_IG17 cmp r12d, 0xD1FFAB1E jne SHORT G_M4690_IG18 ;; bbWeight=0.50 PerfScore 2.50 G_M4690_IG17: mov rcx, qword ptr [rsi+8] lea r8, [rbp-88H] mov edx, ebx call MetadataImport:_GetParentToken(long,int,byref) mov edi, dword ptr [rbp-88H] jmp SHORT G_M4690_IG20 ;; bbWeight=0.50 PerfScore 3.38 G_M4690_IG18: cmp r12d, 0xD1FFAB1E jne SHORT G_M4690_IG19 mov edi, ebx jmp SHORT G_M4690_IG20 ;; bbWeight=0.50 PerfScore 1.75 G_M4690_IG19: cmp r12d, 0xD1FFAB1E jne SHORT G_M4690_IG20 mov rcx, qword ptr [rsi+8] lea r8, [rbp-90H] mov edx, ebx call MetadataImport:_GetParentToken(long,int,byref) mov edi, dword ptr [rbp-90H] mov ecx, edi and ecx, 0xD1FFAB1E cmp ecx, 0xD1FFAB1E jne SHORT G_M4690_IG20 mov rcx, qword ptr [rsi+8] lea r8, [rbp-98H] mov edx, edi call MetadataImport:_GetParentToken(long,int,byref) mov edi, dword ptr [rbp-98H] ;; bbWeight=0.50 PerfScore 6.25 G_M4690_IG20: mov ecx, edi and ecx, 0xD1FFAB1E cmp ecx, 0xD1FFAB1E je SHORT G_M4690_IG21 xor rsi, rsi jmp SHORT G_M4690_IG22 ;; bbWeight=0.50 PerfScore 2.00 G_M4690_IG21: mov rcx, gword ptr [rbp+20H] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+72] call gword ptr [rax+16]Module:GetModuleHandleImpl():ModuleHandle:this mov rcx, rax mov edx, edi xor r8, r8 xor r9, r9 call ModuleHandle:ResolveTypeHandleInternal(RuntimeModule,int,ref,ref):RuntimeType mov rsi, rax ;; bbWeight=0.50 PerfScore 5.13 G_M4690_IG22: mov gword ptr [rbp-40H], rsi mov rcx, gword ptr [r14] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+144] call gword ptr [rax+16]Type:get_TypeHandle():RuntimeTypeHandle:this mov gword ptr [rbp-48H], rax lea rsi, bword ptr [rbp-48H] lea rcx, bword ptr [rbp-48H] call RuntimeTypeHandle:get_Value():long:this mov rdi, rax cmp gword ptr [r15], 0 jne SHORT G_M4690_IG23 xor rbx, rbx mov bword ptr [rbp+50H], r15 jmp SHORT G_M4690_IG24 ;; bbWeight=0.50 PerfScore 9.75 G_M4690_IG23: mov bword ptr [rbp+50H], r15 mov rcx, gword ptr [r15] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IRuntimeMethodInfo:get_Value():long:this mov rbx, rax ;; bbWeight=0.50 PerfScore 3.38 G_M4690_IG24: lea r14, bword ptr [rbp-40H] lea rcx, bword ptr [rbp-40H] call RuntimeTypeHandle:get_Value():long:this lea rcx, [rbp+20H] mov rdx, gword ptr [rbp+20H] mov rdx, qword ptr [rdx+32] lea r8, bword ptr [rbp-A8H] mov qword ptr [r8], rsi mov qword ptr [r8+8], rdi lea r8, bword ptr [rbp-B8H] mov qword ptr [r8], r14 mov qword ptr [r8+8], rax lea r8, bword ptr [rbp-C8H] mov qword ptr [r8], rcx mov qword ptr [r8+8], rdx lea rcx, bword ptr [rbp-A8H] mov rdx, rbx lea r8, bword ptr [rbp-B8H] lea r9, bword ptr [rbp-C8H] mov rax, 0xD1FFAB1E mov qword ptr [rbp-100H], rax lea rax, G_M4690_IG27 mov qword ptr [rbp-E8H], rax lea rax, bword ptr [rbp-110H] mov qword ptr [r13+16], rax mov byte ptr [r13+12], 0 ;; bbWeight=0.50 PerfScore 10.25 G_M4690_IG25: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M4690_IG26: call qword ptr [rax]RuntimeMethodHandle:IsCAVisibleFromDecoratedType(QCallTypeHandle,long,QCallTypeHandle,QCallModule):int ;; bbWeight=0.50 PerfScore 1.50 G_M4690_IG27: mov byte ptr [r13+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M4690_IG28 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M4690_IG28: mov rcx, bword ptr [rbp-108H] mov qword ptr [r13+16], rcx test eax, eax setne al movzx rax, al mov r15, bword ptr [rbp+50H] mov rcx, gword ptr [r15] ;; bbWeight=0.50 PerfScore 3.25 G_M4690_IG29: movzx rax, al ;; bbWeight=1 PerfScore 0.25 G_M4690_IG30: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M4690_IG31: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call IndexOutOfRangeException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M4690_IG32: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call IndexOutOfRangeException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1153, prolog size 40, PerfScore 280.88, (MethodHash=2325edad) for method CustomAttribute:FilterCustomAttributeRecord(MetadataToken,byref,RuntimeModule,MetadataToken,RuntimeType,bool,byref,byref,byref,byref):bool ; ============================================================ ; Assembly listing for method RuntimeModule:ResolveType(int,ref,ref):Type:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 5, 5 ) int -> rdi ; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T03] ( 3, 3 ) ref -> r14 class-hnd ;* V04 loc0 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ; V05 loc1 [V05,T08] ( 2, 2 ) ref -> rdi class-hnd ; V06 loc2 [V06,T09] ( 2, 2 ) ref -> rbx class-hnd ; V07 loc3 [V07 ] ( 2, 2 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V08 loc4 [V08,T07] ( 3, 3 ) ref -> rax class-hnd ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ;* V10 loc6 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ; V11 loc7 [V11,T10] ( 2, 2 ) ref -> rax class-hnd ;* V12 loc8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V13 OutArgs [V13 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V14 tmp1 [V14,T12] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V15 tmp2 [V15,T21] ( 2, 0 ) ref -> rbx class-hnd "impImportAndPushBox" ; V16 tmp3 [V16,T13] ( 3, 0 ) ref -> r15 class-hnd exact "NewObj constructor temp" ; V17 tmp4 [V17,T22] ( 2, 0 ) ref -> rsi class-hnd "impSpillSpecialSideEff" ; V18 tmp5 [V18,T14] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V19 tmp6 [V19,T15] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V20 tmp7 [V20,T23] ( 2, 0 ) ref -> rbx class-hnd "impImportAndPushBox" ; V21 tmp8 [V21,T16] ( 3, 0 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V22 tmp9 [V22,T17] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V23 tmp10 [V23,T24] ( 2, 0 ) ref -> rbx class-hnd "impImportAndPushBox" ; V24 tmp11 [V24,T18] ( 3, 0 ) ref -> r15 class-hnd exact "NewObj constructor temp" ; V25 tmp12 [V25,T19] ( 3, 0 ) ref -> rsi class-hnd exact "Single-def Box Helper" ; V26 tmp13 [V26,T25] ( 2, 0 ) ref -> rdi class-hnd "impImportAndPushBox" ; V27 tmp14 [V27,T20] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ;* V28 tmp15 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ;* V29 tmp16 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V30 tmp17 [V30 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V31 tmp18 [V31,T04] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" ; V32 tmp19 [V32,T05] ( 6, 3 ) int -> r15 V04.Value(offs=0x00) P-INDEP "field V04.Value (fldOffset=0x0)" ; V33 tmp20 [V33 ] ( 1, 1 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed V07.m_keepalive(offs=0x00) P-DEP "field V07.m_keepalive (fldOffset=0x0)" ; V34 tmp21 [V34 ] ( 2, 2 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed V07.m_metadataImport2(offs=0x08) P-DEP "field V07.m_metadataImport2 (fldOffset=0x8)" ; V35 tmp22 [V35,T11] ( 2, 2 ) ref -> rcx V09.m_ptr(offs=0x00) P-INDEP "field V09.m_ptr (fldOffset=0x0)" ;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref V10.m_type(offs=0x00) P-INDEP "field V10.m_type (fldOffset=0x0)" ;* V37 tmp24 [V37 ] ( 0, 0 ) int -> zero-ref V28.Value(offs=0x00) P-INDEP "field V28.Value (fldOffset=0x0)" ;* V38 tmp25 [V38 ] ( 0, 0 ) ref -> zero-ref V30.m_type(offs=0x00) P-INDEP "field V30.m_type (fldOffset=0x0)" ; V39 tmp26 [V39,T26] ( 2, 0 ) ref -> rcx "argument with side effect" ; V40 tmp27 [V40,T27] ( 2, 0 ) ref -> rsi "argument with side effect" ; V41 tmp28 [V41,T28] ( 2, 0 ) ref -> r8 "argument with side effect" ; V42 tmp29 [V42,T29] ( 2, 0 ) ref -> rcx "argument with side effect" ; V43 tmp30 [V43,T30] ( 2, 0 ) ref -> r14 "argument with side effect" ; V44 tmp31 [V44,T31] ( 2, 0 ) ref -> r8 "argument with side effect" ; V45 tmp32 [V45,T32] ( 2, 0 ) ref -> rcx "argument with side effect" ; V46 tmp33 [V46,T33] ( 2, 0 ) ref -> rsi "argument with side effect" ; V47 tmp34 [V47,T34] ( 2, 0 ) ref -> r8 "argument with side effect" ; V48 tmp35 [V48,T35] ( 2, 0 ) ref -> rcx "argument with side effect" ; V49 tmp36 [V49,T36] ( 2, 0 ) ref -> rsi "argument with side effect" ; V50 tmp37 [V50,T37] ( 2, 0 ) ref -> r8 "argument with side effect" ; V51 tmp38 [V51,T38] ( 2, 0 ) ref -> rdx "argument with side effect" ; V52 PSPSym [V52 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ; V53 cse0 [V53,T06] ( 4, 3 ) int -> rdi "CSE - aggressive" ; ; Lcl frame size = 56 G_M5094_IG01: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 56 lea rbp, [rsp+60H] xor rax, rax mov qword ptr [rbp-38H], rax mov qword ptr [rbp-40H], rsp mov rsi, rcx mov edi, edx mov rbx, r8 mov r14, r9 ;; bbWeight=1 PerfScore 10.00 G_M5094_IG02: mov r15d, edi cmp r15d, 0xD1FFAB1E je G_M5094_IG11 ;; bbWeight=1 PerfScore 1.50 G_M5094_IG03: lea rcx, bword ptr [rbp-38H] mov rdx, rsi call ModuleHandle:GetMetadataImport(RuntimeModule):MetadataImport mov rcx, qword ptr [rbp-30H] mov edx, edi call MetadataImport:_IsValidToken(long,int):bool test eax, eax je G_M5094_IG12 ;; bbWeight=1 PerfScore 5.25 G_M5094_IG04: and edi, 0xD1FFAB1E cmp edi, 0xD1FFAB1E je SHORT G_M5094_IG06 ;; bbWeight=1 PerfScore 1.50 G_M5094_IG05: cmp edi, 0xD1FFAB1E je SHORT G_M5094_IG06 cmp edi, 0xD1FFAB1E jne G_M5094_IG13 ;; bbWeight=0.50 PerfScore 1.25 G_M5094_IG06: mov rcx, rbx call RuntimeModule:ConvertToTypeHandleArray(ref):ref mov rdi, rax mov rcx, r14 call RuntimeModule:ConvertToTypeHandleArray(ref):ref mov rbx, rax ;; bbWeight=1 PerfScore 3.00 G_M5094_IG07: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+72] call gword ptr [rax+16]Module:GetModuleHandleImpl():ModuleHandle:this mov rcx, rax mov edx, r15d mov r8, rdi mov r9, rbx call ModuleHandle:ResolveTypeHandleInternal(RuntimeModule,int,ref,ref):RuntimeType test rax, rax je SHORT G_M5094_IG09 ;; bbWeight=1 PerfScore 10.50 G_M5094_IG08: jmp G_M5094_IG10 ;; bbWeight=1 PerfScore 2.00 G_M5094_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x8825 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov dword ptr [rdi+8], r15d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov rdx, rdi mov rcx, rbx mov r8, rsi call SR:Format(String,Object,Object):String mov rsi, rax mov ecx, 0x1C38E mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rsi mov rcx, r15 call ArgumentException:.ctor(String,String):this mov rcx, r15 call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M5094_IG10: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 4.50 G_M5094_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x87C1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov dword ptr [rsi+8], 0xD1FFAB1E mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, rsi mov rcx, rdi call SR:Format(String,Object):String mov rsi, rax mov ecx, 0x1C38E mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rsi mov rcx, rbx call ArgumentException:.ctor(String,String):this mov rcx, rbx call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M5094_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x7A69 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov dword ptr [rdi+8], r15d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov ecx, 0x1C38E mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r14, rax mov rdx, rdi mov rcx, rbx mov r8, rsi call SR:Format(String,Object,Object):String mov r8, rax mov rdx, r14 mov rcx, r15 call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, r15 call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M5094_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x8825 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov dword ptr [rdi+8], r15d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rdx, rdi mov rcx, rbx mov r8, rsi call SR:Format(String,Object,Object):String mov rsi, rax mov ecx, 0x1C38E mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rsi mov rcx, r14 call ArgumentException:.ctor(String,String):this mov rcx, r14 call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M5094_IG14: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=0 PerfScore 0.00 G_M5094_IG15: mov rsi, rdx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax call SR:get_Argument_BadImageFormatExceptionResolve():String mov rdx, rax mov rcx, rdi mov r8, rsi call ArgumentException:.ctor(String,Exception):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 798, prolog size 38, PerfScore 119.30, (MethodHash=5583ec19) for method RuntimeModule:ResolveType(int,ref,ref):Type:this ; ============================================================ ; Assembly listing for method RuntimeModule:ConvertToTypeHandleArray(ref):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rsi class-hnd ; V01 loc0 [V01,T07] ( 4, 5.50) int -> rdi ; V02 loc1 [V02,T05] ( 4, 9 ) ref -> rbx class-hnd exact ; V03 loc2 [V03,T01] ( 6, 20.50) int -> rbp ; V04 loc3 [V04,T00] ( 9, 36 ) ref -> rcx class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T02] ( 2, 16 ) ref -> rax class-hnd "spilling QMark2" ;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "Strict ordering of exceptions for Array store" ; V08 tmp3 [V08,T09] ( 7, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp4 [V09,T10] ( 7, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp5 [V10,T11] ( 7, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V11 tmp6 [V11,T12] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V12 tmp7 [V12,T13] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V13 tmp8 [V13,T14] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V14 tmp9 [V14,T06] ( 2, 8 ) ref -> rax V07.m_type(offs=0x00) P-INDEP "field V07.m_type (fldOffset=0x0)" ; V15 tmp10 [V15,T15] ( 2, 0 ) ref -> rcx "argument with side effect" ; V16 tmp11 [V16,T16] ( 2, 0 ) ref -> rcx "argument with side effect" ; V17 tmp12 [V17,T17] ( 2, 0 ) ref -> rcx "argument with side effect" ; V18 cse0 [V18,T08] ( 2, 1 ) int -> rdi "CSE - aggressive" ; V19 cse1 [V19,T03] ( 3, 12 ) long -> r14 "CSE - aggressive" ; ; Lcl frame size = 32 G_M32954_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 5.50 G_M32954_IG02: test rsi, rsi jne SHORT G_M32954_IG05 ;; bbWeight=1 PerfScore 1.25 G_M32954_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M32954_IG04: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M32954_IG05: mov edi, dword ptr [rsi+8] movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbx, rax xor ebp, ebp test edi, edi jle SHORT G_M32954_IG10 ;; bbWeight=0.50 PerfScore 2.63 G_M32954_IG06: movsxd r14, ebp mov rcx, gword ptr [rsi+8*r14+16] test rcx, rcx je G_M32954_IG13 ;; bbWeight=4 PerfScore 14.00 G_M32954_IG07: mov rax, qword ptr [rcx] mov rax, qword ptr [rax+88] call gword ptr [rax+8]Type:get_UnderlyingSystemType():Type:this mov rcx, rax test rcx, rcx je G_M32954_IG14 ;; bbWeight=4 PerfScore 34.00 G_M32954_IG08: mov rax, rcx mov rdx, 0xD1FFAB1E cmp qword ptr [rax], rdx jne SHORT G_M32954_IG12 ;; bbWeight=4 PerfScore 14.00 G_M32954_IG09: mov rax, qword ptr [rcx] mov rax, qword ptr [rax+80] call gword ptr [rax+16]Type:GetTypeHandleInternal():RuntimeTypeHandle:this cmp ebp, dword ptr [rbx+8] jae G_M32954_IG15 lea rcx, bword ptr [rbx+8*r14+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF inc ebp cmp ebp, edi jl SHORT G_M32954_IG06 ;; bbWeight=4 PerfScore 55.00 G_M32954_IG10: mov rax, rbx ;; bbWeight=0.50 PerfScore 0.13 G_M32954_IG11: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M32954_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x740F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M32954_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x740F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M32954_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x740F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M32954_IG15: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 465, prolog size 10, PerfScore 176.88, (MethodHash=b7997f45) for method RuntimeModule:ConvertToTypeHandleArray(ref):ref ; ============================================================ ; Assembly listing for method RuntimeModule:GetModuleHandleImpl():ModuleHandle:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref V02.m_ptr(offs=0x00) P-INDEP "field V02.m_ptr (fldOffset=0x0)" ; ; Lcl frame size = 0 G_M60655_IG01: ;; bbWeight=1 PerfScore 0.00 G_M60655_IG02: mov rax, rcx ;; bbWeight=1 PerfScore 0.25 G_M60655_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 1.65, (MethodHash=c9391310) for method RuntimeModule:GetModuleHandleImpl():ModuleHandle:this ; ============================================================ ; Assembly listing for method ModuleHandle:ResolveTypeHandleInternal(RuntimeModule,int,ref,ref):RuntimeType ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00 ] ( 7, 6 ) ref -> [rbp+0x10] do-not-enreg[X] addr-exposed ld-addr-op class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) int -> rsi ; V02 arg2 [V02,T02] ( 4, 4 ) ref -> [rbp+0x20] class-hnd ; V03 arg3 [V03,T03] ( 4, 4 ) ref -> [rbp+0x28] class-hnd ; V04 loc0 [V04,T09] ( 3, 3 ) ref -> r15 class-hnd ; V05 loc1 [V05 ] ( 2, 2 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc2 [V06,T10] ( 3, 3 ) ref -> rax class-hnd ; V07 loc3 [V07 ] ( 2, 2 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op ; V08 loc4 [V08 ] ( 2, 2 ) struct (16) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V09 loc5 [V09,T11] ( 3, 2 ) long -> r8 ; V10 loc6 [V10,T12] ( 3, 2 ) long -> rcx ; V11 loc7 [V11 ] ( 4, 2.50) ref -> [rbp-0x60] must-init pinned class-hnd ; V12 loc8 [V12 ] ( 4, 2.50) ref -> [rbp-0x68] must-init pinned class-hnd ; V13 loc9 [V13 ] ( 3, 3 ) ref -> [rbp-0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ;* V15 tmp1 [V15 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V16 tmp2 [V16,T07] ( 2, 4 ) int -> rax "impAppendStmt" ; V17 tmp3 [V17,T08] ( 2, 4 ) int -> r10 "impAppendStmt" ;* V18 tmp4 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ; V19 tmp5 [V19,T19] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V20 tmp6 [V20,T22] ( 2, 0 ) ref -> rbx class-hnd "impImportAndPushBox" ;* V21 tmp7 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V22 tmp8 [V22,T20] ( 3, 0 ) ref -> r14 class-hnd exact "Single-def Box Helper" ; V23 tmp9 [V23,T21] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V24 tmp10 [V24,T23] ( 2, 0 ) ref -> rsi class-hnd "Inlining Arg" ; V25 tmp11 [V25,T05] ( 2, 4 ) ref -> r9 class-hnd "Inlining Arg" ;* V26 tmp12 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V27 tmp13 [V27,T06] ( 2, 4 ) ref -> rax "Single return block return value" ; V28 FramesRoot [V28,T00] ( 6, 6 ) long -> r14 "Pinvoke FrameListRoot" ; V29 PInvokeFrame [V29 ] ( 8, 8 ) blk (72) [rbp-0xC8] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V30 tmp16 [V30 ] ( 1, 1 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed V08.m_keepalive(offs=0x00) P-DEP "field V08.m_keepalive (fldOffset=0x0)" ; V31 tmp17 [V31 ] ( 2, 2 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed V08.m_metadataImport2(offs=0x08) P-DEP "field V08.m_metadataImport2 (fldOffset=0x8)" ; V32 tmp18 [V32,T13] ( 2, 2 ) long -> rdx V15._ptr(offs=0x00) P-INDEP "field V15._ptr (fldOffset=0x0)" ; V33 tmp19 [V33,T14] ( 2, 2 ) long -> r9 V15._module(offs=0x08) P-INDEP "field V15._module (fldOffset=0x8)" ; V34 tmp20 [V34,T15] ( 2, 2 ) long -> r11 V18._ptr(offs=0x00) P-INDEP "field V18._ptr (fldOffset=0x0)" ; V35 tmp21 [V35,T24] ( 2, 0 ) ref -> rsi V21.m_ptr(offs=0x00) P-INDEP "field V21.m_ptr (fldOffset=0x0)" ; V36 tmp22 [V36,T16] ( 2, 2 ) long -> r11 V26._ptr(offs=0x00) P-INDEP "field V26._ptr (fldOffset=0x0)" ; V37 tmp23 [V37,T25] ( 2, 0 ) ref -> rcx "argument with side effect" ; V38 tmp24 [V38,T26] ( 2, 0 ) ref -> r15 "argument with side effect" ; V39 tmp25 [V39,T27] ( 2, 0 ) ref -> r8 "argument with side effect" ; V40 tmp26 [V40,T17] ( 2, 2 ) long -> r8 "Cast away GC" ; V41 tmp27 [V41,T18] ( 2, 2 ) long -> rcx "Cast away GC" ; V42 tmp28 [V42 ] ( 2, 4 ) struct (16) [rbp-0x80] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V43 tmp29 [V43,T04] ( 3, 6 ) byref -> r15 stack-byref "BlockOp address local" ; ; Lcl frame size = 200 G_M62135_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 200 lea rbp, [rsp+100H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-70H], xmm4 vmovdqa xmmword ptr [rbp-60H], xmm4 xor rbx, rbx mov qword ptr [rbp-50H], rbx mov gword ptr [rbp+10H], rcx mov esi, edx mov rdi, r8 mov rbx, r9 ;; bbWeight=1 PerfScore 14.08 G_M62135_IG02: lea rcx, [rbp-C0H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r14, rax mov rcx, rsp mov qword ptr [rbp-A0H], rcx mov rcx, rbp mov qword ptr [rbp-90H], rcx mov rcx, gword ptr [rbp+10H] call ModuleHandle:ValidateModulePointer(RuntimeModule) lea rcx, bword ptr [rbp-58H] mov rdx, gword ptr [rbp+10H] call ModuleHandle:GetMetadataImport(RuntimeModule):MetadataImport mov rcx, qword ptr [rbp-50H] mov edx, esi call MetadataImport:_IsValidToken(long,int):bool test eax, eax je G_M62135_IG17 ;; bbWeight=1 PerfScore 12.50 G_M62135_IG03: lea rdx, [rbp-40H] mov gword ptr [rbp+20H], rdi mov rcx, rdi call RuntimeTypeHandle:CopyRuntimeTypeHandles(ref,byref):ref mov r15, rax lea rdx, [rbp-48H] mov gword ptr [rbp+28H], rbx mov rcx, rbx call RuntimeTypeHandle:CopyRuntimeTypeHandles(ref,byref):ref mov gword ptr [rbp-60H], r15 test r15, r15 je SHORT G_M62135_IG05 ;; bbWeight=1 PerfScore 8.00 G_M62135_IG04: mov rcx, gword ptr [rbp-60H] cmp dword ptr [rcx+8], 0 jne SHORT G_M62135_IG06 ;; bbWeight=0.50 PerfScore 2.00 G_M62135_IG05: xor r8, r8 jmp SHORT G_M62135_IG07 ;; bbWeight=0.50 PerfScore 1.13 G_M62135_IG06: mov r8, gword ptr [rbp-60H] cmp dword ptr [r8+8], 0 jbe G_M62135_IG18 mov r8, gword ptr [rbp-60H] add r8, 16 ;; bbWeight=0.50 PerfScore 2.63 G_M62135_IG07: mov gword ptr [rbp-68H], rax test rax, rax je SHORT G_M62135_IG09 ;; bbWeight=1 PerfScore 2.25 G_M62135_IG08: mov rcx, gword ptr [rbp-68H] cmp dword ptr [rcx+8], 0 jne SHORT G_M62135_IG10 ;; bbWeight=0.50 PerfScore 2.00 G_M62135_IG09: xor rcx, rcx jmp SHORT G_M62135_IG11 ;; bbWeight=0.50 PerfScore 1.13 G_M62135_IG10: mov rcx, gword ptr [rbp-68H] cmp dword ptr [rcx+8], 0 jbe G_M62135_IG18 mov rcx, gword ptr [rbp-68H] add rcx, 16 ;; bbWeight=0.50 PerfScore 2.63 G_M62135_IG11: xor rdx, rdx mov gword ptr [rbp-70H], rdx lea rdx, [rbp+10H] mov r9, gword ptr [rbp+10H] mov r9, qword ptr [r9+32] mov eax, dword ptr [rbp-40H] mov r10d, dword ptr [rbp-48H] lea r11, [rbp-70H] lea r15, bword ptr [rbp-80H] mov qword ptr [r15], rdx mov qword ptr [r15+8], r9 mov qword ptr [rsp+20H], rcx mov dword ptr [rsp+28H], r10d mov qword ptr [rsp+30H], r11 lea rcx, bword ptr [rbp-80H] mov edx, esi mov r9d, eax mov rax, 0xD1FFAB1E mov qword ptr [rbp-B0H], rax lea rax, G_M62135_IG14 mov qword ptr [rbp-98H], rax lea rax, bword ptr [rbp-C0H] mov qword ptr [r14+16], rax mov byte ptr [r14+12], 0 ;; bbWeight=1 PerfScore 19.50 G_M62135_IG12: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M62135_IG13: call qword ptr [rax]ModuleHandle:ResolveType(QCallModule,int,long,int,long,int,ObjectHandleOnStack) ;; bbWeight=1 PerfScore 3.00 G_M62135_IG14: mov byte ptr [r14+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M62135_IG15 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M62135_IG15: mov rax, bword ptr [rbp-B8H] mov qword ptr [r14+16], rax mov rax, gword ptr [rbp-70H] ;; bbWeight=1 PerfScore 3.00 G_M62135_IG16: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M62135_IG17: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x7A69 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov dword ptr [rdi+8], esi mov rsi, gword ptr [rbp+10H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax lea rcx, bword ptr [r14+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x17A6 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r15, rax mov r8, r14 mov rdx, rdi mov rcx, rbx call SR:Format(String,Object,Object):String mov r8, rax mov rdx, r15 mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M62135_IG18: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 623, prolog size 47, PerfScore 149.68, (MethodHash=dc0f0d48) for method ModuleHandle:ResolveTypeHandleInternal(RuntimeModule,int,ref,ref):RuntimeType ; ============================================================ ; Assembly listing for method ModuleHandle:ValidateModulePointer(RuntimeModule) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V03 tmp2 [V03,T01] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V04 tmp3 [V04,T03] ( 2, 0 ) ref -> rcx "argument with side effect" ; V05 tmp4 [V05,T04] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M30864_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M30864_IG02: test rcx, rcx je SHORT G_M30864_IG04 ;; bbWeight=1 PerfScore 1.25 G_M30864_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M30864_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xD73F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 84, prolog size 5, PerfScore 12.65, (MethodHash=4aa5876f) for method ModuleHandle:ValidateModulePointer(RuntimeModule) ; ============================================================ ; Assembly listing for method RuntimeTypeHandle:CopyRuntimeTypeHandles(ref,byref):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 6, 11.50) ref -> rsi class-hnd ; V01 arg1 [V01,T10] ( 4, 3 ) byref -> rdi ; V02 loc0 [V02,T03] ( 7, 14 ) ref -> rax class-hnd exact ; V03 loc1 [V03,T00] ( 10, 36.50) int -> rdx ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "Strict ordering of exceptions for Array store" ; V06 tmp2 [V06,T02] ( 6, 16 ) long -> r9 "Inline return value spill temp" ; V07 tmp3 [V07,T01] ( 4, 32 ) byref -> r8 "Inlining Arg" ; V08 cse0 [V08,T07] ( 7, 10.50) int -> rbx "CSE - aggressive" ; V09 cse1 [V09,T08] ( 3, 10 ) ref -> r8 "CSE - aggressive" ; V10 cse2 [V10,T09] ( 3, 10 ) ref -> r8 "CSE - aggressive" ; V11 cse3 [V11,T05] ( 3, 12 ) long -> rcx "CSE - aggressive" ; V12 cse4 [V12,T06] ( 3, 12 ) long -> rcx "CSE - aggressive" ; ; Lcl frame size = 32 G_M34443_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M34443_IG02: test rsi, rsi je SHORT G_M34443_IG04 ;; bbWeight=1 PerfScore 1.25 G_M34443_IG03: mov ebx, dword ptr [rsi+8] test ebx, ebx jne SHORT G_M34443_IG06 ;; bbWeight=0.50 PerfScore 1.63 G_M34443_IG04: xor eax, eax mov dword ptr [rdi], eax ;; bbWeight=0.50 PerfScore 0.63 G_M34443_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M34443_IG06: movsxd rdx, ebx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC xor edx, edx test ebx, ebx jle SHORT G_M34443_IG16 cmp dword ptr [rax+8], ebx jl SHORT G_M34443_IG12 ;; bbWeight=0.50 PerfScore 3.00 G_M34443_IG07: movsxd rcx, edx lea r8, bword ptr [rsi+8*rcx+16] mov r8, gword ptr [r8] test r8, r8 jne SHORT G_M34443_IG09 ;; bbWeight=4 PerfScore 18.00 G_M34443_IG08: xor r9, r9 jmp SHORT G_M34443_IG10 ;; bbWeight=2 PerfScore 4.50 G_M34443_IG09: mov r9, qword ptr [r8+24] ;; bbWeight=2 PerfScore 4.00 G_M34443_IG10: mov qword ptr [rax+8*rcx+16], r9 inc edx cmp ebx, edx jg SHORT G_M34443_IG07 ;; bbWeight=4 PerfScore 10.00 G_M34443_IG11: jmp SHORT G_M34443_IG16 ;; bbWeight=0.50 PerfScore 1.00 G_M34443_IG12: movsxd rcx, edx lea r8, bword ptr [rsi+8*rcx+16] mov r8, gword ptr [r8] test r8, r8 jne SHORT G_M34443_IG14 ;; bbWeight=4 PerfScore 18.00 G_M34443_IG13: xor r9, r9 jmp SHORT G_M34443_IG15 ;; bbWeight=2 PerfScore 4.50 G_M34443_IG14: mov r9, qword ptr [r8+24] ;; bbWeight=2 PerfScore 4.00 G_M34443_IG15: cmp edx, dword ptr [rax+8] jae SHORT G_M34443_IG18 mov qword ptr [rax+8*rcx+16], r9 inc edx cmp ebx, edx jg SHORT G_M34443_IG12 ;; bbWeight=4 PerfScore 22.00 G_M34443_IG16: mov edx, dword ptr [rax+8] mov dword ptr [rdi], edx ;; bbWeight=0.50 PerfScore 1.50 G_M34443_IG17: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M34443_IG18: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 164, prolog size 13, PerfScore 116.90, (MethodHash=39077974) for method RuntimeTypeHandle:CopyRuntimeTypeHandles(ref,byref):ref ; ============================================================ ; Assembly listing for method RuntimeType:IsAssignableFrom(TypeInfo):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 2 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M11004_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M11004_IG02: test rdx, rdx jne SHORT G_M11004_IG05 ;; bbWeight=1 PerfScore 1.25 G_M11004_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M11004_IG04: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M11004_IG05: mov rcx, rdx mov rax, qword ptr [rdx] mov rax, qword ptr [rax+168] call gword ptr [rax+48]TypeInfo:AsType():Type:this mov rdx, rax mov rcx, rsi mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] cmp dword ptr [rcx], ecx ;; bbWeight=0.50 PerfScore 6.00 G_M11004_IG06: add rsp, 32 pop rsi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 66, prolog size 5, PerfScore 17.73, (MethodHash=15bdd503) for method RuntimeType:IsAssignableFrom(TypeInfo):bool:this ; ============================================================ ; Assembly listing for method TypeInfo:AsType():Type:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M63587_IG01: ;; bbWeight=1 PerfScore 0.00 G_M63587_IG02: mov rax, rcx ;; bbWeight=1 PerfScore 0.25 G_M63587_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 1.65, (MethodHash=5cdc079c) for method TypeInfo:AsType():Type:this ; ============================================================ ; Assembly listing for method CustomAttribute:AttributeUsageCheck(RuntimeType,bool,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rsi class-hnd ; V01 arg1 [V01,T07] ( 3, 3 ) bool -> rdx ; V02 arg2 [V02,T04] ( 5, 5 ) byref -> rdi ; V03 loc0 [V03,T08] ( 6, 3.50) ref -> rbx class-hnd ; V04 loc1 [V04,T00] ( 6, 16.50) int -> r14 ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 3, 8 ) ref -> rcx class-hnd "Inline return value spill temp" ; V07 tmp2 [V07,T01] ( 3, 12 ) ref -> rcx "arr expr" ; V08 cse0 [V08,T06] ( 4, 5.50) int -> rbp "CSE - aggressive" ; V09 cse1 [V09,T05] ( 3, 6.50) ref -> r15 "CSE - aggressive" ; ; Lcl frame size = 40 G_M36645_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, r8 ;; bbWeight=1 PerfScore 6.75 G_M36645_IG02: xor rbx, rbx test dl, dl je SHORT G_M36645_IG05 ;; bbWeight=1 PerfScore 1.50 G_M36645_IG03: mov rcx, rsi call CustomAttribute:GetAttributeUsage(RuntimeType):AttributeUsageAttribute mov rbx, rax cmp byte ptr [rbx+13], 0 jne SHORT G_M36645_IG05 xor eax, eax ;; bbWeight=0.50 PerfScore 2.38 G_M36645_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M36645_IG05: mov ebp, dword ptr [rdi+16] test ebp, ebp jne SHORT G_M36645_IG07 mov eax, 1 ;; bbWeight=0.50 PerfScore 1.75 G_M36645_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M36645_IG07: xor r14d, r14d test ebp, ebp jle SHORT G_M36645_IG13 mov r15, gword ptr [rdi] ;; bbWeight=0.50 PerfScore 1.75 G_M36645_IG08: test r15, r15 jne SHORT G_M36645_IG10 ;; bbWeight=4 PerfScore 5.00 G_M36645_IG09: mov rcx, gword ptr [rdi+8] jmp SHORT G_M36645_IG11 ;; bbWeight=2 PerfScore 8.00 G_M36645_IG10: mov rcx, r15 cmp r14d, dword ptr [rcx+8] jae SHORT G_M36645_IG18 movsxd rax, r14d mov rcx, gword ptr [rcx+8*rax+16] ;; bbWeight=2 PerfScore 11.00 G_M36645_IG11: call Object:GetType():Type:this cmp rax, rsi je SHORT G_M36645_IG15 ;; bbWeight=4 PerfScore 9.00 G_M36645_IG12: inc r14d cmp r14d, ebp jl SHORT G_M36645_IG08 ;; bbWeight=4 PerfScore 6.00 G_M36645_IG13: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M36645_IG14: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M36645_IG15: test rbx, rbx jne SHORT G_M36645_IG16 mov rcx, rsi call CustomAttribute:GetAttributeUsage(RuntimeType):AttributeUsageAttribute mov rbx, rax ;; bbWeight=0.50 PerfScore 1.38 G_M36645_IG16: movzx rax, byte ptr [rbx+12] ;; bbWeight=0.50 PerfScore 1.00 G_M36645_IG17: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M36645_IG18: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 194, prolog size 18, PerfScore 83.53, (MethodHash=ed7870da) for method CustomAttribute:AttributeUsageCheck(RuntimeType,bool,byref):bool ; ============================================================ ; Assembly listing for method RuntimeType:GetAttributeFlagsImpl():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M40669_IG01: ;; bbWeight=1 PerfScore 0.00 G_M40669_IG02: jmp RuntimeTypeHandle:GetAttributes(RuntimeType):int ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 5, prolog size 0, PerfScore 2.50, (MethodHash=b37b6122) for method RuntimeType:GetAttributeFlagsImpl():int:this ; ============================================================ ; Assembly listing for method ModuleHandle:ResolveMethodHandleInternal(RuntimeModule,int,ref,ref):IRuntimeMethodInfo ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 3 ) ref -> rbx class-hnd ; V01 arg1 [V01,T04] ( 3, 3 ) int -> rbp ; V02 arg2 [V02,T01] ( 4, 4 ) ref -> rsi class-hnd ; V03 arg3 [V03,T02] ( 4, 4 ) ref -> rdi class-hnd ; V04 loc0 [V04,T07] ( 2, 2 ) ref -> r14 class-hnd ; V05 loc1 [V05 ] ( 2, 2 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc2 [V06,T08] ( 2, 2 ) ref -> rax class-hnd ; V07 loc3 [V07 ] ( 2, 2 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op ; V08 loc4 [V08,T06] ( 3, 3 ) long -> rbx ;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T00] ( 4, 8 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V12 tmp2 [V12,T05] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" ; ; Lcl frame size = 64 G_M29264_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 64 mov rbx, rcx mov ebp, edx mov rsi, r8 mov rdi, r9 ;; bbWeight=1 PerfScore 6.25 G_M29264_IG02: lea rdx, [rsp+38H] mov rcx, rsi call RuntimeTypeHandle:CopyRuntimeTypeHandles(ref,byref):ref mov r14, rax lea rdx, [rsp+30H] mov rcx, rdi call RuntimeTypeHandle:CopyRuntimeTypeHandles(ref,byref):ref mov gword ptr [rsp+20H], rax mov ecx, dword ptr [rsp+30H] mov dword ptr [rsp+28H], ecx mov rcx, rbx mov edx, ebp mov r8, r14 mov r9d, dword ptr [rsp+38H] call ModuleHandle:ResolveMethodHandleInternalCore(RuntimeModule,int,ref,int,ref,int):long mov rbx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, rbx call RuntimeMethodHandle:GetLoaderAllocator(long):LoaderAllocator lea rcx, bword ptr [rbp+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov qword ptr [rbp+72], rbx mov rax, rbp ;; bbWeight=1 PerfScore 15.50 G_M29264_IG03: add rsp, 64 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 140, prolog size 10, PerfScore 39.50, (MethodHash=bfd18daf) for method ModuleHandle:ResolveMethodHandleInternal(RuntimeModule,int,ref,ref):IRuntimeMethodInfo ; ============================================================ ; Assembly listing for method ModuleHandle:ResolveMethodHandleInternalCore(RuntimeModule,int,ref,int,ref,int):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00 ] ( 7, 6 ) ref -> [rbp+0x10] do-not-enreg[X] addr-exposed ld-addr-op class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) int -> rsi ; V02 arg2 [V02,T02] ( 4, 4 ) ref -> rdi class-hnd ; V03 arg3 [V03,T05] ( 3, 3 ) int -> rbx ; V04 arg4 [V04,T10] ( 2, 2 ) ref -> r14 class-hnd ; V05 arg5 [V05,T15] ( 1, 1 ) int -> [rbp+0x38] ; V06 loc0 [V06 ] ( 2, 2 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V07 loc1 [V07,T08] ( 3, 2 ) long -> r8 ; V08 loc2 [V08,T09] ( 3, 2 ) long -> rcx ; V09 loc3 [V09 ] ( 4, 2.50) ref -> [rbp-0x50] must-init pinned class-hnd ; V10 loc4 [V10 ] ( 4, 2.50) ref -> [rbp-0x58] must-init pinned class-hnd ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V13 tmp2 [V13,T16] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V14 tmp3 [V14,T19] ( 2, 0 ) ref -> rbx class-hnd "impImportAndPushBox" ;* V15 tmp4 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V16 tmp5 [V16,T17] ( 3, 0 ) ref -> r14 class-hnd exact "Single-def Box Helper" ; V17 tmp6 [V17,T18] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V18 tmp7 [V18,T03] ( 3, 6 ) ref -> rdx class-hnd "Inlining Arg" ; V19 tmp8 [V19,T20] ( 2, 0 ) ref -> rsi class-hnd "Inlining Arg" ; V20 tmp9 [V20,T06] ( 2, 4 ) ref -> r9 class-hnd "Inlining Arg" ; V21 tmp10 [V21,T07] ( 2, 4 ) long -> rax "Single return block return value" ; V22 FramesRoot [V22,T00] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V23 PInvokeFrame [V23 ] ( 8, 8 ) blk (72) [rbp-0xB0] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V24 tmp13 [V24 ] ( 1, 1 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed V06.m_keepalive(offs=0x00) P-DEP "field V06.m_keepalive (fldOffset=0x0)" ; V25 tmp14 [V25 ] ( 2, 2 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed V06.m_metadataImport2(offs=0x08) P-DEP "field V06.m_metadataImport2 (fldOffset=0x8)" ; V26 tmp15 [V26,T11] ( 2, 2 ) long -> rdx V12._ptr(offs=0x00) P-INDEP "field V12._ptr (fldOffset=0x0)" ; V27 tmp16 [V27,T12] ( 2, 2 ) long -> r9 V12._module(offs=0x08) P-INDEP "field V12._module (fldOffset=0x8)" ; V28 tmp17 [V28,T21] ( 2, 0 ) ref -> rsi V15.m_ptr(offs=0x00) P-INDEP "field V15.m_ptr (fldOffset=0x0)" ; V29 tmp18 [V29,T22] ( 2, 0 ) ref -> rcx "argument with side effect" ; V30 tmp19 [V30,T23] ( 2, 0 ) ref -> r15 "argument with side effect" ; V31 tmp20 [V31,T24] ( 2, 0 ) ref -> r8 "argument with side effect" ; V32 tmp21 [V32,T13] ( 2, 2 ) long -> r8 "Cast away GC" ; V33 tmp22 [V33,T14] ( 2, 2 ) long -> rcx "Cast away GC" ; V34 tmp23 [V34 ] ( 2, 4 ) struct (16) [rbp-0x68] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V35 tmp24 [V35,T04] ( 3, 6 ) byref -> rax stack-byref "BlockOp address local" ; ; Lcl frame size = 168 G_M59461_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 168 lea rbp, [rsp+E0H] xor rbx, rbx mov qword ptr [rbp-58H], rbx vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 mov qword ptr [rbp-40H], rbx mov gword ptr [rbp+10H], rcx mov esi, edx mov rdi, r8 mov ebx, r9d mov r14, gword ptr [rbp+30H] ;; bbWeight=1 PerfScore 15.08 G_M59461_IG02: lea rcx, [rbp-A8H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-88H], rcx mov rcx, rbp mov qword ptr [rbp-78H], rcx mov rcx, gword ptr [rbp+10H] call ModuleHandle:ValidateModulePointer(RuntimeModule) mov rdx, gword ptr [rbp+10H] cmp dword ptr [rdx], edx lea rcx, bword ptr [rbp-48H] call ModuleHandle:GetMetadataImport(RuntimeModule):MetadataImport mov rcx, qword ptr [rbp-40H] mov edx, esi call MetadataImport:_IsValidToken(long,int):bool test eax, eax je G_M59461_IG17 ;; bbWeight=1 PerfScore 14.50 G_M59461_IG03: mov gword ptr [rbp-50H], rdi test rdi, rdi je SHORT G_M59461_IG05 ;; bbWeight=1 PerfScore 2.25 G_M59461_IG04: mov rcx, gword ptr [rbp-50H] cmp dword ptr [rcx+8], 0 jne SHORT G_M59461_IG06 ;; bbWeight=0.50 PerfScore 2.00 G_M59461_IG05: xor r8, r8 jmp SHORT G_M59461_IG07 ;; bbWeight=0.50 PerfScore 1.13 G_M59461_IG06: mov r8, gword ptr [rbp-50H] cmp dword ptr [r8+8], 0 jbe G_M59461_IG18 mov r8, gword ptr [rbp-50H] add r8, 16 ;; bbWeight=0.50 PerfScore 2.63 G_M59461_IG07: mov gword ptr [rbp-58H], r14 test r14, r14 je SHORT G_M59461_IG09 ;; bbWeight=1 PerfScore 2.25 G_M59461_IG08: mov rcx, gword ptr [rbp-58H] cmp dword ptr [rcx+8], 0 jne SHORT G_M59461_IG10 ;; bbWeight=0.50 PerfScore 2.00 G_M59461_IG09: xor rcx, rcx jmp SHORT G_M59461_IG11 ;; bbWeight=0.50 PerfScore 1.13 G_M59461_IG10: mov rcx, gword ptr [rbp-58H] cmp dword ptr [rcx+8], 0 jbe G_M59461_IG18 mov rcx, gword ptr [rbp-58H] add rcx, 16 ;; bbWeight=0.50 PerfScore 2.63 G_M59461_IG11: lea rdx, [rbp+10H] mov r9, gword ptr [rbp+10H] mov r9, qword ptr [r9+32] lea rax, bword ptr [rbp-68H] mov qword ptr [rax], rdx mov qword ptr [rax+8], r9 mov qword ptr [rsp+20H], rcx mov edi, dword ptr [rbp+38H] mov dword ptr [rsp+28H], edi lea rcx, bword ptr [rbp-68H] mov edx, esi mov r9d, ebx mov rax, 0xD1FFAB1E mov qword ptr [rbp-98H], rax lea rax, G_M59461_IG14 mov qword ptr [rbp-80H], rax lea rax, bword ptr [rbp-A8H] mov qword ptr [r15+16], rax mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 15.75 G_M59461_IG12: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M59461_IG13: call qword ptr [rax]ModuleHandle:ResolveMethod(QCallModule,int,long,int,long,int):long ;; bbWeight=1 PerfScore 3.00 G_M59461_IG14: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M59461_IG15 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M59461_IG15: mov rcx, bword ptr [rbp-A0H] mov qword ptr [r15+16], rcx ;; bbWeight=1 PerfScore 2.00 G_M59461_IG16: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M59461_IG17: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x7A69 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov dword ptr [rdi+8], esi mov rsi, gword ptr [rbp+10H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax lea rcx, bword ptr [r14+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x17BA mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r15, rax mov r8, r14 mov rdx, rdi mov rcx, rbx call SR:Format(String,Object,Object):String mov r8, rax mov rdx, r15 mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M59461_IG18: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 563, prolog size 46, PerfScore 136.08, (MethodHash=11e017ba) for method ModuleHandle:ResolveMethodHandleInternalCore(RuntimeModule,int,ref,int,ref,int):long ; ============================================================ ; Assembly listing for method RuntimeMethodInfoStub:System.IRuntimeMethodInfo.get_Value():long:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M51091_IG01: ;; bbWeight=1 PerfScore 0.00 G_M51091_IG02: mov rax, qword ptr [rcx+72] ;; bbWeight=1 PerfScore 2.00 G_M51091_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=4150386c) for method RuntimeMethodInfoStub:System.IRuntimeMethodInfo.get_Value():long:this ; ============================================================ ; Assembly listing for method RuntimeConstructorInfo:CheckCanCreateInstance(Type,bool) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 13, 10 ) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) bool -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V05 tmp3 [V05,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp4 [V06,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp5 [V07,T06] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V08 tmp6 [V08,T07] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V09 tmp7 [V09,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp8 [V10,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 tmp9 [V11,T10] ( 2, 0 ) ref -> rcx "argument with side effect" ; V12 tmp10 [V12,T11] ( 2, 0 ) ref -> rcx "argument with side effect" ; V13 tmp11 [V13,T12] ( 2, 0 ) ref -> rdx "argument with side effect" ; V14 tmp12 [V14,T13] ( 2, 0 ) ref -> rcx "argument with side effect" ; V15 tmp13 [V15,T14] ( 2, 0 ) ref -> rcx "argument with side effect" ; V16 tmp14 [V16,T15] ( 2, 0 ) ref -> rdx "argument with side effect" ; V17 tmp15 [V17,T16] ( 2, 0 ) ref -> rcx "argument with side effect" ; V18 tmp16 [V18,T17] ( 2, 0 ) ref -> rcx "argument with side effect" ; V19 tmp17 [V19,T18] ( 2, 0 ) ref -> rdx "argument with side effect" ; V20 tmp18 [V20,T19] ( 2, 0 ) ref -> rcx "argument with side effect" ; V21 tmp19 [V21,T20] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M44230_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M44230_IG02: test rsi, rsi je G_M44230_IG10 ;; bbWeight=1 PerfScore 1.25 G_M44230_IG03: mov rcx, rsi call Type:get_IsInterface():bool:this test eax, eax jne G_M44230_IG11 ;; bbWeight=1 PerfScore 2.50 G_M44230_IG04: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+112] call qword ptr [rax]Type:GetAttributeFlagsImpl():int:this test al, 128 jne G_M44230_IG12 ;; bbWeight=1 PerfScore 8.50 G_M44230_IG05: mov rcx, rsi call Type:GetRootElementType():Type:this mov rbx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rbx, rax je G_M44230_IG13 ;; bbWeight=1 PerfScore 4.00 G_M44230_IG06: test dil, dil jne G_M44230_IG14 ;; bbWeight=1 PerfScore 1.25 G_M44230_IG07: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+168] call qword ptr [rax]Type:get_ContainsGenericParameters():bool:this test eax, eax jne G_M44230_IG15 ;; bbWeight=1 PerfScore 8.50 G_M44230_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi je G_M44230_IG16 ;; bbWeight=1 PerfScore 2.50 G_M44230_IG09: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M44230_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1C117 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M44230_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x32A7 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, rsi call SR:Format(String,Object):String mov rdx, rax mov rcx, rdi call MemberAccessException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M44230_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x3231 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, rsi call SR:Format(String,Object):String mov rdx, rax mov rcx, rdi call MemberAccessException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M44230_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call NotSupportedException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M44230_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call NotSupportedException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M44230_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x327F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, rsi call SR:Format(String,Object):String mov rdx, rax mov rcx, rdi call MemberAccessException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M44230_IG16: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x332D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call MemberAccessException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 583, prolog size 7, PerfScore 93.30, (MethodHash=a2155339) for method RuntimeConstructorInfo:CheckCanCreateInstance(Type,bool) ; ============================================================ ; Assembly listing for method CustomAttribute:CreateCaObject(RuntimeModule,RuntimeType,IRuntimeMethodInfo,byref,long,byref):Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> r8 class-hnd ; V03 arg3 [V03,T00] ( 4, 4 ) byref -> rsi ; V04 arg4 [V04,T08] ( 1, 1 ) long -> [rsp+0x70] ; V05 arg5 [V05,T07] ( 1, 1 ) byref -> [rsp+0x78] ; V06 loc0 [V06 ] ( 3, 3 ) long -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op ;* V07 loc1 [V07 ] ( 0, 0 ) long -> zero-ref ; V08 loc2 [V08 ] ( 2, 2 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op ; V09 loc3 [V09,T06] ( 2, 2 ) ref -> rax class-hnd ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T04] ( 2, 4 ) long -> r9 ld-addr-op "Inlining Arg" ;* V12 tmp2 [V12 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V13 tmp3 [V13,T05] ( 2, 4 ) long -> rdx "Inlining Arg" ;* V14 tmp4 [V14 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; ; Lcl frame size = 64 G_M55090_IG01: push rsi sub rsp, 64 mov rsi, r9 ;; bbWeight=1 PerfScore 1.50 G_M55090_IG02: mov r9, qword ptr [rsi] mov qword ptr [rsp+38H], r9 mov r9, qword ptr [rsp+70H] mov qword ptr [rsp+20H], r9 lea r9, [rsp+30H] mov qword ptr [rsp+28H], r9 lea r9, [rsp+38H] call CustomAttribute:_CreateCaObject(RuntimeModule,RuntimeType,IRuntimeMethodInfo,long,long,long):Object mov rdx, qword ptr [rsp+38H] mov qword ptr [rsi], rdx mov edx, dword ptr [rsp+30H] mov rsi, bword ptr [rsp+78H] mov dword ptr [rsi], edx ;; bbWeight=1 PerfScore 13.00 G_M55090_IG03: add rsp, 64 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 71, prolog size 5, PerfScore 23.35, (MethodHash=e3c828cd) for method CustomAttribute:CreateCaObject(RuntimeModule,RuntimeType,IRuntimeMethodInfo,byref,long,byref):Object ; ============================================================ ; Assembly listing for method AssemblyInformationalVersionAttribute:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M17557_IG01: ;; bbWeight=1 PerfScore 0.00 G_M17557_IG02: lea rcx, bword ptr [rcx+8] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M17557_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 11, prolog size 0, PerfScore 3.85, (MethodHash=2fdcbb6a) for method AssemblyInformationalVersionAttribute:.ctor(String):this ; ============================================================ ; Assembly listing for method CustomAttribute:CreateAttributeArrayHelper(RuntimeType,int):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 3.75) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 4, 3.50) int -> rdx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T04] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ; V04 tmp2 [V04,T05] ( 3, 1 ) ref -> rax class-hnd "Inline stloc first use temp" ; V05 tmp3 [V05,T03] ( 2, 2 ) long -> rax ld-addr-op "Inlining Arg" ;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V07 tmp5 [V07,T07] ( 2, 1 ) long -> rax "Inlining Arg" ;* V08 tmp6 [V08 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V09 tmp7 [V09,T06] ( 2, 1 ) byref -> rax "Inlining Arg" ; V10 tmp8 [V10,T02] ( 2, 2 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M18073_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M18073_IG02: test edx, edx jne SHORT G_M18073_IG09 ;; bbWeight=1 PerfScore 1.25 G_M18073_IG03: mov rax, qword ptr [rcx+16] test rax, rax je SHORT G_M18073_IG06 ;; bbWeight=0.50 PerfScore 1.63 G_M18073_IG04: mov rax, qword ptr [rcx+16] mov rax, gword ptr [rax] test rax, rax je SHORT G_M18073_IG06 ;; bbWeight=0.25 PerfScore 1.31 G_M18073_IG05: jmp SHORT G_M18073_IG07 ;; bbWeight=0.50 PerfScore 1.00 G_M18073_IG06: call RuntimeType:InitializeCache():RuntimeTypeCache:this ;; bbWeight=0.50 PerfScore 0.50 G_M18073_IG07: mov rcx, rax cmp dword ptr [rcx], ecx call RuntimeTypeCache:GetEmptyArray():ref:this nop ;; bbWeight=0.50 PerfScore 1.75 G_M18073_IG08: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M18073_IG09: call Array:CreateInstance(Type,int):Array mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTARRAY nop ;; bbWeight=0.50 PerfScore 1.38 G_M18073_IG10: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 81, prolog size 4, PerfScore 18.41, (MethodHash=132db966) for method CustomAttribute:CreateAttributeArrayHelper(RuntimeType,int):ref ; ============================================================ ; Assembly listing for method Array:CreateInstance(Type,int):Array ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 5 ) ref -> rcx class-hnd ; V01 arg1 [V01 ] ( 4, 4 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V02 loc0 [V02,T04] ( 3, 3 ) ref -> rax class-hnd ; V03 loc1 [V03 ] ( 2, 2 ) struct ( 8) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 2, 4 ) ref -> rax "CASTCLASS eval op1" ; V06 tmp2 [V06,T01] ( 5, 6.74) ref -> rax class-hnd "spilling QMark2" ;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V08 tmp4 [V08,T03] ( 2, 4 ) long -> rcx ld-addr-op "Inlining Arg" ; V09 tmp5 [V09 ] ( 2, 2 ) ref -> [rsp+0x20] do-not-enreg[X] addr-exposed V03.m_type(offs=0x00) P-DEP "field V03.m_type (fldOffset=0x0)" ; V10 tmp6 [V10,T05] ( 2, 2 ) ref -> rax V07.m_type(offs=0x00) P-INDEP "field V07.m_type (fldOffset=0x0)" ; ; Lcl frame size = 40 G_M22737_IG01: sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov dword ptr [rsp+38H], edx ;; bbWeight=1 PerfScore 2.50 G_M22737_IG02: test rcx, rcx je SHORT G_M22737_IG10 ;; bbWeight=1 PerfScore 1.25 G_M22737_IG03: cmp dword ptr [rsp+38H], 0 jl SHORT G_M22737_IG11 ;; bbWeight=1 PerfScore 2.00 G_M22737_IG04: mov rax, qword ptr [rcx] mov rax, qword ptr [rax+88] call gword ptr [rax+8]Type:get_UnderlyingSystemType():Type:this test rax, rax je SHORT G_M22737_IG07 ;; bbWeight=1 PerfScore 8.25 G_M22737_IG05: mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx je SHORT G_M22737_IG07 ;; bbWeight=0.25 PerfScore 0.81 G_M22737_IG06: xor rax, rax ;; bbWeight=0.12 PerfScore 0.03 G_M22737_IG07: test rax, rax je SHORT G_M22737_IG12 ;; bbWeight=1 PerfScore 1.25 G_M22737_IG08: mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rsp+20H] call RuntimeTypeHandle:get_Value():long:this mov rcx, rax lea r8, [rsp+38H] mov edx, 1 xor r9, r9 call Array:InternalCreate(long,int,long,long):Array nop ;; bbWeight=1 PerfScore 5.00 G_M22737_IG09: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 G_M22737_IG10: mov ecx, 82 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M22737_IG11: call ThrowHelper:ThrowLengthArgumentOutOfRange_ArgumentOutOfRange_NeedNonNegNum() int3 ;; bbWeight=0 PerfScore 0.00 G_M22737_IG12: mov ecx, 54 mov edx, 82 call ThrowHelper:ThrowArgumentException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 139, prolog size 11, PerfScore 36.24, (MethodHash=1694a72e) for method Array:CreateInstance(Type,int):Array ; ============================================================ ; Assembly listing for method String:IsNullOrWhiteSpace(String):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 5, 7.50) ref -> rsi class-hnd ; V01 loc0 [V01,T01] ( 5, 16.50) int -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 4, 8 ) bool -> rbp "Inline return value spill temp" ; V04 tmp2 [V04,T00] ( 5, 28 ) ushort -> rcx "Inlining Arg" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V07 tmp5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V10 tmp8 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ;* V13 tmp11 [V13 ] ( 0, 0 ) byref -> zero-ref V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ;* V14 tmp12 [V14 ] ( 0, 0 ) int -> zero-ref V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ;* V15 tmp13 [V15 ] ( 0, 0 ) byref -> zero-ref V07._value(offs=0x00) P-INDEP "field V07._value (fldOffset=0x0)" ;* V16 tmp14 [V16 ] ( 0, 0 ) byref -> zero-ref V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ;* V18 tmp16 [V18 ] ( 0, 0 ) byref -> zero-ref V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref V10._value(offs=0x00) P-INDEP "field V10._value (fldOffset=0x0)" ; V21 cse0 [V21,T04] ( 3, 5 ) int -> rbx "CSE - aggressive" ; ; Lcl frame size = 40 G_M64170_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 4.50 G_M64170_IG02: test rsi, rsi jne SHORT G_M64170_IG05 ;; bbWeight=1 PerfScore 1.25 G_M64170_IG03: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M64170_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M64170_IG05: xor edi, edi mov ebx, dword ptr [rsi+8] test ebx, ebx jle SHORT G_M64170_IG11 ;; bbWeight=0.50 PerfScore 1.75 G_M64170_IG06: movsxd rcx, edi movzx rcx, word ptr [rsi+2*rcx+12] cmp ecx, 256 jae SHORT G_M64170_IG09 ;; bbWeight=4 PerfScore 14.00 G_M64170_IG07: cmp ecx, 256 jae SHORT G_M64170_IG15 movsxd rcx, ecx mov rax, 0xD1FFAB1E test byte ptr [rcx+rax], 128 setne bpl movzx rbp, bpl test ebp, ebp jne SHORT G_M64170_IG10 ;; bbWeight=2 PerfScore 12.50 G_M64170_IG08: jmp SHORT G_M64170_IG13 ;; bbWeight=0.50 PerfScore 1.00 G_M64170_IG09: call CharUnicodeInfo:GetIsWhiteSpace(ushort):bool movzx rbp, al test ebp, ebp je SHORT G_M64170_IG13 ;; bbWeight=2 PerfScore 5.00 G_M64170_IG10: inc edi cmp ebx, edi jg SHORT G_M64170_IG06 ;; bbWeight=4 PerfScore 6.00 G_M64170_IG11: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M64170_IG12: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M64170_IG13: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M64170_IG14: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M64170_IG15: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 144, prolog size 11, PerfScore 65.65, (MethodHash=05ad0555) for method String:IsNullOrWhiteSpace(String):bool ; ============================================================ ; Assembly listing for method String:StartsWith(String,int):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 10 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 10, 10 ) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 8, 8 ) int -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T10] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T05] ( 2, 4 ) byref -> rcx "impAppendStmt" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V07 tmp4 [V07,T06] ( 2, 4 ) ref -> rcx class-hnd "impAppendStmt" ; V08 tmp5 [V08,T07] ( 2, 4 ) ref -> rcx class-hnd "impAppendStmt" ; V09 tmp6 [V09,T11] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp7 [V10,T08] ( 2, 4 ) byref -> rcx "Inlining Arg" ; V11 tmp8 [V11,T09] ( 2, 4 ) byref -> rdx "Inlining Arg" ; V12 tmp9 [V12,T16] ( 1, 0 ) int -> rax "Single return block return value" ; V13 tmp10 [V13,T12] ( 2, 0 ) ref -> rdx "argument with side effect" ; V14 tmp11 [V14,T13] ( 2, 0 ) ref -> rcx "argument with side effect" ; V15 tmp12 [V15,T14] ( 2, 0 ) ref -> rdi "argument with side effect" ; V16 tmp13 [V16,T15] ( 2, 0 ) ref -> r8 "argument with side effect" ; V17 cse0 [V17,T03] ( 7, 7 ) int -> r8 "CSE - aggressive" ; V18 rat0 [V18,T04] ( 3, 6 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 32 G_M35431_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 4.00 G_M35431_IG02: test rdi, rdi je G_M35431_IG22 ;; bbWeight=1 PerfScore 1.25 G_M35431_IG03: cmp rsi, rdi jne SHORT G_M35431_IG06 cmp ebx, 5 ja G_M35431_IG23 ;; bbWeight=1 PerfScore 2.50 G_M35431_IG04: mov eax, 1 ;; bbWeight=1 PerfScore 0.25 G_M35431_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M35431_IG06: mov r8d, dword ptr [rdi+8] test r8d, r8d jne SHORT G_M35431_IG07 cmp ebx, 5 ja G_M35431_IG23 jmp SHORT G_M35431_IG04 ;; bbWeight=1 PerfScore 6.50 G_M35431_IG07: cmp ebx, 5 ja G_M35431_IG24 mov eax, ebx lea rdx, [reloc @RWD00] mov edx, dword ptr [rdx+4*rax] lea rcx, G_M35431_IG02 add rdx, rcx jmp rdx ;; bbWeight=1 PerfScore 7.25 G_M35431_IG08: call CultureInfo:get_CurrentCulture():CultureInfo mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+48]CultureInfo:get_CompareInfo():CompareInfo:this mov rcx, rax mov r9d, ebx and r9d, 1 mov rdx, rsi mov r8, rdi cmp dword ptr [rcx], ecx ;; bbWeight=1 PerfScore 11.50 G_M35431_IG09: add rsp, 32 pop rbx pop rsi pop rdi jmp CompareInfo:IsPrefix(String,String,int):bool:this ;; bbWeight=1 PerfScore 3.75 G_M35431_IG10: mov rcx, 0xD1FFAB1E mov edx, 502 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r9, 0xD1FFAB1E mov rcx, gword ptr [r9] mov r9d, ebx and r9d, 1 mov rdx, rsi mov r8, rdi cmp dword ptr [rcx], ecx ;; bbWeight=1 PerfScore 6.75 G_M35431_IG11: add rsp, 32 pop rbx pop rsi pop rdi jmp CompareInfo:IsPrefix(String,String,int):bool:this ;; bbWeight=1 PerfScore 3.75 G_M35431_IG12: cmp dword ptr [rsi+8], r8d jl SHORT G_M35431_IG16 movzx rcx, word ptr [rsi+12] cmp cx, word ptr [rdi+12] jne SHORT G_M35431_IG16 ;; bbWeight=1 PerfScore 8.00 G_M35431_IG13: cmp r8d, 1 je G_M35431_IG04 lea rcx, bword ptr [rsi+12] lea rdx, bword ptr [rdi+12] movsxd r8, r8d add r8, r8 ;; bbWeight=1 PerfScore 2.75 G_M35431_IG14: add rsp, 32 pop rbx pop rsi pop rdi jmp SpanHelpers:SequenceEqual(byref,byref,long):bool ;; bbWeight=1 PerfScore 3.75 G_M35431_IG15: cmp dword ptr [rsi+8], r8d jge SHORT G_M35431_IG18 ;; bbWeight=1 PerfScore 3.00 G_M35431_IG16: xor eax, eax ;; bbWeight=1 PerfScore 0.25 G_M35431_IG17: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M35431_IG18: lea rcx, bword ptr [rsi+12] lea rdx, bword ptr [rdi+12] ;; bbWeight=1 PerfScore 1.00 G_M35431_IG19: add rsp, 32 pop rbx pop rsi pop rdi jmp CompareInfo:EqualsOrdinalIgnoreCase(byref,byref,int):bool ;; bbWeight=1 PerfScore 3.75 G_M35431_IG20: movzx rax, al ;; bbWeight=0 PerfScore 0.00 G_M35431_IG21: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0 PerfScore 0.00 G_M35431_IG22: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 773 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M35431_IG23: mov ecx, 24 mov edx, 41 call ThrowHelper:ThrowArgumentException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 G_M35431_IG24: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xF065 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1910 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M35431_IG08 - G_M35431_IG02 dd G_M35431_IG08 - G_M35431_IG02 dd G_M35431_IG10 - G_M35431_IG02 dd G_M35431_IG10 - G_M35431_IG02 dd G_M35431_IG12 - G_M35431_IG02 dd G_M35431_IG15 - G_M35431_IG02 ; Total bytes of code 479, prolog size 16, PerfScore 123.40, (MethodHash=e6647598) for method String:StartsWith(String,int):bool:this ; ============================================================ ; Assembly listing for method RuntimeInformation:get_IsNetCore():bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" ; V02 tmp2 [V02,T03] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V03 tmp3 [V03,T05] ( 3, 1.50) bool -> rax "Inline return value spill temp" ; V04 tmp4 [V04,T02] ( 3, 2.50) ref -> rax class-hnd "Inlining Arg" ; V05 tmp5 [V05,T04] ( 2, 2 ) ref -> rcx "argument with side effect" ; V06 rat0 [V06,T01] ( 3, 3 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 40 G_M16466_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M16466_IG02: call Environment:get_Version():Version cmp dword ptr [rax+8], 5 jge SHORT G_M16466_IG04 ;; bbWeight=1 PerfScore 4.00 G_M16466_IG03: call RuntimeInformation:get_FrameworkDescription():String mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, 5 cmp dword ptr [rcx], ecx call String:StartsWith(String,int):bool:this test eax, eax je SHORT G_M16466_IG10 ;; bbWeight=0.50 PerfScore 4.00 G_M16466_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax call RuntimeTypeHandle:GetAssembly(RuntimeType):RuntimeAssembly mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+48]Assembly:get_Location():String:this test rax, rax je SHORT G_M16466_IG07 ;; bbWeight=0.50 PerfScore 5.50 G_M16466_IG05: cmp dword ptr [rax+8], 0 jbe SHORT G_M16466_IG07 ;; bbWeight=0.25 PerfScore 0.75 G_M16466_IG06: xor eax, eax jmp SHORT G_M16466_IG08 ;; bbWeight=0.50 PerfScore 1.13 G_M16466_IG07: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M16466_IG08: test eax, eax sete al movzx rax, al ;; bbWeight=0.50 PerfScore 0.75 G_M16466_IG09: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M16466_IG10: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M16466_IG11: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 129, prolog size 4, PerfScore 30.78, (MethodHash=fe9ebfad) for method RuntimeInformation:get_IsNetCore():bool ; ============================================================ ; Assembly listing for method Environment:get_Version():Version ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T07] ( 4, 3 ) ref -> rcx class-hnd ;* V01 loc1 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V02 loc2 [V02,T08] ( 4, 3 ) int -> rax ; V03 loc3 [V03 ] ( 2, 1.50) ref -> [rsp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V06 tmp2 [V06,T09] ( 3, 2.50) ref -> rax ; V07 tmp3 [V07,T10] ( 3, 2 ) ref -> rcx ; V08 tmp4 [V08,T03] ( 4, 4 ) ref -> rax class-hnd exact "NewObj constructor temp" ; V09 tmp5 [V09,T05] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V13 tmp9 [V13,T13] ( 2, 2 ) byref -> rsi "Inlining Arg" ;* V14 tmp10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V15 tmp11 [V15,T14] ( 2, 2 ) int -> rdi "Inlining Arg" ; V16 tmp12 [V16,T15] ( 2, 2 ) int -> rax "Inline return value spill temp" ;* V17 tmp13 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V18 tmp14 [V18,T16] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V19 tmp15 [V19,T17] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V20 tmp16 [V20,T18] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V26 tmp22 [V26,T19] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V27 tmp23 [V27,T20] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V28 tmp24 [V28,T21] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V29 tmp25 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V31 tmp27 [V31 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V33 tmp29 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V34 tmp30 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V35 tmp31 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V36 tmp32 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V37 tmp33 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V38 tmp34 [V38 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V39 tmp35 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V40 tmp36 [V40 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V41 tmp37 [V41 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V42 tmp38 [V42,T01] ( 5, 4 ) byref -> rsi V01._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ; V43 tmp39 [V43,T02] ( 5, 4 ) int -> rdi V01._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ; V44 tmp40 [V44,T11] ( 3, 2 ) byref -> rsi V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ; V45 tmp41 [V45,T12] ( 3, 2 ) int -> rdi V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ; V46 tmp42 [V46,T22] ( 2, 1 ) byref -> rsi V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ; V47 tmp43 [V47,T27] ( 2, 1 ) int -> rdi V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ; V48 tmp44 [V48,T23] ( 2, 1 ) byref -> rsi V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ;* V49 tmp45 [V49,T29] ( 0, 0 ) int -> zero-ref V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ; V50 tmp46 [V50,T24] ( 2, 1 ) byref -> rsi V14._value(offs=0x00) P-INDEP "field V14._value (fldOffset=0x0)" ;* V51 tmp47 [V51 ] ( 0, 0 ) byref -> zero-ref V17._pointer(offs=0x00) P-INDEP "field V17._pointer (fldOffset=0x0)" ;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)" ;* V53 tmp49 [V53 ] ( 0, 0 ) byref -> zero-ref V33._pointer(offs=0x00) P-INDEP "field V33._pointer (fldOffset=0x0)" ;* V54 tmp50 [V54 ] ( 0, 0 ) int -> zero-ref V33._length(offs=0x08) P-INDEP "field V33._length (fldOffset=0x8)" ;* V55 tmp51 [V55 ] ( 0, 0 ) byref -> zero-ref V35._pointer(offs=0x00) P-INDEP "field V35._pointer (fldOffset=0x0)" ;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref V35._length(offs=0x08) P-INDEP "field V35._length (fldOffset=0x8)" ;* V57 tmp53 [V57 ] ( 0, 0 ) byref -> zero-ref V37._pointer(offs=0x00) P-INDEP "field V37._pointer (fldOffset=0x0)" ;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref V37._length(offs=0x08) P-INDEP "field V37._length (fldOffset=0x8)" ; V59 tmp55 [V59,T25] ( 2, 1 ) byref -> rsi V38._pointer(offs=0x00) P-INDEP "field V38._pointer (fldOffset=0x0)" ; V60 tmp56 [V60,T28] ( 2, 1 ) int -> rdi V38._length(offs=0x08) P-INDEP "field V38._length (fldOffset=0x8)" ; V61 tmp57 [V61,T26] ( 2, 1 ) byref -> rsi V41._value(offs=0x00) P-INDEP "field V41._value (fldOffset=0x0)" ; V62 tmp58 [V62,T06] ( 2, 4 ) ref -> rdx "argument with side effect" ; V63 tmp59 [V63 ] ( 2, 4 ) struct (16) [rsp+0x30] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V64 tmp60 [V64,T00] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 72 G_M5511_IG01: push rdi push rsi sub rsp, 72 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 xor rax, rax mov qword ptr [rsp+40H], rax ;; bbWeight=1 PerfScore 4.83 G_M5511_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax call RuntimeTypeHandle:GetAssembly(RuntimeType):RuntimeAssembly mov rdx, rax mov rcx, 0xD1FFAB1E call CustomAttributeExtensions:GetCustomAttribute(Assembly):__Canon test rax, rax jne SHORT G_M5511_IG04 ;; bbWeight=1 PerfScore 5.25 G_M5511_IG03: xor rcx, rcx jmp SHORT G_M5511_IG05 ;; bbWeight=0.50 PerfScore 1.13 G_M5511_IG04: mov rcx, gword ptr [rax+8] ;; bbWeight=0.50 PerfScore 1.00 G_M5511_IG05: test rcx, rcx jne SHORT G_M5511_IG07 ;; bbWeight=1 PerfScore 1.25 G_M5511_IG06: xor rsi, rsi xor edi, edi jmp SHORT G_M5511_IG08 ;; bbWeight=0.50 PerfScore 1.25 G_M5511_IG07: lea rsi, bword ptr [rcx+12] mov edi, dword ptr [rcx+8] ;; bbWeight=0.50 PerfScore 1.25 G_M5511_IG08: mov dword ptr [rsp+20H], edi mov rcx, rsi mov edx, 45 mov r8d, 43 mov r9d, 32 call SpanHelpers:IndexOfAny(byref,ushort,ushort,ushort,int):int cmp eax, -1 je SHORT G_M5511_IG11 ;; bbWeight=1 PerfScore 4.25 G_M5511_IG09: mov ecx, eax mov edx, edi cmp rcx, rdx ja SHORT G_M5511_IG16 ;; bbWeight=0.50 PerfScore 0.88 G_M5511_IG10: mov edi, eax ;; bbWeight=0.50 PerfScore 0.13 G_M5511_IG11: lea rcx, bword ptr [rsp+30H] mov bword ptr [rcx], rsi mov dword ptr [rcx+8], edi lea rcx, bword ptr [rsp+30H] lea rdx, [rsp+40H] call Version:TryParse(ReadOnlySpan`1,byref):bool test eax, eax jne SHORT G_M5511_IG14 ;; bbWeight=1 PerfScore 5.75 G_M5511_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+16], -1 mov dword ptr [rax+20], -1 ;; bbWeight=0.50 PerfScore 1.63 G_M5511_IG13: add rsp, 72 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M5511_IG14: mov rax, gword ptr [rsp+40H] ;; bbWeight=0.50 PerfScore 0.50 G_M5511_IG15: add rsp, 72 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M5511_IG16: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 224, prolog size 23, PerfScore 53.93, (MethodHash=9365ea78) for method Environment:get_Version():Version ; ============================================================ ; Assembly listing for method SpanHelpers:IndexOfAny(byref,ushort,ushort,ushort,int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T16] ( 4, 4 ) byref -> rcx ; V01 arg1 [V01,T09] ( 5, 12 ) ushort -> rdx ; V02 arg2 [V02,T04] ( 8, 30 ) ushort -> r8 ; V03 arg3 [V03,T05] ( 8, 30 ) ushort -> r9 ; V04 arg4 [V04,T00] ( 17,135 ) int -> rax ; V05 loc0 [V05,T17] ( 5, 5.50) long -> rcx ; V06 loc1 [V06 ] ( 1, 1 ) byref -> [rsp+0x08] must-init pinned ; V07 loc2 [V07,T01] ( 26,131 ) long -> r10 ; V08 loc3 [V08,T08] ( 5, 17 ) long -> r11 ; V09 loc4 [V09,T23] ( 2, 1 ) int -> rax ; V10 loc5 [V10,T32] ( 2, 20 ) simd32 -> mm0 ld-addr-op ; V11 loc6 [V11,T33] ( 2, 20 ) simd32 -> mm1 ld-addr-op ; V12 loc7 [V12,T34] ( 2, 20 ) simd32 -> mm2 ld-addr-op ; V13 loc8 [V13,T25] ( 4, 64 ) simd32 -> mm3 ; V14 loc9 [V14,T30] ( 3, 34 ) simd32 -> mm3 ; V15 loc10 [V15,T31] ( 2, 32 ) simd32 -> mm4 ld-addr-op ;# V16 OutArgs [V16 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V17 tmp1 [V17,T26] ( 2, 64 ) simd32 -> mm4 "struct address for call/obj" ; V18 tmp2 [V18,T18] ( 2, 5 ) int -> rax "impAppendStmt" ; V19 tmp3 [V19,T27] ( 2, 64 ) simd32 -> mm4 "Inlining Arg" ; V20 tmp4 [V20,T28] ( 2, 64 ) simd32 -> mm5 "Inlining Arg" ; V21 tmp5 [V21,T29] ( 2, 64 ) simd32 -> mm3 "Inlining Arg" ;* V22 tmp6 [V22 ] ( 0, 0 ) simd32 -> zero-ref "Inlining Arg" ; V23 tmp7 [V23,T35] ( 5, 4.75) simd32 -> mm0 ld-addr-op "Inline stloc first use temp" ; V24 tmp8 [V24,T15] ( 9, 6 ) long -> rdx "Inline stloc first use temp" ; V25 tmp9 [V25,T20] ( 6, 3.50) int -> rcx "Inline stloc first use temp" ;* V26 tmp10 [V26 ] ( 0, 0 ) simd32 -> zero-ref "Inlining Arg" ; V27 tmp11 [V27,T24] ( 2, 1 ) int -> r9 "Inline return value spill temp" ; V28 tmp12 [V28,T19] ( 2, 4 ) long -> rcx "Cast away GC" ; V29 cse0 [V29,T11] ( 4, 8 ) int -> rsi "CSE - aggressive" ; V30 cse1 [V30,T12] ( 4, 8 ) int -> rsi "CSE - aggressive" ; V31 cse2 [V31,T13] ( 4, 8 ) int -> rsi "CSE - aggressive" ; V32 cse3 [V32,T02] ( 4, 64 ) int -> rsi "CSE - aggressive" ; V33 cse4 [V33,T14] ( 4, 8 ) int -> rsi "CSE - aggressive" ; V34 cse5 [V34,T03] ( 9, 38 ) int -> rdi "CSE - aggressive" ; V35 rat0 [V35,T21] ( 3, 3 ) int -> rax "ReplaceWithLclVar is creating a new local variable" ; V36 rat1 [V36,T06] ( 3, 24 ) long -> rax "ReplaceWithLclVar is creating a new local variable" ; V37 rat2 [V37,T07] ( 3, 24 ) long -> rax "ReplaceWithLclVar is creating a new local variable" ; V38 rat3 [V38,T10] ( 3, 12 ) long -> rax "ReplaceWithLclVar is creating a new local variable" ; V39 rat4 [V39,T22] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 16 G_M12654_IG01: push rdi push rsi push rbx sub rsp, 16 vzeroupper xor rax, rax mov qword ptr [rsp+08H], rax mov eax, dword ptr [rsp+50H] ;; bbWeight=1 PerfScore 6.50 G_M12654_IG02: mov bword ptr [rsp+08H], rcx mov r10, rcx movsxd r11, eax lea r11, [rcx+2*r11] cmp eax, 32 jl G_M12654_IG05 ;; bbWeight=1 PerfScore 3.25 G_M12654_IG03: mov eax, r10d and eax, 31 mov esi, eax shr esi, 31 add eax, esi sar eax, 1 neg eax add eax, 16 and eax, 15 cmp eax, 4 jl G_M12654_IG06 ;; bbWeight=0.50 PerfScore 2.75 G_M12654_IG04: add eax, -4 movzx rsi, word ptr [r10] movzx rdi, dx cmp esi, edi je G_M12654_IG20 movzx rbx, r8w cmp esi, ebx je G_M12654_IG20 movzx rbx, r9w cmp esi, ebx je G_M12654_IG20 movzx rsi, word ptr [r10+2] cmp esi, edi je G_M12654_IG19 movzx rbx, r8w cmp esi, ebx je G_M12654_IG19 movzx rbx, r9w cmp esi, ebx je G_M12654_IG19 movzx rsi, word ptr [r10+4] cmp esi, edi je G_M12654_IG18 movzx rbx, r8w cmp esi, ebx je G_M12654_IG18 movzx rbx, r9w cmp esi, ebx je G_M12654_IG18 movzx rsi, word ptr [r10+6] cmp esi, edi je G_M12654_IG17 movzx rdi, r8w cmp esi, edi je G_M12654_IG17 movzx rdi, r9w cmp esi, edi je G_M12654_IG17 add r10, 8 ;; bbWeight=2 PerfScore 51.50 G_M12654_IG05: cmp eax, 4 jge G_M12654_IG04 ;; bbWeight=16 PerfScore 20.00 G_M12654_IG06: test eax, eax jle SHORT G_M12654_IG08 movzx rdi, dx ;; bbWeight=4 PerfScore 6.00 G_M12654_IG07: dec eax movzx rsi, word ptr [r10] cmp esi, edi je G_M12654_IG20 movzx rbx, r8w cmp esi, ebx je G_M12654_IG20 movzx rbx, r9w cmp esi, ebx je G_M12654_IG20 add r10, 2 test eax, eax jg SHORT G_M12654_IG07 ;; bbWeight=16 PerfScore 128.00 G_M12654_IG08: cmp r10, r11 jae G_M12654_IG15 mov rax, r11 sub rax, r10 mov rsi, rax shr rsi, 63 add rax, rsi sar rax, 1 and eax, -16 movzx rdi, dx imul edi, edi, 0x10001 vmovd xmm0, edi vpbroadcastd ymm0, ymm0 movzx rsi, r8w imul esi, esi, 0x10001 vmovd xmm1, esi vpbroadcastd ymm1, ymm1 movzx rsi, r9w imul esi, esi, 0x10001 vmovd xmm2, esi vpbroadcastd ymm2, ymm2 test eax, eax jle SHORT G_M12654_IG10 ;; bbWeight=4 PerfScore 88.00 G_M12654_IG09: vmovupd ymm3, ymmword ptr[r10] vpcmpeqw ymm4, ymm3, ymm0 vpcmpeqw ymm5, ymm3, ymm1 vpor ymm4, ymm4, ymm5 vpcmpeqw ymm3, ymm3, ymm2 vpor ymm3, ymm4, ymm3 vxorps ymm4, ymm4, ymm4 vpcmpeqw ymm4, ymm4, ymm3 vpmovmskb esi, ymm4 cmp esi, -1 jne SHORT G_M12654_IG11 add r10, 32 add eax, -16 test eax, eax jg SHORT G_M12654_IG09 ;; bbWeight=16 PerfScore 176.00 G_M12654_IG10: cmp r10, r11 jae G_M12654_IG15 mov rax, r11 sub rax, r10 mov rsi, rax shr rsi, 63 add rax, rsi sar rax, 1 jmp G_M12654_IG05 ;; bbWeight=4 PerfScore 27.00 G_M12654_IG11: mov rax, r10 sub rax, rcx mov r10, rax shr r10, 63 add rax, r10 sar rax, 1 vmovaps ymm0, ymm3 xor ecx, ecx vmovd rdx, xmm0 test rdx, rdx jne SHORT G_M12654_IG13 ;; bbWeight=2 PerfScore 12.50 G_M12654_IG12: mov ecx, 1 vmovaps ymm1, ymm0 vpsrldq ymm1, 8 vmovd rdx, xmm1 test rdx, rdx jne SHORT G_M12654_IG13 mov ecx, 2 vextractf128 ymm1, ymm0, 1 vmovd rdx, xmm1 test rdx, rdx jne SHORT G_M12654_IG13 mov ecx, 3 vextractf128 ymm1, ymm0, 1 vpsrldq ymm1, 8 vmovd rdx, xmm1 test rdx, rdx jne SHORT G_M12654_IG13 mov ecx, 4 ;; bbWeight=0.25 PerfScore 4.00 G_M12654_IG13: xor r8d, r8d tzcnt r8, rdx mov r9d, r8d shl ecx, 2 add eax, ecx sar r9d, 4 add eax, r9d ;; bbWeight=0.50 PerfScore 3.50 G_M12654_IG14: vzeroupper add rsp, 16 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.88 G_M12654_IG15: mov eax, -1 ;; bbWeight=0.50 PerfScore 0.13 G_M12654_IG16: vzeroupper add rsp, 16 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.88 G_M12654_IG17: add r10, 2 ;; bbWeight=0.50 PerfScore 0.13 G_M12654_IG18: add r10, 2 ;; bbWeight=0.50 PerfScore 0.13 G_M12654_IG19: add r10, 2 ;; bbWeight=0.50 PerfScore 0.13 G_M12654_IG20: mov rax, r10 sub rax, rcx mov r10, rax shr r10, 63 add rax, r10 sar rax, 1 ;; bbWeight=0.50 PerfScore 1.75 G_M12654_IG21: vzeroupper add rsp, 16 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.88 ; Total bytes of code 676, prolog size 21, PerfScore 606.28, (MethodHash=0369ce91) for method SpanHelpers:IndexOfAny(byref,ushort,ushort,ushort,int):int ; ============================================================ ; Assembly listing for method Version:TryParse(ReadOnlySpan`1,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 6 ) byref -> rcx ; V01 arg1 [V01,T02] ( 3, 3 ) byref -> rsi ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> rdi class-hnd "dup spill" ; V05 tmp2 [V05,T03] ( 3, 2 ) bool -> rax "Inline return value spill temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref V08._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; ; Lcl frame size = 40 G_M49976_IG01: push rdi push rsi sub rsp, 40 mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M49976_IG02: xor edx, edx call Version:ParseVersion(ReadOnlySpan`1,bool):Version mov rdi, rax mov rcx, rsi mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF test rdi, rdi je SHORT G_M49976_IG04 ;; bbWeight=1 PerfScore 4.25 G_M49976_IG03: xor eax, eax jmp SHORT G_M49976_IG05 ;; bbWeight=0.50 PerfScore 1.13 G_M49976_IG04: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M49976_IG05: test eax, eax sete al movzx rax, al ;; bbWeight=1 PerfScore 1.50 G_M49976_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 59, prolog size 6, PerfScore 17.65, (MethodHash=a35a3cc7) for method Version:TryParse(ReadOnlySpan`1,byref):bool ; ============================================================ ; Assembly listing for method Version:ParseVersion(ReadOnlySpan`1,bool):Version ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T06] ( 5, 3.50) bool -> rsi ; V02 loc0 [V02,T03] ( 9, 5.50) int -> rbp ; V03 loc1 [V03,T07] ( 9, 4.50) int -> r15 ; V04 loc2 [V04,T04] ( 11, 5.50) int -> r13 ; V05 loc3 [V05 ] ( 5, 2.50) int -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc4 [V06 ] ( 4, 2 ) int -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op ; V07 loc5 [V07 ] ( 2, 1 ) int -> [rsp+0x40] do-not-enreg[X] addr-exposed ld-addr-op ; V08 loc6 [V08 ] ( 4, 2 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V11 tmp2 [V11 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V12 tmp3 [V12 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V13 tmp4 [V13,T14] ( 3, 3 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V14 tmp5 [V14 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V15 tmp6 [V15 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V16 tmp7 [V16,T15] ( 3, 3 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V18 tmp9 [V18 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V19 tmp10 [V19,T16] ( 3, 3 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V20 tmp11 [V20 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V21 tmp12 [V21 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V22 tmp13 [V22,T80] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V23 tmp14 [V23,T81] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V24 tmp15 [V24,T28] ( 2, 2 ) int -> rbp "Inline return value spill temp" ;* V25 tmp16 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V26 tmp17 [V26,T36] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V27 tmp18 [V27 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V29 tmp20 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V30 tmp21 [V30,T37] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V31 tmp22 [V31 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V33 tmp24 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V34 tmp25 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V35 tmp26 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V36 tmp27 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V37 tmp28 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V38 tmp29 [V38,T09] ( 4, 4 ) int -> rcx "Inlining Arg" ;* V39 tmp30 [V39 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V40 tmp31 [V40 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V41 tmp32 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V42 tmp33 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V43 tmp34 [V43,T29] ( 2, 2 ) int -> r8 "Inlining Arg" ; V44 tmp35 [V44,T56] ( 2, 1 ) int -> r13 "Inline return value spill temp" ;* V45 tmp36 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V46 tmp37 [V46,T69] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V47 tmp38 [V47 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V49 tmp40 [V49 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V50 tmp41 [V50,T70] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V51 tmp42 [V51 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V53 tmp44 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V54 tmp45 [V54 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V55 tmp46 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V56 tmp47 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V57 tmp48 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V58 tmp49 [V58,T10] ( 4, 4 ) int -> rcx "Inlining Arg" ;* V59 tmp50 [V59 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V60 tmp51 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V61 tmp52 [V61 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V62 tmp53 [V62 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V63 tmp54 [V63,T30] ( 2, 2 ) int -> r8 "Inlining Arg" ; V64 tmp55 [V64,T57] ( 2, 1 ) int -> r15 "Inline return value spill temp" ;* V65 tmp56 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V66 tmp57 [V66,T71] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V67 tmp58 [V67 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V69 tmp60 [V69 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V70 tmp61 [V70,T72] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V71 tmp62 [V71 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V72 tmp63 [V72 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V73 tmp64 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V74 tmp65 [V74 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V75 tmp66 [V75 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V76 tmp67 [V76 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V77 tmp68 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V78 tmp69 [V78,T11] ( 4, 4 ) int -> rcx "Inlining Arg" ;* V79 tmp70 [V79 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V80 tmp71 [V80 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V81 tmp72 [V81 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V82 tmp73 [V82 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V83 tmp74 [V83,T31] ( 2, 2 ) int -> r8 "Inlining Arg" ; V84 tmp75 [V84,T58] ( 2, 1 ) bool -> rax "Inline return value spill temp" ;* V85 tmp76 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V86 tmp77 [V86,T73] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V87 tmp78 [V87 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V88 tmp79 [V88 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V89 tmp80 [V89 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V90 tmp81 [V90,T74] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V91 tmp82 [V91 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V92 tmp83 [V92 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V93 tmp84 [V93 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V94 tmp85 [V94 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V95 tmp86 [V95 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V96 tmp87 [V96 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V97 tmp88 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V98 tmp89 [V98 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V99 tmp90 [V99 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V100 tmp91 [V100 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V101 tmp92 [V101 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V102 tmp93 [V102,T32] ( 2, 2 ) int -> rcx "Inlining Arg" ; V103 tmp94 [V103,T23] ( 3, 3 ) int -> rdx "Inlining Arg" ;* V104 tmp95 [V104 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V105 tmp96 [V105 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V106 tmp97 [V106 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V107 tmp98 [V107 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V108 tmp99 [V108,T24] ( 3, 3 ) int -> rcx "Inlining Arg" ; V109 tmp100 [V109,T25] ( 3, 3 ) int -> rdx "Inlining Arg" ;* V110 tmp101 [V110 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V111 tmp102 [V111 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V112 tmp103 [V112 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V113 tmp104 [V113 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V114 tmp105 [V114,T12] ( 4, 4 ) int -> r15 "Inlining Arg" ;* V115 tmp106 [V115 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V116 tmp107 [V116 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V117 tmp108 [V117 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V118 tmp109 [V118 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V119 tmp110 [V119,T33] ( 2, 2 ) int -> rbx "Inlining Arg" ; V120 tmp111 [V120,T13] ( 4, 4 ) int -> r13 "Inlining Arg" ;* V121 tmp112 [V121 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V122 tmp113 [V122 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V123 tmp114 [V123 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V124 tmp115 [V124 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V125 tmp116 [V125,T34] ( 2, 2 ) int -> rcx "Inlining Arg" ; V126 tmp117 [V126,T26] ( 3, 3 ) int -> rbp "Inlining Arg" ;* V127 tmp118 [V127 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V128 tmp119 [V128 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V129 tmp120 [V129 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V130 tmp121 [V130 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V131 tmp122 [V131,T35] ( 2, 2 ) int -> rcx "Inlining Arg" ; V132 tmp123 [V132,T08] ( 4, 4 ) ref -> rsi "Single return block return value" ; V133 tmp124 [V133,T02] ( 9, 5.50) byref -> rdi V212._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V134 tmp125 [V134,T01] ( 17, 9.50) int -> rbx V212._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V135 tmp126 [V135 ] ( 0, 0 ) byref -> zero-ref V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ;* V136 tmp127 [V136 ] ( 0, 0 ) int -> zero-ref V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ;* V137 tmp128 [V137,T75] ( 0, 0 ) byref -> zero-ref V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ;* V138 tmp129 [V138,T78] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ; V139 tmp130 [V139,T38] ( 2, 1 ) byref -> rdx V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ; V140 tmp131 [V140,T59] ( 2, 1 ) int -> rcx V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ; V141 tmp132 [V141,T39] ( 2, 1 ) byref -> r12 V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ; V142 tmp133 [V142,T60] ( 2, 1 ) int -> rdx V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ; V143 tmp134 [V143,T40] ( 2, 1 ) byref -> rdx V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ; V144 tmp135 [V144,T61] ( 2, 1 ) int -> rcx V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ; V145 tmp136 [V145,T41] ( 2, 1 ) byref -> rcx V17._pointer(offs=0x00) P-INDEP "field V17._pointer (fldOffset=0x0)" ; V146 tmp137 [V146,T62] ( 2, 1 ) int -> rdx V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)" ; V147 tmp138 [V147,T42] ( 2, 1 ) byref -> rcx V18._pointer(offs=0x00) P-INDEP "field V18._pointer (fldOffset=0x0)" ; V148 tmp139 [V148,T63] ( 2, 1 ) int -> rbx V18._length(offs=0x08) P-INDEP "field V18._length (fldOffset=0x8)" ;* V149 tmp140 [V149 ] ( 0, 0 ) byref -> zero-ref V20._pointer(offs=0x00) P-INDEP "field V20._pointer (fldOffset=0x0)" ;* V150 tmp141 [V150 ] ( 0, 0 ) int -> zero-ref V20._length(offs=0x08) P-INDEP "field V20._length (fldOffset=0x8)" ;* V151 tmp142 [V151 ] ( 0, 0 ) byref -> zero-ref V21._pointer(offs=0x00) P-INDEP "field V21._pointer (fldOffset=0x0)" ;* V152 tmp143 [V152 ] ( 0, 0 ) int -> zero-ref V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)" ;* V153 tmp144 [V153 ] ( 0, 0 ) byref -> zero-ref V25._pointer(offs=0x00) P-INDEP "field V25._pointer (fldOffset=0x0)" ;* V154 tmp145 [V154 ] ( 0, 0 ) int -> zero-ref V25._length(offs=0x08) P-INDEP "field V25._length (fldOffset=0x8)" ;* V155 tmp146 [V155 ] ( 0, 0 ) byref -> zero-ref V33._pointer(offs=0x00) P-INDEP "field V33._pointer (fldOffset=0x0)" ;* V156 tmp147 [V156 ] ( 0, 0 ) int -> zero-ref V33._length(offs=0x08) P-INDEP "field V33._length (fldOffset=0x8)" ;* V157 tmp148 [V157 ] ( 0, 0 ) byref -> zero-ref V35._pointer(offs=0x00) P-INDEP "field V35._pointer (fldOffset=0x0)" ;* V158 tmp149 [V158 ] ( 0, 0 ) int -> zero-ref V35._length(offs=0x08) P-INDEP "field V35._length (fldOffset=0x8)" ;* V159 tmp150 [V159 ] ( 0, 0 ) byref -> zero-ref V37._pointer(offs=0x00) P-INDEP "field V37._pointer (fldOffset=0x0)" ;* V160 tmp151 [V160 ] ( 0, 0 ) int -> zero-ref V37._length(offs=0x08) P-INDEP "field V37._length (fldOffset=0x8)" ;* V161 tmp152 [V161 ] ( 0, 0 ) byref -> zero-ref V39._pointer(offs=0x00) P-INDEP "field V39._pointer (fldOffset=0x0)" ;* V162 tmp153 [V162 ] ( 0, 0 ) int -> zero-ref V39._length(offs=0x08) P-INDEP "field V39._length (fldOffset=0x8)" ; V163 tmp154 [V163,T43] ( 2, 1 ) byref -> rcx V42._value(offs=0x00) P-INDEP "field V42._value (fldOffset=0x0)" ;* V164 tmp155 [V164 ] ( 0, 0 ) byref -> zero-ref V45._pointer(offs=0x00) P-INDEP "field V45._pointer (fldOffset=0x0)" ;* V165 tmp156 [V165 ] ( 0, 0 ) int -> zero-ref V45._length(offs=0x08) P-INDEP "field V45._length (fldOffset=0x8)" ;* V166 tmp157 [V166 ] ( 0, 0 ) byref -> zero-ref V53._pointer(offs=0x00) P-INDEP "field V53._pointer (fldOffset=0x0)" ;* V167 tmp158 [V167 ] ( 0, 0 ) int -> zero-ref V53._length(offs=0x08) P-INDEP "field V53._length (fldOffset=0x8)" ;* V168 tmp159 [V168 ] ( 0, 0 ) byref -> zero-ref V55._pointer(offs=0x00) P-INDEP "field V55._pointer (fldOffset=0x0)" ;* V169 tmp160 [V169 ] ( 0, 0 ) int -> zero-ref V55._length(offs=0x08) P-INDEP "field V55._length (fldOffset=0x8)" ;* V170 tmp161 [V170 ] ( 0, 0 ) byref -> zero-ref V57._pointer(offs=0x00) P-INDEP "field V57._pointer (fldOffset=0x0)" ;* V171 tmp162 [V171 ] ( 0, 0 ) int -> zero-ref V57._length(offs=0x08) P-INDEP "field V57._length (fldOffset=0x8)" ;* V172 tmp163 [V172 ] ( 0, 0 ) byref -> zero-ref V59._pointer(offs=0x00) P-INDEP "field V59._pointer (fldOffset=0x0)" ;* V173 tmp164 [V173 ] ( 0, 0 ) int -> zero-ref V59._length(offs=0x08) P-INDEP "field V59._length (fldOffset=0x8)" ; V174 tmp165 [V174,T44] ( 2, 1 ) byref -> rcx V62._value(offs=0x00) P-INDEP "field V62._value (fldOffset=0x0)" ;* V175 tmp166 [V175 ] ( 0, 0 ) byref -> zero-ref V65._pointer(offs=0x00) P-INDEP "field V65._pointer (fldOffset=0x0)" ;* V176 tmp167 [V176 ] ( 0, 0 ) int -> zero-ref V65._length(offs=0x08) P-INDEP "field V65._length (fldOffset=0x8)" ;* V177 tmp168 [V177 ] ( 0, 0 ) byref -> zero-ref V73._pointer(offs=0x00) P-INDEP "field V73._pointer (fldOffset=0x0)" ;* V178 tmp169 [V178 ] ( 0, 0 ) int -> zero-ref V73._length(offs=0x08) P-INDEP "field V73._length (fldOffset=0x8)" ;* V179 tmp170 [V179 ] ( 0, 0 ) byref -> zero-ref V75._pointer(offs=0x00) P-INDEP "field V75._pointer (fldOffset=0x0)" ;* V180 tmp171 [V180 ] ( 0, 0 ) int -> zero-ref V75._length(offs=0x08) P-INDEP "field V75._length (fldOffset=0x8)" ;* V181 tmp172 [V181 ] ( 0, 0 ) byref -> zero-ref V77._pointer(offs=0x00) P-INDEP "field V77._pointer (fldOffset=0x0)" ;* V182 tmp173 [V182 ] ( 0, 0 ) int -> zero-ref V77._length(offs=0x08) P-INDEP "field V77._length (fldOffset=0x8)" ;* V183 tmp174 [V183 ] ( 0, 0 ) byref -> zero-ref V79._pointer(offs=0x00) P-INDEP "field V79._pointer (fldOffset=0x0)" ;* V184 tmp175 [V184 ] ( 0, 0 ) int -> zero-ref V79._length(offs=0x08) P-INDEP "field V79._length (fldOffset=0x8)" ; V185 tmp176 [V185,T45] ( 2, 1 ) byref -> rcx V82._value(offs=0x00) P-INDEP "field V82._value (fldOffset=0x0)" ;* V186 tmp177 [V186 ] ( 0, 0 ) byref -> zero-ref V85._pointer(offs=0x00) P-INDEP "field V85._pointer (fldOffset=0x0)" ;* V187 tmp178 [V187 ] ( 0, 0 ) int -> zero-ref V85._length(offs=0x08) P-INDEP "field V85._length (fldOffset=0x8)" ;* V188 tmp179 [V188 ] ( 0, 0 ) byref -> zero-ref V93._pointer(offs=0x00) P-INDEP "field V93._pointer (fldOffset=0x0)" ;* V189 tmp180 [V189 ] ( 0, 0 ) int -> zero-ref V93._length(offs=0x08) P-INDEP "field V93._length (fldOffset=0x8)" ;* V190 tmp181 [V190 ] ( 0, 0 ) byref -> zero-ref V95._pointer(offs=0x00) P-INDEP "field V95._pointer (fldOffset=0x0)" ;* V191 tmp182 [V191 ] ( 0, 0 ) int -> zero-ref V95._length(offs=0x08) P-INDEP "field V95._length (fldOffset=0x8)" ;* V192 tmp183 [V192 ] ( 0, 0 ) byref -> zero-ref V97._pointer(offs=0x00) P-INDEP "field V97._pointer (fldOffset=0x0)" ;* V193 tmp184 [V193 ] ( 0, 0 ) int -> zero-ref V97._length(offs=0x08) P-INDEP "field V97._length (fldOffset=0x8)" ;* V194 tmp185 [V194,T76] ( 0, 0 ) byref -> zero-ref V98._pointer(offs=0x00) P-INDEP "field V98._pointer (fldOffset=0x0)" ;* V195 tmp186 [V195,T79] ( 0, 0 ) int -> zero-ref V98._length(offs=0x08) P-INDEP "field V98._length (fldOffset=0x8)" ;* V196 tmp187 [V196,T77] ( 0, 0 ) byref -> zero-ref V101._value(offs=0x00) P-INDEP "field V101._value (fldOffset=0x0)" ; V197 tmp188 [V197,T46] ( 2, 1 ) byref -> r12 V104._pointer(offs=0x00) P-INDEP "field V104._pointer (fldOffset=0x0)" ; V198 tmp189 [V198,T64] ( 2, 1 ) int -> rdx V104._length(offs=0x08) P-INDEP "field V104._length (fldOffset=0x8)" ; V199 tmp190 [V199,T47] ( 2, 1 ) byref -> r12 V107._value(offs=0x00) P-INDEP "field V107._value (fldOffset=0x0)" ; V200 tmp191 [V200,T48] ( 2, 1 ) byref -> rcx V110._pointer(offs=0x00) P-INDEP "field V110._pointer (fldOffset=0x0)" ; V201 tmp192 [V201,T65] ( 2, 1 ) int -> rdx V110._length(offs=0x08) P-INDEP "field V110._length (fldOffset=0x8)" ; V202 tmp193 [V202,T49] ( 2, 1 ) byref -> rcx V113._value(offs=0x00) P-INDEP "field V113._value (fldOffset=0x0)" ; V203 tmp194 [V203,T50] ( 2, 1 ) byref -> rcx V115._pointer(offs=0x00) P-INDEP "field V115._pointer (fldOffset=0x0)" ; V204 tmp195 [V204,T66] ( 2, 1 ) int -> rbx V115._length(offs=0x08) P-INDEP "field V115._length (fldOffset=0x8)" ; V205 tmp196 [V205,T51] ( 2, 1 ) byref -> rcx V118._value(offs=0x00) P-INDEP "field V118._value (fldOffset=0x0)" ; V206 tmp197 [V206,T52] ( 2, 1 ) byref -> rdx V121._pointer(offs=0x00) P-INDEP "field V121._pointer (fldOffset=0x0)" ; V207 tmp198 [V207,T67] ( 2, 1 ) int -> rcx V121._length(offs=0x08) P-INDEP "field V121._length (fldOffset=0x8)" ; V208 tmp199 [V208,T53] ( 2, 1 ) byref -> rdx V124._value(offs=0x00) P-INDEP "field V124._value (fldOffset=0x0)" ; V209 tmp200 [V209,T54] ( 2, 1 ) byref -> rdx V127._pointer(offs=0x00) P-INDEP "field V127._pointer (fldOffset=0x0)" ; V210 tmp201 [V210,T68] ( 2, 1 ) int -> rcx V127._length(offs=0x08) P-INDEP "field V127._length (fldOffset=0x8)" ; V211 tmp202 [V211,T55] ( 2, 1 ) byref -> rdx V130._value(offs=0x00) P-INDEP "field V130._value (fldOffset=0x0)" ;* V212 tmp203 [V212 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V213 tmp204 [V213,T82] ( 2, 0 ) ref -> rcx "argument with side effect" ; V214 tmp205 [V214,T83] ( 2, 0 ) ref -> rdi "argument with side effect" ; V215 tmp206 [V215,T84] ( 2, 0 ) ref -> r8 "argument with side effect" ; V216 tmp207 [V216,T85] ( 2, 0 ) ref -> rcx "argument with side effect" ; V217 tmp208 [V217,T86] ( 2, 0 ) ref -> rdi "argument with side effect" ; V218 tmp209 [V218,T87] ( 2, 0 ) ref -> r8 "argument with side effect" ; V219 tmp210 [V219 ] ( 12, 12 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V220 tmp211 [V220,T17] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V221 tmp212 [V221,T18] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V222 tmp213 [V222,T19] ( 3, 3 ) byref -> r8 stack-byref "BlockOp address local" ; V223 tmp214 [V223,T20] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V224 tmp215 [V224,T21] ( 3, 3 ) byref -> r8 stack-byref "BlockOp address local" ; V225 tmp216 [V225,T22] ( 3, 3 ) byref -> r8 stack-byref "BlockOp address local" ; V226 cse0 [V226,T27] ( 4, 2 ) byref -> r12 "CSE - conservative" ; V227 cse1 [V227,T05] ( 11, 5.50) int -> r14 "CSE - aggressive" ; ; Lcl frame size = 88 G_M42381_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 88 xor rax, rax mov qword ptr [rsp+28H], rax mov esi, edx ;; bbWeight=1 PerfScore 9.75 G_M42381_IG02: mov rdi, bword ptr [rcx] mov ebx, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M42381_IG03: mov rcx, rdi mov edx, 46 mov r8d, ebx call SpanHelpers:IndexOf(byref,ushort,int):int mov ebp, eax test ebp, ebp jge SHORT G_M42381_IG07 ;; bbWeight=1 PerfScore 3.25 G_M42381_IG04: movzx r14, sil test r14d, r14d jne G_M42381_IG27 ;; bbWeight=0.50 PerfScore 0.75 G_M42381_IG05: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M42381_IG06: add rsp, 88 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M42381_IG07: mov r15d, -1 lea ecx, [rbp+1] cmp ecx, ebx ja G_M42381_IG29 ;; bbWeight=0.50 PerfScore 1.00 G_M42381_IG08: mov r8d, ebx sub r8d, ecx movsxd rcx, ecx lea r12, bword ptr [rdi+2*rcx] mov rcx, r12 mov edx, 46 call SpanHelpers:IndexOf(byref,ushort,int):int mov r13d, eax cmp r13d, -1 je SHORT G_M42381_IG11 lea r13d, [r13+rbp+1] lea ecx, [r13+1] cmp ecx, ebx ja G_M42381_IG29 ;; bbWeight=0.50 PerfScore 4.00 G_M42381_IG09: mov r8d, ebx sub r8d, ecx movsxd rcx, ecx lea rcx, bword ptr [rdi+2*rcx] mov edx, 46 call SpanHelpers:IndexOf(byref,ushort,int):int mov r15d, eax cmp r15d, -1 je SHORT G_M42381_IG11 lea r15d, [r15+r13+1] lea ecx, [r15+1] cmp ecx, ebx ja G_M42381_IG29 ;; bbWeight=0.50 PerfScore 3.38 G_M42381_IG10: mov r8d, ebx sub r8d, ecx movsxd rcx, ecx lea rcx, bword ptr [rdi+2*rcx] mov edx, 46 call SpanHelpers:Contains(byref,ushort,int):bool test eax, eax je SHORT G_M42381_IG11 movzx r14, sil test r14d, r14d jne G_M42381_IG28 jmp G_M42381_IG05 ;; bbWeight=0.50 PerfScore 3.63 G_M42381_IG11: mov ecx, ebp mov edx, ebx cmp rcx, rdx ja G_M42381_IG29 ;; bbWeight=0.50 PerfScore 0.88 G_M42381_IG12: lea rcx, bword ptr [rsp+28H] mov bword ptr [rcx], rdi mov dword ptr [rcx+8], ebp lea rcx, bword ptr [rsp+28H] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] movzx r14, sil mov r8d, r14d lea r9, [rsp+38H] call Version:TryParseComponent(ReadOnlySpan`1,String,bool,byref):bool test eax, eax je G_M42381_IG05 ;; bbWeight=0.50 PerfScore 4.25 G_M42381_IG13: cmp r13d, -1 je G_M42381_IG22 lea ecx, [rbp+1] mov edx, r13d sub edx, ebp dec edx mov ecx, ecx mov r8d, edx add rcx, r8 mov r8d, ebx cmp rcx, r8 ja G_M42381_IG29 ;; bbWeight=0.50 PerfScore 2.38 G_M42381_IG14: lea rcx, bword ptr [rsp+28H] mov bword ptr [rcx], r12 mov dword ptr [rcx+8], edx lea rcx, bword ptr [rsp+28H] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, r14d lea r9, [rsp+50H] call Version:TryParseComponent(ReadOnlySpan`1,String,bool,byref):bool test eax, eax je G_M42381_IG05 ;; bbWeight=0.50 PerfScore 4.13 G_M42381_IG15: cmp r15d, -1 je G_M42381_IG19 lea ecx, [r13+1] mov edx, r15d sub edx, r13d dec edx mov r8d, ecx mov r9d, edx add r8, r9 mov r9d, ebx cmp r8, r9 ja G_M42381_IG29 ;; bbWeight=0.50 PerfScore 2.38 G_M42381_IG16: movsxd rcx, ecx lea rcx, bword ptr [rdi+2*rcx] lea r8, bword ptr [rsp+28H] mov bword ptr [r8], rcx mov dword ptr [r8+8], edx lea rcx, bword ptr [rsp+28H] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, r14d lea r9, [rsp+48H] call Version:TryParseComponent(ReadOnlySpan`1,String,bool,byref):bool test eax, eax je G_M42381_IG05 inc r15d cmp r15d, ebx ja G_M42381_IG29 ;; bbWeight=0.50 PerfScore 5.25 G_M42381_IG17: sub ebx, r15d movsxd rcx, r15d lea rcx, bword ptr [rdi+2*rcx] lea rdx, bword ptr [rsp+28H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], ebx lea rcx, bword ptr [rsp+28H] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, r14d lea r9, [rsp+40H] call Version:TryParseComponent(ReadOnlySpan`1,String,bool,byref):bool test eax, eax je G_M42381_IG05 ;; bbWeight=0.50 PerfScore 4.63 G_M42381_IG18: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, dword ptr [rsp+40H] mov dword ptr [rsp+20H], ecx mov rcx, rsi mov edx, dword ptr [rsp+38H] mov r8d, dword ptr [rsp+50H] mov r9d, dword ptr [rsp+48H] call Version:.ctor(int,int,int,int):this jmp G_M42381_IG25 ;; bbWeight=0.50 PerfScore 4.88 G_M42381_IG19: inc r13d cmp r13d, ebx ja G_M42381_IG29 ;; bbWeight=0.50 PerfScore 0.75 G_M42381_IG20: mov ecx, ebx sub ecx, r13d movsxd rdx, r13d lea rdx, bword ptr [rdi+2*rdx] lea r8, bword ptr [rsp+28H] mov bword ptr [r8], rdx mov dword ptr [r8+8], ecx lea rcx, bword ptr [rsp+28H] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, r14d lea r9, [rsp+48H] call Version:TryParseComponent(ReadOnlySpan`1,String,bool,byref):bool test eax, eax je G_M42381_IG05 ;; bbWeight=0.50 PerfScore 4.75 G_M42381_IG21: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi mov edx, dword ptr [rsp+38H] mov r8d, dword ptr [rsp+50H] mov r9d, dword ptr [rsp+48H] call Version:.ctor(int,int,int):this jmp SHORT G_M42381_IG25 ;; bbWeight=0.50 PerfScore 3.88 G_M42381_IG22: inc ebp cmp ebp, ebx ja G_M42381_IG29 ;; bbWeight=0.50 PerfScore 0.75 G_M42381_IG23: mov ecx, ebx sub ecx, ebp mov rdx, r12 lea r8, bword ptr [rsp+28H] mov bword ptr [r8], rdx mov dword ptr [r8+8], ecx lea rcx, bword ptr [rsp+28H] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, r14d lea r9, [rsp+50H] call Version:TryParseComponent(ReadOnlySpan`1,String,bool,byref):bool test eax, eax je G_M42381_IG05 ;; bbWeight=0.50 PerfScore 4.50 G_M42381_IG24: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi mov edx, dword ptr [rsp+38H] mov r8d, dword ptr [rsp+50H] call Version:.ctor(int,int):this ;; bbWeight=0.50 PerfScore 2.38 G_M42381_IG25: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M42381_IG26: add rsp, 88 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M42381_IG27: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x585D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x258A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M42381_IG28: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x585D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x258A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M42381_IG29: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1063, prolog size 23, PerfScore 187.30, (MethodHash=2ab25a72) for method Version:ParseVersion(ReadOnlySpan`1,bool):Version ; ============================================================ ; Assembly listing for method Version:TryParseComponent(ReadOnlySpan`1,String,bool,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 8 ) byref -> rcx ; V01 arg1 [V01,T03] ( 3, 2 ) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) bool -> r8 ; V03 arg3 [V03,T01] ( 5, 3.50) byref -> rsi ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T08] ( 3, 3 ) int -> rax "dup spill" ; V07 tmp2 [V07,T18] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> r14 class-hnd exact "Inlining Arg" ; V10 tmp5 [V10,T09] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V12 tmp7 [V12,T05] ( 3, 3 ) ref -> rbp class-hnd exact "Inlining Arg" ; V13 tmp8 [V13,T10] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ; V14 tmp9 [V14,T14] ( 2, 1 ) int -> rax "Inline return value spill temp" ;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V16 tmp11 [V16 ] ( 0, 0 ) byref -> zero-ref V24._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref V24._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ; V18 tmp13 [V18,T11] ( 2, 1 ) byref -> rbx V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ; V19 tmp14 [V19,T15] ( 2, 1 ) int -> rbp V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ; V20 tmp15 [V20,T12] ( 2, 1 ) byref -> rdi V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ; V21 tmp16 [V21,T16] ( 2, 1 ) int -> rbx V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ; V22 tmp17 [V22,T13] ( 2, 1 ) byref -> rdi V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ; V23 tmp18 [V23,T17] ( 2, 1 ) int -> rbx V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V25 tmp20 [V25 ] ( 4, 4 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V26 tmp21 [V26,T06] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V27 tmp22 [V27,T19] ( 2, 0 ) ref -> rcx "argument with side effect" ; V28 tmp23 [V28,T20] ( 2, 0 ) ref -> r8 "argument with side effect" ; V29 tmp24 [V29,T07] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref stack-byref "BlockOp address local" ;* V31 tmp26 [V31 ] ( 0, 0 ) byref -> zero-ref stack-byref "BlockOp address local" ; ; Lcl frame size = 48 G_M13900_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+20H], rax mov rdi, rdx mov rsi, r9 ;; bbWeight=1 PerfScore 7.00 G_M13900_IG02: test r8b, r8b je SHORT G_M13900_IG08 ;; bbWeight=1 PerfScore 1.25 G_M13900_IG03: mov rbx, bword ptr [rcx] mov ebp, dword ptr [rcx+8] mov rcx, 0xD1FFAB1E mov r14, gword ptr [rcx] mov ecx, 7 call NumberFormatInfo:ValidateParseStyleInteger(int) test r14, r14 je SHORT G_M13900_IG04 mov rcx, r14 call NumberFormatInfo:g__GetProviderNonNull|42_0(IFormatProvider):NumberFormatInfo jmp SHORT G_M13900_IG05 ;; bbWeight=0.50 PerfScore 6.00 G_M13900_IG04: call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo ;; bbWeight=0.50 PerfScore 0.50 G_M13900_IG05: lea rcx, bword ptr [rsp+20H] mov bword ptr [rcx], rbx mov dword ptr [rcx+8], ebp lea rcx, bword ptr [rsp+20H] mov r8, rax mov edx, 7 call Number:ParseInt32(ReadOnlySpan`1,int,NumberFormatInfo):int mov dword ptr [rsi], eax test eax, eax jl G_M13900_IG14 ;; bbWeight=0.50 PerfScore 3.38 G_M13900_IG06: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M13900_IG07: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M13900_IG08: mov rdi, bword ptr [rcx] mov ebx, dword ptr [rcx+8] mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov ecx, 7 call NumberFormatInfo:ValidateParseStyleInteger(int) test rbp, rbp je SHORT G_M13900_IG09 mov rcx, rbp call NumberFormatInfo:g__GetProviderNonNull|42_0(IFormatProvider):NumberFormatInfo jmp SHORT G_M13900_IG10 ;; bbWeight=0.50 PerfScore 6.00 G_M13900_IG09: call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo ;; bbWeight=0.50 PerfScore 0.50 G_M13900_IG10: lea rcx, bword ptr [rsp+20H] mov bword ptr [rcx], rdi mov dword ptr [rcx+8], ebx lea rcx, bword ptr [rsp+20H] mov r9, rsi mov r8, rax mov edx, 7 call Number:TryParseInt32IntegerStyle(ReadOnlySpan`1,int,NumberFormatInfo,byref):int test eax, eax jne SHORT G_M13900_IG12 cmp dword ptr [rsi], 0 setge al movzx rax, al ;; bbWeight=0.50 PerfScore 4.63 G_M13900_IG11: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M13900_IG12: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M13900_IG13: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M13900_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xA807 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 321, prolog size 17, PerfScore 67.23, (MethodHash=dc0ec9b3) for method Version:TryParseComponent(ReadOnlySpan`1,String,bool,byref):bool ; ============================================================ ; Assembly listing for method NumberFormatInfo:ValidateParseStyleInteger(int) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4 ) int -> rcx ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M47582_IG01: ;; bbWeight=1 PerfScore 0.00 G_M47582_IG02: test ecx, -512 je SHORT G_M47582_IG05 ;; bbWeight=1 PerfScore 1.25 G_M47582_IG03: test ecx, -516 je SHORT G_M47582_IG05 ;; bbWeight=0.50 PerfScore 0.63 G_M47582_IG04: jmp NumberFormatInfo:g__throwInvalid|133_0(int) ;; bbWeight=0.50 PerfScore 1.00 G_M47582_IG05: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 22, prolog size 0, PerfScore 5.58, (MethodHash=aec94621) for method NumberFormatInfo:ValidateParseStyleInteger(int) ; ============================================================ ; Assembly listing for method NumberFormatInfo:g__GetProviderNonNull|42_0(IFormatProvider):NumberFormatInfo ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rsi class-hnd ; V01 loc0 [V01,T01] ( 6, 4 ) ref -> rax class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 5, 3.74) ref -> rax class-hnd "spilling QMark2" ; V04 tmp2 [V04,T04] ( 5, 2.50) ref -> rax ; V05 tmp3 [V05,T05] ( 2, 2 ) ref -> rax "CASTCLASS eval op1" ; V06 tmp4 [V06,T03] ( 5, 3.74) ref -> rax class-hnd "spilling QMark2" ; V07 tmp5 [V07,T06] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V08 tmp6 [V08,T08] ( 3, 1.50) ref -> rcx ; V09 tmp7 [V09,T07] ( 2, 2 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M47004_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M47004_IG02: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax je SHORT G_M47004_IG07 ;; bbWeight=1 PerfScore 2.75 G_M47004_IG03: cmp byte ptr [rax+97], 0 jne SHORT G_M47004_IG07 mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M47004_IG05 mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+80] mov rax, qword ptr [rax+16] ;; bbWeight=0.50 PerfScore 6.25 G_M47004_IG04: add rsp, 32 pop rsi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.38 G_M47004_IG05: mov rax, rcx ;; bbWeight=0.50 PerfScore 0.13 G_M47004_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M47004_IG07: mov rax, rsi test rax, rax je SHORT G_M47004_IG10 ;; bbWeight=0.50 PerfScore 0.75 G_M47004_IG08: mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx je SHORT G_M47004_IG10 ;; bbWeight=0.25 PerfScore 0.81 G_M47004_IG09: xor rax, rax ;; bbWeight=0.12 PerfScore 0.03 G_M47004_IG10: test rax, rax jne SHORT G_M47004_IG15 mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IFormatProvider:GetFormat(Type):Object:this test rax, rax je SHORT G_M47004_IG13 ;; bbWeight=0.50 PerfScore 3.88 G_M47004_IG11: mov rdx, 0xD1FFAB1E cmp qword ptr [rax], rdx je SHORT G_M47004_IG13 ;; bbWeight=0.25 PerfScore 0.81 G_M47004_IG12: xor rax, rax ;; bbWeight=0.12 PerfScore 0.03 G_M47004_IG13: test rax, rax jne SHORT G_M47004_IG15 ;; bbWeight=0.50 PerfScore 0.63 G_M47004_IG14: add rsp, 32 pop rsi jmp NumberFormatInfo:get_CurrentInfo():NumberFormatInfo ;; bbWeight=0.50 PerfScore 1.38 G_M47004_IG15: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 193, prolog size 8, PerfScore 41.36, (MethodHash=16734863) for method NumberFormatInfo:g__GetProviderNonNull|42_0(IFormatProvider):NumberFormatInfo ; ============================================================ ; Assembly listing for method Version:.ctor(int,int,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) int -> rdx ; V02 arg2 [V02,T02] ( 4, 4 ) int -> r8 ; V03 arg3 [V03,T03] ( 4, 4 ) int -> r9 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp4 [V08,T07] ( 2, 0 ) ref -> rcx "argument with side effect" ; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> rdi "argument with side effect" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> r8 "argument with side effect" ; V11 tmp7 [V11,T10] ( 2, 0 ) ref -> rcx "argument with side effect" ; V12 tmp8 [V12,T11] ( 2, 0 ) ref -> rdi "argument with side effect" ; V13 tmp9 [V13,T12] ( 2, 0 ) ref -> r8 "argument with side effect" ; V14 tmp10 [V14,T13] ( 2, 0 ) ref -> rcx "argument with side effect" ; V15 tmp11 [V15,T14] ( 2, 0 ) ref -> rdi "argument with side effect" ; V16 tmp12 [V16,T15] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M35184_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M35184_IG02: test edx, edx jl SHORT G_M35184_IG07 ;; bbWeight=1 PerfScore 1.25 G_M35184_IG03: test r8d, r8d jl G_M35184_IG08 ;; bbWeight=1 PerfScore 1.25 G_M35184_IG04: test r9d, r9d jl G_M35184_IG09 ;; bbWeight=1 PerfScore 1.25 G_M35184_IG05: mov dword ptr [rcx+8], edx mov dword ptr [rcx+12], r8d mov dword ptr [rcx+16], r9d mov dword ptr [rcx+20], -1 ;; bbWeight=1 PerfScore 4.00 G_M35184_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M35184_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x138D4 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA807 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M35184_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x138E0 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA807 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M35184_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x138EC mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA807 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 333, prolog size 6, PerfScore 45.55, (MethodHash=e6d3768f) for method Version:.ctor(int,int,int):this ; ============================================================ ; Assembly listing for method RuntimeAssembly:get_Location():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 loc0 [V01 ] ( 2, 2 ) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V02 loc1 [V02 ] ( 3, 3 ) ref -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V06 tmp3 [V06,T03] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ; V07 tmp4 [V07,T04] ( 2, 4 ) ref -> rax "Single return block return value" ; V08 FramesRoot [V08,T00] ( 6, 6 ) long -> rdi "Pinvoke FrameListRoot" ; V09 PInvokeFrame [V09 ] ( 8, 8 ) blk (72) [rbp-0xA0] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V10 tmp7 [V10,T05] ( 2, 2 ) long -> rcx V04._ptr(offs=0x00) P-INDEP "field V04._ptr (fldOffset=0x0)" ; V11 tmp8 [V11,T06] ( 2, 2 ) long -> rdx V04._assembly(offs=0x08) P-INDEP "field V04._assembly (fldOffset=0x8)" ; V12 tmp9 [V12,T07] ( 2, 2 ) long -> rax V05._ptr(offs=0x00) P-INDEP "field V05._ptr (fldOffset=0x0)" ; V13 tmp10 [V13 ] ( 2, 4 ) struct (16) [rbp-0x58] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V14 tmp11 [V14,T01] ( 3, 6 ) byref -> r8 stack-byref "BlockOp address local" ; ; Lcl frame size = 136 G_M37604_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] xor rdx, rdx mov qword ptr [rbp-40H], rdx mov qword ptr [rbp-48H], rdx mov rsi, rcx ;; bbWeight=1 PerfScore 11.25 G_M37604_IG02: lea rcx, [rbp-98H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rcx, rsp mov qword ptr [rbp-78H], rcx mov rcx, rbp mov qword ptr [rbp-68H], rcx mov gword ptr [rbp-48H], rsi lea rcx, [rbp-48H] mov rdx, gword ptr [rbp-48H] mov rdx, qword ptr [rdx+32] lea rax, [rbp-40H] lea r8, bword ptr [rbp-58H] mov qword ptr [r8], rcx mov qword ptr [r8+8], rdx lea rcx, bword ptr [rbp-58H] mov rdx, rax mov rax, 0xD1FFAB1E mov qword ptr [rbp-88H], rax lea rax, G_M37604_IG05 mov qword ptr [rbp-70H], rax lea rax, bword ptr [rbp-98H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=1 PerfScore 18.50 G_M37604_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M37604_IG04: call qword ptr [rax]RuntimeAssembly:GetLocation(QCallAssembly,StringHandleOnStack) ;; bbWeight=1 PerfScore 3.00 G_M37604_IG05: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M37604_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M37604_IG06: mov rax, bword ptr [rbp-90H] mov qword ptr [rdi+16], rax mov rax, gword ptr [rbp-40H] ;; bbWeight=1 PerfScore 3.00 G_M37604_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 228, prolog size 37, PerfScore 71.80, (MethodHash=91506d1b) for method RuntimeAssembly:get_Location():String:this ; ============================================================ ; Assembly listing for method CoreRuntime:TryGetVersion(byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 8, 5.50) byref -> [rbp+0x10] ; V01 loc0 [V01,T11] ( 3, 1.50) ref -> rax class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T06] ( 2, 2 ) ref -> rcx class-hnd "impAppendStmt" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" ; V05 tmp3 [V05,T12] ( 3, 1.50) ref -> rdx ; V06 tmp4 [V06,T07] ( 2, 2 ) ref -> rax class-hnd "dup spill" ; V07 tmp5 [V07,T13] ( 3, 1.50) ref -> rax ; V08 tmp6 [V08,T05] ( 4, 2 ) ref -> rcx ; V09 tmp7 [V09,T08] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V10 tmp8 [V10,T14] ( 3, 1.50) ref -> rdx class-hnd "Inline return value spill temp" ; V11 tmp9 [V11,T15] ( 2, 1 ) ref -> rdx class-hnd "Inline return value spill temp" ; V12 tmp10 [V12 ] ( 4, 2 ) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" ;* V13 tmp11 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ;* V14 tmp12 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V15 tmp13 [V15,T00] ( 7, 8 ) int -> rbx "Single return block return value" ; V16 FramesRoot [V16,T02] ( 6, 4 ) long -> rdi "Pinvoke FrameListRoot" ; V17 PInvokeFrame [V17 ] ( 8, 6 ) blk (72) [rbp-0x88] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V18 tmp16 [V18,T16] ( 2, 1 ) long -> rcx V13._ptr(offs=0x00) P-INDEP "field V13._ptr (fldOffset=0x0)" ; V19 tmp17 [V19,T17] ( 2, 1 ) long -> rcx V14._ptr(offs=0x00) P-INDEP "field V14._ptr (fldOffset=0x0)" ; V20 tmp18 [V20,T03] ( 2, 4 ) ref -> rcx "argument with side effect" ; V21 tmp19 [V21,T09] ( 2, 2 ) ref -> rcx "argument with side effect" ; V22 tmp20 [V22,T10] ( 2, 2 ) ref -> rcx "argument with side effect" ; V23 rat0 [V23,T04] ( 3, 3 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 120 G_M38795_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] xor rdx, rdx mov qword ptr [rbp-40H], rdx mov rsi, rcx ;; bbWeight=1 PerfScore 10.25 G_M38795_IG02: lea rcx, [rbp-80H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rax, rsp mov qword ptr [rbp-60H], rax mov rax, rbp mov qword ptr [rbp-50H], rax call RuntimeEnvironment:GetRuntimeDirectory():String mov rcx, rax mov rdx, rsi call CoreRuntime:TryGetVersionFromRuntimeDirectory(String,byref):bool test eax, eax je SHORT G_M38795_IG04 ;; bbWeight=1 PerfScore 8.25 G_M38795_IG03: mov ebx, 1 jmp G_M38795_IG18 ;; bbWeight=0.50 PerfScore 1.13 G_M38795_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax call RuntimeTypeHandle:GetAssembly(RuntimeType):RuntimeAssembly mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+48]Assembly:get_Location():String:this mov rcx, rax call FileVersionInfo:GetVersionInfo(String):FileVersionInfo mov rcx, gword ptr [rax+72] mov rdx, gword ptr [rax+64] mov bword ptr [rbp+10H], rsi mov r8, rsi call CoreRuntime:TryGetVersionFromProductInfo(String,String,byref):bool test eax, eax je SHORT G_M38795_IG05 mov ebx, 1 jmp G_M38795_IG18 ;; bbWeight=0.50 PerfScore 10.38 G_M38795_IG05: mov rsi, bword ptr [rbp+10H] mov rcx, 0xD1FFAB1E mov edx, 0x5A2 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E cmp byte ptr [rcx], 0 je SHORT G_M38795_IG06 xor rdx, rdx jmp SHORT G_M38795_IG11 ;; bbWeight=0.50 PerfScore 4.00 G_M38795_IG06: mov bword ptr [rbp+10H], rsi xor rcx, rcx mov gword ptr [rbp-40H], rcx lea rcx, [rbp-40H] mov rax, 0xD1FFAB1E mov qword ptr [rbp-70H], rax lea rax, G_M38795_IG09 mov qword ptr [rbp-58H], rax lea rax, bword ptr [rbp-80H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=0.50 PerfScore 4.25 G_M38795_IG07: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M38795_IG08: call qword ptr [rax]Assembly:GetEntryAssemblyNative(ObjectHandleOnStack) ;; bbWeight=0.50 PerfScore 1.50 G_M38795_IG09: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M38795_IG10 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M38795_IG10: mov rdx, bword ptr [rbp-78H] mov qword ptr [rdi+16], rdx mov rdx, gword ptr [rbp-40H] xor rcx, rcx mov gword ptr [rbp-40H], rcx mov rsi, bword ptr [rbp+10H] ;; bbWeight=0.50 PerfScore 2.63 G_M38795_IG11: test rdx, rdx jne SHORT G_M38795_IG12 xor rcx, rcx jmp SHORT G_M38795_IG14 ;; bbWeight=0.50 PerfScore 1.75 G_M38795_IG12: mov rcx, 0xD1FFAB1E call CustomAttributeExtensions:GetCustomAttribute(Assembly):__Canon test rax, rax jne SHORT G_M38795_IG13 xor rcx, rcx jmp SHORT G_M38795_IG14 ;; bbWeight=0.50 PerfScore 2.38 G_M38795_IG13: mov rcx, gword ptr [rax+8] ;; bbWeight=0.50 PerfScore 1.00 G_M38795_IG14: mov rdx, rsi call CoreRuntime:TryGetVersionFromFrameworkName(String,byref):bool test eax, eax je SHORT G_M38795_IG15 mov ebx, 1 jmp SHORT G_M38795_IG18 ;; bbWeight=0.50 PerfScore 2.38 G_M38795_IG15: call RuntimeInformation:get_IsRunningInContainer():bool test eax, eax je SHORT G_M38795_IG17 mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] call Environment:GetEnvironmentVariable(String):String mov rcx, rax mov rdx, rsi call Version:TryParse(String,byref):bool test eax, eax jne SHORT G_M38795_IG16 mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] call Environment:GetEnvironmentVariable(String):String mov rcx, rax mov rdx, rsi call Version:TryParse(String,byref):bool mov ebx, eax jmp SHORT G_M38795_IG18 ;; bbWeight=0.50 PerfScore 7.63 G_M38795_IG16: mov ebx, 1 jmp SHORT G_M38795_IG18 ;; bbWeight=0.50 PerfScore 1.13 G_M38795_IG17: xor rax, rax mov gword ptr [rsi], rax xor ebx, ebx ;; bbWeight=0.50 PerfScore 0.75 G_M38795_IG18: movzx rax, bl ;; bbWeight=1 PerfScore 0.25 G_M38795_IG19: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 494, prolog size 30, PerfScore 118.40, (MethodHash=32366874) for method CoreRuntime:TryGetVersion(byref):bool ; ============================================================ ; Assembly listing for method RuntimeEnvironment:GetRuntimeDirectory():String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T01] ( 6, 4.50) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ; V03 tmp2 [V03,T03] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V04 tmp3 [V04,T11] ( 2, 1 ) bool -> rcx "Inline return value spill temp" ;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V07 tmp6 [V07 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V08 tmp7 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V09 tmp8 [V09,T07] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V11 tmp10 [V11,T10] ( 2, 2 ) int -> rax "Inlining Arg" ; V12 tmp11 [V12,T08] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ;* V13 tmp12 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V14 tmp13 [V14,T04] ( 2, 4 ) ushort -> rdi "Inlining Arg" ; V15 tmp14 [V15,T09] ( 2, 2 ) ref -> rdx class-hnd "Inline return value spill temp" ; V16 tmp15 [V16,T05] ( 3, 3 ) ref -> rdx class-hnd "Inline stloc first use temp" ; V17 tmp16 [V17,T12] ( 2, 1 ) byref -> rcx V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ; V18 tmp17 [V18,T16] ( 2, 1 ) int -> rax V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ; V19 tmp18 [V19,T13] ( 2, 1 ) byref -> rcx V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V20 tmp19 [V20,T17] ( 2, 1 ) int -> rax V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V21 tmp20 [V21,T14] ( 2, 1 ) byref -> rcx V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V22 tmp21 [V22,T18] ( 2, 1 ) int -> rax V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ;* V23 tmp22 [V23 ] ( 0, 0 ) byref -> zero-ref V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ; V25 tmp24 [V25,T15] ( 2, 1 ) byref -> rcx V10._value(offs=0x00) P-INDEP "field V10._value (fldOffset=0x0)" ; V26 tmp25 [V26 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V27 tmp26 [V27,T06] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V28 rat0 [V28,T00] ( 3, 6 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 56 G_M54180_IG01: push rdi push rsi sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax ;; bbWeight=1 PerfScore 3.50 G_M54180_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax call RuntimeTypeHandle:GetAssembly(RuntimeType):RuntimeAssembly mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+48]Assembly:get_Location():String:this mov rsi, rax test rsi, rsi je SHORT G_M54180_IG04 ;; bbWeight=1 PerfScore 11.25 G_M54180_IG03: lea rcx, bword ptr [rsi+12] mov eax, dword ptr [rsi+8] lea rdx, bword ptr [rsp+28H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], eax lea rcx, bword ptr [rsp+28H] call Path:IsPathRooted(ReadOnlySpan`1):bool movzx rcx, al test ecx, ecx jne SHORT G_M54180_IG05 ;; bbWeight=0.50 PerfScore 4.00 G_M54180_IG04: mov rcx, 0xD1FFAB1E mov edx, 203 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] cmp dword ptr [rax], eax call AppContext:get_BaseDirectory():String mov rsi, rax ;; bbWeight=0.50 PerfScore 3.50 G_M54180_IG05: mov rcx, rsi call Path:GetDirectoryName(String):String mov rsi, rax mov rcx, 0xD1FFAB1E mov edx, 0x6B8 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E movzx rdi, word ptr [rcx] mov ecx, 1 call String:FastAllocateString(int):String mov rdx, rax mov word ptr [rdx+12], di mov rcx, rsi call String:Concat(String,String):String nop ;; bbWeight=1 PerfScore 9.25 G_M54180_IG06: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 212, prolog size 13, PerfScore 54.95, (MethodHash=a15a2c5b) for method RuntimeEnvironment:GetRuntimeDirectory():String ; ============================================================ ; Assembly listing for method Path:IsPathRooted(ReadOnlySpan`1):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 loc0 [V01,T04] ( 3, 2.50) int -> rcx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T05] ( 2, 1 ) bool -> rcx "Inline return value spill temp" ; V04 tmp2 [V04,T02] ( 3, 3 ) ushort -> rcx "Inlining Arg" ; V05 tmp3 [V05,T03] ( 4, 2.50) byref -> rsi V07._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V06 tmp4 [V06,T01] ( 5, 3.50) int -> rdi V07._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; ; Lcl frame size = 40 G_M21939_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M21939_IG02: mov rsi, bword ptr [rcx] mov edi, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M21939_IG03: mov ecx, edi test ecx, ecx jle SHORT G_M21939_IG05 ;; bbWeight=1 PerfScore 1.50 G_M21939_IG04: cmp ecx, 0 jbe SHORT G_M21939_IG11 movzx rcx, word ptr [rsi] cmp ecx, 92 je SHORT G_M21939_IG09 cmp ecx, 47 sete cl movzx rcx, cl test ecx, ecx jne SHORT G_M21939_IG09 ;; bbWeight=0.50 PerfScore 3.63 G_M21939_IG05: cmp edi, 2 jl SHORT G_M21939_IG07 cmp edi, 0 jbe SHORT G_M21939_IG11 movzx rcx, word ptr [rsi] call PathInternal:IsValidDriveChar(ushort):bool test eax, eax je SHORT G_M21939_IG07 cmp edi, 1 jbe SHORT G_M21939_IG11 cmp word ptr [rsi+2], 58 sete al movzx rax, al ;; bbWeight=0.50 PerfScore 5.63 G_M21939_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M21939_IG07: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M21939_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M21939_IG09: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M21939_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M21939_IG11: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 116, prolog size 6, PerfScore 32.23, (MethodHash=c7ffaa4c) for method Path:IsPathRooted(ReadOnlySpan`1):bool ; ============================================================ ; Assembly listing for method PathInternal:IsValidDriveChar(ushort):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> rcx ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 cse0 [V02,T01] ( 5, 3.50) int -> rax "CSE - aggressive" ; ; Lcl frame size = 0 G_M34016_IG01: ;; bbWeight=1 PerfScore 0.00 G_M34016_IG02: movzx rax, cx cmp eax, 65 jl SHORT G_M34016_IG04 ;; bbWeight=1 PerfScore 1.50 G_M34016_IG03: cmp eax, 90 jle SHORT G_M34016_IG08 ;; bbWeight=0.50 PerfScore 0.63 G_M34016_IG04: cmp eax, 97 jl SHORT G_M34016_IG06 cmp eax, 122 setle al movzx rax, al ;; bbWeight=0.50 PerfScore 1.38 G_M34016_IG05: ret ;; bbWeight=0.50 PerfScore 0.50 G_M34016_IG06: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M34016_IG07: ret ;; bbWeight=0.50 PerfScore 0.50 G_M34016_IG08: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M34016_IG09: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 37, prolog size 0, PerfScore 8.95, (MethodHash=56ca7b1f) for method PathInternal:IsValidDriveChar(ushort):bool ; ============================================================ ; Assembly listing for method Path:GetDirectoryName(String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 5.50) ref -> rsi class-hnd ; V01 loc0 [V01,T07] ( 3, 1.50) int -> r8 ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V08 tmp6 [V08,T03] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V10 tmp8 [V10,T05] ( 2, 2 ) int -> rax "Inlining Arg" ;* V11 tmp9 [V11 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V13 tmp11 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V14 tmp12 [V14,T04] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V15 tmp13 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V16 tmp14 [V16,T06] ( 2, 2 ) int -> rax "Inlining Arg" ; V17 tmp15 [V17,T08] ( 2, 1 ) byref -> rcx V03._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ; V18 tmp16 [V18,T16] ( 2, 1 ) int -> rax V03._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ; V19 tmp17 [V19,T09] ( 2, 1 ) byref -> rcx V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ; V20 tmp18 [V20,T17] ( 2, 1 ) int -> rax V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V21 tmp19 [V21,T10] ( 2, 1 ) byref -> rcx V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ; V22 tmp20 [V22,T18] ( 2, 1 ) int -> rax V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ; V23 tmp21 [V23,T11] ( 2, 1 ) byref -> rcx V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V24 tmp22 [V24,T19] ( 2, 1 ) int -> rax V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ;* V25 tmp23 [V25 ] ( 0, 0 ) byref -> zero-ref V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ;* V26 tmp24 [V26 ] ( 0, 0 ) int -> zero-ref V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V27 tmp25 [V27,T12] ( 2, 1 ) byref -> rcx V09._value(offs=0x00) P-INDEP "field V09._value (fldOffset=0x0)" ; V28 tmp26 [V28,T13] ( 2, 1 ) byref -> rcx V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ; V29 tmp27 [V29,T20] ( 2, 1 ) int -> rax V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ; V30 tmp28 [V30,T14] ( 2, 1 ) byref -> rcx V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ; V31 tmp29 [V31,T21] ( 2, 1 ) int -> rax V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ;* V32 tmp30 [V32 ] ( 0, 0 ) byref -> zero-ref V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ;* V33 tmp31 [V33 ] ( 0, 0 ) int -> zero-ref V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V34 tmp32 [V34,T15] ( 2, 1 ) byref -> rcx V15._value(offs=0x00) P-INDEP "field V15._value (fldOffset=0x0)" ; V35 tmp33 [V35 ] ( 4, 4 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V36 tmp34 [V36,T01] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V37 tmp35 [V37,T02] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; ; Lcl frame size = 48 G_M25806_IG01: push rsi sub rsp, 48 xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 2.75 G_M25806_IG02: test rsi, rsi je SHORT G_M25806_IG04 ;; bbWeight=1 PerfScore 1.25 G_M25806_IG03: lea rcx, bword ptr [rsi+12] mov eax, dword ptr [rsi+8] lea rdx, bword ptr [rsp+20H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], eax lea rcx, bword ptr [rsp+20H] call PathInternal:IsEffectivelyEmpty(ReadOnlySpan`1):bool test eax, eax je SHORT G_M25806_IG06 ;; bbWeight=0.50 PerfScore 3.88 G_M25806_IG04: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M25806_IG05: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M25806_IG06: lea rcx, bword ptr [rsi+12] mov eax, dword ptr [rsi+8] lea rdx, bword ptr [rsp+20H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], eax lea rcx, bword ptr [rsp+20H] call Path:GetDirectoryNameOffset(ReadOnlySpan`1):int mov r8d, eax test r8d, r8d jge SHORT G_M25806_IG08 xor rax, rax ;; bbWeight=0.50 PerfScore 4.13 G_M25806_IG07: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M25806_IG08: mov rcx, rsi xor edx, edx call String:Substring(int,int):String:this mov rcx, rax call PathInternal:NormalizeDirectorySeparators(String):String nop ;; bbWeight=0.50 PerfScore 1.50 G_M25806_IG09: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 129, prolog size 12, PerfScore 29.15, (MethodHash=99869b31) for method Path:GetDirectoryName(String):String ; ============================================================ ; Assembly listing for method PathInternal:IsEffectivelyEmpty(ReadOnlySpan`1):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 7 ) byref -> rcx ld-addr-op ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V02 loc1 [V02,T00] ( 5, 16.50) int -> rcx ; V03 loc2 [V03,T02] ( 2, 8 ) ushort -> r8 ;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref V09._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref V09._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ; V07 tmp3 [V07,T04] ( 2, 4.50) byref -> rax V01._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ; V08 tmp4 [V08,T03] ( 3, 5 ) int -> rdx V01._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V10 cse0 [V10,T05] ( 3, 2.50) int -> rdx "CSE - aggressive" ; ; Lcl frame size = 0 G_M15411_IG01: ;; bbWeight=1 PerfScore 0.00 G_M15411_IG02: mov edx, dword ptr [rcx+8] test edx, edx jne SHORT G_M15411_IG05 ;; bbWeight=1 PerfScore 3.25 G_M15411_IG03: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M15411_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M15411_IG05: mov rax, bword ptr [rcx] xor ecx, ecx test edx, edx jle SHORT G_M15411_IG08 ;; bbWeight=0.50 PerfScore 1.75 G_M15411_IG06: movsxd r8, ecx movzx r8, word ptr [rax+2*r8] cmp r8d, 32 jne SHORT G_M15411_IG10 ;; bbWeight=4 PerfScore 14.00 G_M15411_IG07: inc ecx cmp ecx, edx jl SHORT G_M15411_IG06 ;; bbWeight=4 PerfScore 6.00 G_M15411_IG08: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M15411_IG09: ret ;; bbWeight=0.50 PerfScore 0.50 G_M15411_IG10: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M15411_IG11: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 51, prolog size 0, PerfScore 31.98, (MethodHash=a305c3cc) for method PathInternal:IsEffectivelyEmpty(ReadOnlySpan`1):bool ; ============================================================ ; Assembly listing for method Path:GetDirectoryNameOffset(ReadOnlySpan`1):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T08] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 loc0 [V01,T10] ( 4, 10 ) int -> rax ; V02 loc1 [V02,T00] ( 11, 32.50) int -> rdx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 16 ) int -> rdx "dup spill" ; V05 tmp2 [V05,T05] ( 2, 8 ) bool -> rcx "Inline return value spill temp" ; V06 tmp3 [V06,T01] ( 3, 24 ) ushort -> rcx "Inlining Arg" ; V07 tmp4 [V07,T06] ( 2, 8 ) bool -> r8 "Inline return value spill temp" ; V08 tmp5 [V08,T02] ( 3, 24 ) ushort -> r8 "Inlining Arg" ; V09 tmp6 [V09,T09] ( 4, 10 ) byref -> rsi V11._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V10 tmp7 [V10,T07] ( 5, 11 ) int -> rdi V11._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V12 tmp9 [V12 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V13 tmp10 [V13,T11] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V14 cse0 [V14,T04] ( 4, 14 ) int -> rcx "CSE - aggressive" ; ; Lcl frame size = 56 G_M27563_IG01: push rdi push rsi sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax ;; bbWeight=1 PerfScore 3.50 G_M27563_IG02: mov rsi, bword ptr [rcx] mov edi, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M27563_IG03: lea rcx, bword ptr [rsp+28H] mov bword ptr [rcx], rsi mov dword ptr [rcx+8], edi lea rcx, bword ptr [rsp+28H] call PathInternal:GetRootLength(ReadOnlySpan`1):int mov edx, edi cmp edx, eax jg SHORT G_M27563_IG06 ;; bbWeight=1 PerfScore 5.50 G_M27563_IG04: mov eax, -1 ;; bbWeight=0.50 PerfScore 0.13 G_M27563_IG05: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M27563_IG06: cmp edx, eax jle SHORT G_M27563_IG09 dec edx cmp edx, edi jae SHORT G_M27563_IG12 movsxd rcx, edx movzx rcx, word ptr [rsi+2*rcx] cmp ecx, 92 je SHORT G_M27563_IG09 cmp ecx, 47 sete cl movzx rcx, cl test ecx, ecx je SHORT G_M27563_IG06 ;; bbWeight=4 PerfScore 36.00 G_M27563_IG07: jmp SHORT G_M27563_IG09 ;; bbWeight=0.50 PerfScore 1.00 G_M27563_IG08: mov edx, ecx ;; bbWeight=2 PerfScore 0.50 G_M27563_IG09: cmp edx, eax jle SHORT G_M27563_IG10 lea ecx, [rdx-1] cmp ecx, edi jae SHORT G_M27563_IG12 movsxd r8, ecx movzx r8, word ptr [rsi+2*r8] cmp r8d, 92 je SHORT G_M27563_IG08 cmp r8d, 47 sete r8b movzx r8, r8b test r8d, r8d jne SHORT G_M27563_IG08 ;; bbWeight=4 PerfScore 37.00 G_M27563_IG10: mov eax, edx ;; bbWeight=0.50 PerfScore 0.13 G_M27563_IG11: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M27563_IG12: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 154, prolog size 13, PerfScore 105.40, (MethodHash=06649454) for method Path:GetDirectoryNameOffset(ReadOnlySpan`1):int ; ============================================================ ; Assembly listing for method PathInternal:GetRootLength(ReadOnlySpan`1):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T09] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 loc0 [V01,T11] ( 6, 4 ) int -> rbx ; V02 loc1 [V02,T00] ( 20, 34.50) int -> rbp ; V03 loc2 [V03,T12] ( 4, 3.50) bool -> r14 ; V04 loc3 [V04,T13] ( 4, 3 ) bool -> rcx ; V05 loc4 [V05,T06] ( 4, 12.50) int -> rcx ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T19] ( 3, 2 ) int -> rax ; V08 tmp2 [V08,T20] ( 3, 1.50) int -> rbp ; V09 tmp3 [V09,T03] ( 2, 16 ) int -> rcx "dup spill" ; V10 tmp4 [V10,T21] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V11 tmp5 [V11,T15] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V12 tmp6 [V12,T22] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V13 tmp7 [V13,T16] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V14 tmp8 [V14,T07] ( 2, 8 ) bool -> rax "Inline return value spill temp" ; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> rax "Inlining Arg" ; V16 tmp10 [V16,T08] ( 2, 8 ) bool -> rcx "Inline return value spill temp" ; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> rcx "Inlining Arg" ; V18 tmp12 [V18,T23] ( 2, 1 ) bool -> rcx "Inline return value spill temp" ; V19 tmp13 [V19,T17] ( 3, 3 ) ushort -> rcx "Inlining Arg" ; V20 tmp14 [V20,T24] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V21 tmp15 [V21,T18] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V22 tmp16 [V22,T04] ( 11, 13.50) byref -> rsi V24._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V23 tmp17 [V23,T05] ( 10, 16.50) int -> rdi V24._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V24 tmp18 [V24 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V25 tmp19 [V25 ] ( 4, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V26 tmp20 [V26,T10] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V27 tmp21 [V27,T14] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 48 G_M9749_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+20H], rax ;; bbWeight=1 PerfScore 6.50 G_M9749_IG02: mov rsi, bword ptr [rcx] mov edi, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M9749_IG03: mov ebx, edi xor ebp, ebp lea rcx, bword ptr [rsp+20H] mov bword ptr [rcx], rsi mov dword ptr [rcx+8], ebx lea rcx, bword ptr [rsp+20H] call PathInternal:IsDevice(ReadOnlySpan`1):bool mov r14d, eax test r14d, r14d je SHORT G_M9749_IG05 ;; bbWeight=1 PerfScore 6.00 G_M9749_IG04: lea rcx, bword ptr [rsp+20H] mov bword ptr [rcx], rsi mov dword ptr [rcx+8], ebx lea rcx, bword ptr [rsp+20H] call PathInternal:IsDeviceUNC(ReadOnlySpan`1):bool jmp SHORT G_M9749_IG06 ;; bbWeight=0.50 PerfScore 3.00 G_M9749_IG05: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M9749_IG06: movzx rcx, al test r14d, r14d sete al movzx rax, al or eax, ecx je G_M9749_IG17 ;; bbWeight=1 PerfScore 3.00 G_M9749_IG07: test edi, edi jle G_M9749_IG17 cmp ebx, 0 jbe G_M9749_IG27 movzx rax, word ptr [rsi] cmp eax, 92 je SHORT G_M9749_IG08 cmp eax, 47 sete al movzx rax, al test eax, eax je SHORT G_M9749_IG17 ;; bbWeight=0.50 PerfScore 4.25 G_M9749_IG08: test ecx, ecx jne SHORT G_M9749_IG09 cmp edi, 1 jle SHORT G_M9749_IG16 cmp ebx, 1 jbe G_M9749_IG27 movzx rax, word ptr [rsi+2] cmp eax, 92 je SHORT G_M9749_IG09 cmp eax, 47 sete al movzx rax, al test eax, eax je SHORT G_M9749_IG16 ;; bbWeight=0.50 PerfScore 4.88 G_M9749_IG09: test ecx, ecx jne SHORT G_M9749_IG10 mov ebp, 2 jmp SHORT G_M9749_IG11 ;; bbWeight=0.50 PerfScore 1.75 G_M9749_IG10: mov ebp, 8 ;; bbWeight=0.50 PerfScore 0.13 G_M9749_IG11: mov ecx, 2 jmp SHORT G_M9749_IG13 ;; bbWeight=0.50 PerfScore 1.13 G_M9749_IG12: inc ebp ;; bbWeight=2 PerfScore 0.50 G_M9749_IG13: cmp ebp, edi jge G_M9749_IG25 movsxd rax, ebp movzx rax, word ptr [rsi+2*rax] cmp eax, 92 je SHORT G_M9749_IG14 cmp eax, 47 sete al movzx rax, al test eax, eax je SHORT G_M9749_IG12 ;; bbWeight=4 PerfScore 30.00 G_M9749_IG14: dec ecx test ecx, ecx jg SHORT G_M9749_IG12 ;; bbWeight=4 PerfScore 6.00 G_M9749_IG15: jmp G_M9749_IG25 ;; bbWeight=0.50 PerfScore 1.00 G_M9749_IG16: mov ebp, 1 jmp G_M9749_IG25 ;; bbWeight=0.50 PerfScore 1.13 G_M9749_IG17: test r14d, r14d je SHORT G_M9749_IG23 mov ebp, 4 jmp SHORT G_M9749_IG19 ;; bbWeight=0.50 PerfScore 1.75 G_M9749_IG18: inc ebp ;; bbWeight=2 PerfScore 0.50 G_M9749_IG19: cmp ebp, edi jge SHORT G_M9749_IG20 movsxd rcx, ebp movzx rcx, word ptr [rsi+2*rcx] cmp ecx, 92 je SHORT G_M9749_IG20 cmp ecx, 47 sete cl movzx rcx, cl test ecx, ecx je SHORT G_M9749_IG18 ;; bbWeight=4 PerfScore 30.00 G_M9749_IG20: cmp ebp, edi jge SHORT G_M9749_IG25 ;; bbWeight=4 PerfScore 5.00 G_M9749_IG21: cmp ebp, 4 jle SHORT G_M9749_IG25 movsxd rcx, ebp movzx rcx, word ptr [rsi+2*rcx] cmp ecx, 92 je SHORT G_M9749_IG22 cmp ecx, 47 sete cl movzx rcx, cl test ecx, ecx je SHORT G_M9749_IG25 ;; bbWeight=0.50 PerfScore 3.75 G_M9749_IG22: inc ebp jmp SHORT G_M9749_IG25 ;; bbWeight=0.50 PerfScore 1.13 G_M9749_IG23: cmp edi, 2 jl SHORT G_M9749_IG25 cmp ebx, 1 jbe SHORT G_M9749_IG27 cmp word ptr [rsi+2], 58 jne SHORT G_M9749_IG25 movzx rcx, word ptr [rsi] call PathInternal:IsValidDriveChar(ushort):bool test eax, eax je SHORT G_M9749_IG25 mov ebp, 2 cmp edi, 2 jle SHORT G_M9749_IG25 cmp edi, 2 jbe SHORT G_M9749_IG27 movzx rax, word ptr [rsi+4] cmp eax, 92 je SHORT G_M9749_IG24 cmp eax, 47 sete al movzx rax, al test eax, eax je SHORT G_M9749_IG25 ;; bbWeight=0.50 PerfScore 9.25 G_M9749_IG24: mov ebp, 3 ;; bbWeight=0.50 PerfScore 0.13 G_M9749_IG25: mov eax, ebp ;; bbWeight=1 PerfScore 0.25 G_M9749_IG26: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M9749_IG27: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 429, prolog size 17, PerfScore 171.78, (MethodHash=73b9d9ea) for method PathInternal:GetRootLength(ReadOnlySpan`1):int ; ============================================================ ; Assembly listing for method PathInternal:IsDevice(ReadOnlySpan`1):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T07] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V03 tmp2 [V03,T04] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V04 tmp3 [V04,T08] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V05 tmp4 [V05,T05] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V06 tmp5 [V06,T09] ( 3, 1.50) bool -> rax "Inline return value spill temp" ; V07 tmp6 [V07,T06] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V08 tmp7 [V08,T03] ( 6, 4 ) byref -> rsi V10._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V09 tmp8 [V09,T02] ( 7, 4.50) int -> rdi V10._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V10 tmp9 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V11 tmp10 [V11 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V12 tmp11 [V12,T01] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V13 cse0 [V13,T10] ( 3, 1.50) int -> rax "CSE - moderate" ; ; Lcl frame size = 56 G_M32070_IG01: push rdi push rsi sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax ;; bbWeight=1 PerfScore 3.50 G_M32070_IG02: mov rsi, bword ptr [rcx] mov edi, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M32070_IG03: lea rcx, bword ptr [rsp+28H] mov bword ptr [rcx], rsi mov dword ptr [rcx+8], edi lea rcx, bword ptr [rsp+28H] call PathInternal:IsExtended(ReadOnlySpan`1):bool test eax, eax jne G_M32070_IG12 ;; bbWeight=1 PerfScore 5.25 G_M32070_IG04: cmp edi, 4 jl SHORT G_M32070_IG10 cmp edi, 0 jbe G_M32070_IG14 movzx rax, word ptr [rsi] cmp eax, 92 je SHORT G_M32070_IG05 cmp eax, 47 sete al movzx rax, al test eax, eax je SHORT G_M32070_IG10 ;; bbWeight=0.50 PerfScore 4.25 G_M32070_IG05: cmp edi, 1 jbe SHORT G_M32070_IG14 movzx rax, word ptr [rsi+2] cmp eax, 92 je SHORT G_M32070_IG06 cmp eax, 47 sete al movzx rax, al test eax, eax je SHORT G_M32070_IG10 ;; bbWeight=0.50 PerfScore 3.63 G_M32070_IG06: cmp edi, 2 jbe SHORT G_M32070_IG14 movzx rax, word ptr [rsi+4] cmp eax, 46 je SHORT G_M32070_IG07 cmp eax, 63 jne SHORT G_M32070_IG10 ;; bbWeight=0.50 PerfScore 2.88 G_M32070_IG07: cmp edi, 3 jbe SHORT G_M32070_IG14 movzx rax, word ptr [rsi+6] cmp eax, 92 je SHORT G_M32070_IG08 cmp eax, 47 sete al movzx rax, al jmp SHORT G_M32070_IG09 ;; bbWeight=0.50 PerfScore 4.00 G_M32070_IG08: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M32070_IG09: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M32070_IG10: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M32070_IG11: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M32070_IG12: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M32070_IG13: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M32070_IG14: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 193, prolog size 13, PerfScore 50.55, (MethodHash=85e382b9) for method PathInternal:IsDevice(ReadOnlySpan`1):bool ; ============================================================ ; Assembly listing for method PathInternal:IsExtended(ReadOnlySpan`1):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 5, 3 ) byref -> rax V04._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V03 tmp2 [V03,T01] ( 6, 4 ) int -> rdx V04._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V05 cse0 [V05,T03] ( 3, 1.50) int -> rcx "CSE - moderate" ; ; Lcl frame size = 40 G_M33305_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M33305_IG02: mov rax, bword ptr [rcx] mov edx, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M33305_IG03: cmp edx, 4 jl SHORT G_M33305_IG07 ;; bbWeight=1 PerfScore 1.25 G_M33305_IG04: cmp edx, 0 jbe SHORT G_M33305_IG09 cmp word ptr [rax], 92 jne SHORT G_M33305_IG07 cmp edx, 1 jbe SHORT G_M33305_IG09 movzx rcx, word ptr [rax+2] cmp ecx, 92 je SHORT G_M33305_IG05 cmp ecx, 63 jne SHORT G_M33305_IG07 ;; bbWeight=0.50 PerfScore 5.00 G_M33305_IG05: cmp edx, 2 jbe SHORT G_M33305_IG09 cmp word ptr [rax+4], 63 jne SHORT G_M33305_IG07 cmp edx, 3 jbe SHORT G_M33305_IG09 cmp word ptr [rax+6], 92 sete al movzx rax, al ;; bbWeight=0.50 PerfScore 4.38 G_M33305_IG06: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M33305_IG07: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M33305_IG08: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M33305_IG09: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 91, prolog size 4, PerfScore 25.35, (MethodHash=0be57de6) for method PathInternal:IsExtended(ReadOnlySpan`1):bool ; ============================================================ ; Assembly listing for method String:Substring(int,int):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 7, 6 ) int -> rdx ; V02 arg2 [V02,T01] ( 7, 6 ) int -> r8 ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp3 [V06,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp4 [V07,T07] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp5 [V08,T08] ( 2, 0 ) ref -> rcx "argument with side effect" ; V09 tmp6 [V09,T09] ( 2, 0 ) ref -> rdi "argument with side effect" ; V10 tmp7 [V10,T10] ( 2, 0 ) ref -> r8 "argument with side effect" ; V11 tmp8 [V11,T11] ( 2, 0 ) ref -> rcx "argument with side effect" ; V12 tmp9 [V12,T12] ( 2, 0 ) ref -> rdi "argument with side effect" ; V13 tmp10 [V13,T13] ( 2, 0 ) ref -> r8 "argument with side effect" ; V14 tmp11 [V14,T14] ( 2, 0 ) ref -> rcx "argument with side effect" ; V15 tmp12 [V15,T15] ( 2, 0 ) ref -> rdi "argument with side effect" ; V16 tmp13 [V16,T16] ( 2, 0 ) ref -> r8 "argument with side effect" ; V17 tmp14 [V17,T17] ( 2, 0 ) ref -> rcx "argument with side effect" ; V18 tmp15 [V18,T18] ( 2, 0 ) ref -> rdi "argument with side effect" ; V19 tmp16 [V19,T19] ( 2, 0 ) ref -> r8 "argument with side effect" ; V20 cse0 [V20,T03] ( 4, 3.50) int -> r9 "CSE - aggressive" ; ; Lcl frame size = 40 G_M7770_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M7770_IG02: test edx, edx jl SHORT G_M7770_IG12 ;; bbWeight=1 PerfScore 1.25 G_M7770_IG03: mov r9d, dword ptr [rcx+8] cmp r9d, edx jl G_M7770_IG13 ;; bbWeight=1 PerfScore 3.25 G_M7770_IG04: test r8d, r8d jl G_M7770_IG14 ;; bbWeight=1 PerfScore 1.25 G_M7770_IG05: mov eax, r9d sub eax, r8d cmp eax, edx jl G_M7770_IG15 ;; bbWeight=1 PerfScore 1.75 G_M7770_IG06: test r8d, r8d jne SHORT G_M7770_IG09 ;; bbWeight=1 PerfScore 1.25 G_M7770_IG07: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M7770_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M7770_IG09: test edx, edx jne SHORT G_M7770_IG11 cmp r9d, r8d jne SHORT G_M7770_IG11 mov rax, rcx ;; bbWeight=0.50 PerfScore 1.38 G_M7770_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M7770_IG11: add rsp, 40 pop rsi pop rdi jmp String:InternalSubString(int,int):String:this ;; bbWeight=0.50 PerfScore 1.63 G_M7770_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x194A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA509 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M7770_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x194A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA545 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M7770_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 89 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA21D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M7770_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 89 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x9BFB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 474, prolog size 6, PerfScore 64.78, (MethodHash=a57fe1a5) for method String:Substring(int,int):String:this ; ============================================================ ; Assembly listing for method String:InternalSubString(int,int):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) int -> rdi ; V02 arg2 [V02,T02] ( 3, 3 ) int -> r8 ; V03 loc0 [V03,T03] ( 4, 4 ) ref -> rbx class-hnd ; V04 loc1 [V04,T07] ( 2, 2 ) long -> r8 ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T04] ( 2, 4 ) byref -> rcx "impAppendStmt" ; V07 tmp2 [V07,T05] ( 2, 4 ) byref -> rsi "Inlining Arg" ; V08 tmp3 [V08,T06] ( 2, 4 ) byref -> rdx "Inlining Arg" ;* V09 tmp4 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V10 tmp5 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V13 tmp8 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 32 G_M52957_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M52957_IG02: mov ecx, r8d call String:FastAllocateString(int):String mov rbx, rax mov r8d, dword ptr [rbx+8] lea rcx, bword ptr [rbx+12] cmp dword ptr [rsi], esi add rsi, 12 movsxd rdx, edi lea rdx, bword ptr [rsi+2*rdx] add r8, r8 call Buffer:Memmove(byref,byref,long) mov rax, rbx ;; bbWeight=1 PerfScore 8.50 G_M52957_IG03: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 63, prolog size 7, PerfScore 21.30, (MethodHash=bd023122) for method String:InternalSubString(int,int):String:this ; ============================================================ ; Assembly listing for method PathInternal:NormalizeDirectorySeparators(String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 12, 17.25) ref -> rsi class-hnd ; V01 loc0 [V01,T00] ( 10, 28 ) ushort -> rdx ;* V02 loc1 [V02,T26] ( 0, 0 ) bool -> zero-ref ; V03 loc2 [V03 ] ( 14, 14.50) struct (32) [rbp+0x10] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ; V04 loc3 [V04,T20] ( 3, 1.50) int -> rbx ; V05 loc4 [V05,T03] ( 7, 20.50) int -> rax ;* V06 loc5 [V06 ] ( 0, 0 ) struct (16) zero-ref ; V07 loc6 [V07,T01] ( 8, 23 ) int -> rbx ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V10 tmp2 [V10,T27] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V11 tmp3 [V11,T11] ( 2, 4 ) bool -> rcx "Inline return value spill temp" ; V12 tmp4 [V12,T12] ( 2, 4 ) bool -> rcx "Inline return value spill temp" ; V13 tmp5 [V13,T08] ( 3, 12 ) ushort -> rcx "Inlining Arg" ; V14 tmp6 [V14,T19] ( 2, 2 ) long -> rcx "Inlining Arg" ;* V15 tmp7 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V16 tmp8 [V16 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V17 tmp9 [V17,T21] ( 2, 1 ) bool -> rcx "Inline return value spill temp" ; V18 tmp10 [V18,T17] ( 3, 3 ) ushort -> rcx "Inlining Arg" ; V19 tmp11 [V19,T18] ( 5, 2.50) int -> rcx "Inline stloc first use temp" ; V20 tmp12 [V20,T15] ( 3, 3 ) byref -> rdx "Span.get_Item ptrToSpan" ; V21 tmp13 [V21,T13] ( 2, 4 ) bool -> rcx "Inline return value spill temp" ; V22 tmp14 [V22,T14] ( 2, 4 ) bool -> rcx "Inline return value spill temp" ; V23 tmp15 [V23,T09] ( 3, 12 ) ushort -> rcx "Inlining Arg" ; V24 tmp16 [V24,T10] ( 5, 10 ) int -> rcx "Inline stloc first use temp" ; V25 tmp17 [V25,T07] ( 3, 12 ) byref -> rax "Span.get_Item ptrToSpan" ; V26 tmp18 [V26,T22] ( 2, 1 ) byref -> rcx V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ;* V27 tmp19 [V27,T28] ( 0, 0 ) int -> zero-ref V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V28 tmp20 [V28,T23] ( 2, 1 ) byref -> rcx V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ;* V29 tmp21 [V29,T29] ( 0, 0 ) int -> zero-ref V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ; V30 tmp22 [V30,T24] ( 2, 1 ) byref -> rcx V15._value(offs=0x00) P-INDEP "field V15._value (fldOffset=0x0)" ; V31 tmp23 [V31,T25] ( 2, 1 ) byref -> rcx V16._pointer(offs=0x00) P-INDEP "field V16._pointer (fldOffset=0x0)" ;* V32 tmp24 [V32,T30] ( 0, 0 ) int -> zero-ref V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)" ; V33 tmp25 [V33,T16] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V34 GsCookie [V34 ] ( 1, 1 ) long -> [rbp+0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V35 cse0 [V35,T02] ( 12, 22 ) int -> rdi "CSE - aggressive" ; V36 cse1 [V36,T05] ( 6, 16 ) int -> rcx "CSE - aggressive" ; V37 cse2 [V37,T06] ( 6, 16 ) int -> r14 "CSE - aggressive" ; ; Lcl frame size = 80 G_M37107_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 80 lea rbp, [rsp+20H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp+10H], xmm4 vmovdqa xmmword ptr [rbp+20H], xmm4 mov rax, 0xD1FFAB1E mov qword ptr [rbp+08H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 9.58 G_M37107_IG02: test rsi, rsi je SHORT G_M37107_IG04 ;; bbWeight=1 PerfScore 1.25 G_M37107_IG03: mov edi, dword ptr [rsi+8] test edi, edi jne SHORT G_M37107_IG07 ;; bbWeight=0.25 PerfScore 0.81 G_M37107_IG04: mov rax, rsi mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+08H], rcx je SHORT G_M37107_IG05 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.75 G_M37107_IG05: nop ;; bbWeight=0.50 PerfScore 0.13 G_M37107_IG06: lea rsp, [rbp+30H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M37107_IG07: xor eax, eax mov edi, dword ptr [rsi+8] test edi, edi jle SHORT G_M37107_IG12 ;; bbWeight=0.50 PerfScore 1.75 G_M37107_IG08: movsxd rcx, eax movzx rdx, word ptr [rsi+2*rcx+12] cmp edx, 92 je SHORT G_M37107_IG10 ;; bbWeight=4 PerfScore 14.00 G_M37107_IG09: cmp edx, 47 sete cl movzx rcx, cl test ecx, ecx je SHORT G_M37107_IG11 ;; bbWeight=2 PerfScore 5.50 G_M37107_IG10: cmp edx, 92 jne SHORT G_M37107_IG15 test eax, eax jle SHORT G_M37107_IG11 lea ecx, [rax+1] cmp edi, ecx jle SHORT G_M37107_IG11 cmp ecx, edi jae G_M37107_IG29 movsxd rcx, ecx movzx rcx, word ptr [rsi+2*rcx+12] cmp ecx, 92 je SHORT G_M37107_IG15 cmp ecx, 47 sete cl movzx rcx, cl test ecx, ecx jne SHORT G_M37107_IG15 ;; bbWeight=2 PerfScore 23.50 G_M37107_IG11: lea ecx, [rax+1] mov eax, ecx cmp edi, eax jg SHORT G_M37107_IG08 ;; bbWeight=4 PerfScore 8.00 G_M37107_IG12: mov rax, rsi mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+08H], rcx je SHORT G_M37107_IG13 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.75 G_M37107_IG13: nop ;; bbWeight=0.50 PerfScore 0.13 G_M37107_IG14: lea rsp, [rbp+30H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M37107_IG15: add rsp, 32 test dword ptr [rsp], esp sub rsp, 528 sub rsp, 32 lea rcx, [rsp+20H] xor rdx, rdx mov gword ptr [rbp+10H], rdx lea rdx, bword ptr [rbp+20H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], 260 xor ecx, ecx mov dword ptr [rbp+18H], ecx xor ebx, ebx movzx rcx, word ptr [rsi+12] cmp ecx, 92 je SHORT G_M37107_IG16 cmp ecx, 47 sete cl movzx rcx, cl test ecx, ecx je SHORT G_M37107_IG18 ;; bbWeight=0.50 PerfScore 7.25 G_M37107_IG16: mov ebx, 1 mov ecx, dword ptr [rbp+18H] cmp ecx, dword ptr [rbp+28H] jae SHORT G_M37107_IG17 lea rdx, bword ptr [rbp+20H] cmp ecx, dword ptr [rdx+8] jae G_M37107_IG29 mov rdx, bword ptr [rdx] movsxd rax, ecx mov word ptr [rdx+2*rax], 92 inc ecx mov dword ptr [rbp+18H], ecx jmp SHORT G_M37107_IG18 ;; bbWeight=0.50 PerfScore 6.63 G_M37107_IG17: lea rcx, bword ptr [rbp+10H] mov edx, 92 call ValueStringBuilder:GrowAndAppend(ushort):this ;; bbWeight=0.50 PerfScore 0.88 G_M37107_IG18: cmp edi, ebx jle G_M37107_IG26 ;; bbWeight=0.50 PerfScore 0.63 G_M37107_IG19: cmp ebx, edi jae G_M37107_IG29 movsxd rcx, ebx movzx rdx, word ptr [rsi+2*rcx+12] cmp edx, 92 je SHORT G_M37107_IG21 ;; bbWeight=4 PerfScore 19.00 G_M37107_IG20: cmp edx, 47 sete cl movzx rcx, cl test ecx, ecx je SHORT G_M37107_IG23 ;; bbWeight=2 PerfScore 5.50 G_M37107_IG21: lea r14d, [rbx+1] cmp edi, r14d jle SHORT G_M37107_IG22 cmp r14d, edi jae G_M37107_IG29 movsxd rdx, r14d movzx rcx, word ptr [rsi+2*rdx+12] cmp ecx, 92 je SHORT G_M37107_IG25 cmp ecx, 47 sete cl movzx rcx, cl test ecx, ecx jne SHORT G_M37107_IG25 ;; bbWeight=2 PerfScore 18.50 G_M37107_IG22: mov edx, 92 ;; bbWeight=2 PerfScore 0.50 G_M37107_IG23: mov ecx, dword ptr [rbp+18H] cmp ecx, dword ptr [rbp+28H] jae SHORT G_M37107_IG24 lea rax, bword ptr [rbp+20H] cmp ecx, dword ptr [rax+8] jae SHORT G_M37107_IG29 mov rax, bword ptr [rax] movsxd r8, ecx mov word ptr [rax+2*r8], dx inc ecx mov dword ptr [rbp+18H], ecx jmp SHORT G_M37107_IG25 ;; bbWeight=2 PerfScore 26.00 G_M37107_IG24: lea rcx, bword ptr [rbp+10H] call ValueStringBuilder:GrowAndAppend(ushort):this ;; bbWeight=2 PerfScore 3.00 G_M37107_IG25: lea r14d, [rbx+1] mov ebx, r14d cmp edi, ebx jg G_M37107_IG19 ;; bbWeight=4 PerfScore 8.00 G_M37107_IG26: lea rcx, bword ptr [rbp+10H] call ValueStringBuilder:ToString():String:this mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+08H], rcx je SHORT G_M37107_IG27 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 2.38 G_M37107_IG27: nop ;; bbWeight=0.50 PerfScore 0.13 G_M37107_IG28: lea rsp, [rbp+30H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M37107_IG29: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 553, prolog size 46, PerfScore 228.12, (MethodHash=34526f0c) for method PathInternal:NormalizeDirectorySeparators(String):String ; ============================================================ ; Assembly listing for method Path:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M21035_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M21035_IG02: mov rax, 0xD1FFAB1E mov word ptr [rax], 92 mov rax, 0xD1FFAB1E mov word ptr [rax], 47 mov rax, 0xD1FFAB1E mov word ptr [rax], 58 mov rax, 0xD1FFAB1E mov word ptr [rax], 59 call Path:GetInvalidPathChars():ref mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 7.75 G_M21035_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 100, prolog size 10, PerfScore 21.50, (MethodHash=21a2add4) for method Path:.cctor() ; ============================================================ ; Assembly listing for method Path:GetInvalidPathChars():ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 3, 6 ) ref -> rsi class-hnd exact "dup spill" ; ; Lcl frame size = 32 G_M17926_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M17926_IG02: mov rcx, 0xD1FFAB1E mov edx, 33 call CORINFO_HELP_NEWARR_1_VC mov rsi, rax mov rdx, 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov r8d, 66 call CORINFO_HELP_MEMCPY mov rax, rsi ;; bbWeight=1 PerfScore 4.00 G_M17926_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 62, prolog size 5, PerfScore 13.20, (MethodHash=0e38b9f9) for method Path:GetInvalidPathChars():ref ; ============================================================ ; Assembly listing for method CoreRuntime:TryGetVersionFromRuntimeDirectory(String,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 4.25) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 4, 3 ) byref -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 4, 4 ) ref -> rbx class-hnd exact "NewObj constructor temp" ;* V04 tmp2 [V04,T05] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V05 tmp3 [V05,T03] ( 2, 2 ) ref -> r8 "argument with side effect" ; V06 tmp4 [V06,T04] ( 2, 2 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 48 G_M4849_IG01: push rdi push rsi push rbx sub rsp, 48 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M4849_IG02: test rsi, rsi je SHORT G_M4849_IG06 ;; bbWeight=1 PerfScore 1.25 G_M4849_IG03: cmp dword ptr [rsi+8], 0 jbe SHORT G_M4849_IG06 ;; bbWeight=0.25 PerfScore 0.75 G_M4849_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov dword ptr [rbx+32], -1 mov rcx, rsi call Path:GetFullPath(String):String mov r8, rax mov dword ptr [rsp+20H], 1 mov rdx, rsi mov rcx, rbx xor r9, r9 call DirectoryInfo:Init(String,String,String,bool):this mov rcx, gword ptr [rbx+24] call CoreRuntime:GetParsableVersionPart(String):String mov rcx, rax mov rdx, rdi call Version:TryParse(String,byref):bool test eax, eax je SHORT G_M4849_IG06 mov eax, 1 ;; bbWeight=0.50 PerfScore 6.38 G_M4849_IG05: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M4849_IG06: xor rax, rax mov gword ptr [rdi], rax ;; bbWeight=0.50 PerfScore 0.63 G_M4849_IG07: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 132, prolog size 7, PerfScore 28.70, (MethodHash=359ced0e) for method CoreRuntime:TryGetVersionFromRuntimeDirectory(String,byref):bool ; ============================================================ ; Assembly listing for method Path:GetFullPath(String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 11, 10 ) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V03 tmp2 [V03 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V04 tmp3 [V04,T21] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp4 [V05,T22] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp5 [V06,T23] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V07 tmp6 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V08 tmp7 [V08 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V10 tmp9 [V10,T03] ( 2, 4 ) byref -> rcx "Inlining Arg" ;* V11 tmp10 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V12 tmp11 [V12,T05] ( 2, 4 ) int -> rax "Inlining Arg" ;* V13 tmp12 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V14 tmp13 [V14 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V15 tmp14 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V16 tmp15 [V16,T04] ( 2, 4 ) byref -> rcx "Inlining Arg" ;* V17 tmp16 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V18 tmp17 [V18,T06] ( 2, 4 ) int -> rax "Inlining Arg" ; V19 tmp18 [V19,T07] ( 2, 2 ) byref -> rcx V02._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ; V20 tmp19 [V20,T15] ( 2, 2 ) int -> rax V02._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V21 tmp20 [V21,T08] ( 2, 2 ) byref -> rcx V03._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ; V22 tmp21 [V22,T16] ( 2, 2 ) int -> rax V03._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ; V23 tmp22 [V23,T09] ( 2, 2 ) byref -> rcx V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V24 tmp23 [V24,T17] ( 2, 2 ) int -> rax V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V25 tmp24 [V25,T10] ( 2, 2 ) byref -> rcx V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ; V26 tmp25 [V26,T18] ( 2, 2 ) int -> rax V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ;* V27 tmp26 [V27 ] ( 0, 0 ) byref -> zero-ref V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ;* V28 tmp27 [V28 ] ( 0, 0 ) int -> zero-ref V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ; V29 tmp28 [V29,T11] ( 2, 2 ) byref -> rcx V11._value(offs=0x00) P-INDEP "field V11._value (fldOffset=0x0)" ; V30 tmp29 [V30,T12] ( 2, 2 ) byref -> rcx V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ; V31 tmp30 [V31,T19] ( 2, 2 ) int -> rax V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V32 tmp31 [V32,T13] ( 2, 2 ) byref -> rcx V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ; V33 tmp32 [V33,T20] ( 2, 2 ) int -> rax V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ;* V34 tmp33 [V34 ] ( 0, 0 ) byref -> zero-ref V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ;* V35 tmp34 [V35 ] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ; V36 tmp35 [V36,T14] ( 2, 2 ) byref -> rcx V17._value(offs=0x00) P-INDEP "field V17._value (fldOffset=0x0)" ; V37 tmp36 [V37,T24] ( 2, 0 ) ref -> rdx "argument with side effect" ; V38 tmp37 [V38 ] ( 4, 8 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V39 tmp38 [V39,T01] ( 3, 6 ) byref -> rdx stack-byref "BlockOp address local" ; V40 tmp39 [V40,T25] ( 2, 0 ) ref -> rcx "argument with side effect" ; V41 tmp40 [V41,T26] ( 2, 0 ) ref -> rdi "argument with side effect" ; V42 tmp41 [V42,T27] ( 2, 0 ) ref -> r8 "argument with side effect" ; V43 tmp42 [V43,T28] ( 2, 0 ) ref -> rcx "argument with side effect" ; V44 tmp43 [V44,T29] ( 2, 0 ) ref -> rdi "argument with side effect" ; V45 tmp44 [V45,T30] ( 2, 0 ) ref -> r8 "argument with side effect" ; V46 tmp45 [V46,T02] ( 3, 6 ) byref -> rdx stack-byref "BlockOp address local" ; ; Lcl frame size = 56 G_M29470_IG01: push rdi push rsi sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 3.75 G_M29470_IG02: test rsi, rsi je SHORT G_M29470_IG10 ;; bbWeight=1 PerfScore 1.25 G_M29470_IG03: lea rcx, bword ptr [rsi+12] mov eax, dword ptr [rsi+8] lea rdx, bword ptr [rsp+28H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], eax lea rcx, bword ptr [rsp+28H] call PathInternal:IsEffectivelyEmpty(ReadOnlySpan`1):bool test eax, eax jne G_M29470_IG11 ;; bbWeight=1 PerfScore 7.75 G_M29470_IG04: lea rcx, bword ptr [rsi+12] mov r8d, dword ptr [rsi+8] xor edx, edx call SpanHelpers:Contains(byref,ushort,int):bool test eax, eax jne G_M29470_IG12 ;; bbWeight=1 PerfScore 5.00 G_M29470_IG05: lea rcx, bword ptr [rsi+12] mov eax, dword ptr [rsi+8] lea rdx, bword ptr [rsp+28H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], eax lea rcx, bword ptr [rsp+28H] call PathInternal:IsExtended(ReadOnlySpan`1):bool test eax, eax je SHORT G_M29470_IG08 ;; bbWeight=1 PerfScore 7.75 G_M29470_IG06: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M29470_IG07: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M29470_IG08: mov rcx, rsi call PathHelper:Normalize(String):String nop ;; bbWeight=0.50 PerfScore 0.75 G_M29470_IG09: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M29470_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1BC8F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M29470_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x50F3 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1BC8F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M29470_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x78AB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1BC8F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 382, prolog size 13, PerfScore 66.83, (MethodHash=cf828ce1) for method Path:GetFullPath(String):String ; ============================================================ ; Assembly listing for method SpanHelpers:Contains(byref,ushort,int):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T07] ( 4, 4 ) byref -> rcx ; V01 arg1 [V01,T06] ( 5, 12 ) ushort -> rdx ; V02 arg2 [V02,T00] ( 19,137 ) int -> r8 ;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref ; V04 loc1 [V04 ] ( 1, 1 ) byref -> [rsp+0x00] must-init pinned ; V05 loc2 [V05,T01] ( 19,126.50) long -> rcx ; V06 loc3 [V06,T05] ( 5, 17 ) long -> r9 ; V07 loc4 [V07,T10] ( 2, 1 ) int -> rax ; V08 loc5 [V08,T14] ( 2, 20 ) simd32 -> mm0 ld-addr-op ; V09 loc6 [V09,T12] ( 2, 32 ) simd32 -> mm1 ; V10 loc7 [V10,T13] ( 2, 32 ) simd32 -> mm2 ld-addr-op ;# V11 OutArgs [V11 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) simd32 -> zero-ref "impAppendStmt" ; V13 tmp2 [V13,T11] ( 2, 64 ) simd32 -> mm1 "struct address for call/obj" ; V14 tmp3 [V14,T08] ( 2, 4 ) long -> rcx "Cast away GC" ; V15 cse0 [V15,T02] ( 9, 38 ) int -> r10 "CSE - aggressive" ; V16 rat0 [V16,T09] ( 3, 3 ) int -> r8 "ReplaceWithLclVar is creating a new local variable" ; V17 rat1 [V17,T03] ( 3, 24 ) long -> r8 "ReplaceWithLclVar is creating a new local variable" ; V18 rat2 [V18,T04] ( 3, 24 ) long -> r8 "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 8 G_M3377_IG01: push rax vzeroupper xor rax, rax mov qword ptr [rsp], rax ;; bbWeight=1 PerfScore 3.25 G_M3377_IG02: mov bword ptr [rsp], rcx movsxd rax, r8d lea r9, [rcx+2*rax] cmp r8d, 32 jl SHORT G_M3377_IG05 ;; bbWeight=1 PerfScore 3.00 G_M3377_IG03: mov r8d, ecx and r8d, 31 mov eax, r8d shr eax, 31 add eax, r8d sar eax, 1 mov r8d, eax neg r8d add r8d, 16 and r8d, 15 cmp r8d, 4 jl SHORT G_M3377_IG06 ;; bbWeight=0.50 PerfScore 2.88 G_M3377_IG04: add r8d, -4 movzx r10, dx movzx rax, word ptr [rcx] cmp r10d, eax je G_M3377_IG13 movzx rax, word ptr [rcx+2] cmp r10d, eax je G_M3377_IG13 movzx rax, word ptr [rcx+4] cmp r10d, eax je G_M3377_IG13 movzx rax, word ptr [rcx+6] cmp r10d, eax je G_M3377_IG13 add rcx, 8 ;; bbWeight=2 PerfScore 27.50 G_M3377_IG05: cmp r8d, 4 jge SHORT G_M3377_IG04 ;; bbWeight=16 PerfScore 20.00 G_M3377_IG06: test r8d, r8d jle SHORT G_M3377_IG08 movzx r10, dx ;; bbWeight=4 PerfScore 6.00 G_M3377_IG07: dec r8d movzx rax, word ptr [rcx] cmp r10d, eax je G_M3377_IG13 add rcx, 2 test r8d, r8d jg SHORT G_M3377_IG07 ;; bbWeight=16 PerfScore 80.00 G_M3377_IG08: cmp rcx, r9 jae G_M3377_IG11 mov r8, r9 sub r8, rcx mov r10, r8 shr r10, 63 add r8, r10 sar r8, 1 and r8d, -16 movzx r10, dx imul eax, r10d, 0x10001 vmovd xmm0, eax vpbroadcastd ymm0, ymm0 test r8d, r8d jle SHORT G_M3377_IG10 ;; bbWeight=4 PerfScore 46.00 G_M3377_IG09: vmovupd ymm1, ymmword ptr[rcx] vpcmpeqw ymm1, ymm0, ymm1 vxorps ymm2, ymm2, ymm2 vpcmpeqw ymm1, ymm2, ymm1 vpmovmskb eax, ymm1 cmp eax, -1 jne SHORT G_M3377_IG13 add rcx, 32 add r8d, -16 test r8d, r8d jg SHORT G_M3377_IG09 ;; bbWeight=16 PerfScore 149.33 G_M3377_IG10: cmp rcx, r9 jae SHORT G_M3377_IG11 mov r8, r9 sub r8, rcx mov rax, r8 shr rax, 63 add rax, r8 sar rax, 1 mov r8d, eax jmp G_M3377_IG05 ;; bbWeight=4 PerfScore 28.00 G_M3377_IG11: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M3377_IG12: vzeroupper add rsp, 8 ret ;; bbWeight=0.50 PerfScore 1.13 G_M3377_IG13: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M3377_IG14: vzeroupper add rsp, 8 ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 317, prolog size 10, PerfScore 400.86, (MethodHash=9405f2ce) for method SpanHelpers:Contains(byref,ushort,int):bool ; ============================================================ ; Assembly listing for method PathHelper:Normalize(String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 10, 6.50) ref -> rsi class-hnd ; V01 loc0 [V01 ] ( 13, 10.50) struct (32) [rbp+0x30] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ; V02 loc1 [V02,T13] ( 2, 2 ) ref -> rdi class-hnd ;* V03 loc2 [V03 ] ( 0, 0 ) struct (16) zero-ref ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V08 tmp4 [V08,T09] ( 4, 2.50) ref -> rdi ;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V11 tmp7 [V11,T05] ( 2, 4 ) long -> rcx "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V17 tmp13 [V17,T14] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V18 tmp14 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V19 tmp15 [V19,T22] ( 2, 2 ) int -> rdx "Inlining Arg" ;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V21 tmp17 [V21,T03] ( 3, 6 ) int -> r8 "Inlining Arg" ;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V23 tmp19 [V23,T04] ( 2, 4 ) byref -> rcx "Inlining Arg" ;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V25 tmp21 [V25 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V26 tmp22 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V27 tmp23 [V27 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V29 tmp25 [V29 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V31 tmp27 [V31,T23] ( 2, 2 ) int -> rax "Inline return value spill temp" ;* V32 tmp28 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V33 tmp29 [V33,T27] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V34 tmp30 [V34 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V36 tmp32 [V36 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V37 tmp33 [V37,T28] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V38 tmp34 [V38 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V40 tmp36 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V41 tmp37 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V42 tmp38 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V43 tmp39 [V43 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V44 tmp40 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V45 tmp41 [V45 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V46 tmp42 [V46,T08] ( 3, 3 ) int -> rcx "Inlining Arg" ;* V47 tmp43 [V47 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V48 tmp44 [V48,T15] ( 2, 2 ) byref -> rdx "Inlining Arg" ;* V49 tmp45 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V50 tmp46 [V50 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V51 tmp47 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V52 tmp48 [V52 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V53 tmp49 [V53 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V54 tmp50 [V54 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V55 tmp51 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V56 tmp52 [V56 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V57 tmp53 [V57 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V58 tmp54 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V59 tmp55 [V59,T16] ( 2, 2 ) byref -> r8 "Inlining Arg" ;* V60 tmp56 [V60 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V61 tmp57 [V61,T24] ( 2, 2 ) int -> rax "Inlining Arg" ; V62 tmp58 [V62,T10] ( 3, 2.25) ref -> rsi class-hnd "Inline stloc first use temp" ; V63 tmp59 [V63,T17] ( 2, 2 ) byref -> rcx V03._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ;* V64 tmp60 [V64,T25] ( 0, 0 ) int -> zero-ref V03._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ; V65 tmp61 [V65,T18] ( 2, 2 ) byref -> rcx V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ;* V66 tmp62 [V66,T47] ( 0, 0 ) int -> zero-ref V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ; V67 tmp63 [V67,T19] ( 2, 2 ) byref -> rcx V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V68 tmp64 [V68,T26] ( 2, 2 ) int -> rdx V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ;* V69 tmp65 [V69 ] ( 0, 0 ) byref -> zero-ref V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ;* V70 tmp66 [V70 ] ( 0, 0 ) int -> zero-ref V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V71 tmp67 [V71,T31] ( 2, 1 ) byref -> rdx V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ; V72 tmp68 [V72,T42] ( 2, 1 ) int -> rcx V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ; V73 tmp69 [V73,T32] ( 2, 1 ) byref -> r8 V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ; V74 tmp70 [V74,T43] ( 2, 1 ) int -> rax V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ; V75 tmp71 [V75,T20] ( 2, 2 ) byref -> rcx V12._value(offs=0x00) P-INDEP "field V12._value (fldOffset=0x0)" ; V76 tmp72 [V76,T21] ( 2, 2 ) byref -> rcx V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ;* V77 tmp73 [V77,T48] ( 0, 0 ) int -> zero-ref V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V78 tmp74 [V78,T11] ( 3, 2 ) byref -> rcx V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ; V79 tmp75 [V79,T12] ( 3, 2 ) int -> rdx V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ; V80 tmp76 [V80,T33] ( 2, 1 ) byref -> rcx V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ; V81 tmp77 [V81,T44] ( 2, 1 ) int -> rdx V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ; V82 tmp78 [V82,T34] ( 2, 1 ) byref -> rcx V16._pointer(offs=0x00) P-INDEP "field V16._pointer (fldOffset=0x0)" ;* V83 tmp79 [V83,T49] ( 0, 0 ) int -> zero-ref V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)" ; V84 tmp80 [V84,T35] ( 2, 1 ) byref -> rcx V18._value(offs=0x00) P-INDEP "field V18._value (fldOffset=0x0)" ;* V85 tmp81 [V85 ] ( 0, 0 ) byref -> zero-ref V20._pointer(offs=0x00) P-INDEP "field V20._pointer (fldOffset=0x0)" ;* V86 tmp82 [V86 ] ( 0, 0 ) int -> zero-ref V20._length(offs=0x08) P-INDEP "field V20._length (fldOffset=0x8)" ;* V87 tmp83 [V87 ] ( 0, 0 ) byref -> zero-ref V22._pointer(offs=0x00) P-INDEP "field V22._pointer (fldOffset=0x0)" ;* V88 tmp84 [V88 ] ( 0, 0 ) int -> zero-ref V22._length(offs=0x08) P-INDEP "field V22._length (fldOffset=0x8)" ;* V89 tmp85 [V89 ] ( 0, 0 ) byref -> zero-ref V25._value(offs=0x00) P-INDEP "field V25._value (fldOffset=0x0)" ;* V90 tmp86 [V90 ] ( 0, 0 ) byref -> zero-ref V26._pointer(offs=0x00) P-INDEP "field V26._pointer (fldOffset=0x0)" ;* V91 tmp87 [V91 ] ( 0, 0 ) int -> zero-ref V26._length(offs=0x08) P-INDEP "field V26._length (fldOffset=0x8)" ;* V92 tmp88 [V92 ] ( 0, 0 ) byref -> zero-ref V27._pointer(offs=0x00) P-INDEP "field V27._pointer (fldOffset=0x0)" ;* V93 tmp89 [V93 ] ( 0, 0 ) int -> zero-ref V27._length(offs=0x08) P-INDEP "field V27._length (fldOffset=0x8)" ;* V94 tmp90 [V94 ] ( 0, 0 ) byref -> zero-ref V29._value(offs=0x00) P-INDEP "field V29._value (fldOffset=0x0)" ;* V95 tmp91 [V95 ] ( 0, 0 ) byref -> zero-ref V32._pointer(offs=0x00) P-INDEP "field V32._pointer (fldOffset=0x0)" ;* V96 tmp92 [V96 ] ( 0, 0 ) int -> zero-ref V32._length(offs=0x08) P-INDEP "field V32._length (fldOffset=0x8)" ;* V97 tmp93 [V97 ] ( 0, 0 ) byref -> zero-ref V40._pointer(offs=0x00) P-INDEP "field V40._pointer (fldOffset=0x0)" ;* V98 tmp94 [V98 ] ( 0, 0 ) int -> zero-ref V40._length(offs=0x08) P-INDEP "field V40._length (fldOffset=0x8)" ;* V99 tmp95 [V99 ] ( 0, 0 ) byref -> zero-ref V42._pointer(offs=0x00) P-INDEP "field V42._pointer (fldOffset=0x0)" ;* V100 tmp96 [V100 ] ( 0, 0 ) int -> zero-ref V42._length(offs=0x08) P-INDEP "field V42._length (fldOffset=0x8)" ;* V101 tmp97 [V101 ] ( 0, 0 ) byref -> zero-ref V44._pointer(offs=0x00) P-INDEP "field V44._pointer (fldOffset=0x0)" ;* V102 tmp98 [V102 ] ( 0, 0 ) int -> zero-ref V44._length(offs=0x08) P-INDEP "field V44._length (fldOffset=0x8)" ;* V103 tmp99 [V103 ] ( 0, 0 ) byref -> zero-ref V45._pointer(offs=0x00) P-INDEP "field V45._pointer (fldOffset=0x0)" ;* V104 tmp100 [V104 ] ( 0, 0 ) int -> zero-ref V45._length(offs=0x08) P-INDEP "field V45._length (fldOffset=0x8)" ;* V105 tmp101 [V105 ] ( 0, 0 ) byref -> zero-ref V47._pointer(offs=0x00) P-INDEP "field V47._pointer (fldOffset=0x0)" ;* V106 tmp102 [V106 ] ( 0, 0 ) int -> zero-ref V47._length(offs=0x08) P-INDEP "field V47._length (fldOffset=0x8)" ;* V107 tmp103 [V107 ] ( 0, 0 ) byref -> zero-ref V50._value(offs=0x00) P-INDEP "field V50._value (fldOffset=0x0)" ;* V108 tmp104 [V108 ] ( 0, 0 ) byref -> zero-ref V51._pointer(offs=0x00) P-INDEP "field V51._pointer (fldOffset=0x0)" ;* V109 tmp105 [V109 ] ( 0, 0 ) int -> zero-ref V51._length(offs=0x08) P-INDEP "field V51._length (fldOffset=0x8)" ; V110 tmp106 [V110,T36] ( 2, 1 ) byref -> rdx V52._pointer(offs=0x00) P-INDEP "field V52._pointer (fldOffset=0x0)" ; V111 tmp107 [V111,T45] ( 2, 1 ) int -> rcx V52._length(offs=0x08) P-INDEP "field V52._length (fldOffset=0x8)" ; V112 tmp108 [V112,T37] ( 2, 1 ) byref -> rdx V54._value(offs=0x00) P-INDEP "field V54._value (fldOffset=0x0)" ; V113 tmp109 [V113,T29] ( 3, 1.50) byref -> r8 V56._pointer(offs=0x00) P-INDEP "field V56._pointer (fldOffset=0x0)" ; V114 tmp110 [V114,T30] ( 3, 1.50) int -> rax V56._length(offs=0x08) P-INDEP "field V56._length (fldOffset=0x8)" ; V115 tmp111 [V115,T38] ( 2, 1 ) byref -> r8 V57._pointer(offs=0x00) P-INDEP "field V57._pointer (fldOffset=0x0)" ; V116 tmp112 [V116,T46] ( 2, 1 ) int -> rax V57._length(offs=0x08) P-INDEP "field V57._length (fldOffset=0x8)" ; V117 tmp113 [V117,T39] ( 2, 1 ) byref -> r8 V58._pointer(offs=0x00) P-INDEP "field V58._pointer (fldOffset=0x0)" ;* V118 tmp114 [V118,T50] ( 0, 0 ) int -> zero-ref V58._length(offs=0x08) P-INDEP "field V58._length (fldOffset=0x8)" ; V119 tmp115 [V119,T40] ( 2, 1 ) byref -> r8 V60._value(offs=0x00) P-INDEP "field V60._value (fldOffset=0x0)" ; V120 tmp116 [V120,T01] ( 3, 6 ) byref -> rdx stack-byref "BlockOp address local" ; V121 tmp117 [V121 ] ( 4, 6 ) struct (16) [rbp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V122 tmp118 [V122,T02] ( 3, 6 ) byref -> rax stack-byref "BlockOp address local" ; V123 tmp119 [V123,T06] ( 3, 3 ) byref -> r9 stack-byref "BlockOp address local" ; V124 tmp120 [V124 ] ( 2, 2 ) struct (16) [rbp+0x10] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V125 tmp121 [V125,T07] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V126 tmp122 [V126,T41] ( 2, 1 ) ref -> rcx "argument with side effect" ; V127 GsCookie [V127 ] ( 1, 1 ) long -> [rbp+0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; ; Lcl frame size = 112 G_M63125_IG01: push rbp push rdi push rsi sub rsp, 112 vzeroupper lea rbp, [rsp+20H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp+10H], xmm4 vmovdqa xmmword ptr [rbp+20H], xmm4 vmovdqa xmmword ptr [rbp+30H], xmm4 vmovdqa xmmword ptr [rbp+40H], xmm4 mov rax, 0xD1FFAB1E mov qword ptr [rbp+08H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 10.58 G_M63125_IG02: add rsp, 32 test dword ptr [rsp], esp sub rsp, 528 sub rsp, 32 lea rcx, [rsp+20H] lea rdx, bword ptr [rbp+40H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], 260 xor ecx, ecx mov dword ptr [rbp+38H], ecx test rsi, rsi jne SHORT G_M63125_IG04 ;; bbWeight=1 PerfScore 8.25 G_M63125_IG03: xor rcx, rcx xor edx, edx jmp SHORT G_M63125_IG05 ;; bbWeight=0.50 PerfScore 1.25 G_M63125_IG04: lea rcx, bword ptr [rsi+12] mov edx, dword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.25 G_M63125_IG05: lea rax, bword ptr [rbp+20H] mov bword ptr [rax], rcx mov dword ptr [rax+8], edx lea rcx, bword ptr [rbp+20H] lea rdx, [rbp+30H] call PathHelper:GetFullPathName(ReadOnlySpan`1,byref) mov r8d, dword ptr [rbp+38H] mov ecx, r8d mov edx, dword ptr [rbp+48H] cmp rcx, rdx ja G_M63125_IG18 ;; bbWeight=1 PerfScore 8.00 G_M63125_IG06: mov rcx, bword ptr [rbp+40H] mov edx, 126 call SpanHelpers:IndexOf(byref,ushort,int):int test eax, eax jge SHORT G_M63125_IG12 ;; bbWeight=1 PerfScore 3.50 G_M63125_IG07: mov ecx, dword ptr [rbp+38H] mov edx, ecx mov r8d, dword ptr [rbp+48H] cmp rdx, r8 ja G_M63125_IG18 ;; bbWeight=0.50 PerfScore 1.75 G_M63125_IG08: mov rdx, bword ptr [rbp+40H] test rsi, rsi jne SHORT G_M63125_IG09 xor r8, r8 xor eax, eax jmp SHORT G_M63125_IG10 ;; bbWeight=0.50 PerfScore 2.38 G_M63125_IG09: lea r8, bword ptr [rsi+12] mov eax, dword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.25 G_M63125_IG10: lea r9, bword ptr [rbp+20H] mov bword ptr [r9], rdx mov dword ptr [r9+8], ecx lea rcx, bword ptr [rbp+10H] mov bword ptr [rcx], r8 mov dword ptr [rcx+8], eax lea rcx, bword ptr [rbp+20H] lea rdx, bword ptr [rbp+10H] mov r8d, 4 call MemoryExtensions:Equals(ReadOnlySpan`1,ReadOnlySpan`1,int):bool test eax, eax jne SHORT G_M63125_IG11 lea rcx, bword ptr [rbp+30H] call ValueStringBuilder:ToString():String:this mov rdi, rax jmp SHORT G_M63125_IG13 ;; bbWeight=0.50 PerfScore 6.13 G_M63125_IG11: mov rdi, rsi jmp SHORT G_M63125_IG13 ;; bbWeight=0.50 PerfScore 1.13 G_M63125_IG12: lea rcx, [rbp+30H] mov rdx, rsi call PathHelper:TryExpandShortFileName(byref,String):String mov rdi, rax ;; bbWeight=0.50 PerfScore 1.00 G_M63125_IG13: mov rsi, gword ptr [rbp+30H] vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp+30H], xmm0 vmovdqu xmmword ptr [rbp+40H], xmm0 test rsi, rsi je SHORT G_M63125_IG15 ;; bbWeight=1 PerfScore 4.58 G_M63125_IG14: mov rcx, 0xD1FFAB1E mov edx, 5 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, rsi xor r8d, r8d mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]TlsOverPerCoreLockedStacksArrayPool`1:Return(ref,bool):this ;; bbWeight=0.25 PerfScore 2.38 G_M63125_IG15: mov rax, rdi mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+08H], rcx je SHORT G_M63125_IG16 call CORINFO_HELP_FAIL_FAST ;; bbWeight=1 PerfScore 3.50 G_M63125_IG16: nop ;; bbWeight=1 PerfScore 0.25 G_M63125_IG17: lea rsp, [rbp+50H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 G_M63125_IG18: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 410, prolog size 53, PerfScore 101.97, (MethodHash=c808096a) for method PathHelper:Normalize(String):String ; ============================================================ ; Assembly listing for method PathHelper:GetFullPathName(ReadOnlySpan`1,byref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T06] ( 4, 20 ) byref -> rsi ld-addr-op ; V01 arg1 [V01,T11] ( 6, 13 ) byref -> rdi ; V02 loc0 [V02,T07] ( 5, 20 ) int -> rax ; V03 loc1 [V03,T14] ( 4, 0 ) int -> rdi ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V06 tmp2 [V06,T04] ( 2, 32 ) int -> rdx "impAppendStmt" ; V07 tmp3 [V07,T05] ( 2, 32 ) int -> rax "dup spill" ; V08 tmp4 [V08,T12] ( 3, 10 ) int -> rdx "Inlining Arg" ; V09 tmp5 [V09,T13] ( 2, 8 ) byref -> rbx "Inlining Arg" ;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V11 tmp7 [V11,T01] ( 2, 32 ) byref -> rdx "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V13 tmp9 [V13,T02] ( 2, 32 ) byref -> rdx "Inlining Arg" ;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref do-not-enreg[] V20._pointer(offs=0x00) P-DEP "field V00._pointer (fldOffset=0x0)" ;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] V20._length(offs=0x08) P-DEP "field V00._length (fldOffset=0x8)" ; V16 tmp12 [V16,T08] ( 2, 16 ) byref -> rcx V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ; V18 tmp14 [V18,T09] ( 2, 16 ) byref -> r8 V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Promoted implicit byref" ; V21 tmp17 [V21,T03] ( 2, 32 ) byref -> r8 "BlockOp address local" ; V22 tmp18 [V22,T15] ( 2, 0 ) ref -> rdx "argument with side effect" ; V23 cse0 [V23,T10] ( 2, 16 ) int -> rdx "CSE - aggressive" ; V24 cse1 [V24,T00] ( 5, 34 ) byref -> rbx "CSE - aggressive" ; ; Lcl frame size = 40 G_M54488_IG01: push rbp push rdi push rsi push rbx sub rsp, 40 lea rbp, [rsp+40H] mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 5.25 G_M54488_IG02: jmp SHORT G_M54488_IG05 ;; bbWeight=1 PerfScore 2.00 G_M54488_IG03: test eax, eax jl SHORT G_M54488_IG09 mov edx, eax cmp edx, dword ptr [rbx+8] jle SHORT G_M54488_IG05 ;; bbWeight=2 PerfScore 9.00 G_M54488_IG04: sub edx, dword ptr [rdi+8] mov rcx, rdi call ValueStringBuilder:Grow(int):this ;; bbWeight=1 PerfScore 3.25 G_M54488_IG05: mov rcx, bword ptr [rsi] lea rbx, bword ptr [rdi+16] mov rdx, rbx mov edx, dword ptr [rdx+8] mov r8, rbx mov r8, bword ptr [r8] xor r9, r9 call Kernel32:GetFullPathNameW(byref,int,byref,long):int mov rdx, rbx mov ecx, eax mov edx, dword ptr [rdx+8] movsxd rdx, edx cmp rcx, rdx jg SHORT G_M54488_IG03 ;; bbWeight=8 PerfScore 98.00 G_M54488_IG06: test eax, eax je SHORT G_M54488_IG10 ;; bbWeight=1 PerfScore 1.25 G_M54488_IG07: mov dword ptr [rdi+8], eax ;; bbWeight=1 PerfScore 1.00 G_M54488_IG08: lea rsp, [rbp-18H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.50 G_M54488_IG09: call CORINFO_HELP_OVERFLOW ;; bbWeight=0 PerfScore 0.00 G_M54488_IG10: call Marshal:GetLastWin32Error():int mov edi, eax test edi, edi jne SHORT G_M54488_IG11 mov edi, 161 ;; bbWeight=0 PerfScore 0.00 G_M54488_IG11: mov rcx, rsi call ReadOnlySpan`1:ToString():String:this mov rdx, rax mov ecx, edi call Win32Marshal:GetExceptionForWin32Error(int,String):Exception mov rcx, rax call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 150, prolog size 13, PerfScore 138.25, (MethodHash=7acd2b27) for method PathHelper:GetFullPathName(ReadOnlySpan`1,byref) ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(byref,int,byref,long):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 4 ) byref -> rsi ; V01 arg1 [V01,T03] ( 3, 3 ) int -> rbx ; V02 arg2 [V02,T02] ( 4, 4 ) byref -> rdi ; V03 arg3 [V03,T04] ( 3, 3 ) long -> r14 ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref ; V05 loc1 [V05 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned ; V06 loc2 [V06,T13] ( 2, 2 ) long -> rbx ; V07 loc3 [V07 ] ( 1, 1 ) byref -> [rbp-0x48] must-init pinned ;* V08 loc4 [V08 ] ( 0, 0 ) long -> zero-ref ;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V12 tmp1 [V12 ] ( 3, 3 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "stub argument" ; V13 tmp2 [V13,T05] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V14 tmp3 [V14,T06] ( 2, 4 ) int -> rsi "impAppendStmt" ; V15 tmp4 [V15,T07] ( 2, 4 ) int -> rax "Single return block return value" ; V16 FramesRoot [V16,T00] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V17 PInvokeFrame [V17 ] ( 8, 8 ) blk (72) [rbp-0x98] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V18 tmp7 [V18,T08] ( 2, 4 ) long -> rcx "Cast away GC" ; V19 tmp8 [V19,T09] ( 2, 4 ) long -> r8 "Cast away GC" ; V20 tmp9 [V20,T10] ( 2, 4 ) long -> rcx "argument with side effect" ; V21 tmp10 [V21,T11] ( 2, 4 ) long -> rdx "argument with side effect" ; V22 tmp11 [V22,T12] ( 2, 4 ) long -> r8 "argument with side effect" ; ; Lcl frame size = 136 G_M36275_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] mov qword ptr [rbp-50H], r10 xor rbx, rbx mov qword ptr [rbp-40H], rbx mov qword ptr [rbp-48H], rbx mov rsi, rcx mov ebx, edx mov rdi, r8 mov r14, r9 ;; bbWeight=1 PerfScore 13.00 G_M36275_IG02: lea rcx, [rbp-90H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rax, rsp mov qword ptr [rbp-70H], rax mov rax, rbp mov qword ptr [rbp-60H], rax lea rax, bword ptr [rbp-90H] mov qword ptr [r15+16], rax mov bword ptr [rbp-40H], rsi mov ebx, ebx mov bword ptr [rbp-48H], rdi call StubHelpers:ClearLastError() mov rcx, qword ptr [rbp-50H] mov rcx, qword ptr [rcx+32] mov rax, qword ptr [rcx] mov rcx, rsi mov rdx, rbx mov r8, rdi mov r9, r14 mov r10, qword ptr [rbp-50H] mov qword ptr [rbp-80H], r10 lea r10, G_M36275_IG04 mov qword ptr [rbp-68H], r10 mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 20.25 G_M36275_IG03: call rax ;; bbWeight=1 PerfScore 3.00 G_M36275_IG04: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M36275_IG05 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M36275_IG05: mov esi, eax call StubHelpers:SetLastError() mov eax, esi ;; bbWeight=1 PerfScore 1.50 G_M36275_IG06: mov rdx, bword ptr [rbp-88H] mov qword ptr [r15+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M36275_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 228, prolog size 41, PerfScore 75.55, (MethodHash=b27f724c) for method ILStubClass:IL_STUB_PInvoke(byref,int,byref,long):int ; ============================================================ ; Assembly listing for method MemoryExtensions:Equals(ReadOnlySpan`1,ReadOnlySpan`1,int):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 10 ) byref -> rsi ; V01 arg1 [V01,T01] ( 8, 10 ) byref -> rdi ; V02 arg2 [V02,T02] ( 7, 6 ) int -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T06] ( 2, 2 ) ref -> rcx class-hnd "impAppendStmt" ; V05 tmp2 [V05,T07] ( 2, 2 ) ref -> rcx class-hnd "impAppendStmt" ; V06 tmp3 [V06,T04] ( 4, 2 ) bool -> rax "Inline return value spill temp" ;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V10 tmp7 [V10,T20] ( 2, 1 ) bool -> rax "Inline return value spill temp" ;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V12 tmp9 [V12,T21] ( 2, 1 ) int -> r8 "Inline stloc first use temp" ;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V14 tmp11 [V14 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V15 tmp12 [V15,T22] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V16 tmp13 [V16 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V17 tmp14 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V18 tmp15 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V20 tmp17 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V21 tmp18 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V22 tmp19 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V23 tmp20 [V23,T05] ( 4, 2 ) bool -> rax "Inline return value spill temp" ;* V24 tmp21 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V25 tmp22 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V26 tmp23 [V26 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V27 tmp24 [V27 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V28 tmp25 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V29 tmp26 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V30 tmp27 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V31 tmp28 [V31 ] ( 0, 0 ) byref -> zero-ref V59._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ;* V32 tmp29 [V32 ] ( 0, 0 ) int -> zero-ref V59._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V33 tmp30 [V33 ] ( 0, 0 ) byref -> zero-ref V60._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ;* V34 tmp31 [V34 ] ( 0, 0 ) int -> zero-ref V60._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ; V35 tmp32 [V35,T14] ( 2, 1 ) byref -> rcx V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V36 tmp33 [V36,T10] ( 3, 1.50) int -> r8 V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V37 tmp34 [V37,T15] ( 2, 1 ) byref -> rdx V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ; V38 tmp35 [V38,T12] ( 3, 1.25) int -> rax V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ; V39 tmp36 [V39,T16] ( 2, 1 ) byref -> rcx V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ;* V40 tmp37 [V40 ] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ; V41 tmp38 [V41,T17] ( 2, 1 ) byref -> rdx V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ;* V42 tmp39 [V42 ] ( 0, 0 ) int -> zero-ref V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ;* V43 tmp40 [V43 ] ( 0, 0 ) byref -> zero-ref V17._pointer(offs=0x00) P-INDEP "field V17._pointer (fldOffset=0x0)" ;* V44 tmp41 [V44 ] ( 0, 0 ) int -> zero-ref V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)" ;* V45 tmp42 [V45 ] ( 0, 0 ) byref -> zero-ref V19._pointer(offs=0x00) P-INDEP "field V19._pointer (fldOffset=0x0)" ;* V46 tmp43 [V46 ] ( 0, 0 ) int -> zero-ref V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)" ;* V47 tmp44 [V47 ] ( 0, 0 ) byref -> zero-ref V21._pointer(offs=0x00) P-INDEP "field V21._pointer (fldOffset=0x0)" ;* V48 tmp45 [V48 ] ( 0, 0 ) int -> zero-ref V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)" ;* V49 tmp46 [V49 ] ( 0, 0 ) byref -> zero-ref V22._pointer(offs=0x00) P-INDEP "field V22._pointer (fldOffset=0x0)" ;* V50 tmp47 [V50 ] ( 0, 0 ) int -> zero-ref V22._length(offs=0x08) P-INDEP "field V22._length (fldOffset=0x8)" ; V51 tmp48 [V51,T18] ( 2, 1 ) byref -> rcx V24._pointer(offs=0x00) P-INDEP "field V24._pointer (fldOffset=0x0)" ; V52 tmp49 [V52,T11] ( 3, 1.50) int -> r8 V24._length(offs=0x08) P-INDEP "field V24._length (fldOffset=0x8)" ; V53 tmp50 [V53,T19] ( 2, 1 ) byref -> rdx V25._pointer(offs=0x00) P-INDEP "field V25._pointer (fldOffset=0x0)" ; V54 tmp51 [V54,T13] ( 3, 1.25) int -> rax V25._length(offs=0x08) P-INDEP "field V25._length (fldOffset=0x8)" ;* V55 tmp52 [V55 ] ( 0, 0 ) byref -> zero-ref V29._pointer(offs=0x00) P-INDEP "field V29._pointer (fldOffset=0x0)" ;* V56 tmp53 [V56 ] ( 0, 0 ) int -> zero-ref V29._length(offs=0x08) P-INDEP "field V29._length (fldOffset=0x8)" ;* V57 tmp54 [V57 ] ( 0, 0 ) byref -> zero-ref V30._pointer(offs=0x00) P-INDEP "field V30._pointer (fldOffset=0x0)" ;* V58 tmp55 [V58 ] ( 0, 0 ) int -> zero-ref V30._length(offs=0x08) P-INDEP "field V30._length (fldOffset=0x8)" ;* V59 tmp56 [V59 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ;* V60 tmp57 [V60 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V61 tmp58 [V61 ] ( 4, 4 ) struct (16) [rsp+0x30] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V62 tmp59 [V62 ] ( 4, 4 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V63 tmp60 [V63,T08] ( 2, 2 ) ref -> rcx "argument with side effect" ; V64 tmp61 [V64,T09] ( 2, 2 ) ref -> rcx "argument with side effect" ; V65 rat0 [V65,T03] ( 3, 3 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 64 G_M23762_IG01: push rdi push rsi push rbx sub rsp, 64 vzeroupper vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 mov rsi, rcx mov rdi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 7.33 G_M23762_IG02: cmp ebx, 5 ja G_M23762_IG26 ;; bbWeight=1 PerfScore 1.25 G_M23762_IG03: cmp ebx, 4 ja G_M23762_IG20 mov eax, ebx lea rdx, [reloc @RWD00] mov edx, dword ptr [rdx+4*rax] lea rcx, G_M23762_IG02 add rdx, rcx jmp rdx ;; bbWeight=1 PerfScore 7.25 G_M23762_IG04: call CultureInfo:get_CurrentCulture():CultureInfo mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+48]CultureInfo:get_CompareInfo():CompareInfo:this mov rcx, rax ;; bbWeight=0.50 PerfScore 4.25 G_M23762_IG05: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rsp+30H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M23762_IG06: vmovdqu xmm0, xmmword ptr [rdi] vmovdqu xmmword ptr [rsp+20H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M23762_IG07: lea rdx, bword ptr [rsp+30H] lea r8, bword ptr [rsp+20H] mov r9d, ebx and r9d, 1 cmp dword ptr [rcx], ecx call CompareInfo:Compare(ReadOnlySpan`1,ReadOnlySpan`1,int):int:this test eax, eax sete al movzx rax, al ;; bbWeight=0.50 PerfScore 3.00 G_M23762_IG08: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M23762_IG09: mov rcx, 0xD1FFAB1E mov edx, 502 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] ;; bbWeight=0.50 PerfScore 1.88 G_M23762_IG10: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rsp+30H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M23762_IG11: vmovdqu xmm0, xmmword ptr [rdi] vmovdqu xmmword ptr [rsp+20H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M23762_IG12: lea rdx, bword ptr [rsp+30H] lea r8, bword ptr [rsp+20H] mov r9d, ebx and r9d, 1 cmp dword ptr [rcx], ecx call CompareInfo:Compare(ReadOnlySpan`1,ReadOnlySpan`1,int):int:this test eax, eax sete al movzx rax, al ;; bbWeight=0.50 PerfScore 3.00 G_M23762_IG13: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M23762_IG14: mov rcx, bword ptr [rsi] mov r8d, dword ptr [rsi+8] mov rdx, bword ptr [rdi] mov eax, dword ptr [rdi+8] cmp r8d, eax je SHORT G_M23762_IG15 xor eax, eax jmp SHORT G_M23762_IG18 ;; bbWeight=0.50 PerfScore 5.75 G_M23762_IG15: test eax, eax jne SHORT G_M23762_IG17 ;; bbWeight=0.25 PerfScore 0.31 G_M23762_IG16: mov eax, 1 jmp SHORT G_M23762_IG18 ;; bbWeight=0.50 PerfScore 1.13 G_M23762_IG17: movsxd r8, r8d add r8, r8 call SpanHelpers:SequenceEqual(byref,byref,long):bool ;; bbWeight=0.50 PerfScore 0.75 G_M23762_IG18: nop ;; bbWeight=0.50 PerfScore 0.13 G_M23762_IG19: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M23762_IG20: mov rcx, bword ptr [rsi] mov r8d, dword ptr [rsi+8] mov rdx, bword ptr [rdi] mov eax, dword ptr [rdi+8] cmp r8d, eax je SHORT G_M23762_IG21 xor eax, eax jmp SHORT G_M23762_IG24 ;; bbWeight=0.50 PerfScore 5.75 G_M23762_IG21: test eax, eax jne SHORT G_M23762_IG23 ;; bbWeight=0.25 PerfScore 0.31 G_M23762_IG22: mov eax, 1 jmp SHORT G_M23762_IG24 ;; bbWeight=0.50 PerfScore 1.13 G_M23762_IG23: call CompareInfo:EqualsOrdinalIgnoreCase(byref,byref,int):bool ;; bbWeight=0.50 PerfScore 0.50 G_M23762_IG24: nop ;; bbWeight=0.50 PerfScore 0.13 G_M23762_IG25: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M23762_IG26: mov ecx, 24 mov edx, 41 call ThrowHelper:ThrowArgumentException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M23762_IG04 - G_M23762_IG02 dd G_M23762_IG04 - G_M23762_IG02 dd G_M23762_IG09 - G_M23762_IG02 dd G_M23762_IG09 - G_M23762_IG02 dd G_M23762_IG14 - G_M23762_IG02 ; Total bytes of code 367, prolog size 26, PerfScore 93.13, (MethodHash=d483a32d) for method MemoryExtensions:Equals(ReadOnlySpan`1,ReadOnlySpan`1,int):bool ; ============================================================ ; Assembly listing for method DirectoryInfo:Init(String,String,String,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 6 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T02] ( 5, 4.50) ref -> rbx class-hnd ; V02 arg2 [V02,T00] ( 17, 11.50) ref -> rsi class-hnd ; V03 arg3 [V03,T03] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T15] ( 2, 2 ) bool -> r14 ; V05 loc0 [V05 ] ( 3, 1.50) struct (16) [rsp+0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V07 tmp1 [V07,T48] ( 0, 0 ) ref -> zero-ref ; V08 tmp2 [V08,T11] ( 2, 2 ) ref -> rdx ; V09 tmp3 [V09,T04] ( 4, 3.50) ref -> rsi ; V10 tmp4 [V10,T10] ( 3, 2 ) ref -> rax ;* V11 tmp5 [V11,T26] ( 0, 0 ) ref -> zero-ref ; V12 tmp6 [V12,T05] ( 4, 3.50) ref -> rdx ;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V14 tmp8 [V14,T49] ( 0, 0 ) ref -> zero-ref ;* V15 tmp9 [V15,T27] ( 0, 0 ) ref -> zero-ref ; V16 tmp10 [V16 ] ( 5, 2.50) struct (16) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed ;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V18 tmp12 [V18 ] ( 3, 3 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed "struct address for call/obj" ; V19 tmp13 [V19,T53] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V23 tmp17 [V23,T12] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V24 tmp18 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V25 tmp19 [V25,T16] ( 2, 2 ) int -> rbx "Inlining Arg" ;* V26 tmp20 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V27 tmp21 [V27 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V28 tmp22 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V29 tmp23 [V29 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V30 tmp24 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V31 tmp25 [V31,T13] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V32 tmp26 [V32 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V33 tmp27 [V33,T17] ( 2, 2 ) int -> rdx "Inlining Arg" ;* V34 tmp28 [V34 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V35 tmp29 [V35 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V36 tmp30 [V36 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V38 tmp32 [V38,T14] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V39 tmp33 [V39 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V40 tmp34 [V40,T18] ( 2, 2 ) int -> rax "Inlining Arg" ; V41 tmp35 [V41 ] ( 2, 1 ) byref -> [rsp+0x50] do-not-enreg[X] addr-exposed V05._pointer(offs=0x00) P-DEP "field V05._pointer (fldOffset=0x0)" ; V42 tmp36 [V42 ] ( 2, 1 ) int -> [rsp+0x58] do-not-enreg[X] addr-exposed V05._length(offs=0x08) P-DEP "field V05._length (fldOffset=0x8)" ; V43 tmp37 [V43,T28] ( 2, 1 ) byref -> rcx V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ; V44 tmp38 [V44,T41] ( 2, 1 ) int -> rax V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V45 tmp39 [V45 ] ( 3, 1.50) byref -> [rsp+0x40] do-not-enreg[X] addr-exposed V16._pointer(offs=0x00) P-DEP "field V16._pointer (fldOffset=0x0)" ; V46 tmp40 [V46 ] ( 3, 1.50) int -> [rsp+0x48] do-not-enreg[X] addr-exposed V16._length(offs=0x08) P-DEP "field V16._length (fldOffset=0x8)" ; V47 tmp41 [V47,T29] ( 2, 1 ) byref -> rcx V17._pointer(offs=0x00) P-INDEP "field V17._pointer (fldOffset=0x0)" ; V48 tmp42 [V48,T42] ( 2, 1 ) int -> rdx V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)" ; V49 tmp43 [V49 ] ( 2, 1.50) byref -> [rsp+0x30] do-not-enreg[X] addr-exposed V18._pointer(offs=0x00) P-DEP "field V18._pointer (fldOffset=0x0)" ; V50 tmp44 [V50 ] ( 2, 1.50) int -> [rsp+0x38] do-not-enreg[X] addr-exposed V18._length(offs=0x08) P-DEP "field V18._length (fldOffset=0x8)" ; V51 tmp45 [V51,T21] ( 3, 1.50) byref -> rcx V20._pointer(offs=0x00) P-INDEP "field V20._pointer (fldOffset=0x0)" ; V52 tmp46 [V52,T09] ( 4, 2 ) int -> rbx V20._length(offs=0x08) P-INDEP "field V20._length (fldOffset=0x8)" ; V53 tmp47 [V53,T30] ( 2, 1 ) byref -> rcx V21._pointer(offs=0x00) P-INDEP "field V21._pointer (fldOffset=0x0)" ; V54 tmp48 [V54,T43] ( 2, 1 ) int -> rbx V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)" ; V55 tmp49 [V55,T31] ( 2, 1 ) byref -> rcx V22._pointer(offs=0x00) P-INDEP "field V22._pointer (fldOffset=0x0)" ;* V56 tmp50 [V56,T50] ( 0, 0 ) int -> zero-ref V22._length(offs=0x08) P-INDEP "field V22._length (fldOffset=0x8)" ; V57 tmp51 [V57,T32] ( 2, 1 ) byref -> rcx V24._value(offs=0x00) P-INDEP "field V24._value (fldOffset=0x0)" ; V58 tmp52 [V58,T33] ( 2, 1 ) byref -> rcx V26._pointer(offs=0x00) P-INDEP "field V26._pointer (fldOffset=0x0)" ; V59 tmp53 [V59,T44] ( 2, 1 ) int -> rax V26._length(offs=0x08) P-INDEP "field V26._length (fldOffset=0x8)" ; V60 tmp54 [V60,T22] ( 3, 1.50) byref -> rcx V28._pointer(offs=0x00) P-INDEP "field V28._pointer (fldOffset=0x0)" ; V61 tmp55 [V61,T24] ( 3, 1.50) int -> rdx V28._length(offs=0x08) P-INDEP "field V28._length (fldOffset=0x8)" ; V62 tmp56 [V62,T34] ( 2, 1 ) byref -> rcx V29._pointer(offs=0x00) P-INDEP "field V29._pointer (fldOffset=0x0)" ; V63 tmp57 [V63,T45] ( 2, 1 ) int -> rdx V29._length(offs=0x08) P-INDEP "field V29._length (fldOffset=0x8)" ; V64 tmp58 [V64,T35] ( 2, 1 ) byref -> rcx V30._pointer(offs=0x00) P-INDEP "field V30._pointer (fldOffset=0x0)" ;* V65 tmp59 [V65,T51] ( 0, 0 ) int -> zero-ref V30._length(offs=0x08) P-INDEP "field V30._length (fldOffset=0x8)" ; V66 tmp60 [V66,T36] ( 2, 1 ) byref -> rcx V32._value(offs=0x00) P-INDEP "field V32._value (fldOffset=0x0)" ; V67 tmp61 [V67,T37] ( 2, 1 ) byref -> rcx V34._pointer(offs=0x00) P-INDEP "field V34._pointer (fldOffset=0x0)" ; V68 tmp62 [V68,T46] ( 2, 1 ) int -> rdx V34._length(offs=0x08) P-INDEP "field V34._length (fldOffset=0x8)" ; V69 tmp63 [V69,T23] ( 3, 1.50) byref -> rcx V35._pointer(offs=0x00) P-INDEP "field V35._pointer (fldOffset=0x0)" ; V70 tmp64 [V70,T25] ( 3, 1.50) int -> rax V35._length(offs=0x08) P-INDEP "field V35._length (fldOffset=0x8)" ; V71 tmp65 [V71,T38] ( 2, 1 ) byref -> rcx V36._pointer(offs=0x00) P-INDEP "field V36._pointer (fldOffset=0x0)" ; V72 tmp66 [V72,T47] ( 2, 1 ) int -> rax V36._length(offs=0x08) P-INDEP "field V36._length (fldOffset=0x8)" ; V73 tmp67 [V73,T39] ( 2, 1 ) byref -> rcx V37._pointer(offs=0x00) P-INDEP "field V37._pointer (fldOffset=0x0)" ;* V74 tmp68 [V74,T52] ( 0, 0 ) int -> zero-ref V37._length(offs=0x08) P-INDEP "field V37._length (fldOffset=0x8)" ; V75 tmp69 [V75,T40] ( 2, 1 ) byref -> rcx V39._value(offs=0x00) P-INDEP "field V39._value (fldOffset=0x0)" ; V76 tmp70 [V76,T54] ( 2, 0 ) ref -> rdx "argument with side effect" ; V77 tmp71 [V77 ] ( 6, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V78 tmp72 [V78,T06] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V79 tmp73 [V79,T07] ( 3, 3 ) byref -> r8 stack-byref "BlockOp address local" ; V80 tmp74 [V80,T19] ( 2, 2 ) long -> rax "argument with side effect" ; V81 tmp75 [V81,T08] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V82 tmp76 [V82,T20] ( 2, 2 ) long -> rcx "argument with side effect" ; ; Lcl frame size = 96 G_M49143_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 96 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 vmovdqa xmmword ptr [rsp+50H], xmm4 mov rdi, rcx mov rbx, rdx mov rsi, r8 mov rbp, r9 mov r14d, dword ptr [rsp+B0H] ;; bbWeight=1 PerfScore 11.58 G_M49143_IG02: mov rdx, rbx test rdx, rdx je G_M49143_IG20 ;; bbWeight=1 PerfScore 1.50 G_M49143_IG03: lea rcx, bword ptr [rdi+16] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF test rsi, rsi jne SHORT G_M49143_IG05 ;; bbWeight=1 PerfScore 3.00 G_M49143_IG04: mov rsi, rbx ;; bbWeight=0.50 PerfScore 0.13 G_M49143_IG05: test r14b, r14b jne SHORT G_M49143_IG07 ;; bbWeight=1 PerfScore 1.25 G_M49143_IG06: mov rcx, rsi call Path:GetFullPath(String):String jmp SHORT G_M49143_IG08 ;; bbWeight=0.50 PerfScore 1.63 G_M49143_IG07: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M49143_IG08: mov rsi, rax mov rdx, rbp test rdx, rdx jne G_M49143_IG18 ;; bbWeight=1 PerfScore 1.75 G_M49143_IG09: test rsi, rsi jne SHORT G_M49143_IG10 xor rcx, rcx xor ebx, ebx jmp SHORT G_M49143_IG11 ;; bbWeight=0.50 PerfScore 1.88 G_M49143_IG10: lea rcx, bword ptr [rsi+12] mov ebx, dword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.25 G_M49143_IG11: mov eax, ebx lea rdx, bword ptr [rsp+20H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], eax lea rcx, bword ptr [rsp+20H] call PathInternal:GetRootLength(ReadOnlySpan`1):int cmp eax, ebx je SHORT G_M49143_IG14 test rsi, rsi jne SHORT G_M49143_IG12 xor rcx, rcx xor edx, edx jmp SHORT G_M49143_IG13 ;; bbWeight=0.50 PerfScore 4.63 G_M49143_IG12: lea rcx, bword ptr [rsi+12] mov edx, dword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.25 G_M49143_IG13: lea rax, bword ptr [rsp+30H] lea r8, bword ptr [rsp+20H] mov bword ptr [r8], rcx mov dword ptr [r8+8], edx mov rcx, rax lea rdx, bword ptr [rsp+20H] call PathInternal:TrimEndingDirectorySeparator(ReadOnlySpan`1):ReadOnlySpan`1 lea rcx, bword ptr [rsp+40H] lea rdx, bword ptr [rsp+20H] mov rax, bword ptr [rsp+30H] mov bword ptr [rdx], rax mov eax, dword ptr [rsp+38H] mov dword ptr [rdx+8], eax lea rdx, bword ptr [rsp+20H] call Path:GetFileName(ReadOnlySpan`1):ReadOnlySpan`1 jmp SHORT G_M49143_IG17 ;; bbWeight=0.50 PerfScore 6.63 G_M49143_IG14: test rsi, rsi jne SHORT G_M49143_IG15 xor rcx, rcx xor eax, eax jmp SHORT G_M49143_IG16 ;; bbWeight=0.50 PerfScore 1.88 G_M49143_IG15: lea rcx, bword ptr [rsi+12] mov eax, dword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.25 G_M49143_IG16: mov bword ptr [rsp+40H], rcx mov dword ptr [rsp+48H], eax ;; bbWeight=0.50 PerfScore 1.00 G_M49143_IG17: mov rcx, bword ptr [rsp+40H] mov bword ptr [rsp+50H], rcx mov ecx, dword ptr [rsp+48H] mov dword ptr [rsp+58H], ecx lea rcx, bword ptr [rsp+50H] call ReadOnlySpan`1:ToString():String:this mov rdx, rax ;; bbWeight=0.50 PerfScore 2.88 G_M49143_IG18: lea rcx, bword ptr [rdi+24] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov byte ptr [rdi+76], r14b ;; bbWeight=1 PerfScore 4.25 G_M49143_IG19: add rsp, 96 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M49143_IG20: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x6DB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 405, prolog size 38, PerfScore 92.58, (MethodHash=92dc4008) for method DirectoryInfo:Init(String,String,String,bool):this ; ============================================================ ; Assembly listing for method PathInternal:GetRootLength(ReadOnlySpan`1):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T09] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 loc0 [V01,T11] ( 6, 4 ) int -> rbx ; V02 loc1 [V02,T00] ( 20, 34.50) int -> rbp ; V03 loc2 [V03,T12] ( 4, 3.50) bool -> r14 ; V04 loc3 [V04,T13] ( 4, 3 ) bool -> rcx ; V05 loc4 [V05,T06] ( 4, 12.50) int -> rcx ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T19] ( 3, 2 ) int -> rax ; V08 tmp2 [V08,T20] ( 3, 1.50) int -> rbp ; V09 tmp3 [V09,T03] ( 2, 16 ) int -> rcx "dup spill" ; V10 tmp4 [V10,T21] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V11 tmp5 [V11,T15] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V12 tmp6 [V12,T22] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V13 tmp7 [V13,T16] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V14 tmp8 [V14,T07] ( 2, 8 ) bool -> rax "Inline return value spill temp" ; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> rax "Inlining Arg" ; V16 tmp10 [V16,T08] ( 2, 8 ) bool -> rcx "Inline return value spill temp" ; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> rcx "Inlining Arg" ; V18 tmp12 [V18,T23] ( 2, 1 ) bool -> rcx "Inline return value spill temp" ; V19 tmp13 [V19,T17] ( 3, 3 ) ushort -> rcx "Inlining Arg" ; V20 tmp14 [V20,T24] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V21 tmp15 [V21,T18] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V22 tmp16 [V22,T04] ( 11, 13.50) byref -> rsi V24._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V23 tmp17 [V23,T05] ( 10, 16.50) int -> rdi V24._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V24 tmp18 [V24 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V25 tmp19 [V25 ] ( 4, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V26 tmp20 [V26,T10] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V27 tmp21 [V27,T14] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 48 G_M9749_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+20H], rax ;; bbWeight=1 PerfScore 6.50 G_M9749_IG02: mov rsi, bword ptr [rcx] mov edi, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M9749_IG03: mov ebx, edi xor ebp, ebp lea rcx, bword ptr [rsp+20H] mov bword ptr [rcx], rsi mov dword ptr [rcx+8], ebx lea rcx, bword ptr [rsp+20H] call PathInternal:IsDevice(ReadOnlySpan`1):bool mov r14d, eax test r14d, r14d je SHORT G_M9749_IG05 ;; bbWeight=1 PerfScore 6.00 G_M9749_IG04: lea rcx, bword ptr [rsp+20H] mov bword ptr [rcx], rsi mov dword ptr [rcx+8], ebx lea rcx, bword ptr [rsp+20H] call PathInternal:IsDeviceUNC(ReadOnlySpan`1):bool jmp SHORT G_M9749_IG06 ;; bbWeight=0.50 PerfScore 3.00 G_M9749_IG05: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M9749_IG06: movzx rcx, al test r14d, r14d sete al movzx rax, al or eax, ecx je G_M9749_IG17 ;; bbWeight=1 PerfScore 3.00 G_M9749_IG07: test edi, edi jle G_M9749_IG17 cmp ebx, 0 jbe G_M9749_IG27 movzx rax, word ptr [rsi] cmp eax, 92 je SHORT G_M9749_IG08 cmp eax, 47 sete al movzx rax, al test eax, eax je SHORT G_M9749_IG17 ;; bbWeight=0.50 PerfScore 4.25 G_M9749_IG08: test ecx, ecx jne SHORT G_M9749_IG09 cmp edi, 1 jle SHORT G_M9749_IG16 cmp ebx, 1 jbe G_M9749_IG27 movzx rax, word ptr [rsi+2] cmp eax, 92 je SHORT G_M9749_IG09 cmp eax, 47 sete al movzx rax, al test eax, eax je SHORT G_M9749_IG16 ;; bbWeight=0.50 PerfScore 4.88 G_M9749_IG09: test ecx, ecx jne SHORT G_M9749_IG10 mov ebp, 2 jmp SHORT G_M9749_IG11 ;; bbWeight=0.50 PerfScore 1.75 G_M9749_IG10: mov ebp, 8 ;; bbWeight=0.50 PerfScore 0.13 G_M9749_IG11: mov ecx, 2 jmp SHORT G_M9749_IG13 ;; bbWeight=0.50 PerfScore 1.13 G_M9749_IG12: inc ebp ;; bbWeight=2 PerfScore 0.50 G_M9749_IG13: cmp ebp, edi jge G_M9749_IG25 movsxd rax, ebp movzx rax, word ptr [rsi+2*rax] cmp eax, 92 je SHORT G_M9749_IG14 cmp eax, 47 sete al movzx rax, al test eax, eax je SHORT G_M9749_IG12 ;; bbWeight=4 PerfScore 30.00 G_M9749_IG14: dec ecx test ecx, ecx jg SHORT G_M9749_IG12 ;; bbWeight=4 PerfScore 6.00 G_M9749_IG15: jmp G_M9749_IG25 ;; bbWeight=0.50 PerfScore 1.00 G_M9749_IG16: mov ebp, 1 jmp G_M9749_IG25 ;; bbWeight=0.50 PerfScore 1.13 G_M9749_IG17: test r14d, r14d je SHORT G_M9749_IG23 mov ebp, 4 jmp SHORT G_M9749_IG19 ;; bbWeight=0.50 PerfScore 1.75 G_M9749_IG18: inc ebp ;; bbWeight=2 PerfScore 0.50 G_M9749_IG19: cmp ebp, edi jge SHORT G_M9749_IG20 movsxd rcx, ebp movzx rcx, word ptr [rsi+2*rcx] cmp ecx, 92 je SHORT G_M9749_IG20 cmp ecx, 47 sete cl movzx rcx, cl test ecx, ecx je SHORT G_M9749_IG18 ;; bbWeight=4 PerfScore 30.00 G_M9749_IG20: cmp ebp, edi jge SHORT G_M9749_IG25 ;; bbWeight=4 PerfScore 5.00 G_M9749_IG21: cmp ebp, 4 jle SHORT G_M9749_IG25 movsxd rcx, ebp movzx rcx, word ptr [rsi+2*rcx] cmp ecx, 92 je SHORT G_M9749_IG22 cmp ecx, 47 sete cl movzx rcx, cl test ecx, ecx je SHORT G_M9749_IG25 ;; bbWeight=0.50 PerfScore 3.75 G_M9749_IG22: inc ebp jmp SHORT G_M9749_IG25 ;; bbWeight=0.50 PerfScore 1.13 G_M9749_IG23: cmp edi, 2 jl SHORT G_M9749_IG25 cmp ebx, 1 jbe SHORT G_M9749_IG27 cmp word ptr [rsi+2], 58 jne SHORT G_M9749_IG25 movzx rcx, word ptr [rsi] call PathInternal:IsValidDriveChar(ushort):bool test eax, eax je SHORT G_M9749_IG25 mov ebp, 2 cmp edi, 2 jle SHORT G_M9749_IG25 cmp edi, 2 jbe SHORT G_M9749_IG27 movzx rax, word ptr [rsi+4] cmp eax, 92 je SHORT G_M9749_IG24 cmp eax, 47 sete al movzx rax, al test eax, eax je SHORT G_M9749_IG25 ;; bbWeight=0.50 PerfScore 9.25 G_M9749_IG24: mov ebp, 3 ;; bbWeight=0.50 PerfScore 0.13 G_M9749_IG25: mov eax, ebp ;; bbWeight=1 PerfScore 0.25 G_M9749_IG26: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M9749_IG27: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 429, prolog size 17, PerfScore 171.78, (MethodHash=73b9d9ea) for method PathInternal:GetRootLength(ReadOnlySpan`1):int ; ============================================================ ; Assembly listing for method PathInternal:IsDevice(ReadOnlySpan`1):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T07] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V03 tmp2 [V03,T04] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V04 tmp3 [V04,T08] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V05 tmp4 [V05,T05] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V06 tmp5 [V06,T09] ( 3, 1.50) bool -> rax "Inline return value spill temp" ; V07 tmp6 [V07,T06] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V08 tmp7 [V08,T03] ( 6, 4 ) byref -> rsi V10._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V09 tmp8 [V09,T02] ( 7, 4.50) int -> rdi V10._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V10 tmp9 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V11 tmp10 [V11 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V12 tmp11 [V12,T01] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V13 cse0 [V13,T10] ( 3, 1.50) int -> rax "CSE - moderate" ; ; Lcl frame size = 56 G_M32070_IG01: push rdi push rsi sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax ;; bbWeight=1 PerfScore 3.50 G_M32070_IG02: mov rsi, bword ptr [rcx] mov edi, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M32070_IG03: lea rcx, bword ptr [rsp+28H] mov bword ptr [rcx], rsi mov dword ptr [rcx+8], edi lea rcx, bword ptr [rsp+28H] call PathInternal:IsExtended(ReadOnlySpan`1):bool test eax, eax jne G_M32070_IG12 ;; bbWeight=1 PerfScore 5.25 G_M32070_IG04: cmp edi, 4 jl SHORT G_M32070_IG10 cmp edi, 0 jbe G_M32070_IG14 movzx rax, word ptr [rsi] cmp eax, 92 je SHORT G_M32070_IG05 cmp eax, 47 sete al movzx rax, al test eax, eax je SHORT G_M32070_IG10 ;; bbWeight=0.50 PerfScore 4.25 G_M32070_IG05: cmp edi, 1 jbe SHORT G_M32070_IG14 movzx rax, word ptr [rsi+2] cmp eax, 92 je SHORT G_M32070_IG06 cmp eax, 47 sete al movzx rax, al test eax, eax je SHORT G_M32070_IG10 ;; bbWeight=0.50 PerfScore 3.63 G_M32070_IG06: cmp edi, 2 jbe SHORT G_M32070_IG14 movzx rax, word ptr [rsi+4] cmp eax, 46 je SHORT G_M32070_IG07 cmp eax, 63 jne SHORT G_M32070_IG10 ;; bbWeight=0.50 PerfScore 2.88 G_M32070_IG07: cmp edi, 3 jbe SHORT G_M32070_IG14 movzx rax, word ptr [rsi+6] cmp eax, 92 je SHORT G_M32070_IG08 cmp eax, 47 sete al movzx rax, al jmp SHORT G_M32070_IG09 ;; bbWeight=0.50 PerfScore 4.00 G_M32070_IG08: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M32070_IG09: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M32070_IG10: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M32070_IG11: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M32070_IG12: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M32070_IG13: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M32070_IG14: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 193, prolog size 13, PerfScore 50.55, (MethodHash=85e382b9) for method PathInternal:IsDevice(ReadOnlySpan`1):bool ; ============================================================ ; Assembly listing for method PathInternal:IsExtended(ReadOnlySpan`1):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 5, 3 ) byref -> rax V04._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V03 tmp2 [V03,T01] ( 6, 4 ) int -> rdx V04._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V05 cse0 [V05,T03] ( 3, 1.50) int -> rcx "CSE - moderate" ; ; Lcl frame size = 40 G_M33305_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M33305_IG02: mov rax, bword ptr [rcx] mov edx, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M33305_IG03: cmp edx, 4 jl SHORT G_M33305_IG07 ;; bbWeight=1 PerfScore 1.25 G_M33305_IG04: cmp edx, 0 jbe SHORT G_M33305_IG09 cmp word ptr [rax], 92 jne SHORT G_M33305_IG07 cmp edx, 1 jbe SHORT G_M33305_IG09 movzx rcx, word ptr [rax+2] cmp ecx, 92 je SHORT G_M33305_IG05 cmp ecx, 63 jne SHORT G_M33305_IG07 ;; bbWeight=0.50 PerfScore 5.00 G_M33305_IG05: cmp edx, 2 jbe SHORT G_M33305_IG09 cmp word ptr [rax+4], 63 jne SHORT G_M33305_IG07 cmp edx, 3 jbe SHORT G_M33305_IG09 cmp word ptr [rax+6], 92 sete al movzx rax, al ;; bbWeight=0.50 PerfScore 4.38 G_M33305_IG06: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M33305_IG07: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M33305_IG08: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M33305_IG09: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 91, prolog size 4, PerfScore 25.35, (MethodHash=0be57de6) for method PathInternal:IsExtended(ReadOnlySpan`1):bool ; ============================================================ ; Assembly listing for method PathInternal:IsValidDriveChar(ushort):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> rcx ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 cse0 [V02,T01] ( 5, 3.50) int -> rax "CSE - aggressive" ; ; Lcl frame size = 0 G_M34016_IG01: ;; bbWeight=1 PerfScore 0.00 G_M34016_IG02: movzx rax, cx cmp eax, 65 jl SHORT G_M34016_IG04 ;; bbWeight=1 PerfScore 1.50 G_M34016_IG03: cmp eax, 90 jle SHORT G_M34016_IG08 ;; bbWeight=0.50 PerfScore 0.63 G_M34016_IG04: cmp eax, 97 jl SHORT G_M34016_IG06 cmp eax, 122 setle al movzx rax, al ;; bbWeight=0.50 PerfScore 1.38 G_M34016_IG05: ret ;; bbWeight=0.50 PerfScore 0.50 G_M34016_IG06: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M34016_IG07: ret ;; bbWeight=0.50 PerfScore 0.50 G_M34016_IG08: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M34016_IG09: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 37, prolog size 0, PerfScore 8.95, (MethodHash=56ca7b1f) for method PathInternal:IsValidDriveChar(ushort):bool ; ============================================================ ; Assembly listing for method PathInternal:TrimEndingDirectorySeparator(ReadOnlySpan`1):ReadOnlySpan`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T01] ( 8, 5 ) byref -> rsi ; V01 arg0 [V01,T00] ( 4, 8 ) byref -> rdx ld-addr-op ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ; V05 tmp3 [V05,T06] ( 3, 3 ) int -> rax "Inlining Arg" ;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V07 tmp5 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V08 tmp6 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V10 tmp8 [V10,T04] ( 5, 3.50) byref -> rdi V17._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ; V11 tmp9 [V11,T03] ( 7, 4.50) int -> rbx V17._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ;* V12 tmp10 [V12,T10] ( 0, 0 ) byref -> zero-ref V03._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ;* V13 tmp11 [V13,T11] ( 0, 0 ) int -> zero-ref V03._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ; V14 tmp12 [V14,T07] ( 2, 1 ) byref -> rdi V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V15 tmp13 [V15,T09] ( 2, 1 ) int -> rax V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V16 tmp14 [V16,T08] ( 2, 1 ) byref -> rdi V09._value(offs=0x00) P-INDEP "field V09._value (fldOffset=0x0)" ;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V18 tmp16 [V18 ] ( 4, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V19 tmp17 [V19,T02] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V20 tmp18 [V20,T05] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 48 G_M54344_IG01: push rdi push rsi push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 4.75 G_M54344_IG02: mov rdi, bword ptr [rdx] mov ebx, dword ptr [rdx+8] ;; bbWeight=1 PerfScore 4.00 G_M54344_IG03: lea rcx, bword ptr [rsp+20H] mov bword ptr [rcx], rdi mov dword ptr [rcx+8], ebx lea rcx, bword ptr [rsp+20H] call PathInternal:EndsInDirectorySeparator(ReadOnlySpan`1):bool test eax, eax je SHORT G_M54344_IG05 ;; bbWeight=1 PerfScore 5.25 G_M54344_IG04: lea rcx, bword ptr [rsp+20H] mov bword ptr [rcx], rdi mov dword ptr [rcx+8], ebx lea rcx, bword ptr [rsp+20H] call PathInternal:GetRootLength(ReadOnlySpan`1):int cmp eax, ebx jne SHORT G_M54344_IG07 ;; bbWeight=0.50 PerfScore 2.63 G_M54344_IG05: mov bword ptr [rsi], rdi mov dword ptr [rsi+8], ebx mov rax, rsi ;; bbWeight=0.50 PerfScore 1.13 G_M54344_IG06: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M54344_IG07: lea eax, [rbx-1] mov edx, eax mov ecx, ebx cmp rdx, rcx ja SHORT G_M54344_IG10 ;; bbWeight=0.50 PerfScore 1.13 G_M54344_IG08: mov bword ptr [rsi], rdi mov dword ptr [rsi+8], eax mov rax, rsi ;; bbWeight=0.50 PerfScore 1.13 G_M54344_IG09: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M54344_IG10: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 125, prolog size 14, PerfScore 35.25, (MethodHash=45362bb7) for method PathInternal:TrimEndingDirectorySeparator(ReadOnlySpan`1):ReadOnlySpan`1 ; ============================================================ ; Assembly listing for method PathInternal:EndsInDirectorySeparator(ReadOnlySpan`1):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 3, 3 ) int -> rcx "Span.get_Item index" ; V03 tmp2 [V03,T04] ( 3, 1.50) bool -> rax "Inline return value spill temp" ; V04 tmp3 [V04,T03] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V05 tmp4 [V05,T05] ( 2, 1.50) byref -> rax V07._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V06 tmp5 [V06,T01] ( 4, 3 ) int -> rdx V07._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V07 tmp6 [V07 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; ; Lcl frame size = 40 G_M1931_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M1931_IG02: mov rax, bword ptr [rcx] mov edx, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M1931_IG03: test edx, edx jle SHORT G_M1931_IG07 ;; bbWeight=1 PerfScore 1.25 G_M1931_IG04: lea ecx, [rdx-1] cmp ecx, edx jae SHORT G_M1931_IG09 movsxd rdx, ecx movzx rax, word ptr [rax+2*rdx] cmp eax, 92 je SHORT G_M1931_IG05 cmp eax, 47 sete al movzx rax, al jmp SHORT G_M1931_IG06 ;; bbWeight=0.50 PerfScore 4.38 G_M1931_IG05: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M1931_IG06: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M1931_IG07: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M1931_IG08: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M1931_IG09: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 67, prolog size 4, PerfScore 18.08, (MethodHash=27d6f874) for method PathInternal:EndsInDirectorySeparator(ReadOnlySpan`1):bool ; ============================================================ ; Assembly listing for method Path:GetFileName(ReadOnlySpan`1):ReadOnlySpan`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T04] ( 8, 5 ) byref -> rsi ; V01 arg0 [V01,T03] ( 4, 8 ) byref -> rdx ld-addr-op ; V02 loc0 [V02,T12] ( 2, 3 ) int -> rax ; V03 loc1 [V03 ] ( 2, 2 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V04 loc2 [V04,T00] ( 9, 32 ) int -> rdx ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T01] ( 2, 32 ) int -> rdx "dup spill" ; V07 tmp2 [V07,T07] ( 2, 4 ) bool -> rcx "Inline return value spill temp" ; V08 tmp3 [V08,T02] ( 3, 12 ) ushort -> rcx "Inlining Arg" ; V09 tmp4 [V09,T10] ( 3, 3 ) int -> rax "Inlining Arg" ; V10 tmp5 [V10,T11] ( 3, 3 ) int -> rcx "Inlining Arg" ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V13 tmp8 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V14 tmp9 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V15 tmp10 [V15,T08] ( 5, 5 ) byref -> rdi V22._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ; V16 tmp11 [V16,T05] ( 7, 6.50) int -> rbx V22._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ; V17 tmp12 [V17 ] ( 1, 1 ) byref -> [rsp+0x30] do-not-enreg[X] addr-exposed V03._pointer(offs=0x00) P-DEP "field V03._pointer (fldOffset=0x0)" ; V18 tmp13 [V18 ] ( 2, 2 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed V03._length(offs=0x08) P-DEP "field V03._length (fldOffset=0x8)" ; V19 tmp14 [V19,T13] ( 2, 1 ) byref -> rax V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ; V20 tmp15 [V20,T15] ( 2, 1 ) int -> rcx V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ; V21 tmp16 [V21,T14] ( 2, 1 ) byref -> rax V14._value(offs=0x00) P-INDEP "field V14._value (fldOffset=0x0)" ;* V22 tmp17 [V22 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V23 tmp18 [V23 ] ( 2, 4 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V24 tmp19 [V24,T06] ( 3, 6 ) byref -> rdx stack-byref "BlockOp address local" ; V25 tmp20 [V25,T09] ( 2, 4 ) long -> rcx "argument with side effect" ; ; Lcl frame size = 64 G_M15681_IG01: push rdi push rsi push rbx sub rsp, 64 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 mov rsi, rcx ;; bbWeight=1 PerfScore 5.83 G_M15681_IG02: mov rdi, bword ptr [rdx] mov ebx, dword ptr [rdx+8] ;; bbWeight=1 PerfScore 4.00 G_M15681_IG03: lea rcx, bword ptr [rsp+30H] lea rdx, bword ptr [rsp+20H] mov bword ptr [rdx], rdi mov dword ptr [rdx+8], ebx lea rdx, bword ptr [rsp+20H] call Path:GetPathRoot(ReadOnlySpan`1):ReadOnlySpan`1 mov eax, dword ptr [rsp+38H] mov edx, ebx jmp SHORT G_M15681_IG05 ;; bbWeight=1 PerfScore 7.75 G_M15681_IG04: cmp edx, eax jl SHORT G_M15681_IG08 cmp edx, ebx jae SHORT G_M15681_IG12 movsxd rcx, edx movzx rcx, word ptr [rdi+2*rcx] cmp ecx, 92 je SHORT G_M15681_IG08 cmp ecx, 47 sete cl movzx rcx, cl test ecx, ecx jne SHORT G_M15681_IG08 ;; bbWeight=2 PerfScore 17.50 G_M15681_IG05: dec edx test edx, edx jge SHORT G_M15681_IG04 ;; bbWeight=8 PerfScore 12.00 G_M15681_IG06: mov bword ptr [rsi], rdi mov dword ptr [rsi+8], ebx mov rax, rsi ;; bbWeight=0.50 PerfScore 1.13 G_M15681_IG07: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M15681_IG08: lea eax, [rdx+1] mov ecx, ebx sub ecx, edx dec ecx mov edx, eax mov r8d, ecx add rdx, r8 mov r8d, ebx cmp rdx, r8 ja SHORT G_M15681_IG11 ;; bbWeight=0.50 PerfScore 1.75 G_M15681_IG09: movsxd rax, eax lea rax, bword ptr [rdi+2*rax] mov bword ptr [rsi], rax mov dword ptr [rsi+8], ecx mov rax, rsi ;; bbWeight=0.50 PerfScore 1.50 G_M15681_IG10: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M15681_IG11: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 G_M15681_IG12: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 183, prolog size 26, PerfScore 72.81, (MethodHash=9233c2be) for method Path:GetFileName(ReadOnlySpan`1):ReadOnlySpan`1 ; ============================================================ ; Assembly listing for method Path:GetPathRoot(ReadOnlySpan`1):ReadOnlySpan`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T01] ( 11, 6.50) byref -> rdi ; V01 arg0 [V01,T00] ( 6, 9 ) byref -> rsi ld-addr-op ; V02 loc0 [V02,T02] ( 4, 2 ) int -> rax ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V06 tmp3 [V06,T03] ( 2, 2 ) byref -> rdx "Inlining Arg" ;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref V19._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref V19._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ; V12 tmp9 [V12,T04] ( 2, 1 ) byref -> rax V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ;* V13 tmp10 [V13,T09] ( 0, 0 ) int -> zero-ref V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V14 tmp11 [V14,T05] ( 2, 1 ) byref -> rdx V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ; V15 tmp12 [V15,T08] ( 2, 1 ) int -> rax V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ; V16 tmp13 [V16,T06] ( 2, 1 ) byref -> rdx V08._value(offs=0x00) P-INDEP "field V08._value (fldOffset=0x0)" ; V17 tmp14 [V17,T07] ( 2, 1 ) byref -> rax V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ;* V18 tmp15 [V18,T10] ( 0, 0 ) int -> zero-ref V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V20 tmp17 [V20 ] ( 4, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; ; Lcl frame size = 56 G_M46219_IG01: push rdi push rsi sub rsp, 56 vzeroupper mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 3.75 G_M46219_IG02: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rsp+28H], xmm0 ;; bbWeight=1 PerfScore 3.00 G_M46219_IG03: lea rcx, bword ptr [rsp+28H] call PathInternal:IsEffectivelyEmpty(ReadOnlySpan`1):bool test eax, eax je SHORT G_M46219_IG06 ;; bbWeight=1 PerfScore 2.75 G_M46219_IG04: xor rax, rax mov bword ptr [rdi], rax xor eax, eax mov dword ptr [rdi+8], eax mov rax, rdi ;; bbWeight=0.50 PerfScore 1.38 G_M46219_IG05: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M46219_IG06: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rsp+28H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M46219_IG07: lea rcx, bword ptr [rsp+28H] call PathInternal:GetRootLength(ReadOnlySpan`1):int test eax, eax jle SHORT G_M46219_IG10 mov edx, eax mov ecx, dword ptr [rsi+8] cmp rdx, rcx ja SHORT G_M46219_IG12 ;; bbWeight=0.50 PerfScore 3.13 G_M46219_IG08: mov rdx, bword ptr [rsi] mov bword ptr [rdi], rdx mov dword ptr [rdi+8], eax mov rax, rdi ;; bbWeight=0.50 PerfScore 2.13 G_M46219_IG09: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M46219_IG10: xor rax, rax mov bword ptr [rdi], rax xor eax, eax mov dword ptr [rdi+8], eax mov rax, rdi ;; bbWeight=0.50 PerfScore 1.38 G_M46219_IG11: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M46219_IG12: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 138, prolog size 9, PerfScore 36.58, (MethodHash=e7dc4b74) for method Path:GetPathRoot(ReadOnlySpan`1):ReadOnlySpan`1 ; ============================================================ ; Assembly listing for method ReadOnlySpan`1:ToString():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) byref -> rcx this ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 4 ) byref -> rdx "Inlining Arg" ;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V05 tmp4 [V05,T03] ( 2, 4 ) int -> rcx "Inlining Arg" ; V06 tmp5 [V06,T04] ( 2, 2 ) byref -> rdx V02._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ; V07 tmp6 [V07,T06] ( 2, 2 ) int -> rcx V02._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V08 tmp7 [V08,T05] ( 2, 2 ) byref -> rdx V04._value(offs=0x00) P-INDEP "field V04._value (fldOffset=0x0)" ; V09 tmp8 [V09 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V10 tmp9 [V10,T01] ( 3, 6 ) byref -> rax stack-byref "BlockOp address local" ; ; Lcl frame size = 56 G_M8903_IG01: sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax ;; bbWeight=1 PerfScore 1.50 G_M8903_IG02: mov rdx, bword ptr [rcx] mov ecx, dword ptr [rcx+8] lea rax, bword ptr [rsp+28H] mov bword ptr [rax], rdx mov dword ptr [rax+8], ecx lea rdx, bword ptr [rsp+28H] xor rcx, rcx call String:.ctor(ReadOnlySpan`1):this nop ;; bbWeight=1 PerfScore 8.50 G_M8903_IG03: add rsp, 56 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 46, prolog size 11, PerfScore 15.85, (MethodHash=68e2dd38) for method ReadOnlySpan`1:ToString():String:this ; ============================================================ ; Assembly listing for method CoreRuntime:GetParsableVersionPart(String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 2, 4 ) ref -> rdx class-hnd "dup spill" ; V03 tmp2 [V03,T06] ( 2, 2 ) ref -> rsi ; V04 tmp3 [V04,T04] ( 4, 3.50) ref -> rdx ; V05 tmp4 [V05,T00] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp5 [V06,T05] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V07 tmp6 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V08 tmp7 [V08,T03] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V09 cse0 [V09,T07] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 40 G_M39069_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M39069_IG02: mov rcx, 0xD1FFAB1E mov edx, 952 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rcx] test rdx, rdx jne SHORT G_M39069_IG05 ;; bbWeight=1 PerfScore 5.00 G_M39069_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je SHORT G_M39069_IG07 ;; bbWeight=0.50 PerfScore 2.50 G_M39069_IG04: lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, rdi ;; bbWeight=0.50 PerfScore 2.25 G_M39069_IG05: mov rcx, rsi call Enumerable:TakeWhile(IEnumerable`1,Func`2):IEnumerable`1 mov rcx, rax call Enumerable:ToArray(IEnumerable`1):ref mov rdx, rax xor rcx, rcx call String:.ctor(ref):this nop ;; bbWeight=1 PerfScore 4.25 G_M39069_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M39069_IG07: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 167, prolog size 6, PerfScore 35.45, (MethodHash=f6546762) for method CoreRuntime:GetParsableVersionPart(String):String ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method Enumerable:TakeWhile(IEnumerable`1,Func`2):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M29361_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M29361_IG02: test rcx, rcx je SHORT G_M29361_IG05 ;; bbWeight=1 PerfScore 1.25 G_M29361_IG03: test rdx, rdx je SHORT G_M29361_IG06 ;; bbWeight=1 PerfScore 1.25 G_M29361_IG04: add rsp, 40 jmp Enumerable:TakeWhileIterator(IEnumerable`1,Func`2):IEnumerable`1 ;; bbWeight=1 PerfScore 2.25 G_M29361_IG05: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M29361_IG06: mov ecx, 12 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 45, prolog size 4, PerfScore 9.50, (MethodHash=d79f8d4e) for method Enumerable:TakeWhile(IEnumerable`1,Func`2):IEnumerable`1 ; ============================================================ ; Assembly listing for method Enumerable:TakeWhileIterator(IEnumerable`1,Func`2):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 6, 12 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V05 tmp3 [V05,T04] ( 4, 3.25) ref -> rcx ; ; Lcl frame size = 32 G_M61075_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M61075_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov dword ptr [rbx+48], -2 mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M61075_IG04 ;; bbWeight=1 PerfScore 7.25 G_M61075_IG03: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M61075_IG04: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbx+52], eax lea rcx, bword ptr [rbx+16] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rbx ;; bbWeight=1 PerfScore 7.75 G_M61075_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 120, prolog size 7, PerfScore 33.81, (MethodHash=3f7c116c) for method Enumerable:TakeWhileIterator(IEnumerable`1,Func`2):IEnumerable`1 ; ============================================================ ; Assembly listing for method Enumerable:ToArray(IEnumerable`1):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rsi class-hnd ; V01 loc0 [V01,T01] ( 3, 2.50) ref -> rax class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M31344_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M31344_IG02: test rsi, rsi je SHORT G_M31344_IG08 ;; bbWeight=1 PerfScore 1.25 G_M31344_IG03: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFINTERFACE test rax, rax jne SHORT G_M31344_IG06 ;; bbWeight=1 PerfScore 2.75 G_M31344_IG04: mov rcx, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M31344_IG05: add rsp, 32 pop rsi jmp EnumerableHelpers:ToArray(IEnumerable`1):ref ;; bbWeight=0.50 PerfScore 1.38 G_M31344_IG06: mov rcx, rax mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=0.50 PerfScore 1.38 G_M31344_IG07: add rsp, 32 pop rsi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.38 G_M31344_IG08: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 94, prolog size 8, PerfScore 19.15, (MethodHash=1832858f) for method Enumerable:ToArray(IEnumerable`1):ref ; ============================================================ ; Assembly listing for method EnumerableHelpers:ToArray(IEnumerable`1):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 3.50) ref -> rsi class-hnd ; V01 loc0 [V01,T01] ( 4, 3 ) ref -> rdi class-hnd ; V02 loc1 [V02 ] ( 3, 1.50) struct (48) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V03 loc2 [V03,T03] ( 3, 1.50) int -> rax ; V04 loc3 [V04,T02] ( 3, 1.50) ref -> rsi class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 88 G_M41797_IG01: push rdi push rsi sub rsp, 88 xor rax, rax mov qword ptr [rsp+28H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 mov qword ptr [rsp+50H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 7.08 G_M41797_IG02: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFINTERFACE mov rdi, rax test rdi, rdi je G_M41797_IG07 ;; bbWeight=1 PerfScore 3.00 G_M41797_IG03: mov rcx, rdi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]ICollection`1:get_Count():int:this test eax, eax jne SHORT G_M41797_IG05 mov rcx, 0xD1FFAB1E mov edx, 7 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 4.38 G_M41797_IG04: add rsp, 88 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M41797_IG05: movsxd rdx, eax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rsi, rax mov rcx, rdi mov rdx, rsi mov r11, 0xD1FFAB1E xor r8d, r8d mov rax, 0xD1FFAB1E call qword ptr [rax]ICollection`1:CopyTo(ref,int):this mov rax, rsi ;; bbWeight=0.50 PerfScore 3.13 G_M41797_IG06: add rsp, 88 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M41797_IG07: lea rcx, bword ptr [rsp+28H] mov edx, 0xD1FFAB1E call LargeArrayBuilder`1:.ctor(int):this lea rcx, bword ptr [rsp+28H] mov rdx, rsi call LargeArrayBuilder`1:AddRange(IEnumerable`1):this lea rcx, bword ptr [rsp+28H] call LargeArrayBuilder`1:ToArray():ref:this nop ;; bbWeight=0.50 PerfScore 2.63 G_M41797_IG08: add rsp, 88 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 244, prolog size 34, PerfScore 48.28, (MethodHash=40d45cba) for method EnumerableHelpers:ToArray(IEnumerable`1):ref ; ============================================================ ; Assembly listing for method LargeArrayBuilder`1:.ctor(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) byref -> rsi this ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> rbx class-hnd "dup spill" ; ; Lcl frame size = 32 G_M25502_IG01: push rdi push rsi push rbx sub rsp, 32 vzeroupper mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 4.75 G_M25502_IG02: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsi], xmm0 vmovdqu xmmword ptr [rsi+16], xmm0 vmovdqu xmmword ptr [rsi+32], xmm0 mov rcx, 0xD1FFAB1E mov edx, 7 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rdx, 0xD1FFAB1E mov rbx, gword ptr [rdx] lea rcx, bword ptr [rsi+8] mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, rsi mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov dword ptr [rsi+16], edi ;; bbWeight=1 PerfScore 11.33 G_M25502_IG03: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 100, prolog size 10, PerfScore 29.23, (MethodHash=95479c61) for method LargeArrayBuilder`1:.ctor(int):this ; ============================================================ ; Assembly listing for method EmptyArray`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M47611_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M47611_IG02: mov rcx, 0xD1FFAB1E xor rdx, rdx call CORINFO_HELP_NEWARR_1_VC mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 3.25 G_M47611_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 52, prolog size 10, PerfScore 12.20, (MethodHash=aece4604) for method EmptyArray`1:.cctor() ; ============================================================ ; Assembly listing for method LargeArrayBuilder`1:AddRange(IEnumerable`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 9, 10 ) byref -> rsi this ; V01 arg1 [V01,T04] ( 3, 3 ) ref -> rdx class-hnd ; V02 loc0 [V02,T01] ( 7, 11 ) ref -> [rbp-0x20] EH do-not-enreg[] class-hnd EH-live ; V03 loc1 [V03 ] ( 4, 9 ) ref -> [rbp-0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V04 loc2 [V04 ] ( 8, 19 ) int -> [rbp-0x18] do-not-enreg[X] addr-exposed ld-addr-op ; V05 loc3 [V05,T02] ( 3, 8 ) ushort -> rax ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 PSPSym [V07 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "PSPSym" ; V08 tmp2 [V08,T05] ( 2, 2 ) ref -> rax "optAddCopies" ; V09 cse0 [V09,T03] ( 2, 8 ) int -> r8 "CSE - aggressive" ; ; Lcl frame size = 72 G_M21793_IG01: push rbp push rsi sub rsp, 72 lea rbp, [rsp+50H] xor rax, rax mov qword ptr [rbp-10H], rax mov qword ptr [rbp-30H], rsp mov rsi, rcx ;; bbWeight=1 PerfScore 5.25 G_M21793_IG02: mov rcx, rdx mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-20H], rax ;; bbWeight=1 PerfScore 4.75 G_M21793_IG03: mov rcx, gword ptr [rsi+8] mov gword ptr [rbp-10H], rcx mov ecx, dword ptr [rsi+20] mov dword ptr [rbp-18H], ecx mov rcx, gword ptr [rbp-20H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M21793_IG08 ;; bbWeight=1 PerfScore 11.75 G_M21793_IG04: mov rcx, gword ptr [rbp-20H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():ushort:this mov r8, gword ptr [rbp-10H] mov r8d, dword ptr [r8+8] cmp dword ptr [rbp-18H], r8d jb SHORT G_M21793_IG06 ;; bbWeight=4 PerfScore 38.00 G_M21793_IG05: lea r8, [rbp-10H] lea r9, [rbp-18H] mov rcx, rsi mov edx, eax call LargeArrayBuilder`1:AddWithBufferAllocation(ushort,byref,byref):this jmp SHORT G_M21793_IG07 ;; bbWeight=2 PerfScore 9.00 G_M21793_IG06: mov rcx, gword ptr [rbp-10H] mov r11d, dword ptr [rbp-18H] movsxd r11, r11d mov word ptr [rcx+2*r11+16], ax ;; bbWeight=2 PerfScore 6.50 G_M21793_IG07: mov ecx, dword ptr [rbp-18H] inc ecx mov dword ptr [rbp-18H], ecx mov rcx, gword ptr [rbp-20H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M21793_IG04 ;; bbWeight=4 PerfScore 32.00 G_M21793_IG08: mov ecx, dword ptr [rbp-18H] sub ecx, dword ptr [rsi+20] add dword ptr [rsi+24], ecx mov ecx, dword ptr [rbp-18H] mov dword ptr [rsi+20], ecx ;; bbWeight=1 PerfScore 10.00 G_M21793_IG09: mov rcx, gword ptr [rbp-20H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this nop ;; bbWeight=1 PerfScore 4.75 G_M21793_IG10: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 G_M21793_IG11: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=0 PerfScore 0.00 G_M21793_IG12: cmp gword ptr [rbp-20H], 0 je SHORT G_M21793_IG13 mov rcx, gword ptr [rbp-20H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M21793_IG13: nop ;; bbWeight=0 PerfScore 0.00 G_M21793_IG14: add rsp, 40 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 321, prolog size 24, PerfScore 156.60, (MethodHash=97daaade) for method LargeArrayBuilder`1:AddRange(IEnumerable`1):this ; ============================================================ ; Assembly listing for method d__217`1:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 6.50) ref -> rsi this class-hnd ; V01 loc0 [V01,T01] ( 5, 4 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 4, 4 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T05] ( 2, 2 ) int -> rdi "impAppendStmt" ; V05 tmp3 [V05,T03] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V06 tmp4 [V06,T06] ( 4, 1.75) ref -> rcx ; V07 tmp5 [V07,T04] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V08 tmp6 [V08,T07] ( 4, 1.75) ref -> rcx ; ; Lcl frame size = 40 G_M4785_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M4785_IG02: cmp dword ptr [rsi+48], -2 jne SHORT G_M4785_IG06 ;; bbWeight=1 PerfScore 3.00 G_M4785_IG03: mov edi, dword ptr [rsi+52] mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M4785_IG05 ;; bbWeight=0.50 PerfScore 3.38 G_M4785_IG04: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M4785_IG05: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this cmp eax, edi jne SHORT G_M4785_IG06 xor ecx, ecx mov dword ptr [rsi+48], ecx mov rdi, rsi jmp SHORT G_M4785_IG09 ;; bbWeight=0.50 PerfScore 3.88 G_M4785_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax xor ecx, ecx mov dword ptr [rdi+48], ecx mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M4785_IG08 ;; bbWeight=0.50 PerfScore 3.75 G_M4785_IG07: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M4785_IG08: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rdi+52], eax ;; bbWeight=0.50 PerfScore 2.00 G_M4785_IG09: mov rdx, gword ptr [rsi+16] lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsi+32] lea rcx, bword ptr [rdi+24] call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=1 PerfScore 7.25 G_M4785_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 182, prolog size 6, PerfScore 46.83, (MethodHash=18c0ed4e) for method d__217`1:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method d__217`1:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 19, 10.25) ref -> [rbp+0x10] EH do-not-enreg[] this class-hnd EH-live ; V01 loc0 [V01,T02] ( 4, 2.50) bool -> rax ; V02 loc1 [V02,T03] ( 3, 2.50) int -> rcx ; V03 loc2 [V03,T04] ( 3, 1.50) ushort -> rsi ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 PSPSym [V05 ] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[X] addr-exposed "PSPSym" ;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref "optAddCopies" ; V07 rat0 [V07,T01] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 40 G_M44698_IG01: push rbp push rsi sub rsp, 40 lea rbp, [rsp+30H] mov qword ptr [rbp-10H], rsp mov gword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 4.75 G_M44698_IG02: mov rcx, gword ptr [rbp+10H] mov ecx, dword ptr [rcx+48] test ecx, ecx je SHORT G_M44698_IG04 ;; bbWeight=1 PerfScore 4.25 G_M44698_IG03: cmp ecx, 1 je G_M44698_IG06 xor eax, eax jmp G_M44698_IG10 ;; bbWeight=0.50 PerfScore 1.75 G_M44698_IG04: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+48], -1 mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+8] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+40] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+48], -3 mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+40] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M44698_IG07 ;; bbWeight=0.50 PerfScore 10.50 G_M44698_IG05: mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+40] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():ushort:this mov esi, eax mov rcx, gword ptr [rbp+10H] mov rax, gword ptr [rcx+24] mov rcx, gword ptr [rax+8] mov edx, esi call qword ptr [rax+24]Func`2:Invoke(ushort):bool:this test eax, eax je SHORT G_M44698_IG07 mov rcx, gword ptr [rbp+10H] mov word ptr [rcx+56], si mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+48], 1 mov eax, 1 jmp SHORT G_M44698_IG10 ;; bbWeight=0.50 PerfScore 11.25 G_M44698_IG06: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+48], -3 mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+40] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M44698_IG05 ;; bbWeight=0.50 PerfScore 4.88 G_M44698_IG07: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+48], -1 mov rcx, gword ptr [rbp+10H] cmp gword ptr [rcx+40], 0 je SHORT G_M44698_IG09 ;; bbWeight=0.50 PerfScore 3.00 G_M44698_IG08: mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+40] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0.25 PerfScore 1.63 G_M44698_IG09: mov rax, gword ptr [rbp+10H] xor rcx, rcx mov gword ptr [rax+40], rcx xor eax, eax ;; bbWeight=0.50 PerfScore 1.25 G_M44698_IG10: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 G_M44698_IG11: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+30H] ;; bbWeight=0 PerfScore 0.00 G_M44698_IG12: mov rcx, gword ptr [rbp+10H] mov rax, 0xD1FFAB1E call qword ptr [rax]d__217`1:System.IDisposable.Dispose():this nop ;; bbWeight=0 PerfScore 0.00 G_M44698_IG13: add rsp, 40 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 390, prolog size 19, PerfScore 84.75, (MethodHash=3fc35165) for method d__217`1:MoveNext():bool:this ; ============================================================ ; Assembly listing for method String:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 40 G_M7803_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M7803_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov dword ptr [rdi+16], -1 mov rax, rdi ;; bbWeight=1 PerfScore 4.50 G_M7803_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 56, prolog size 6, PerfScore 14.85, (MethodHash=a52fe184) for method String:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method CharEnumerator:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5.50) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 3, 3 ) ref -> rdx "arr expr" ; V03 tmp2 [V03,T03] ( 3, 3 ) int -> rax "index expr" ; V04 cse0 [V04,T05] ( 3, 1.50) int -> rax "CSE - moderate" ; V05 cse1 [V05,T01] ( 4, 3 ) ref -> rdx "CSE - aggressive" ; V06 cse2 [V06,T04] ( 3, 2.50) int -> rax "CSE - aggressive" ; ; Lcl frame size = 40 G_M42603_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M42603_IG02: mov eax, dword ptr [rcx+16] mov rdx, gword ptr [rcx+8] mov r8d, dword ptr [rdx+8] dec r8d cmp eax, r8d jge SHORT G_M42603_IG05 ;; bbWeight=1 PerfScore 7.50 G_M42603_IG03: inc eax mov dword ptr [rcx+16], eax cmp eax, dword ptr [rdx+8] jae SHORT G_M42603_IG07 movsxd rax, eax movzx rax, word ptr [rdx+2*rax+12] mov word ptr [rcx+20], ax mov eax, 1 ;; bbWeight=0.50 PerfScore 3.88 G_M42603_IG04: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M42603_IG05: mov eax, dword ptr [rdx+8] mov dword ptr [rcx+16], eax xor eax, eax ;; bbWeight=0.50 PerfScore 1.63 G_M42603_IG06: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M42603_IG07: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 74, prolog size 4, PerfScore 21.90, (MethodHash=29015994) for method CharEnumerator:MoveNext():bool:this ; ============================================================ ; Assembly listing for method CharEnumerator:get_Current():ushort:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp3 [V04,T04] ( 2, 0 ) ref -> rcx "argument with side effect" ; V05 tmp4 [V05,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; V06 tmp5 [V06,T06] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp6 [V07,T07] ( 2, 0 ) ref -> rdx "argument with side effect" ; V08 cse0 [V08,T01] ( 3, 3 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 32 G_M54100_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M54100_IG02: mov eax, dword ptr [rcx+16] cmp eax, -1 je SHORT G_M54100_IG06 ;; bbWeight=1 PerfScore 3.25 G_M54100_IG03: mov rdx, gword ptr [rcx+8] cmp dword ptr [rdx+8], eax jle SHORT G_M54100_IG07 ;; bbWeight=1 PerfScore 5.00 G_M54100_IG04: movzx rax, word ptr [rcx+20] ;; bbWeight=1 PerfScore 2.00 G_M54100_IG05: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M54100_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xCFC9 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M54100_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xCF4D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 167, prolog size 5, PerfScore 29.95, (MethodHash=1e062cab) for method CharEnumerator:get_Current():ushort:this ; ============================================================ ; Assembly listing for method <>c:b__14_0(ushort):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) ushort -> rdx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 4, 2 ) bool -> rdi "Inline return value spill temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V07 tmp5 [V07 ] ( 0, 0 ) byref -> zero-ref V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ;* V08 tmp6 [V08 ] ( 0, 0 ) int -> zero-ref V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ;* V09 tmp7 [V09 ] ( 0, 0 ) byref -> zero-ref V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref V06._value(offs=0x00) P-INDEP "field V06._value (fldOffset=0x0)" ; V12 cse0 [V12,T01] ( 5, 3.50) int -> rsi "CSE - aggressive" ; ; Lcl frame size = 40 G_M42244_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M42244_IG02: movzx rsi, dx cmp esi, 256 jae SHORT G_M42244_IG04 ;; bbWeight=1 PerfScore 1.50 G_M42244_IG03: lea ecx, [rsi-48] cmp ecx, 9 setbe dil movzx rdi, dil test edi, edi jne SHORT G_M42244_IG07 jmp SHORT G_M42244_IG05 ;; bbWeight=0.50 PerfScore 2.63 G_M42244_IG04: mov ecx, esi call CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(int):int cmp eax, 8 sete dil movzx rdi, dil test edi, edi jne SHORT G_M42244_IG07 ;; bbWeight=0.50 PerfScore 2.00 G_M42244_IG05: cmp esi, 46 sete al movzx rax, al ;; bbWeight=0.50 PerfScore 0.75 G_M42244_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M42244_IG07: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M42244_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 87, prolog size 6, PerfScore 20.20, (MethodHash=2ef15afb) for method <>c:b__14_0(ushort):bool:this ; ============================================================ ; Assembly listing for method d__217`1:System.Collections.Generic.IEnumerator.get_Current():ushort:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M15482_IG01: ;; bbWeight=1 PerfScore 0.00 G_M15482_IG02: movzx rax, word ptr [rcx+56] ;; bbWeight=1 PerfScore 2.00 G_M15482_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=4db9c385) for method d__217`1:System.Collections.Generic.IEnumerator.get_Current():ushort:this ; ============================================================ ; Assembly listing for method LargeArrayBuilder`1:AddWithBufferAllocation(ushort,byref,byref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 10 ) byref -> rsi this ; V01 arg1 [V01,T05] ( 3, 3 ) ushort -> rbp ; V02 arg2 [V02,T04] ( 3, 3 ) byref -> rbx ; V03 arg3 [V03,T01] ( 6, 6 ) byref -> rdi ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 3, 6 ) ref -> rax "arr expr" ; V06 tmp2 [V06,T03] ( 3, 6 ) int -> rdx "index expr" ; ; Lcl frame size = 40 G_M42301_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov ebp, edx mov rbx, r8 mov rdi, r9 ;; bbWeight=1 PerfScore 5.25 G_M42301_IG02: mov ecx, dword ptr [rdi] sub ecx, dword ptr [rsi+20] add dword ptr [rsi+24], ecx mov ecx, dword ptr [rdi] mov dword ptr [rsi+20], ecx mov rcx, rsi call LargeArrayBuilder`1:AllocateBuffer():this mov rdx, gword ptr [rsi+8] mov rcx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov eax, dword ptr [rsi+20] mov dword ptr [rdi], eax mov rax, gword ptr [rsi+8] mov edx, dword ptr [rdi] cmp edx, dword ptr [rax+8] jae SHORT G_M42301_IG04 movsxd rdx, edx mov word ptr [rax+2*rdx+16], bp ;; bbWeight=1 PerfScore 27.75 G_M42301_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M42301_IG04: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 91, prolog size 8, PerfScore 45.35, (MethodHash=33125ac2) for method LargeArrayBuilder`1:AddWithBufferAllocation(ushort,byref,byref):this ; ============================================================ ; Assembly listing for method LargeArrayBuilder`1:AllocateBuffer():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 16, 9.50) byref -> rsi this ;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ; V02 loc1 [V02,T12] ( 3, 1.50) int -> rdi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T06] ( 4, 2 ) int -> rdi ; V05 tmp2 [V05,T13] ( 3, 1.50) int -> rdx "Inline return value spill temp" ; V06 tmp3 [V06,T03] ( 3, 3 ) int -> rdx "Inlining Arg" ; V07 tmp4 [V07,T01] ( 8, 7 ) byref -> rdi "Inlining Arg" ; V08 tmp5 [V08,T10] ( 2, 2 ) int -> r8 "impAppendStmt" ; V09 tmp6 [V09,T07] ( 2, 2 ) ref -> rbx class-hnd "Inlining Arg" ; V10 tmp7 [V10,T14] ( 3, 1.50) int -> rdx "Inline return value spill temp" ; V11 tmp8 [V11,T08] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V12 tmp9 [V12,T11] ( 3, 1.50) ref -> rcx ; V13 tmp10 [V13,T15] ( 3, 1.50) int -> rdx "Inline stloc first use temp" ; V14 tmp11 [V14,T09] ( 2, 2 ) ref -> rcx class-hnd "impAppendStmt" ;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillEvalStack" ; V16 tmp13 [V16,T16] ( 3, 1.50) int -> rcx "Inline return value spill temp" ; V17 tmp14 [V17,T04] ( 3, 3 ) int -> rdi "Inlining Arg" ; V18 tmp15 [V18,T05] ( 3, 3 ) int -> rcx "Inlining Arg" ; V19 cse0 [V19,T02] ( 5, 3.50) int -> rdi "CSE - aggressive" ; V20 cse1 [V20,T17] ( 3, 1.50) int -> rdx "CSE - moderate" ; ; Lcl frame size = 32 G_M15444_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M15444_IG02: mov edi, dword ptr [rsi+24] cmp edi, 8 jae SHORT G_M15444_IG09 ;; bbWeight=1 PerfScore 3.25 G_M15444_IG03: test edi, edi je SHORT G_M15444_IG04 add edi, edi jmp SHORT G_M15444_IG05 ;; bbWeight=0.50 PerfScore 1.75 G_M15444_IG04: mov edi, 4 ;; bbWeight=0.50 PerfScore 0.13 G_M15444_IG05: mov edx, dword ptr [rsi+16] cmp edi, edx jle SHORT G_M15444_IG06 jmp SHORT G_M15444_IG07 ;; bbWeight=0.50 PerfScore 2.63 G_M15444_IG06: mov edx, edi ;; bbWeight=0.50 PerfScore 0.13 G_M15444_IG07: movsxd rdx, edx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, gword ptr [rsi] mov rdx, gword ptr [rsi+8] mov r8d, dword ptr [rsi+24] call Array:Copy(Array,Array,int) mov rdx, gword ptr [rsi+8] mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 6.88 G_M15444_IG08: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M15444_IG09: cmp edi, 8 jne SHORT G_M15444_IG10 mov edi, 8 jmp SHORT G_M15444_IG17 ;; bbWeight=0.50 PerfScore 1.75 G_M15444_IG10: lea rdi, bword ptr [rsi+32] mov rbx, gword ptr [rsi+8] mov r8d, dword ptr [rdi+8] mov rcx, gword ptr [rdi] test rcx, rcx jne SHORT G_M15444_IG11 xor edx, edx jmp SHORT G_M15444_IG12 ;; bbWeight=0.50 PerfScore 5.00 G_M15444_IG11: mov edx, dword ptr [rcx+8] ;; bbWeight=0.50 PerfScore 1.00 G_M15444_IG12: cmp r8d, edx jne SHORT G_M15444_IG14 ;; bbWeight=0.50 PerfScore 0.63 G_M15444_IG13: mov r8d, dword ptr [rdi+8] inc r8d mov rcx, rdi mov rdx, 0xD1FFAB1E call ArrayBuilder`1:EnsureCapacity(int):this ;; bbWeight=0.25 PerfScore 0.94 G_M15444_IG14: mov rcx, gword ptr [rdi] mov edx, dword ptr [rdi+8] lea r8d, [rdx+1] mov dword ptr [rdi+8], r8d mov r8, rbx call CORINFO_HELP_ARRADDR_ST mov edx, dword ptr [rsi+24] mov edi, edx mov ecx, dword ptr [rsi+16] sub ecx, edx cmp edi, ecx jle SHORT G_M15444_IG15 jmp SHORT G_M15444_IG16 ;; bbWeight=0.50 PerfScore 7.25 G_M15444_IG15: mov ecx, edi ;; bbWeight=0.50 PerfScore 0.13 G_M15444_IG16: mov edi, ecx ;; bbWeight=0.50 PerfScore 0.13 G_M15444_IG17: movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF xor eax, eax mov dword ptr [rsi+20], eax ;; bbWeight=0.50 PerfScore 2.25 G_M15444_IG18: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 263, prolog size 7, PerfScore 66.36, (MethodHash=fce0c3ab) for method LargeArrayBuilder`1:AllocateBuffer():this ; ============================================================ ; Assembly listing for method CharEnumerator:Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4.50) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 cse0 [V02,T01] ( 3, 2.50) ref -> rax "CSE - aggressive" ; ; Lcl frame size = 0 G_M32606_IG01: ;; bbWeight=1 PerfScore 0.00 G_M32606_IG02: mov rax, gword ptr [rcx+8] test rax, rax je SHORT G_M32606_IG04 ;; bbWeight=1 PerfScore 3.25 G_M32606_IG03: mov eax, dword ptr [rax+8] mov dword ptr [rcx+16], eax ;; bbWeight=0.50 PerfScore 1.50 G_M32606_IG04: xor rax, rax mov gword ptr [rcx+8], rax ;; bbWeight=1 PerfScore 1.25 G_M32606_IG05: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 22, prolog size 0, PerfScore 9.20, (MethodHash=8cfa80a1) for method CharEnumerator:Dispose():this ; ============================================================ ; Assembly listing for method d__217`1:System.IDisposable.Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4.25) ref -> rcx this class-hnd ; V01 loc0 [V01,T01] ( 3, 2.50) int -> r11 ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M42811_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M42811_IG02: mov r11d, dword ptr [rcx+48] cmp r11d, -3 je SHORT G_M42811_IG04 ;; bbWeight=1 PerfScore 3.25 G_M42811_IG03: cmp r11d, 1 jne SHORT G_M42811_IG06 ;; bbWeight=0.50 PerfScore 0.63 G_M42811_IG04: mov dword ptr [rcx+48], -1 cmp gword ptr [rcx+40], 0 je SHORT G_M42811_IG06 ;; bbWeight=0.50 PerfScore 2.00 G_M42811_IG05: mov rcx, gword ptr [rcx+40] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0.25 PerfScore 1.38 G_M42811_IG06: nop ;; bbWeight=1 PerfScore 0.25 G_M42811_IG07: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 66, prolog size 4, PerfScore 15.60, (MethodHash=baba58c4) for method d__217`1:System.IDisposable.Dispose():this ; ============================================================ ; Assembly listing for method LargeArrayBuilder`1:ToArray():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4.50) byref -> rsi this ; V01 loc0 [V01 ] ( 5, 3 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 48 G_M17664_IG01: push rsi sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 2.75 G_M17664_IG02: lea rdx, [rsp+28H] mov rcx, rsi call LargeArrayBuilder`1:TryMove(byref):bool:this test eax, eax je SHORT G_M17664_IG05 ;; bbWeight=1 PerfScore 3.00 G_M17664_IG03: mov rax, gword ptr [rsp+28H] ;; bbWeight=0.50 PerfScore 0.50 G_M17664_IG04: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M17664_IG05: mov edx, dword ptr [rsi+24] movsxd rdx, edx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rsp+28H], rax mov r9d, dword ptr [rsi+24] mov rcx, rsi mov rdx, gword ptr [rsp+28H] xor r8d, r8d call LargeArrayBuilder`1:CopyTo(ref,int,int):this mov rax, gword ptr [rsp+28H] ;; bbWeight=0.50 PerfScore 5.00 G_M17664_IG06: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 100, prolog size 12, PerfScore 23.00, (MethodHash=cde9baff) for method LargeArrayBuilder`1:ToArray():ref:this ; ============================================================ ; Assembly listing for method LargeArrayBuilder`1:TryMove(byref):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) byref -> rsi this ; V01 arg1 [V01,T01] ( 3, 3 ) byref -> rcx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M45753_IG01: push rsi mov rsi, rcx mov rcx, rdx ;; bbWeight=1 PerfScore 1.50 G_M45753_IG02: mov rdx, gword ptr [rsi] call CORINFO_HELP_CHECKED_ASSIGN_REF mov eax, dword ptr [rsi+24] mov rdx, gword ptr [rsi] cmp eax, dword ptr [rdx+8] sete al movzx rax, al ;; bbWeight=1 PerfScore 10.25 G_M45753_IG03: pop rsi ret ;; bbWeight=1 PerfScore 1.50 ; Total bytes of code 32, prolog size 1, PerfScore 16.45, (MethodHash=2e714d46) for method LargeArrayBuilder`1:TryMove(byref):bool:this ; ============================================================ ; Assembly listing for method LargeArrayBuilder`1:CopyTo(ref,int,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T08] ( 5, 7 ) byref -> rbx this ; V01 arg1 [V01,T09] ( 3, 6 ) ref -> rbp class-hnd ; V02 arg2 [V02,T03] ( 5, 14 ) int -> rdi ; V03 arg3 [V03,T00] ( 8, 21 ) int -> rsi ; V04 loc0 [V04,T02] ( 6, 16 ) int -> r14 ; V05 loc1 [V05,T05] ( 3, 12 ) ref -> rcx class-hnd ;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T07] ( 4, 10 ) ref -> rcx class-hnd "Inline return value spill temp" ; V09 tmp2 [V09,T13] ( 2, 4 ) byref -> r8 "Inlining Arg" ; V10 tmp3 [V10,T10] ( 2, 8 ) byref -> rcx "Inlining Arg" ;* V11 tmp4 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V12 tmp5 [V12,T04] ( 5, 16 ) int -> r15 "Inline return value spill temp" ; V13 tmp6 [V13,T01] ( 3, 20 ) int -> r15 "Inlining Arg" ; V14 tmp7 [V14,T06] ( 3, 12 ) ref -> rcx "arr expr" ; V15 cse0 [V15,T12] ( 3, 4 ) byref -> rcx "CSE - moderate" ; V16 cse1 [V16,T11] ( 3, 6 ) int -> r8 "CSE - aggressive" ; ; Lcl frame size = 40 G_M15686_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov rbx, rcx mov rbp, rdx mov edi, r8d mov esi, r9d ;; bbWeight=1 PerfScore 7.25 G_M15686_IG02: xor r14d, r14d test esi, esi jle SHORT G_M15686_IG12 ;; bbWeight=1 PerfScore 1.50 G_M15686_IG03: test r14d, r14d je SHORT G_M15686_IG07 ;; bbWeight=4 PerfScore 5.00 G_M15686_IG04: lea rcx, bword ptr [rbx+32] mov r8, rcx cmp r14d, dword ptr [r8+8] jle SHORT G_M15686_IG06 ;; bbWeight=1 PerfScore 3.75 G_M15686_IG05: mov rcx, gword ptr [rbx+8] jmp SHORT G_M15686_IG08 ;; bbWeight=2 PerfScore 8.00 G_M15686_IG06: mov rcx, gword ptr [rcx] lea r8d, [r14-1] cmp r8d, dword ptr [rcx+8] jae SHORT G_M15686_IG13 movsxd r8, r8d mov rcx, gword ptr [rcx+8*r8+16] jmp SHORT G_M15686_IG08 ;; bbWeight=2 PerfScore 19.50 G_M15686_IG07: mov rcx, gword ptr [rbx] ;; bbWeight=2 PerfScore 4.00 G_M15686_IG08: mov r15d, dword ptr [rcx+8] cmp esi, r15d jle SHORT G_M15686_IG10 ;; bbWeight=4 PerfScore 13.00 G_M15686_IG09: jmp SHORT G_M15686_IG11 ;; bbWeight=2 PerfScore 4.00 G_M15686_IG10: mov r15d, esi ;; bbWeight=2 PerfScore 0.50 G_M15686_IG11: mov dword ptr [rsp+20H], r15d mov r8, rbp mov r9d, edi xor edx, edx call Array:Copy(Array,int,Array,int,int) sub esi, r15d add edi, r15d inc r14d test esi, esi jg SHORT G_M15686_IG03 ;; bbWeight=4 PerfScore 19.00 G_M15686_IG12: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 G_M15686_IG13: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 145, prolog size 12, PerfScore 104.25, (MethodHash=de88c2b9) for method LargeArrayBuilder`1:CopyTo(ref,int,int):this ; ============================================================ ; Assembly listing for method Array:Copy(Array,int,Array,int,int) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 7, 5 ) ref -> rcx class-hnd ; V01 arg1 [V01,T02] ( 6, 4 ) int -> rdx ; V02 arg2 [V02,T01] ( 7, 4.50) ref -> r8 class-hnd ; V03 arg3 [V03,T03] ( 6, 4 ) int -> r9 ; V04 arg4 [V04,T04] ( 5, 2.50) int -> rax ; V05 loc0 [V05,T05] ( 5, 2.50) long -> r10 ; V06 loc1 [V06,T09] ( 4, 2 ) long -> r11 ; V07 loc2 [V07,T06] ( 5, 2.50) long -> rax ; V08 loc3 [V08,T07] ( 4, 2 ) byref -> rdx ; V09 loc4 [V09,T08] ( 4, 2 ) byref -> rcx ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T10] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V12 tmp2 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V13 tmp3 [V13,T12] ( 2, 2 ) long -> rdx ld-addr-op "Inlining Arg" ;* V14 tmp4 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp5 [V15 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V16 tmp6 [V16,T11] ( 2, 2 ) byref -> r8 "Inlining Arg" ;* V17 tmp7 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V18 tmp8 [V18,T13] ( 2, 2 ) long -> rcx ld-addr-op "Inlining Arg" ;* V19 tmp9 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V20 tmp10 [V20 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V21 tmp11 [V21 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V22 tmp12 [V22 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V23 tmp13 [V23 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V24 tmp14 [V24 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V25 tmp15 [V25 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 48 G_M48238_IG01: push rsi sub rsp, 48 mov eax, dword ptr [rsp+60H] ;; bbWeight=1 PerfScore 2.25 G_M48238_IG02: test rcx, rcx je G_M48238_IG09 ;; bbWeight=1 PerfScore 1.25 G_M48238_IG03: test r8, r8 je G_M48238_IG09 mov r10, qword ptr [rcx] cmp r10, qword ptr [r8] jne G_M48238_IG09 cmp dword ptr [r10+4], 24 ja G_M48238_IG09 test eax, eax jl G_M48238_IG09 test edx, edx jl G_M48238_IG09 test r9d, r9d jl SHORT G_M48238_IG09 lea r11d, [rdx+rax] mov esi, dword ptr [rcx+8] cmp r11, rsi ja SHORT G_M48238_IG09 lea r11d, [r9+rax] mov esi, dword ptr [r8+8] cmp r11, rsi ja SHORT G_M48238_IG09 movzx r11, word ptr [r10] mov eax, eax imul rax, r11 add rcx, 16 mov edx, edx imul rdx, r11 add rdx, rcx add r8, 16 mov ecx, r9d imul rcx, r11 add rcx, r8 test dword ptr [r10], 0xD1FFAB1E je SHORT G_M48238_IG07 cmp rax, 0x4000 ja SHORT G_M48238_IG04 mov r8, rax call Buffer:__BulkMoveWithWriteBarrier(byref,byref,long) jmp SHORT G_M48238_IG05 ;; bbWeight=0.50 PerfScore 18.88 G_M48238_IG04: mov r8, rax call Buffer:_BulkMoveWithWriteBarrier(byref,byref,long) ;; bbWeight=0.50 PerfScore 0.63 G_M48238_IG05: nop ;; bbWeight=0.50 PerfScore 0.13 G_M48238_IG06: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M48238_IG07: mov r8, rax call Buffer:Memmove(byref,byref,long) nop ;; bbWeight=0.50 PerfScore 0.75 G_M48238_IG08: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M48238_IG09: mov dword ptr [rsp+20H], eax xor eax, eax mov dword ptr [rsp+28H], eax call Array:Copy(Array,int,Array,int,int,bool) nop ;; bbWeight=0.50 PerfScore 1.75 G_M48238_IG10: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 212, prolog size 5, PerfScore 49.45, (MethodHash=6d274391) for method Array:Copy(Array,int,Array,int,int) ; ============================================================ ; Assembly listing for method String:Ctor(ref):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rsi class-hnd ; V02 loc0 [V02,T01] ( 4, 2 ) ref -> rdi class-hnd ; V03 loc1 [V03,T05] ( 2, 1 ) long -> r8 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 2, 2 ) byref -> rcx "impAppendStmt" ; V06 tmp2 [V06,T03] ( 2, 2 ) byref -> rdx "Inlining Arg" ;* V07 tmp3 [V07 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V09 tmp5 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V10 tmp6 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V11 tmp7 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V12 cse0 [V12,T04] ( 3, 1.50) int -> rcx "CSE - moderate" ; ; Lcl frame size = 40 G_M8156_IG01: push rdi push rsi sub rsp, 40 mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M8156_IG02: test rsi, rsi je SHORT G_M8156_IG04 ;; bbWeight=1 PerfScore 1.25 G_M8156_IG03: mov ecx, dword ptr [rsi+8] test ecx, ecx jne SHORT G_M8156_IG06 ;; bbWeight=0.50 PerfScore 1.63 G_M8156_IG04: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M8156_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M8156_IG06: call String:FastAllocateString(int):String mov rdi, rax mov r8d, dword ptr [rdi+8] lea rcx, bword ptr [rdi+12] lea rdx, bword ptr [rsi+16] add r8, r8 call Buffer:Memmove(byref,byref,long) mov rax, rdi ;; bbWeight=0.50 PerfScore 2.88 G_M8156_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 79, prolog size 6, PerfScore 19.53, (MethodHash=886be023) for method String:Ctor(ref):String:this ; ============================================================ ; Assembly listing for method Version:TryParse(String,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 4, 3 ) byref -> rsi ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V05 tmp2 [V05,T02] ( 3, 3 ) ref -> rdi class-hnd "dup spill" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V09 tmp6 [V09,T04] ( 2, 2 ) byref -> rdx "Inlining Arg" ;* V10 tmp7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V11 tmp8 [V11,T05] ( 2, 2 ) int -> rcx "Inlining Arg" ; V12 tmp9 [V12,T06] ( 3, 1.50) bool -> rax "Inline return value spill temp" ; V13 tmp10 [V13,T07] ( 2, 1 ) byref -> rdx V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ; V14 tmp11 [V14,T11] ( 2, 1 ) int -> rcx V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V15 tmp12 [V15,T08] ( 2, 1 ) byref -> rdx V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V16 tmp13 [V16,T12] ( 2, 1 ) int -> rcx V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V17 tmp14 [V17,T09] ( 2, 1 ) byref -> rdx V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V18 tmp15 [V18,T13] ( 2, 1 ) int -> rcx V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ;* V19 tmp16 [V19 ] ( 0, 0 ) byref -> zero-ref V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ; V21 tmp18 [V21,T10] ( 2, 1 ) byref -> rdx V10._value(offs=0x00) P-INDEP "field V10._value (fldOffset=0x0)" ; V22 tmp19 [V22 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V23 tmp20 [V23,T03] ( 3, 3 ) byref -> rax stack-byref "BlockOp address local" ; ; Lcl frame size = 56 G_M12566_IG01: push rdi push rsi sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rdx ;; bbWeight=1 PerfScore 3.75 G_M12566_IG02: test rcx, rcx jne SHORT G_M12566_IG05 ;; bbWeight=1 PerfScore 1.25 G_M12566_IG03: xor rax, rax mov gword ptr [rsi], rax ;; bbWeight=0.50 PerfScore 0.63 G_M12566_IG04: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M12566_IG05: lea rdx, bword ptr [rcx+12] mov ecx, dword ptr [rcx+8] lea rax, bword ptr [rsp+28H] mov bword ptr [rax], rdx mov dword ptr [rax+8], ecx lea rcx, bword ptr [rsp+28H] xor edx, edx call Version:ParseVersion(ReadOnlySpan`1,bool):Version mov rdi, rax mov rcx, rsi mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF test rdi, rdi je SHORT G_M12566_IG06 xor eax, eax jmp SHORT G_M12566_IG07 ;; bbWeight=0.50 PerfScore 6.00 G_M12566_IG06: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M12566_IG07: test eax, eax sete al movzx rax, al ;; bbWeight=0.50 PerfScore 0.75 G_M12566_IG08: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 106, prolog size 13, PerfScore 25.35, (MethodHash=824fcee9) for method Version:TryParse(String,byref):bool ; ============================================================ ; Assembly listing for method FileVersionInfo:GetVersionInfo(String):FileVersionInfo ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 6 ) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 40 G_M44684_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M44684_IG02: mov rcx, rsi call Path:IsPathFullyQualified(String):bool test eax, eax jne SHORT G_M44684_IG04 ;; bbWeight=1 PerfScore 2.50 G_M44684_IG03: mov rcx, rsi call Path:GetFullPath(String):String mov rsi, rax ;; bbWeight=0.50 PerfScore 0.75 G_M44684_IG04: mov rcx, rsi call File:Exists(String):bool test eax, eax je SHORT G_M44684_IG07 ;; bbWeight=1 PerfScore 2.50 G_M44684_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov rdx, rsi call FileVersionInfo:.ctor(String):this mov rax, rdi ;; bbWeight=1 PerfScore 3.25 G_M44684_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M44684_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov rdx, rsi call FileNotFoundException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 121, prolog size 6, PerfScore 25.85, (MethodHash=c31f5173) for method FileVersionInfo:GetVersionInfo(String):FileVersionInfo ; ============================================================ ; Assembly listing for method Path:IsPathFullyQualified(String):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 5 ) ref -> rcx class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V03 tmp2 [V03,T13] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V07 tmp6 [V07,T02] ( 2, 4 ) byref -> rax "Inlining Arg" ;* V08 tmp7 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V09 tmp8 [V09,T03] ( 2, 4 ) int -> rcx "Inlining Arg" ;* V10 tmp9 [V10 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V11 tmp10 [V11,T04] ( 2, 2 ) byref -> rax V02._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ; V12 tmp11 [V12,T09] ( 2, 2 ) int -> rcx V02._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V13 tmp12 [V13,T05] ( 2, 2 ) byref -> rax V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ; V14 tmp13 [V14,T10] ( 2, 2 ) int -> rcx V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V15 tmp14 [V15,T06] ( 2, 2 ) byref -> rax V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ; V16 tmp15 [V16,T11] ( 2, 2 ) int -> rcx V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ;* V17 tmp16 [V17 ] ( 0, 0 ) byref -> zero-ref V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ;* V18 tmp17 [V18 ] ( 0, 0 ) int -> zero-ref V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V19 tmp18 [V19,T07] ( 2, 2 ) byref -> rax V08._value(offs=0x00) P-INDEP "field V08._value (fldOffset=0x0)" ; V20 tmp19 [V20,T08] ( 2, 2 ) byref -> rax V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ; V21 tmp20 [V21,T12] ( 2, 2 ) int -> rcx V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ; V22 tmp21 [V22,T14] ( 2, 0 ) ref -> rdx "argument with side effect" ; V23 tmp22 [V23 ] ( 2, 4 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V24 tmp23 [V24,T01] ( 3, 6 ) byref -> rdx stack-byref "BlockOp address local" ; ; Lcl frame size = 48 G_M64510_IG01: push rsi sub rsp, 48 xor rax, rax mov qword ptr [rsp+20H], rax ;; bbWeight=1 PerfScore 2.50 G_M64510_IG02: test rcx, rcx je SHORT G_M64510_IG05 ;; bbWeight=1 PerfScore 1.25 G_M64510_IG03: lea rax, bword ptr [rcx+12] mov ecx, dword ptr [rcx+8] lea rdx, bword ptr [rsp+20H] mov bword ptr [rdx], rax mov dword ptr [rdx+8], ecx lea rcx, bword ptr [rsp+20H] call PathInternal:IsPartiallyQualified(ReadOnlySpan`1):bool test eax, eax sete al movzx rax, al ;; bbWeight=1 PerfScore 8.00 G_M64510_IG04: add rsp, 48 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M64510_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1BC8F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 117, prolog size 12, PerfScore 25.20, (MethodHash=e5100401) for method Path:IsPathFullyQualified(String):bool ; ============================================================ ; Assembly listing for method PathInternal:IsPartiallyQualified(ReadOnlySpan`1):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T08] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V03 tmp2 [V03,T03] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V04 tmp3 [V04,T09] ( 3, 1.50) bool -> rax "Inline return value spill temp" ; V05 tmp4 [V05,T04] ( 3, 3 ) ushort -> r8 "Inlining Arg" ; V06 tmp5 [V06,T10] ( 2, 1 ) bool -> rcx "Inline return value spill temp" ; V07 tmp6 [V07,T05] ( 3, 3 ) ushort -> rcx "Inlining Arg" ; V08 tmp7 [V08,T06] ( 3, 3 ) int -> rsi "Single return block return value" ; V09 tmp8 [V09,T02] ( 5, 3 ) byref -> rdx V11._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V10 tmp9 [V10,T01] ( 7, 4.50) int -> rcx V11._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V11 tmp10 [V11 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V12 cse0 [V12,T07] ( 5, 2.50) int -> registers "CSE - aggressive" ; V13 cse1 [V13,T11] ( 3, 1.50) int -> r8 "CSE - moderate" ; ; Lcl frame size = 32 G_M40726_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M40726_IG02: mov rdx, bword ptr [rcx] mov ecx, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M40726_IG03: cmp ecx, 2 jl G_M40726_IG14 ;; bbWeight=1 PerfScore 1.25 G_M40726_IG04: cmp ecx, 0 jbe G_M40726_IG16 movzx r8, word ptr [rdx] mov eax, r8d cmp eax, 92 je SHORT G_M40726_IG05 cmp eax, 47 sete al movzx rax, al test eax, eax je SHORT G_M40726_IG10 ;; bbWeight=0.50 PerfScore 3.75 G_M40726_IG05: cmp ecx, 1 jbe G_M40726_IG16 movzx r8, word ptr [rdx+2] cmp r8d, 63 je SHORT G_M40726_IG08 cmp r8d, 92 je SHORT G_M40726_IG06 cmp r8d, 47 sete al movzx rax, al jmp SHORT G_M40726_IG07 ;; bbWeight=0.50 PerfScore 4.63 G_M40726_IG06: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M40726_IG07: test eax, eax sete sil movzx rsi, sil jmp SHORT G_M40726_IG12 ;; bbWeight=0.50 PerfScore 1.75 G_M40726_IG08: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M40726_IG09: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M40726_IG10: cmp ecx, 3 jl SHORT G_M40726_IG14 cmp ecx, 1 jbe SHORT G_M40726_IG16 movzx rax, word ptr [rdx+2] cmp eax, 58 jne SHORT G_M40726_IG14 cmp ecx, 2 jbe SHORT G_M40726_IG16 movzx rcx, word ptr [rdx+4] cmp ecx, 92 je SHORT G_M40726_IG11 cmp ecx, 47 sete cl movzx rcx, cl test ecx, ecx je SHORT G_M40726_IG14 ;; bbWeight=0.50 PerfScore 6.50 G_M40726_IG11: mov ecx, r8d call PathInternal:IsValidDriveChar(ushort):bool test eax, eax sete sil movzx rsi, sil ;; bbWeight=0.50 PerfScore 1.38 G_M40726_IG12: movzx rax, sil ;; bbWeight=0.50 PerfScore 0.13 G_M40726_IG13: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M40726_IG14: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M40726_IG15: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M40726_IG16: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 208, prolog size 5, PerfScore 48.43, (MethodHash=d6c560e9) for method PathInternal:IsPartiallyQualified(ReadOnlySpan`1):bool ; ============================================================ ; Assembly listing for method File:Exists(String):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 9, 9 ) ref -> rcx class-hnd ; V01 loc0 [V01,T02] ( 5, 5 ) bool -> rax ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ; V06 tmp4 [V06,T04] ( 2, 2 ) bool -> rax "Inline return value spill temp" ; V07 tmp5 [V07,T01] ( 3, 6 ) ushort -> rax "Inlining Arg" ; V08 PSPSym [V08 ] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[X] addr-exposed "PSPSym" ; V09 cse0 [V09,T05] ( 3, 3 ) int -> rdx "CSE - aggressive" ; V10 cse1 [V10,T03] ( 4, 4 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 48 G_M29478_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] mov qword ptr [rbp-10H], rsp ;; bbWeight=1 PerfScore 2.75 G_M29478_IG02: test rcx, rcx jne SHORT G_M29478_IG03 xor eax, eax jmp SHORT G_M29478_IG08 ;; bbWeight=1 PerfScore 3.50 G_M29478_IG03: cmp dword ptr [rcx+8], 0 jne SHORT G_M29478_IG04 xor eax, eax jmp SHORT G_M29478_IG08 ;; bbWeight=1 PerfScore 5.25 G_M29478_IG04: call Path:GetFullPath(String):String mov rcx, rax mov eax, dword ptr [rcx+8] test eax, eax jle SHORT G_M29478_IG07 lea edx, [rax-1] cmp edx, eax jae SHORT G_M29478_IG05 movsxd rax, edx movzx rax, word ptr [rcx+2*rax+12] cmp eax, 92 je SHORT G_M29478_IG06 cmp eax, 47 sete al movzx rax, al test eax, eax je SHORT G_M29478_IG07 jmp SHORT G_M29478_IG06 ;; bbWeight=1 PerfScore 14.50 G_M29478_IG05: call CORINFO_HELP_RNGCHKFAIL ;; bbWeight=0 PerfScore 0.00 G_M29478_IG06: xor eax, eax jmp SHORT G_M29478_IG08 ;; bbWeight=1 PerfScore 2.25 G_M29478_IG07: call FileSystem:FileExists(String):bool nop ;; bbWeight=1 PerfScore 1.25 G_M29478_IG08: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 G_M29478_IG09: xor eax, eax ;; bbWeight=0 PerfScore 0.00 G_M29478_IG10: lea rsp, [rbp] pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M29478_IG11: push rbp sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+30H] ;; bbWeight=0 PerfScore 0.00 G_M29478_IG12: lea rax, G_M29478_IG09 ;; bbWeight=0 PerfScore 0.00 G_M29478_IG13: add rsp, 48 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M29478_IG14: push rbp sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+30H] ;; bbWeight=0 PerfScore 0.00 G_M29478_IG15: lea rax, G_M29478_IG09 ;; bbWeight=0 PerfScore 0.00 G_M29478_IG16: add rsp, 48 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M29478_IG17: push rbp sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+30H] ;; bbWeight=0 PerfScore 0.00 G_M29478_IG18: lea rax, G_M29478_IG09 ;; bbWeight=0 PerfScore 0.00 G_M29478_IG19: add rsp, 48 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 205, prolog size 14, PerfScore 52.00, (MethodHash=77e48cd9) for method File:Exists(String):bool ; ============================================================ ; Assembly listing for method FileSystem:FileExists(String):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd ; V01 loc0 [V01 ] ( 4, 3 ) struct (40) [rsp+0x20] do-not-enreg[XSFB] addr-exposed ld-addr-op ; V02 loc1 [V02,T01] ( 2, 2 ) int -> rax ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 72 G_M1157_IG01: sub rsp, 72 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M1157_IG02: xor edx, edx vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+20H], xmm0 vmovdqu xmmword ptr [rsp+30H], xmm0 mov dword ptr [rsp+40H], edx lea rdx, [rsp+20H] mov r8d, 1 call FileSystem:FillAttributeInfo(String,byref,bool):int test eax, eax jne SHORT G_M1157_IG05 ;; bbWeight=1 PerfScore 6.58 G_M1157_IG03: cmp dword ptr [rsp+20H], -1 je SHORT G_M1157_IG05 test byte ptr [rsp+20H], 16 sete al movzx rax, al ;; bbWeight=0.50 PerfScore 2.13 G_M1157_IG04: add rsp, 72 ret ;; bbWeight=0.50 PerfScore 0.63 G_M1157_IG05: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M1157_IG06: add rsp, 72 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 79, prolog size 7, PerfScore 19.53, (MethodHash=b66ffb7a) for method FileSystem:FileExists(String):bool ; ============================================================ ; Assembly listing for method FileSystem:FillAttributeInfo(String,byref,bool):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) byref -> rdx ; V02 arg2 [V02,T05] ( 3, 2.50) bool -> rsi ; V03 loc0 [V03,T00] ( 20, 11 ) int -> r14 ; V04 loc1 [V04 ] ( 5, 2.50) struct ( 8) [rbp-0x280] do-not-enreg[SB] ld-addr-op ; V05 loc2 [V05 ] ( 8, 4 ) struct (592) [rbp-0x278] do-not-enreg[XSFB] addr-exposed ld-addr-op unsafe-buffer ; V06 loc3 [V06,T07] ( 7, 2 ) ref -> [rbp-0x298] EH do-not-enreg[] class-hnd EH-live ptr ; V07 tmp0 [V07 ] ( 1, 1 ) int -> [rbp-0x284] do-not-enreg[X] addr-exposed "GSCookie dummy" ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp2 [V09,T06] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V10 tmp3 [V10,T09] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V11 tmp4 [V11 ] ( 2, 0.50) int -> [rbp-0x290] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V12 tmp5 [V12,T08] ( 3, 2 ) bool -> [rbp-0x280] EH do-not-enreg[] EH-live V04._disableSuccess(offs=0x00) P-DEP "field V04._disableSuccess (fldOffset=0x0)" ; V13 tmp6 [V13,T10] ( 3, 1.50) int -> [rbp-0x27C] EH do-not-enreg[] EH-live V04._oldMode(offs=0x04) P-DEP "field V04._oldMode (fldOffset=0x4)" ; V14 GsCookie [V14 ] ( 1, 1 ) long -> [rbp-0x28] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V15 tmp8 [V15,T04] ( 5, 4.50) ref -> rbx "shadowVar" ; V16 tmp9 [V16,T01] ( 9, 5.50) byref -> rdi "shadowVar" ; V17 PSPSym [V17 ] ( 1, 1 ) long -> [rbp-0x2A0] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 688 G_M54215_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 688 lea rbp, [rsp+2D0H] mov qword ptr [rbp-2A0H], rsp mov rax, 0xD1FFAB1E mov qword ptr [rbp-28H], rax mov esi, r8d ;; bbWeight=1 PerfScore 8.25 G_M54215_IG02: mov rdi, rdx mov rbx, rcx ;; bbWeight=1 PerfScore 0.50 G_M54215_IG03: xor r14d, r14d mov rcx, rbx call PathInternal:TrimEndingDirectorySeparator(String):String mov rbx, rax call DisableMediaInsertionPrompt:Create():DisableMediaInsertionPrompt mov qword ptr [rbp-280H], rax ;; bbWeight=1 PerfScore 3.75 G_M54215_IG04: mov rcx, rbx call PathInternal:EnsureExtendedPrefixIfNeeded(String):String mov rcx, rax mov r8, rdi xor edx, edx call Kernel32:GetFileAttributesExPrivate(String,int,byref):bool test eax, eax jne G_M54215_IG09 ;; bbWeight=1 PerfScore 4.25 G_M54215_IG05: call Marshal:GetLastWin32Error():int mov r14d, eax cmp r14d, 2 je G_M54215_IG09 cmp r14d, 3 je G_M54215_IG09 cmp r14d, 21 je G_M54215_IG09 cmp r14d, 123 je G_M54215_IG09 cmp r14d, 161 je G_M54215_IG09 cmp r14d, 53 je G_M54215_IG09 cmp r14d, 67 je G_M54215_IG09 cmp r14d, 87 je G_M54215_IG09 cmp r14d, 0x4CF je G_M54215_IG09 cmp r14d, 65 je G_M54215_IG09 cmp r14d, 6 je G_M54215_IG09 cmp r14d, 206 je G_M54215_IG09 xor edx, edx lea rcx, bword ptr [rbp-278H] mov r8d, 592 call CORINFO_HELP_MEMSET mov rcx, rbx call PathInternal:EnsureExtendedPrefixIfNeeded(String):String mov rcx, rax xor r8, r8 mov qword ptr [rsp+20H], r8 mov dword ptr [rsp+28H], r8d lea r8, [rbp-278H] mov edx, 1 xor r9d, r9d call Kernel32:FindFirstFileExPrivate(String,int,byref,int,long,int):SafeFindHandle mov gword ptr [rbp-298H], rax ;; bbWeight=0.50 PerfScore 12.50 G_M54215_IG06: mov rcx, gword ptr [rbp-298H] mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]SafeFindHandle:get_IsInvalid():bool:this test eax, eax je SHORT G_M54215_IG07 call Marshal:GetLastWin32Error():int mov r14d, eax jmp SHORT G_M54215_IG08 ;; bbWeight=0.50 PerfScore 5.38 G_M54215_IG07: xor r14d, r14d mov ecx, dword ptr [rbp-278H] mov dword ptr [rdi], ecx mov rcx, qword ptr [rbp-274H] mov qword ptr [rdi+4], rcx mov rcx, qword ptr [rbp-26CH] mov qword ptr [rdi+12], rcx mov rcx, qword ptr [rbp-264H] mov qword ptr [rdi+20], rcx mov ecx, dword ptr [rbp-25CH] mov dword ptr [rdi+28], ecx mov ecx, dword ptr [rbp-258H] mov dword ptr [rdi+32], ecx ;; bbWeight=0.50 PerfScore 6.13 G_M54215_IG08: mov rcx, gword ptr [rbp-298H] mov edx, 1 call SafeHandle:InternalRelease(bool):this mov rcx, gword ptr [rbp-298H] call GC:SuppressFinalize(Object) nop ;; bbWeight=0.50 PerfScore 2.25 G_M54215_IG09: cmp byte ptr [rbp-280H], 0 je SHORT G_M54215_IG11 ;; bbWeight=1 PerfScore 2.00 G_M54215_IG10: lea rdx, [rbp-290H] mov ecx, dword ptr [rbp-27CH] call Kernel32:SetThreadErrorMode(int,byref):bool ;; bbWeight=0.50 PerfScore 1.25 G_M54215_IG11: test r14d, r14d je SHORT G_M54215_IG16 ;; bbWeight=1 PerfScore 1.25 G_M54215_IG12: test sil, sil jne SHORT G_M54215_IG16 lea eax, [r14-2] cmp eax, 1 jbe SHORT G_M54215_IG13 cmp r14d, 21 jne SHORT G_M54215_IG16 ;; bbWeight=0.50 PerfScore 2.13 G_M54215_IG13: mov dword ptr [rdi], -1 xor eax, eax mov rcx, 0xD1FFAB1E cmp qword ptr [rbp-28H], rcx je SHORT G_M54215_IG14 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 2.25 G_M54215_IG14: nop ;; bbWeight=0.50 PerfScore 0.13 G_M54215_IG15: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M54215_IG16: mov eax, r14d mov rcx, 0xD1FFAB1E cmp qword ptr [rbp-28H], rcx je SHORT G_M54215_IG17 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.75 G_M54215_IG17: nop ;; bbWeight=0.50 PerfScore 0.13 G_M54215_IG18: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M54215_IG19: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 mov rbp, qword ptr [rcx+48] mov qword ptr [rsp+30H], rbp lea rbp, [rbp+2D0H] ;; bbWeight=0 PerfScore 0.00 G_M54215_IG20: cmp gword ptr [rbp-298H], 0 je SHORT G_M54215_IG21 mov rcx, gword ptr [rbp-298H] mov edx, 1 call SafeHandle:InternalRelease(bool):this mov rcx, gword ptr [rbp-298H] call GC:SuppressFinalize(Object) ;; bbWeight=0 PerfScore 0.00 G_M54215_IG21: nop ;; bbWeight=0 PerfScore 0.00 G_M54215_IG22: add rsp, 64 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M54215_IG23: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 mov rbp, qword ptr [rcx+48] mov qword ptr [rsp+30H], rbp lea rbp, [rbp+2D0H] ;; bbWeight=0 PerfScore 0.00 G_M54215_IG24: cmp byte ptr [rbp-280H], 0 je SHORT G_M54215_IG25 lea rdx, [rbp-290H] mov ecx, dword ptr [rbp-27CH] call Kernel32:SetThreadErrorMode(int,byref):bool ;; bbWeight=0 PerfScore 0.00 G_M54215_IG25: nop ;; bbWeight=0 PerfScore 0.00 G_M54215_IG26: add rsp, 64 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 712, prolog size 45, PerfScore 129.08, (MethodHash=c20e2c38) for method FileSystem:FillAttributeInfo(String,byref,bool):int ; ============================================================ ; Assembly listing for method PathInternal:TrimEndingDirectorySeparator(String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 9, 6 ) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V03 tmp2 [V03 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V06 tmp5 [V06,T03] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V08 tmp7 [V08,T04] ( 2, 2 ) int -> rdi "Inlining Arg" ;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ; V11 tmp10 [V11,T06] ( 2, 1 ) byref -> rcx V02._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ; V12 tmp11 [V12,T11] ( 2, 1 ) int -> rax V02._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V13 tmp12 [V13,T05] ( 3, 1.50) byref -> rcx V03._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ; V14 tmp13 [V14,T02] ( 4, 2 ) int -> rdi V03._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ; V15 tmp14 [V15,T07] ( 2, 1 ) byref -> rcx V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ; V16 tmp15 [V16,T12] ( 2, 1 ) int -> rdi V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V17 tmp16 [V17,T08] ( 2, 1 ) byref -> rcx V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ;* V18 tmp17 [V18,T14] ( 0, 0 ) int -> zero-ref V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ; V19 tmp18 [V19,T09] ( 2, 1 ) byref -> rcx V07._value(offs=0x00) P-INDEP "field V07._value (fldOffset=0x0)" ; V20 tmp19 [V20,T10] ( 2, 1 ) byref -> rcx V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ; V21 tmp20 [V21,T13] ( 2, 1 ) int -> rax V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ; V22 tmp21 [V22 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V23 tmp22 [V23,T01] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; ; Lcl frame size = 56 G_M53448_IG01: push rdi push rsi sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 3.75 G_M53448_IG02: mov rcx, rsi call PathInternal:EndsInDirectorySeparator(String):bool test eax, eax je SHORT G_M53448_IG06 ;; bbWeight=1 PerfScore 2.50 G_M53448_IG03: test rsi, rsi jne SHORT G_M53448_IG04 xor rcx, rcx xor edi, edi jmp SHORT G_M53448_IG05 ;; bbWeight=0.50 PerfScore 1.88 G_M53448_IG04: lea rcx, bword ptr [rsi+12] mov edi, dword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.25 G_M53448_IG05: mov eax, edi lea rdx, bword ptr [rsp+28H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], eax lea rcx, bword ptr [rsp+28H] call PathInternal:GetRootLength(ReadOnlySpan`1):int cmp eax, edi jne SHORT G_M53448_IG08 ;; bbWeight=0.50 PerfScore 2.75 G_M53448_IG06: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M53448_IG07: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M53448_IG08: mov r8d, dword ptr [rsi+8] dec r8d mov rcx, rsi xor edx, edx call String:Substring(int,int):String:this nop ;; bbWeight=0.50 PerfScore 2.00 G_M53448_IG09: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 108, prolog size 13, PerfScore 27.30, (MethodHash=aaf62f37) for method PathInternal:TrimEndingDirectorySeparator(String):String ; ============================================================ ; Assembly listing for method PathInternal:EndsInDirectorySeparator(String):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 4.25) ref -> rcx class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02,T05] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V03 tmp2 [V03,T03] ( 3, 1.50) bool -> rax "Inline return value spill temp" ; V04 tmp3 [V04,T01] ( 3, 3 ) ushort -> rax "Inlining Arg" ; V05 cse0 [V05,T04] ( 3, 1.50) int -> rdx "CSE - moderate" ; V06 cse1 [V06,T02] ( 5, 2 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 40 G_M3109_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M3109_IG02: test rcx, rcx je SHORT G_M3109_IG07 ;; bbWeight=1 PerfScore 1.25 G_M3109_IG03: mov eax, dword ptr [rcx+8] test eax, eax je SHORT G_M3109_IG07 ;; bbWeight=0.25 PerfScore 0.81 G_M3109_IG04: mov eax, dword ptr [rcx+8] lea edx, [rax-1] cmp edx, eax jae SHORT G_M3109_IG09 movsxd rax, edx movzx rax, word ptr [rcx+2*rax+12] cmp eax, 92 je SHORT G_M3109_IG05 cmp eax, 47 sete al movzx rax, al jmp SHORT G_M3109_IG06 ;; bbWeight=0.50 PerfScore 5.38 G_M3109_IG05: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M3109_IG06: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M3109_IG07: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M3109_IG08: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M3109_IG09: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 73, prolog size 4, PerfScore 16.49, (MethodHash=5ffff3da) for method PathInternal:EndsInDirectorySeparator(String):bool ; ============================================================ ; Assembly listing for method DisableMediaInsertionPrompt:Create():DisableMediaInsertionPrompt ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00 ] ( 4, 4 ) struct ( 8) [rbp-0x08] do-not-enreg[XSB] addr-exposed ld-addr-op ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02 ] ( 3, 3 ) bool -> [rbp-0x08] do-not-enreg[X] addr-exposed V00._disableSuccess(offs=0x00) P-DEP "field V00._disableSuccess (fldOffset=0x0)" ; V03 tmp2 [V03 ] ( 3, 3 ) int -> [rbp-0x04] do-not-enreg[X] addr-exposed V00._oldMode(offs=0x04) P-DEP "field V00._oldMode (fldOffset=0x4)" ; ; Lcl frame size = 48 G_M52095_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] ;; bbWeight=1 PerfScore 1.75 G_M52095_IG02: xor edx, edx mov qword ptr [rbp-08H], rdx lea rdx, bword ptr [rbp-04H] mov ecx, 1 call Kernel32:SetThreadErrorMode(int,byref):bool mov byte ptr [rbp-08H], al mov rax, qword ptr [rbp-08H] ;; bbWeight=1 PerfScore 5.00 G_M52095_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 43, prolog size 10, PerfScore 13.05, (MethodHash=6e3e3480) for method DisableMediaInsertionPrompt:Create():DisableMediaInsertionPrompt ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(int,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) int -> rcx ; V01 arg1 [V01,T00] ( 4, 4 ) byref -> rsi ;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ; V03 loc1 [V03,T07] ( 2, 2 ) long -> rdi ; V04 loc2 [V04 ] ( 1, 1 ) byref -> [rbp-0x18] pinned ; V05 loc3 [V05,T08] ( 2, 2 ) bool -> rsi ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08 ] ( 2, 2 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "stub argument" ; V09 tmp2 [V09,T02] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V10 tmp3 [V10,T03] ( 2, 4 ) int -> rsi "impAppendStmt" ; V11 tmp4 [V11,T04] ( 2, 4 ) long -> rdx "Cast away GC" ; V12 tmp5 [V12,T05] ( 2, 4 ) long -> rcx "argument with side effect" ; V13 tmp6 [V13,T06] ( 2, 4 ) long -> rdx "argument with side effect" ; ; Lcl frame size = 48 G_M64366_IG01: push rbp push rdi push rsi sub rsp, 48 lea rbp, [rsp+40H] mov qword ptr [rbp-20H], r10 mov rsi, rdx ;; bbWeight=1 PerfScore 5.00 G_M64366_IG02: mov edi, ecx mov bword ptr [rbp-18H], rsi call StubHelpers:ClearLastError() mov rcx, qword ptr [rbp-20H] mov rcx, qword ptr [rcx+32] mov rax, qword ptr [rcx] mov rcx, rdi mov rdx, rsi ;; bbWeight=1 PerfScore 7.75 G_M64366_IG03: call rax mov esi, eax call StubHelpers:SetLastError() test esi, esi setne sil movzx rsi, sil mov rax, 0xD1FFAB1E cmp dword ptr [rax], 0 jne SHORT G_M64366_IG06 ;; bbWeight=1 PerfScore 9.00 G_M64366_IG04: mov eax, esi ;; bbWeight=1 PerfScore 0.25 G_M64366_IG05: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 G_M64366_IG06: call CORINFO_HELP_POLL_GC jmp SHORT G_M64366_IG04 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 98, prolog size 16, PerfScore 34.80, (MethodHash=9adf0491) for method ILStubClass:IL_STUB_PInvoke(int,byref):bool ; ============================================================ ; Assembly listing for method PathInternal:EnsureExtendedPrefixIfNeeded(String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 7, 5 ) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M63928_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M63928_IG02: test rsi, rsi je SHORT G_M63928_IG06 ;; bbWeight=1 PerfScore 1.25 G_M63928_IG03: cmp dword ptr [rsi+8], 260 jge SHORT G_M63928_IG04 mov rcx, rsi call PathInternal:EndsWithPeriodOrSpace(String):bool test eax, eax je SHORT G_M63928_IG06 ;; bbWeight=0.50 PerfScore 2.75 G_M63928_IG04: mov rcx, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M63928_IG05: add rsp, 32 pop rsi jmp PathInternal:EnsureExtendedPrefix(String):String ;; bbWeight=0.50 PerfScore 1.38 G_M63928_IG06: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M63928_IG07: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 56, prolog size 8, PerfScore 13.60, (MethodHash=4c150647) for method PathInternal:EnsureExtendedPrefixIfNeeded(String):String ; ============================================================ ; Assembly listing for method PathInternal:EndsWithPeriodOrSpace(String):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 4.25) ref -> rcx class-hnd ; V01 loc0 [V01,T02] ( 3, 1.50) ushort -> rax ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03,T04] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V04 cse0 [V04,T03] ( 3, 1.50) int -> rax "CSE - moderate" ; V05 cse1 [V05,T01] ( 5, 2 ) int -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M63272_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M63272_IG02: test rcx, rcx je SHORT G_M63272_IG04 ;; bbWeight=1 PerfScore 1.25 G_M63272_IG03: mov edx, dword ptr [rcx+8] test edx, edx jne SHORT G_M63272_IG06 ;; bbWeight=0.25 PerfScore 0.81 G_M63272_IG04: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M63272_IG05: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M63272_IG06: mov edx, dword ptr [rcx+8] lea eax, [rdx-1] cmp eax, edx jae SHORT G_M63272_IG10 movsxd rax, eax movzx rax, word ptr [rcx+2*rax+12] cmp eax, 32 je SHORT G_M63272_IG08 cmp eax, 46 sete al movzx rax, al ;; bbWeight=0.50 PerfScore 4.38 G_M63272_IG07: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M63272_IG08: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M63272_IG09: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M63272_IG10: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 76, prolog size 4, PerfScore 16.41, (MethodHash=a53a08d7) for method PathInternal:EndsWithPeriodOrSpace(String):bool ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(String,int,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 4 ) ref -> rsi class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) int -> rbx ; V02 arg2 [V02,T02] ( 4, 4 ) byref -> rdi ;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref ; V04 loc1 [V04,T11] ( 3, 2.50) long -> r15 ; V05 loc2 [V05 ] ( 1, 0.50) ref -> [rbp-0x40] must-init pinned class-hnd ; V06 loc3 [V06,T12] ( 2, 2 ) long -> rsi ; V07 loc4 [V07 ] ( 1, 1 ) byref -> [rbp-0x48] must-init pinned ; V08 loc5 [V08,T13] ( 2, 2 ) bool -> rax ;* V09 loc6 [V09 ] ( 0, 0 ) int -> zero-ref ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11 ] ( 3, 3 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "stub argument" ; V12 tmp2 [V12,T04] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V13 tmp3 [V13,T05] ( 2, 4 ) int -> rsi "impAppendStmt" ; V14 tmp4 [V14,T06] ( 2, 4 ) int -> rax "Single return block return value" ; V15 FramesRoot [V15,T00] ( 6, 6 ) long -> r14 "Pinvoke FrameListRoot" ; V16 PInvokeFrame [V16 ] ( 8, 8 ) blk (72) [rbp-0x98] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V17 tmp7 [V17,T07] ( 2, 4 ) long -> r8 "Cast away GC" ; V18 tmp8 [V18,T08] ( 2, 4 ) long -> rcx "argument with side effect" ; V19 tmp9 [V19,T09] ( 2, 4 ) long -> rdx "argument with side effect" ; V20 tmp10 [V20,T10] ( 2, 4 ) long -> r8 "argument with side effect" ; ; Lcl frame size = 136 G_M1719_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] mov qword ptr [rbp-50H], r10 xor rbx, rbx mov qword ptr [rbp-40H], rbx mov qword ptr [rbp-48H], rbx mov rsi, rcx mov ebx, edx mov rdi, r8 ;; bbWeight=1 PerfScore 12.75 G_M1719_IG02: lea rcx, [rbp-90H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r14, rax mov rax, rsp mov qword ptr [rbp-70H], rax mov rax, rbp mov qword ptr [rbp-60H], rax lea rax, bword ptr [rbp-90H] mov qword ptr [r14+16], rax xor r15, r15 test rsi, rsi je SHORT G_M1719_IG04 ;; bbWeight=1 PerfScore 7.50 G_M1719_IG03: mov gword ptr [rbp-40H], rsi lea r15, bword ptr [rsi+12] ;; bbWeight=0.50 PerfScore 0.75 G_M1719_IG04: mov esi, ebx mov bword ptr [rbp-48H], rdi call StubHelpers:ClearLastError() mov rcx, qword ptr [rbp-50H] mov rcx, qword ptr [rcx+32] mov rax, qword ptr [rcx] mov rcx, r15 mov rdx, rsi mov r8, rdi mov r9, qword ptr [rbp-50H] mov qword ptr [rbp-80H], r9 lea r9, G_M1719_IG06 mov qword ptr [rbp-68H], r9 mov byte ptr [r14+12], 0 ;; bbWeight=1 PerfScore 13.00 G_M1719_IG05: call rax ;; bbWeight=1 PerfScore 3.00 G_M1719_IG06: mov byte ptr [r14+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M1719_IG07 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M1719_IG07: mov esi, eax call StubHelpers:SetLastError() test esi, esi setne al movzx rax, al ;; bbWeight=1 PerfScore 2.75 G_M1719_IG08: movzx rax, al mov rdx, bword ptr [rbp-88H] mov qword ptr [r14+16], rdx ;; bbWeight=1 PerfScore 2.25 G_M1719_IG09: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 243, prolog size 41, PerfScore 79.30, (MethodHash=556bf948) for method ILStubClass:IL_STUB_PInvoke(String,int,byref):bool ; ============================================================ ; Assembly listing for method FileVersionInfo:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T09] ( 3, 3 ) ref -> rdx class-hnd ; V02 loc0 [V02 ] ( 1, 1 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V03 loc1 [V03,T15] ( 4, 3 ) int -> rdi ; V04 loc2 [V04,T18] ( 3, 1.50) ref -> rax class-hnd exact ;* V05 loc3 [V05 ] ( 0, 0 ) long -> zero-ref ; V06 loc4 [V06 ] ( 3, 1.50) byref -> [rbp-0x40] must-init pinned ; V07 loc5 [V07,T06] ( 5, 4 ) long -> rbx ld-addr-op ; V08 loc6 [V08,T11] ( 3, 5 ) int -> rdi ; V09 loc7 [V09,T10] ( 3, 5 ) ref -> r14 class-hnd ; V10 loc8 [V10,T00] ( 5, 16.50) int -> r15 ; V11 loc9 [V11,T02] ( 3, 10 ) int -> rcx ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V14 tmp2 [V14,T14] ( 0, 0 ) long -> zero-ref "impAppendStmt" ; V15 tmp3 [V15,T05] ( 2, 8 ) int -> rcx ld-addr-op "Inlining Arg" ; V16 tmp4 [V16,T04] ( 2, 8 ) ref -> r8 class-hnd exact "Inlining Arg" ; V17 tmp5 [V17,T07] ( 3, 6 ) ref -> rax class-hnd "Inline return value spill temp" ; V18 tmp6 [V18,T01] ( 3, 12 ) int -> rcx "Inlining Arg" ;* V19 tmp7 [V19,T13] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V20 tmp8 [V20,T17] ( 2, 2 ) long -> rbx "Cast away GC" ; V21 tmp9 [V21,T16] ( 2, 2 ) ref -> r8 "argument with side effect" ; V22 cse0 [V22,T08] ( 3, 6 ) ref -> rdx "CSE - aggressive" ; V23 cse1 [V23,T12] ( 3, 5 ) int -> r12 "CSE - aggressive" ; ; Lcl frame size = 64 G_M61790_IG01: push rbp push r15 push r14 push r12 push rdi push rsi push rbx sub rsp, 64 lea rbp, [rsp+70H] xor rax, rax mov qword ptr [rbp-40H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 9.25 G_M61790_IG02: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsi+8] lea r8, [rbp-38H] mov ecx, 1 call Version:GetFileVersionInfoSizeEx(int,String,byref):int mov edi, eax test edi, edi je G_M61790_IG11 ;; bbWeight=1 PerfScore 6.75 G_M61790_IG03: movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC cmp dword ptr [rax+8], 0 jbe G_M61790_IG12 add rax, 16 mov bword ptr [rbp-40H], rax mov rbx, bword ptr [rbp-40H] mov qword ptr [rsp+20H], rbx mov rdx, gword ptr [rsi+8] mov r9d, edi mov ecx, 3 xor r8d, r8d call Version:GetFileVersionInfoEx(int,String,int,int,long):bool test eax, eax je G_M61790_IG10 mov rcx, rbx call FileVersionInfo:GetVarEntry(long):int mov edi, eax mov ecx, edi call FileVersionInfo:ConvertTo8DigitHex(int):String mov r8, rax mov rdx, rbx mov rcx, rsi call FileVersionInfo:GetVersionInfoForCodePage(long,String):bool:this test eax, eax jne G_M61790_IG10 mov rcx, 0xD1FFAB1E mov edx, 9 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r14, gword ptr [rcx] xor r15d, r15d mov r12d, dword ptr [r14+8] test r12d, r12d jle SHORT G_M61790_IG10 ;; bbWeight=0.50 PerfScore 12.88 G_M61790_IG04: movsxd rcx, r15d mov ecx, dword ptr [r14+4*rcx+16] cmp ecx, edi je SHORT G_M61790_IG09 ;; bbWeight=4 PerfScore 14.00 G_M61790_IG05: mov rax, 0xD1FFAB1E mov r8, gword ptr [rax] mov rax, 0xD1FFAB1E mov rdx, gword ptr [rax] test rdx, rdx jne SHORT G_M61790_IG07 ;; bbWeight=2 PerfScore 11.50 G_M61790_IG06: call Number:UInt32ToDecStr(int):String jmp SHORT G_M61790_IG08 ;; bbWeight=2 PerfScore 6.00 G_M61790_IG07: call Number:g__FormatUInt32Slow|40_0(int,String,IFormatProvider):String ;; bbWeight=2 PerfScore 2.00 G_M61790_IG08: mov rcx, rsi mov rdx, rbx mov r8, rax call FileVersionInfo:GetVersionInfoForCodePage(long,String):bool:this test eax, eax jne SHORT G_M61790_IG10 ;; bbWeight=2 PerfScore 6.00 G_M61790_IG09: inc r15d cmp r12d, r15d jg SHORT G_M61790_IG04 ;; bbWeight=4 PerfScore 6.00 G_M61790_IG10: xor rax, rax mov bword ptr [rbp-40H], rax ;; bbWeight=0.50 PerfScore 0.63 G_M61790_IG11: lea rsp, [rbp-30H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.00 G_M61790_IG12: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 330, prolog size 28, PerfScore 113.00, (MethodHash=ad260ea1) for method FileVersionInfo:.ctor(String):this ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(int,String,byref):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 3 ) int -> rbx ; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 4, 4 ) byref -> rdi ;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref ; V04 loc1 [V04,T11] ( 2, 2 ) long -> rcx ; V05 loc2 [V05,T10] ( 3, 2.50) long -> rdx ; V06 loc3 [V06 ] ( 1, 0.50) ref -> [rbp-0x40] must-init pinned class-hnd ; V07 loc4 [V07 ] ( 1, 1 ) byref -> [rbp-0x48] must-init pinned ;* V08 loc5 [V08 ] ( 0, 0 ) int -> zero-ref ; V09 loc6 [V09,T12] ( 2, 2 ) int -> rax ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11 ] ( 3, 3 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "stub argument" ; V12 tmp2 [V12,T04] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V13 tmp3 [V13,T05] ( 2, 4 ) int -> rax "Single return block return value" ; V14 FramesRoot [V14,T00] ( 6, 6 ) long -> r14 "Pinvoke FrameListRoot" ; V15 PInvokeFrame [V15 ] ( 8, 8 ) blk (72) [rbp-0x98] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V16 tmp6 [V16,T06] ( 2, 4 ) long -> r8 "Cast away GC" ; V17 tmp7 [V17,T07] ( 2, 4 ) long -> rcx "argument with side effect" ; V18 tmp8 [V18,T08] ( 2, 4 ) long -> rdx "argument with side effect" ; V19 tmp9 [V19,T09] ( 2, 4 ) long -> r8 "argument with side effect" ; ; Lcl frame size = 136 G_M40650_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] mov qword ptr [rbp-50H], r10 xor rbx, rbx mov qword ptr [rbp-40H], rbx mov qword ptr [rbp-48H], rbx mov ebx, ecx mov rsi, rdx mov rdi, r8 ;; bbWeight=1 PerfScore 12.75 G_M40650_IG02: lea rcx, [rbp-90H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r14, rax mov rcx, rsp mov qword ptr [rbp-70H], rcx mov rcx, rbp mov qword ptr [rbp-60H], rcx lea rcx, bword ptr [rbp-90H] mov qword ptr [r14+16], rcx mov ecx, ebx xor rdx, rdx test rsi, rsi je SHORT G_M40650_IG04 ;; bbWeight=1 PerfScore 7.75 G_M40650_IG03: mov gword ptr [rbp-40H], rsi lea rdx, bword ptr [rsi+12] ;; bbWeight=0.50 PerfScore 0.75 G_M40650_IG04: mov bword ptr [rbp-48H], rdi mov r8, qword ptr [rbp-50H] mov r8, qword ptr [r8+32] mov rax, qword ptr [r8] mov r8, rdi mov r9, qword ptr [rbp-50H] mov qword ptr [rbp-80H], r9 lea r9, G_M40650_IG06 mov qword ptr [rbp-68H], r9 mov byte ptr [r14+12], 0 ;; bbWeight=1 PerfScore 11.25 G_M40650_IG05: call rax ;; bbWeight=1 PerfScore 3.00 G_M40650_IG06: mov byte ptr [r14+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M40650_IG07 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M40650_IG07: mov rdx, bword ptr [rbp-88H] mov qword ptr [r14+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M40650_IG08: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 213, prolog size 41, PerfScore 71.80, (MethodHash=bae76135) for method ILStubClass:IL_STUB_PInvoke(int,String,byref):int ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(int,String,int,int,long):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 3 ) int -> rdi ; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rsi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) int -> rbx ; V03 arg3 [V03,T04] ( 3, 3 ) int -> r14 ; V04 arg4 [V04,T13] ( 1, 1 ) long -> [rbp+0x30] ;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref ; V06 loc1 [V06,T08] ( 2, 2 ) long -> rcx ; V07 loc2 [V07,T07] ( 3, 2.50) long -> rdx ; V08 loc3 [V08 ] ( 1, 0.50) ref -> [rbp-0x40] must-init pinned class-hnd ; V09 loc4 [V09,T09] ( 2, 2 ) long -> r8 ; V10 loc5 [V10,T10] ( 2, 2 ) long -> r9 ;* V11 loc6 [V11 ] ( 0, 0 ) long -> zero-ref ; V12 loc7 [V12,T11] ( 2, 2 ) bool -> rax ; V13 loc8 [V13,T12] ( 2, 2 ) int -> rax ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15 ] ( 3, 3 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "stub argument" ; V16 tmp2 [V16,T05] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V17 tmp3 [V17,T06] ( 2, 4 ) int -> rax "Single return block return value" ; V18 FramesRoot [V18,T00] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V19 PInvokeFrame [V19 ] ( 8, 8 ) blk (72) [rbp-0x90] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 136 G_M63639_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] mov qword ptr [rbp-48H], r10 xor rbx, rbx mov qword ptr [rbp-40H], rbx mov edi, ecx mov rsi, rdx mov ebx, r8d mov r14d, r9d ;; bbWeight=1 PerfScore 12.00 G_M63639_IG02: lea rcx, [rbp-88H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-68H], rcx mov rcx, rbp mov qword ptr [rbp-58H], rcx lea rcx, bword ptr [rbp-88H] mov qword ptr [r15+16], rcx mov ecx, edi xor rdx, rdx test rsi, rsi je SHORT G_M63639_IG04 ;; bbWeight=1 PerfScore 7.75 G_M63639_IG03: mov gword ptr [rbp-40H], rsi lea rdx, bword ptr [rsi+12] ;; bbWeight=0.50 PerfScore 0.75 G_M63639_IG04: mov r8d, ebx mov r9d, r14d mov rax, qword ptr [rbp-48H] mov rax, qword ptr [rax+32] mov rax, qword ptr [rax] mov rsi, qword ptr [rbp+30H] mov qword ptr [rsp+20H], rsi mov r10, qword ptr [rbp-48H] mov qword ptr [rbp-78H], r10 lea r10, G_M63639_IG06 mov qword ptr [rbp-60H], r10 mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 12.50 G_M63639_IG05: call rax ;; bbWeight=1 PerfScore 3.00 G_M63639_IG06: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M63639_IG07 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M63639_IG07: test eax, eax setne al movzx rax, al ;; bbWeight=1 PerfScore 1.50 G_M63639_IG08: movzx rax, al mov rdx, bword ptr [rbp-80H] mov qword ptr [r15+16], rdx ;; bbWeight=1 PerfScore 2.25 G_M63639_IG09: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 228, prolog size 37, PerfScore 75.55, (MethodHash=b87e0768) for method ILStubClass:IL_STUB_PInvoke(int,String,int,int,long):bool ; ============================================================ ; Assembly listing for method FileVersionInfo:GetVarEntry(long):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) long -> rcx ; V01 loc0 [V01 ] ( 4, 3 ) long -> [rbp-0x10] do-not-enreg[X] addr-exposed ld-addr-op ; V02 loc1 [V02 ] ( 1, 1 ) int -> [rbp-0x18] do-not-enreg[X] addr-exposed ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 2, 2 ) int -> rsi "impAppendStmt" ; V05 tmp2 [V05,T02] ( 2, 2 ) long -> rcx "Inlining Arg" ; V06 tmp3 [V06,T03] ( 2, 2 ) long -> rcx ld-addr-op "Inlining Arg" ;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V09 tmp6 [V09,T04] ( 2, 2 ) long -> rcx "Inlining Arg" ;* V10 tmp7 [V10 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; ; Lcl frame size = 56 G_M8343_IG01: push rbp push rsi sub rsp, 56 lea rbp, [rsp+40H] ;; bbWeight=1 PerfScore 2.75 G_M8343_IG02: xor rdx, rdx mov qword ptr [rbp-10H], rdx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea r9, [rbp-18H] lea r8, [rbp-10H] call Version:VerQueryValue(long,String,byref,byref):bool test eax, eax je SHORT G_M8343_IG05 ;; bbWeight=1 PerfScore 6.75 G_M8343_IG03: mov rcx, qword ptr [rbp-10H] xor edx, edx call Marshal:ReadInt16(long,int):short mov esi, eax shl esi, 16 mov rcx, qword ptr [rbp-10H] add rcx, 2 xor edx, edx call Marshal:ReadInt16(long,int):short add eax, esi ;; bbWeight=0.50 PerfScore 3.63 G_M8343_IG04: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=0.50 PerfScore 1.25 G_M8343_IG05: mov eax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M8343_IG06: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=0.50 PerfScore 1.25 ; Total bytes of code 99, prolog size 11, PerfScore 25.65, (MethodHash=6326df68) for method FileVersionInfo:GetVarEntry(long):int ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(long,String,byref,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 3, 3 ) long -> r14 ; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 4, 4 ) byref -> rdi ; V03 arg3 [V03,T03] ( 4, 4 ) byref -> rbx ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref ; V05 loc1 [V05,T14] ( 2, 2 ) long -> rcx ; V06 loc2 [V06,T13] ( 3, 2.50) long -> rdx ; V07 loc3 [V07 ] ( 1, 0.50) ref -> [rbp-0x40] must-init pinned class-hnd ; V08 loc4 [V08 ] ( 1, 1 ) byref -> [rbp-0x48] must-init pinned ; V09 loc5 [V09 ] ( 1, 1 ) byref -> [rbp-0x50] must-init pinned ; V10 loc6 [V10,T15] ( 2, 2 ) bool -> rax ; V11 loc7 [V11,T16] ( 2, 2 ) int -> rax ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V13 tmp1 [V13 ] ( 3, 3 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed "stub argument" ; V14 tmp2 [V14,T05] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V15 tmp3 [V15,T06] ( 2, 4 ) int -> rax "Single return block return value" ; V16 FramesRoot [V16,T00] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V17 PInvokeFrame [V17 ] ( 8, 8 ) blk (72) [rbp-0xA0] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V18 tmp6 [V18,T07] ( 2, 4 ) long -> r8 "Cast away GC" ; V19 tmp7 [V19,T08] ( 2, 4 ) long -> r9 "Cast away GC" ; V20 tmp8 [V20,T09] ( 2, 4 ) long -> rcx "argument with side effect" ; V21 tmp9 [V21,T10] ( 2, 4 ) long -> rdx "argument with side effect" ; V22 tmp10 [V22,T11] ( 2, 4 ) long -> r8 "argument with side effect" ; V23 tmp11 [V23,T12] ( 2, 4 ) long -> r9 "argument with side effect" ; ; Lcl frame size = 136 G_M26216_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] mov qword ptr [rbp-58H], r10 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 xor rbx, rbx mov qword ptr [rbp-40H], rbx mov r14, rcx mov rsi, rdx mov rdi, r8 mov rbx, r9 ;; bbWeight=1 PerfScore 13.33 G_M26216_IG02: lea rcx, [rbp-98H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-78H], rcx mov rcx, rbp mov qword ptr [rbp-68H], rcx lea rcx, bword ptr [rbp-98H] mov qword ptr [r15+16], rcx mov rcx, r14 xor rdx, rdx test rsi, rsi je SHORT G_M26216_IG04 ;; bbWeight=1 PerfScore 7.75 G_M26216_IG03: mov gword ptr [rbp-40H], rsi lea rdx, bword ptr [rsi+12] ;; bbWeight=0.50 PerfScore 0.75 G_M26216_IG04: mov bword ptr [rbp-48H], rdi mov bword ptr [rbp-50H], rbx mov r8, qword ptr [rbp-58H] mov r8, qword ptr [r8+32] mov rax, qword ptr [r8] mov r8, rdi mov r9, rbx mov r10, qword ptr [rbp-58H] mov qword ptr [rbp-88H], r10 lea r10, G_M26216_IG06 mov qword ptr [rbp-70H], r10 mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 12.50 G_M26216_IG05: call rax ;; bbWeight=1 PerfScore 3.00 G_M26216_IG06: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M26216_IG07 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M26216_IG07: test eax, eax setne al movzx rax, al ;; bbWeight=1 PerfScore 1.50 G_M26216_IG08: movzx rax, al mov rdx, bword ptr [rbp-90H] mov qword ptr [r15+16], rdx ;; bbWeight=1 PerfScore 2.25 G_M26216_IG09: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 244, prolog size 46, PerfScore 78.68, (MethodHash=d0189997) for method ILStubClass:IL_STUB_PInvoke(long,String,byref,byref):bool ; ============================================================ ; Assembly listing for method Marshal:ReadInt16(long,int):short ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) long -> rcx ; V01 arg1 [V01,T01] ( 3, 3 ) int -> rdx ; V02 loc0 [V02,T02] ( 4, 3 ) long -> rax ; V03 loc1 [V03,T03] ( 3, 2 ) short -> rax ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ; V06 tmp2 [V06,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V08 PSPSym [V08 ] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 40 G_M6226_IG01: push rbp push rsi sub rsp, 40 lea rbp, [rsp+30H] mov qword ptr [rbp-10H], rsp ;; bbWeight=1 PerfScore 3.75 G_M6226_IG02: movsxd rax, edx add rax, rcx test al, 1 jne SHORT G_M6226_IG04 ;; bbWeight=1 PerfScore 1.75 G_M6226_IG03: movsx rax, word ptr [rax] jmp SHORT G_M6226_IG05 ;; bbWeight=0.50 PerfScore 2.00 G_M6226_IG04: movsx rax, word ptr [rax] ;; bbWeight=0.50 PerfScore 1.00 G_M6226_IG05: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 G_M6226_IG06: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+30H] ;; bbWeight=0 PerfScore 0.00 G_M6226_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call AccessViolationException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 96, prolog size 15, PerfScore 20.60, (MethodHash=2b53e7ad) for method Marshal:ReadInt16(long,int):short ; ============================================================ ; Assembly listing for method FileVersionInfo:ConvertTo8DigitHex(int):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) int -> rcx ld-addr-op ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 2, 3 ) ref -> r8 class-hnd exact "Inlining Arg" ; V03 tmp2 [V03,T04] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" ; V04 tmp3 [V04,T01] ( 3, 4 ) int -> rcx "Inlining Arg" ;* V05 tmp4 [V05,T05] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V06 cse0 [V06,T03] ( 3, 2.50) ref -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M30873_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M30873_IG02: mov rax, 0xD1FFAB1E mov r8, gword ptr [rax] mov rax, 0xD1FFAB1E mov rdx, gword ptr [rax] test rdx, rdx jne SHORT G_M30873_IG04 ;; bbWeight=1 PerfScore 5.75 G_M30873_IG03: call Number:UInt32ToDecStr(int):String jmp SHORT G_M30873_IG05 ;; bbWeight=0.50 PerfScore 1.50 G_M30873_IG04: call Number:g__FormatUInt32Slow|40_0(int,String,IFormatProvider):String ;; bbWeight=0.50 PerfScore 0.50 G_M30873_IG05: nop ;; bbWeight=1 PerfScore 0.25 G_M30873_IG06: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 53, prolog size 4, PerfScore 14.80, (MethodHash=fbb58766) for method FileVersionInfo:ConvertTo8DigitHex(int):String ; ============================================================ ; Assembly listing for method Number:g__FormatUInt32Slow|40_0(int,String,IFormatProvider):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T05] ( 5, 3.50) int -> rsi ; V01 arg1 [V01,T06] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T07] ( 3, 3 ) ref -> r8 class-hnd ;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref ; V04 loc1 [V04,T08] ( 5, 3.50) ushort -> r15 ; V05 loc2 [V05 ] ( 5, 3 ) int -> [rbp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc3 [V06,T10] ( 4, 3 ) ushort -> r12 ; V07 loc4 [V07,T33] ( 3, 1.50) ref -> rdi class-hnd ; V08 loc5 [V08,T43] ( 2, 1 ) long -> rcx ; V09 loc6 [V09 ] ( 15, 7.50) struct (32) [rbp+0x30] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ptr ; V10 loc7 [V10,T44] ( 2, 1 ) long -> rcx ; V11 loc8 [V11 ] ( 6, 3 ) struct (32) [rbp+0x10] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ptr ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V13 tmp1 [V13,T22] ( 4, 2 ) int -> rcx ; V14 tmp2 [V14 ] ( 1, 0.50) blk (16) [rbp+0x58] do-not-enreg[X] addr-exposed unsafe-buffer "stackallocLocal" ;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V16 tmp4 [V16 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V17 tmp5 [V17 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V19 tmp7 [V19,T26] ( 2, 2 ) byref -> rbx "Inlining Arg" ;* V20 tmp8 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V21 tmp9 [V21,T29] ( 2, 2 ) int -> r14 "Inlining Arg" ; V22 tmp10 [V22,T34] ( 3, 1.50) ref -> rdi class-hnd "Inline return value spill temp" ;* V23 tmp11 [V23 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V24 tmp12 [V24,T13] ( 3, 3 ) byref -> rcx "Span.get_Item ptrToSpan" ;* V25 tmp13 [V25 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V26 tmp14 [V26 ] ( 0, 0 ) long -> zero-ref ptr "Inline stloc first use temp" ; V27 tmp15 [V27,T11] ( 4, 3 ) long -> registers ptr "Inline stloc first use temp" ; V28 tmp16 [V28,T01] ( 6, 7.50) int -> rcx "Inline stloc first use temp" ; V29 tmp17 [V29,T12] ( 4, 3 ) long -> registers ptr "Inline stloc first use temp" ; V30 tmp18 [V30,T00] ( 2, 8 ) int -> rcx "dup spill" ; V31 tmp19 [V31,T03] ( 3, 6 ) long -> rdx "impSpillLclRefs" ; V32 tmp20 [V32,T04] ( 3, 6 ) long -> rax "impSpillLclRefs" ; V33 tmp21 [V33,T14] ( 3, 3 ) byref -> rcx "Span.get_Item ptrToSpan" ; V34 tmp22 [V34,T27] ( 2, 2 ) byref -> r12 "Inlining Arg" ; V35 tmp23 [V35,T15] ( 3, 3 ) byref -> rdx "Span.get_Item ptrToSpan" ; V36 tmp24 [V36,T28] ( 2, 2 ) byref -> rdx "Inlining Arg" ;* V37 tmp25 [V37 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V38 tmp26 [V38 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V39 tmp27 [V39,T20] ( 3, 2.50) byref -> rbx V03._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ; V40 tmp28 [V40,T21] ( 3, 2.50) int -> r14 V03._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ; V41 tmp29 [V41,T35] ( 2, 1 ) byref -> rcx V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ;* V42 tmp30 [V42,T45] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ; V43 tmp31 [V43,T23] ( 3, 2 ) byref -> rbx V16._pointer(offs=0x00) P-INDEP "field V16._pointer (fldOffset=0x0)" ; V44 tmp32 [V44,T25] ( 3, 2 ) int -> r14 V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)" ; V45 tmp33 [V45,T36] ( 2, 1 ) byref -> rbx V17._pointer(offs=0x00) P-INDEP "field V17._pointer (fldOffset=0x0)" ; V46 tmp34 [V46,T46] ( 2, 1 ) int -> r14 V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)" ; V47 tmp35 [V47,T37] ( 2, 1 ) byref -> rbx V18._pointer(offs=0x00) P-INDEP "field V18._pointer (fldOffset=0x0)" ;* V48 tmp36 [V48,T47] ( 0, 0 ) int -> zero-ref ptr V18._length(offs=0x08) P-INDEP "field V18._length (fldOffset=0x8)" ; V49 tmp37 [V49,T38] ( 2, 1 ) byref -> rbx V20._value(offs=0x00) P-INDEP "field V20._value (fldOffset=0x0)" ; V50 tmp38 [V50,T39] ( 2, 1 ) byref -> rcx V23._pointer(offs=0x00) P-INDEP "field V23._pointer (fldOffset=0x0)" ;* V51 tmp39 [V51,T48] ( 0, 0 ) int -> zero-ref V23._length(offs=0x08) P-INDEP "field V23._length (fldOffset=0x8)" ; V52 tmp40 [V52,T40] ( 2, 1 ) byref -> rcx V25._value(offs=0x00) P-INDEP "field V25._value (fldOffset=0x0)" ; V53 tmp41 [V53,T41] ( 2, 1 ) byref -> rcx V37._value(offs=0x00) P-INDEP "field V37._value (fldOffset=0x0)" ; V54 tmp42 [V54,T42] ( 2, 1 ) byref -> rcx V38._pointer(offs=0x00) P-INDEP "field V38._pointer (fldOffset=0x0)" ;* V55 tmp43 [V55,T49] ( 0, 0 ) int -> zero-ref V38._length(offs=0x08) P-INDEP "field V38._length (fldOffset=0x8)" ; V56 tmp44 [V56 ] ( 4, 6 ) struct (16) [rbp+0x00] do-not-enreg[XSB] must-init addr-exposed ptr "by-value struct argument" ; V57 tmp45 [V57,T02] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V58 tmp46 [V58,T16] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V59 tmp47 [V59,T19] ( 3, 3 ) long -> r12 "Cast away GC" ; V60 tmp48 [V60,T30] ( 2, 2 ) long -> rdx "Cast away GC" ; V61 tmp49 [V61,T17] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V62 tmp50 [V62,T18] ( 3, 3 ) byref -> r8 stack-byref "BlockOp address local" ; V63 tmp51 [V63,T31] ( 2, 2 ) long -> rcx "argument with side effect" ; V64 tmp52 [V64,T32] ( 2, 2 ) long -> rdx "argument with side effect" ; V65 GsCookie [V65 ] ( 1, 1 ) long -> [rbp+0x68] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V66 tmp54 [V66,T09] ( 4, 3 ) ref -> rdx "shadowVar" ; V67 tmp55 [V67,T24] ( 3, 2 ) ref -> rdi "shadowVar" ; ; Lcl frame size = 160 G_M31445_IG01: push rbp push r15 push r14 push r12 push rdi push rsi push rbx sub rsp, 160 lea rbp, [rsp+30H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp], xmm4 vmovdqa xmmword ptr [rbp+10H], xmm4 vmovdqa xmmword ptr [rbp+20H], xmm4 vmovdqa xmmword ptr [rbp+30H], xmm4 vmovdqa xmmword ptr [rbp+40H], xmm4 mov rax, 0xD1FFAB1E mov qword ptr [rbp+68H], rax mov esi, ecx ;; bbWeight=1 PerfScore 14.58 G_M31445_IG02: mov rdi, r8 ;; bbWeight=1 PerfScore 0.25 G_M31445_IG03: test rdx, rdx jne SHORT G_M31445_IG05 ;; bbWeight=1 PerfScore 1.25 G_M31445_IG04: xor rbx, rbx xor r14d, r14d jmp SHORT G_M31445_IG06 ;; bbWeight=0.50 PerfScore 1.25 G_M31445_IG05: lea rbx, bword ptr [rdx+12] mov r14d, dword ptr [rdx+8] ;; bbWeight=0.50 PerfScore 1.25 G_M31445_IG06: lea rcx, bword ptr [rbp] mov bword ptr [rcx], rbx mov dword ptr [rcx+8], r14d lea rcx, bword ptr [rbp] lea rdx, [rbp+50H] call Number:ParseFormatSpecifier(ReadOnlySpan`1,byref):ushort mov r15d, eax mov r12d, r15d and r12d, 0xFFDF cmp r12d, 71 je SHORT G_M31445_IG08 ;; bbWeight=1 PerfScore 6.50 G_M31445_IG07: cmp r12d, 68 sete cl movzx rcx, cl test ecx, ecx je SHORT G_M31445_IG12 jmp SHORT G_M31445_IG09 ;; bbWeight=0.50 PerfScore 2.38 G_M31445_IG08: cmp dword ptr [rbp+50H], 0 setle cl movzx rcx, cl test ecx, ecx je SHORT G_M31445_IG12 ;; bbWeight=0.50 PerfScore 1.75 G_M31445_IG09: mov ecx, esi mov edx, dword ptr [rbp+50H] call Number:UInt32ToDecStr(int,int):String mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+68H], rcx je SHORT G_M31445_IG10 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 2.75 G_M31445_IG10: nop ;; bbWeight=0.50 PerfScore 0.13 G_M31445_IG11: lea rsp, [rbp+70H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.50 G_M31445_IG12: cmp r12d, 88 jne SHORT G_M31445_IG15 add r15d, -33 movzx rdx, r15w mov ecx, esi mov r8d, dword ptr [rbp+50H] call Number:Int32ToHexStr(int,ushort,int):String mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+68H], rcx je SHORT G_M31445_IG13 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 3.63 G_M31445_IG13: nop ;; bbWeight=0.50 PerfScore 0.13 G_M31445_IG14: lea rsp, [rbp+70H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.50 G_M31445_IG15: test rdi, rdi je SHORT G_M31445_IG16 mov rcx, rdi call NumberFormatInfo:g__GetProviderNonNull|42_0(IFormatProvider):NumberFormatInfo mov rdi, rax jmp SHORT G_M31445_IG17 ;; bbWeight=0.50 PerfScore 2.38 G_M31445_IG16: call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo mov rdi, rax ;; bbWeight=0.50 PerfScore 0.63 G_M31445_IG17: lea rcx, [rbp+58H] xor edx, edx mov dword ptr [rbp+30H], edx mov dword ptr [rbp+34H], edx mov byte ptr [rbp+38H], 0 mov byte ptr [rbp+39H], 0 mov byte ptr [rbp+3AH], 1 lea rdx, bword ptr [rbp+40H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], 11 lea rcx, bword ptr [rbp+40H] cmp dword ptr [rcx+8], 0 jbe G_M31445_IG25 mov rcx, bword ptr [rcx] mov byte ptr [rcx], 0 mov dword ptr [rbp+30H], 10 mov byte ptr [rbp+38H], 0 lea rcx, bword ptr [rbp+40H] cmp dword ptr [rcx+8], 0 jbe G_M31445_IG25 mov r12, bword ptr [rcx] lea rcx, [r12+10] mov edx, esi xor r8d, r8d call Number:UInt32ToDecChars(long,int,int):long add r12, 10 sub r12, rax mov ecx, r12d mov dword ptr [rbp+30H], ecx mov dword ptr [rbp+34H], ecx lea rdx, bword ptr [rbp+40H] cmp dword ptr [rdx+8], 0 jbe G_M31445_IG25 mov rdx, bword ptr [rdx] jmp SHORT G_M31445_IG19 ;; bbWeight=0.50 PerfScore 17.25 G_M31445_IG18: lea r8, [rdx+1] lea r9, [rax+1] movzx rax, byte ptr [rax] mov byte ptr [rdx], al mov rax, r9 mov rdx, r8 ;; bbWeight=1 PerfScore 4.50 G_M31445_IG19: dec ecx test ecx, ecx jge SHORT G_M31445_IG18 ;; bbWeight=2 PerfScore 3.00 G_M31445_IG20: mov byte ptr [rdx], 0 add rsp, 48 test dword ptr [rsp], esp sub rsp, 64 sub rsp, 48 lea rcx, [rsp+30H] xor rdx, rdx mov gword ptr [rbp+10H], rdx lea rdx, bword ptr [rbp+20H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], 32 xor ecx, ecx mov dword ptr [rbp+18H], ecx test r15d, r15d je SHORT G_M31445_IG21 mov gword ptr [rsp+20H], rdi lea rcx, [rbp+10H] lea rdx, [rbp+30H] mov r8d, r15d mov r9d, dword ptr [rbp+50H] call Number:NumberToString(byref,byref,ushort,int,NumberFormatInfo) jmp SHORT G_M31445_IG22 ;; bbWeight=0.50 PerfScore 8.38 G_M31445_IG21: lea rcx, [rbp+10H] lea rdx, [rbp+30H] lea r8, bword ptr [rbp] mov bword ptr [r8], rbx mov dword ptr [r8+8], r14d lea r8, bword ptr [rbp] mov r9, rdi call Number:NumberToStringFormat(byref,byref,ReadOnlySpan`1,NumberFormatInfo) ;; bbWeight=0.50 PerfScore 2.63 G_M31445_IG22: lea rcx, bword ptr [rbp+10H] call ValueStringBuilder:ToString():String:this mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+68H], rcx je SHORT G_M31445_IG23 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 2.38 G_M31445_IG23: nop ;; bbWeight=0.50 PerfScore 0.13 G_M31445_IG24: lea rsp, [rbp+70H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.50 G_M31445_IG25: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 622, prolog size 67, PerfScore 147.38, (MethodHash=7fc3852a) for method Number:g__FormatUInt32Slow|40_0(int,String,IFormatProvider):String ; ============================================================ ; Assembly listing for method Number:ParseFormatSpecifier(ReadOnlySpan`1,byref):ushort ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T07] ( 7, 4.50) byref -> rdx ; V02 loc0 [V02,T08] ( 9, 5 ) ushort -> r8 ; V03 loc1 [V03,T04] ( 5, 9 ) int -> r9 ; V04 loc2 [V04,T00] ( 8, 14 ) int -> r10 ; V05 loc3 [V05,T10] ( 3, 1.50) int -> r9 ; V06 loc4 [V06,T11] ( 3, 1.50) int -> r9 ; V07 loc5 [V07,T12] ( 3, 1.50) int -> r10 ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T05] ( 2, 8 ) int -> r10 "impSpillLclRefs" ; V10 tmp2 [V10,T09] ( 5, 5 ) int -> r8 "Single return block return value" ; V11 tmp3 [V11,T06] ( 7, 7.50) byref -> rax V13._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V12 tmp4 [V12,T03] ( 10, 9.50) int -> rcx V13._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V14 cse0 [V14,T01] ( 5, 11 ) int -> r11 "CSE - aggressive" ; ; Lcl frame size = 32 G_M7968_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M7968_IG02: mov rax, bword ptr [rcx] mov ecx, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M7968_IG03: xor r8d, r8d test ecx, ecx jle G_M7968_IG13 ;; bbWeight=1 PerfScore 1.50 G_M7968_IG04: cmp ecx, 0 jbe G_M7968_IG19 movzx r8, word ptr [rax] lea r9d, [r8-65] cmp r9d, 25 jbe SHORT G_M7968_IG05 lea r9d, [r8-97] cmp r9d, 25 ja G_M7968_IG13 ;; bbWeight=0.50 PerfScore 3.38 G_M7968_IG05: cmp ecx, 1 jne SHORT G_M7968_IG06 mov dword ptr [rdx], -1 jmp G_M7968_IG17 ;; bbWeight=0.50 PerfScore 2.13 G_M7968_IG06: cmp ecx, 2 jne SHORT G_M7968_IG07 movzx r9, word ptr [rax+2] add r9d, -48 cmp r9d, 10 jae SHORT G_M7968_IG08 mov dword ptr [rdx], r9d jmp G_M7968_IG17 ;; bbWeight=0.50 PerfScore 3.88 G_M7968_IG07: cmp ecx, 3 jne SHORT G_M7968_IG08 movzx r9, word ptr [rax+2] add r9d, -48 movzx r10, word ptr [rax+4] add r10d, -48 cmp r9d, 10 jae SHORT G_M7968_IG08 cmp r10d, 10 jae SHORT G_M7968_IG08 lea ecx, [r9+4*r9] add ecx, ecx add ecx, r10d mov dword ptr [rdx], ecx jmp SHORT G_M7968_IG17 ;; bbWeight=0.50 PerfScore 6.13 G_M7968_IG08: xor r9d, r9d mov r10d, 1 jmp SHORT G_M7968_IG10 ;; bbWeight=0.50 PerfScore 1.25 G_M7968_IG09: inc r10d lea r9d, [r9+4*r9] lea r9d, [r11+2*r9-48] ;; bbWeight=2 PerfScore 3.50 G_M7968_IG10: cmp r10d, ecx jge SHORT G_M7968_IG11 movsxd r11, r10d movzx r11, word ptr [rax+2*r11] lea esi, [r11-48] cmp esi, 10 jae SHORT G_M7968_IG11 cmp r9d, 10 jl SHORT G_M7968_IG09 ;; bbWeight=4 PerfScore 26.00 G_M7968_IG11: cmp r10d, ecx je SHORT G_M7968_IG12 cmp r10d, ecx jae SHORT G_M7968_IG19 movsxd r11, r10d movzx r11, word ptr [rax+2*r11] test r11d, r11d jne SHORT G_M7968_IG13 ;; bbWeight=0.50 PerfScore 3.00 G_M7968_IG12: mov dword ptr [rdx], r9d jmp SHORT G_M7968_IG17 ;; bbWeight=0.50 PerfScore 1.50 G_M7968_IG13: mov dword ptr [rdx], -1 test ecx, ecx je SHORT G_M7968_IG15 test r8d, r8d je SHORT G_M7968_IG15 xor eax, eax ;; bbWeight=0.50 PerfScore 1.88 G_M7968_IG14: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M7968_IG15: mov eax, 71 ;; bbWeight=0.50 PerfScore 0.13 G_M7968_IG16: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M7968_IG17: movzx rax, r8w ;; bbWeight=0.50 PerfScore 0.13 G_M7968_IG18: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M7968_IG19: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 280, prolog size 5, PerfScore 90.25, (MethodHash=f8e3e0df) for method Number:ParseFormatSpecifier(ReadOnlySpan`1,byref):ushort ; ============================================================ ; Assembly listing for method Number:Int32ToHexStr(int,ushort,int):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 4, 4 ) int -> rdi ; V01 arg1 [V01,T03] ( 3, 3 ) ushort -> rbx ; V02 arg2 [V02,T00] ( 7, 6 ) int -> rsi ; V03 loc0 [V03,T06] ( 3, 3 ) int -> rbp ; V04 loc1 [V04,T05] ( 4, 3.50) ref -> r14 class-hnd ;* V05 loc2 [V05 ] ( 0, 0 ) long -> zero-ref ; V06 loc3 [V06 ] ( 3, 2 ) byref -> [rsp+0x28] must-init pinned ;* V07 loc4 [V07 ] ( 0, 0 ) long -> zero-ref ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T07] ( 3, 2 ) long -> rcx ;* V10 tmp2 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V11 tmp3 [V11,T09] ( 2, 2 ) int -> rbp "Inline return value spill temp" ; V12 tmp4 [V12,T01] ( 4, 8 ) long -> rcx "Inlining Arg" ; V13 tmp5 [V13,T08] ( 3, 2 ) int -> rbp "Inline return value spill temp" ; V14 tmp6 [V14,T04] ( 3, 5 ) int -> rbp "Inlining Arg" ; V15 tmp7 [V15,T10] ( 2, 2 ) long -> rcx "Cast away GC" ; ; Lcl frame size = 48 G_M41027_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov edi, ecx mov ebx, edx mov esi, r8d ;; bbWeight=1 PerfScore 7.25 G_M41027_IG02: test esi, esi jg SHORT G_M41027_IG04 ;; bbWeight=1 PerfScore 1.25 G_M41027_IG03: mov esi, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M41027_IG04: mov ecx, edi or rcx, 1 lzcnt rcx, rcx mov ebp, ecx xor ebp, 63 sar ebp, 2 inc ebp cmp esi, ebp jge SHORT G_M41027_IG06 ;; bbWeight=1 PerfScore 6.50 G_M41027_IG05: jmp SHORT G_M41027_IG07 ;; bbWeight=0.50 PerfScore 1.00 G_M41027_IG06: mov ebp, esi ;; bbWeight=0.50 PerfScore 0.13 G_M41027_IG07: mov ecx, ebp call String:FastAllocateString(int):String mov r14, rax test r14, r14 jne SHORT G_M41027_IG09 ;; bbWeight=1 PerfScore 2.75 G_M41027_IG08: xor rcx, rcx jmp SHORT G_M41027_IG10 ;; bbWeight=0.50 PerfScore 1.13 G_M41027_IG09: lea rcx, bword ptr [r14+12] mov bword ptr [rsp+28H], rcx mov rcx, bword ptr [rsp+28H] ;; bbWeight=0.50 PerfScore 1.25 G_M41027_IG10: movsxd r8, ebp lea rcx, [rcx+2*r8] movzx r8, bx mov edx, edi mov r9d, esi call Number:Int32ToHexChars(long,int,int,int):long xor rax, rax mov bword ptr [rsp+28H], rax mov rax, r14 ;; bbWeight=1 PerfScore 4.00 G_M41027_IG11: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 137, prolog size 17, PerfScore 42.83, (MethodHash=53735fbc) for method Number:Int32ToHexStr(int,ushort,int):String ; ============================================================ ; Assembly listing for method Number:Int32ToHexChars(long,int,int,int):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 6, 9 ) long -> rcx ; V01 arg1 [V01,T02] ( 6, 16 ) int -> rdx ; V02 arg2 [V02,T06] ( 3, 4 ) int -> r8 ; V03 arg3 [V03,T01] ( 5, 26 ) int -> r9 ; V04 loc0 [V04,T09] ( 2, 4 ) ubyte -> rax ;# V05 OutArgs [V05 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T00] ( 2, 32 ) int -> r9 "dup spill" ; V07 tmp2 [V07,T05] ( 2, 8 ) long -> rcx "dup spill" ;* V08 tmp3 [V08,T11] ( 0, 0 ) long -> zero-ref ; V09 tmp4 [V09,T04] ( 4, 8 ) int -> rax ;* V10 tmp5 [V10,T10] ( 0, 0 ) long -> zero-ref ; V11 tmp6 [V11,T07] ( 3, 6 ) int -> rax ; V12 tmp7 [V12,T08] ( 3, 6 ) int -> r10 ; ; Lcl frame size = 0 G_M30928_IG01: ;; bbWeight=1 PerfScore 0.00 G_M30928_IG02: jmp SHORT G_M30928_IG06 ;; bbWeight=1 PerfScore 2.00 G_M30928_IG03: mov eax, edx and eax, 15 add rcx, -2 cmp eax, 10 jl SHORT G_M30928_IG04 mov r10d, r8d jmp SHORT G_M30928_IG05 ;; bbWeight=2 PerfScore 8.50 G_M30928_IG04: mov r10d, 48 ;; bbWeight=2 PerfScore 0.50 G_M30928_IG05: add eax, r10d mov word ptr [rcx], ax shr edx, 4 ;; bbWeight=2 PerfScore 6.50 G_M30928_IG06: dec r9d test r9d, r9d jge SHORT G_M30928_IG03 test edx, edx jne SHORT G_M30928_IG03 ;; bbWeight=8 PerfScore 22.00 G_M30928_IG07: mov rax, rcx ;; bbWeight=1 PerfScore 0.25 G_M30928_IG08: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 52, prolog size 0, PerfScore 45.95, (MethodHash=03fc872f) for method Number:Int32ToHexChars(long,int,int,int):long ; ============================================================ ; Assembly listing for method FileVersionInfo:GetVersionInfoForCodePage(long,String):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 29, 29 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 16, 16 ) long -> rdi ; V02 arg2 [V02,T02] ( 14, 14 ) ref -> rbx class-hnd ; V03 loc0 [V03,T03] ( 13, 13 ) ref -> rbp class-hnd exact ; V04 loc1 [V04 ] ( 14, 14 ) struct (56) [rsp+0xA0] do-not-enreg[XSF] addr-exposed ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T16] ( 2, 4 ) ref -> [rsp+0x78] class-hnd exact "Inlining Arg" ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ; V08 tmp3 [V08,T17] ( 2, 4 ) ref -> [rsp+0x70] class-hnd exact "Inlining Arg" ;* V09 tmp4 [V09 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ; V10 tmp5 [V10,T18] ( 2, 4 ) ref -> [rsp+0x68] class-hnd exact "Inlining Arg" ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ; V12 tmp7 [V12,T19] ( 2, 4 ) ref -> [rsp+0x60] class-hnd exact "Inlining Arg" ;* V13 tmp8 [V13 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ; V14 tmp9 [V14,T20] ( 2, 4 ) ref -> [rsp+0x58] class-hnd exact "Inlining Arg" ;* V15 tmp10 [V15 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ; V16 tmp11 [V16,T21] ( 2, 4 ) ref -> [rsp+0x50] class-hnd exact "Inlining Arg" ;* V17 tmp12 [V17 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ; V18 tmp13 [V18,T22] ( 2, 4 ) ref -> [rsp+0x48] class-hnd exact "Inlining Arg" ;* V19 tmp14 [V19 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ; V20 tmp15 [V20,T23] ( 2, 4 ) ref -> [rsp+0x40] class-hnd exact "Inlining Arg" ;* V21 tmp16 [V21 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ; V22 tmp17 [V22,T24] ( 2, 4 ) ref -> [rsp+0x38] class-hnd exact "Inlining Arg" ;* V23 tmp18 [V23 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ; V24 tmp19 [V24,T25] ( 2, 4 ) ref -> [rsp+0x30] class-hnd exact "Inlining Arg" ;* V25 tmp20 [V25 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ; V26 tmp21 [V26,T26] ( 2, 4 ) ref -> [rsp+0x28] class-hnd exact "Inlining Arg" ;* V27 tmp22 [V27 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ; V28 tmp23 [V28,T27] ( 2, 4 ) ref -> [rsp+0x20] class-hnd exact "Inlining Arg" ;* V29 tmp24 [V29 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ;* V30 tmp25 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V32 tmp27 [V32 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V38 tmp33 [V38,T28] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V39 tmp34 [V39,T29] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ;* V40 tmp35 [V40,T115] ( 0, 0 ) ref -> zero-ref V07._arg0(offs=0x00) P-INDEP "field V07._arg0 (fldOffset=0x0)" ; V41 tmp36 [V41,T56] ( 2, 2 ) ref -> rdx V07._arg1(offs=0x08) P-INDEP "field V07._arg1 (fldOffset=0x8)" ; V42 tmp37 [V42,T57] ( 2, 2 ) ref -> r8 V07._arg2(offs=0x10) P-INDEP "field V07._arg2 (fldOffset=0x10)" ; V43 tmp38 [V43,T58] ( 2, 2 ) ref -> rax V07._args(offs=0x18) P-INDEP "field V07._args (fldOffset=0x18)" ;* V44 tmp39 [V44,T116] ( 0, 0 ) ref -> zero-ref V09._arg0(offs=0x00) P-INDEP "field V09._arg0 (fldOffset=0x0)" ; V45 tmp40 [V45,T59] ( 2, 2 ) ref -> rdx V09._arg1(offs=0x08) P-INDEP "field V09._arg1 (fldOffset=0x8)" ; V46 tmp41 [V46,T60] ( 2, 2 ) ref -> r8 V09._arg2(offs=0x10) P-INDEP "field V09._arg2 (fldOffset=0x10)" ; V47 tmp42 [V47,T61] ( 2, 2 ) ref -> rax V09._args(offs=0x18) P-INDEP "field V09._args (fldOffset=0x18)" ;* V48 tmp43 [V48,T117] ( 0, 0 ) ref -> zero-ref V11._arg0(offs=0x00) P-INDEP "field V11._arg0 (fldOffset=0x0)" ; V49 tmp44 [V49,T62] ( 2, 2 ) ref -> rdx V11._arg1(offs=0x08) P-INDEP "field V11._arg1 (fldOffset=0x8)" ; V50 tmp45 [V50,T63] ( 2, 2 ) ref -> r8 V11._arg2(offs=0x10) P-INDEP "field V11._arg2 (fldOffset=0x10)" ; V51 tmp46 [V51,T64] ( 2, 2 ) ref -> rax V11._args(offs=0x18) P-INDEP "field V11._args (fldOffset=0x18)" ;* V52 tmp47 [V52,T118] ( 0, 0 ) ref -> zero-ref V13._arg0(offs=0x00) P-INDEP "field V13._arg0 (fldOffset=0x0)" ; V53 tmp48 [V53,T65] ( 2, 2 ) ref -> rdx V13._arg1(offs=0x08) P-INDEP "field V13._arg1 (fldOffset=0x8)" ; V54 tmp49 [V54,T66] ( 2, 2 ) ref -> r8 V13._arg2(offs=0x10) P-INDEP "field V13._arg2 (fldOffset=0x10)" ; V55 tmp50 [V55,T67] ( 2, 2 ) ref -> rax V13._args(offs=0x18) P-INDEP "field V13._args (fldOffset=0x18)" ;* V56 tmp51 [V56,T119] ( 0, 0 ) ref -> zero-ref V15._arg0(offs=0x00) P-INDEP "field V15._arg0 (fldOffset=0x0)" ; V57 tmp52 [V57,T68] ( 2, 2 ) ref -> rdx V15._arg1(offs=0x08) P-INDEP "field V15._arg1 (fldOffset=0x8)" ; V58 tmp53 [V58,T69] ( 2, 2 ) ref -> r8 V15._arg2(offs=0x10) P-INDEP "field V15._arg2 (fldOffset=0x10)" ; V59 tmp54 [V59,T70] ( 2, 2 ) ref -> rax V15._args(offs=0x18) P-INDEP "field V15._args (fldOffset=0x18)" ;* V60 tmp55 [V60,T120] ( 0, 0 ) ref -> zero-ref V17._arg0(offs=0x00) P-INDEP "field V17._arg0 (fldOffset=0x0)" ; V61 tmp56 [V61,T71] ( 2, 2 ) ref -> rdx V17._arg1(offs=0x08) P-INDEP "field V17._arg1 (fldOffset=0x8)" ; V62 tmp57 [V62,T72] ( 2, 2 ) ref -> r8 V17._arg2(offs=0x10) P-INDEP "field V17._arg2 (fldOffset=0x10)" ; V63 tmp58 [V63,T73] ( 2, 2 ) ref -> rax V17._args(offs=0x18) P-INDEP "field V17._args (fldOffset=0x18)" ;* V64 tmp59 [V64,T121] ( 0, 0 ) ref -> zero-ref V19._arg0(offs=0x00) P-INDEP "field V19._arg0 (fldOffset=0x0)" ; V65 tmp60 [V65,T74] ( 2, 2 ) ref -> rdx V19._arg1(offs=0x08) P-INDEP "field V19._arg1 (fldOffset=0x8)" ; V66 tmp61 [V66,T75] ( 2, 2 ) ref -> r8 V19._arg2(offs=0x10) P-INDEP "field V19._arg2 (fldOffset=0x10)" ; V67 tmp62 [V67,T76] ( 2, 2 ) ref -> rax V19._args(offs=0x18) P-INDEP "field V19._args (fldOffset=0x18)" ;* V68 tmp63 [V68,T122] ( 0, 0 ) ref -> zero-ref V21._arg0(offs=0x00) P-INDEP "field V21._arg0 (fldOffset=0x0)" ; V69 tmp64 [V69,T77] ( 2, 2 ) ref -> rdx V21._arg1(offs=0x08) P-INDEP "field V21._arg1 (fldOffset=0x8)" ; V70 tmp65 [V70,T78] ( 2, 2 ) ref -> r8 V21._arg2(offs=0x10) P-INDEP "field V21._arg2 (fldOffset=0x10)" ; V71 tmp66 [V71,T79] ( 2, 2 ) ref -> rax V21._args(offs=0x18) P-INDEP "field V21._args (fldOffset=0x18)" ;* V72 tmp67 [V72,T123] ( 0, 0 ) ref -> zero-ref V23._arg0(offs=0x00) P-INDEP "field V23._arg0 (fldOffset=0x0)" ; V73 tmp68 [V73,T80] ( 2, 2 ) ref -> rdx V23._arg1(offs=0x08) P-INDEP "field V23._arg1 (fldOffset=0x8)" ; V74 tmp69 [V74,T81] ( 2, 2 ) ref -> r8 V23._arg2(offs=0x10) P-INDEP "field V23._arg2 (fldOffset=0x10)" ; V75 tmp70 [V75,T82] ( 2, 2 ) ref -> rax V23._args(offs=0x18) P-INDEP "field V23._args (fldOffset=0x18)" ;* V76 tmp71 [V76,T124] ( 0, 0 ) ref -> zero-ref V25._arg0(offs=0x00) P-INDEP "field V25._arg0 (fldOffset=0x0)" ; V77 tmp72 [V77,T83] ( 2, 2 ) ref -> rdx V25._arg1(offs=0x08) P-INDEP "field V25._arg1 (fldOffset=0x8)" ; V78 tmp73 [V78,T84] ( 2, 2 ) ref -> r8 V25._arg2(offs=0x10) P-INDEP "field V25._arg2 (fldOffset=0x10)" ; V79 tmp74 [V79,T85] ( 2, 2 ) ref -> rax V25._args(offs=0x18) P-INDEP "field V25._args (fldOffset=0x18)" ;* V80 tmp75 [V80,T125] ( 0, 0 ) ref -> zero-ref V27._arg0(offs=0x00) P-INDEP "field V27._arg0 (fldOffset=0x0)" ; V81 tmp76 [V81,T86] ( 2, 2 ) ref -> rdx V27._arg1(offs=0x08) P-INDEP "field V27._arg1 (fldOffset=0x8)" ; V82 tmp77 [V82,T87] ( 2, 2 ) ref -> r8 V27._arg2(offs=0x10) P-INDEP "field V27._arg2 (fldOffset=0x10)" ; V83 tmp78 [V83,T88] ( 2, 2 ) ref -> rax V27._args(offs=0x18) P-INDEP "field V27._args (fldOffset=0x18)" ; V84 tmp79 [V84,T89] ( 2, 2 ) ref -> rbx V29._arg0(offs=0x00) P-INDEP "field V29._arg0 (fldOffset=0x0)" ; V85 tmp80 [V85,T90] ( 2, 2 ) ref -> rdx V29._arg1(offs=0x08) P-INDEP "field V29._arg1 (fldOffset=0x8)" ; V86 tmp81 [V86,T91] ( 2, 2 ) ref -> r8 V29._arg2(offs=0x10) P-INDEP "field V29._arg2 (fldOffset=0x10)" ; V87 tmp82 [V87,T92] ( 2, 2 ) ref -> rax V29._args(offs=0x18) P-INDEP "field V29._args (fldOffset=0x18)" ; V88 tmp83 [V88 ] ( 24, 48 ) struct (32) [rsp+0x80] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V89 tmp84 [V89,T04] ( 5, 10 ) byref -> r10 stack-byref "BlockOp address local" ; V90 tmp85 [V90,T30] ( 2, 4 ) ref -> r9 "argument with side effect" ;* V91 tmp86 [V91,T93] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V92 tmp87 [V92,T31] ( 2, 4 ) ref -> rdx "argument with side effect" ; V93 tmp88 [V93,T55] ( 2, 4 ) long -> r14 "argument with side effect" ; V94 tmp89 [V94,T05] ( 5, 10 ) byref -> r10 stack-byref "BlockOp address local" ; V95 tmp90 [V95,T32] ( 2, 4 ) ref -> r9 "argument with side effect" ;* V96 tmp91 [V96,T94] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V97 tmp92 [V97,T33] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V98 tmp93 [V98,T104] ( 0, 0 ) long -> zero-ref "argument with side effect" ; V99 tmp94 [V99,T06] ( 5, 10 ) byref -> r10 stack-byref "BlockOp address local" ; V100 tmp95 [V100,T34] ( 2, 4 ) ref -> r9 "argument with side effect" ;* V101 tmp96 [V101,T95] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V102 tmp97 [V102,T35] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V103 tmp98 [V103,T105] ( 0, 0 ) long -> zero-ref "argument with side effect" ; V104 tmp99 [V104,T07] ( 5, 10 ) byref -> r10 stack-byref "BlockOp address local" ; V105 tmp100 [V105,T36] ( 2, 4 ) ref -> r9 "argument with side effect" ;* V106 tmp101 [V106,T96] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V107 tmp102 [V107,T37] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V108 tmp103 [V108,T106] ( 0, 0 ) long -> zero-ref "argument with side effect" ; V109 tmp104 [V109,T08] ( 5, 10 ) byref -> r10 stack-byref "BlockOp address local" ; V110 tmp105 [V110,T38] ( 2, 4 ) ref -> r9 "argument with side effect" ;* V111 tmp106 [V111,T97] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V112 tmp107 [V112,T39] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V113 tmp108 [V113,T107] ( 0, 0 ) long -> zero-ref "argument with side effect" ; V114 tmp109 [V114,T09] ( 5, 10 ) byref -> r10 stack-byref "BlockOp address local" ; V115 tmp110 [V115,T40] ( 2, 4 ) ref -> r9 "argument with side effect" ;* V116 tmp111 [V116,T98] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V117 tmp112 [V117,T41] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V118 tmp113 [V118,T108] ( 0, 0 ) long -> zero-ref "argument with side effect" ; V119 tmp114 [V119,T10] ( 5, 10 ) byref -> r10 stack-byref "BlockOp address local" ; V120 tmp115 [V120,T42] ( 2, 4 ) ref -> r9 "argument with side effect" ;* V121 tmp116 [V121,T99] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V122 tmp117 [V122,T43] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V123 tmp118 [V123,T109] ( 0, 0 ) long -> zero-ref "argument with side effect" ; V124 tmp119 [V124,T11] ( 5, 10 ) byref -> r10 stack-byref "BlockOp address local" ; V125 tmp120 [V125,T44] ( 2, 4 ) ref -> r9 "argument with side effect" ;* V126 tmp121 [V126,T100] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V127 tmp122 [V127,T45] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V128 tmp123 [V128,T110] ( 0, 0 ) long -> zero-ref "argument with side effect" ; V129 tmp124 [V129,T12] ( 5, 10 ) byref -> r10 stack-byref "BlockOp address local" ; V130 tmp125 [V130,T46] ( 2, 4 ) ref -> r9 "argument with side effect" ;* V131 tmp126 [V131,T101] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V132 tmp127 [V132,T47] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V133 tmp128 [V133,T111] ( 0, 0 ) long -> zero-ref "argument with side effect" ; V134 tmp129 [V134,T13] ( 5, 10 ) byref -> r10 stack-byref "BlockOp address local" ; V135 tmp130 [V135,T48] ( 2, 4 ) ref -> r9 "argument with side effect" ;* V136 tmp131 [V136,T102] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V137 tmp132 [V137,T49] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V138 tmp133 [V138,T112] ( 0, 0 ) long -> zero-ref "argument with side effect" ; V139 tmp134 [V139,T14] ( 5, 10 ) byref -> r10 stack-byref "BlockOp address local" ; V140 tmp135 [V140,T50] ( 2, 4 ) ref -> r9 "argument with side effect" ;* V141 tmp136 [V141,T103] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V142 tmp137 [V142,T51] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V143 tmp138 [V143,T113] ( 0, 0 ) long -> zero-ref "argument with side effect" ; V144 tmp139 [V144,T15] ( 5, 10 ) byref -> r10 stack-byref "BlockOp address local" ; V145 tmp140 [V145,T52] ( 2, 4 ) ref -> r9 "argument with side effect" ; V146 tmp141 [V146,T53] ( 2, 4 ) ref -> rbp "argument with side effect" ; V147 tmp142 [V147,T54] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V148 tmp143 [V148,T114] ( 0, 0 ) long -> zero-ref "argument with side effect" ; TEMP_01 byref -> [rsp+0xD8] ; ; Lcl frame size = 224 G_M16847_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 224 vxorps xmm4, xmm4 mov rax, -96 vmovdqa xmmword ptr [rsp+rax+E0H], xmm4 vmovdqa xmmword ptr [rsp+rax+F0H], xmm4 vmovdqa xmmword ptr [rsp+rax+100H], xmm4 add rax, 48 jne SHORT -5 instr mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 10.83 G_M16847_IG02: mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rsp+78H], rcx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] xor r8, r8 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] lea rcx, bword ptr [rsi+16] mov bword ptr [rsp+D8H], rcx mov r14, rdi mov r9, gword ptr [rsp+78H] lea r10, bword ptr [rsp+80H] mov gword ptr [r10], rbx mov gword ptr [r10+8], rdx mov gword ptr [r10+16], r8 mov gword ptr [r10+24], rax mov rcx, r9 mov rdx, rbp lea r8, bword ptr [rsp+80H] call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdx, rax mov rcx, r14 call FileVersionInfo:GetFileVersionString(long,String):String mov rcx, bword ptr [rsp+D8H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rsp+70H], rcx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] xor r8, r8 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] lea rcx, bword ptr [rsi+24] mov bword ptr [rsp+D8H], rcx mov r9, gword ptr [rsp+70H] lea r10, bword ptr [rsp+80H] mov gword ptr [r10], rbx mov gword ptr [r10+8], rdx mov gword ptr [r10+16], r8 mov gword ptr [r10+24], rax mov rcx, r9 mov rdx, rbp lea r8, bword ptr [rsp+80H] call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdx, rax mov rcx, rdi call FileVersionInfo:GetFileVersionString(long,String):String mov rcx, bword ptr [rsp+D8H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rsp+68H], rcx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] ;; bbWeight=1 PerfScore 49.50 G_M16847_IG03: xor r8, r8 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] lea rcx, bword ptr [rsi+32] mov bword ptr [rsp+D8H], rcx mov r9, gword ptr [rsp+68H] lea r10, bword ptr [rsp+80H] mov gword ptr [r10], rbx mov gword ptr [r10+8], rdx mov gword ptr [r10+16], r8 mov gword ptr [r10+24], rax mov rcx, r9 mov rdx, rbp lea r8, bword ptr [rsp+80H] call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdx, rax mov rcx, rdi call FileVersionInfo:GetFileVersionString(long,String):String mov rcx, bword ptr [rsp+D8H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rsp+60H], rcx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] xor r8, r8 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] lea rcx, bword ptr [rsi+40] mov bword ptr [rsp+D8H], rcx mov r9, gword ptr [rsp+60H] lea r10, bword ptr [rsp+80H] mov gword ptr [r10], rbx mov gword ptr [r10+8], rdx mov gword ptr [r10+16], r8 mov gword ptr [r10+24], rax mov rcx, r9 mov rdx, rbp lea r8, bword ptr [rsp+80H] call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdx, rax mov rcx, rdi call FileVersionInfo:GetFileVersionString(long,String):String mov rcx, bword ptr [rsp+D8H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rsp+58H], rcx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] xor r8, r8 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] lea rcx, bword ptr [rsi+48] mov bword ptr [rsp+D8H], rcx mov r9, gword ptr [rsp+58H] lea r10, bword ptr [rsp+80H] mov gword ptr [r10], rbx mov gword ptr [r10+8], rdx ;; bbWeight=1 PerfScore 49.00 G_M16847_IG04: mov gword ptr [r10+16], r8 mov gword ptr [r10+24], rax mov rcx, r9 mov rdx, rbp lea r8, bword ptr [rsp+80H] call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdx, rax mov rcx, rdi call FileVersionInfo:GetFileVersionString(long,String):String mov rcx, bword ptr [rsp+D8H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rsp+50H], rcx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] xor r8, r8 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] lea rcx, bword ptr [rsi+56] mov bword ptr [rsp+D8H], rcx mov r9, gword ptr [rsp+50H] lea r10, bword ptr [rsp+80H] mov gword ptr [r10], rbx mov gword ptr [r10+8], rdx mov gword ptr [r10+16], r8 mov gword ptr [r10+24], rax mov rcx, r9 mov rdx, rbp lea r8, bword ptr [rsp+80H] call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdx, rax mov rcx, rdi call FileVersionInfo:GetFileVersionString(long,String):String mov rcx, bword ptr [rsp+D8H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rsp+48H], rcx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] xor r8, r8 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] lea rcx, bword ptr [rsi+64] mov bword ptr [rsp+D8H], rcx mov r9, gword ptr [rsp+48H] lea r10, bword ptr [rsp+80H] mov gword ptr [r10], rbx mov gword ptr [r10+8], rdx mov gword ptr [r10+16], r8 mov gword ptr [r10+24], rax mov rcx, r9 mov rdx, rbp lea r8, bword ptr [rsp+80H] call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdx, rax mov rcx, rdi call FileVersionInfo:GetFileVersionString(long,String):String mov rcx, bword ptr [rsp+D8H] ;; bbWeight=1 PerfScore 48.00 G_M16847_IG05: mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rsp+40H], rcx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] xor r8, r8 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] lea rcx, bword ptr [rsi+72] mov bword ptr [rsp+D8H], rcx mov r9, gword ptr [rsp+40H] lea r10, bword ptr [rsp+80H] mov gword ptr [r10], rbx mov gword ptr [r10+8], rdx mov gword ptr [r10+16], r8 mov gword ptr [r10+24], rax mov rcx, r9 mov rdx, rbp lea r8, bword ptr [rsp+80H] call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdx, rax mov rcx, rdi call FileVersionInfo:GetFileVersionString(long,String):String mov rcx, bword ptr [rsp+D8H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rsp+38H], rcx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] xor r8, r8 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] lea rcx, bword ptr [rsi+80] mov bword ptr [rsp+D8H], rcx mov r9, gword ptr [rsp+38H] lea r10, bword ptr [rsp+80H] mov gword ptr [r10], rbx mov gword ptr [r10+8], rdx mov gword ptr [r10+16], r8 mov gword ptr [r10+24], rax mov rcx, r9 mov rdx, rbp lea r8, bword ptr [rsp+80H] call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdx, rax mov rcx, rdi call FileVersionInfo:GetFileVersionString(long,String):String mov rcx, bword ptr [rsp+D8H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rsp+30H], rcx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] xor r8, r8 ;; bbWeight=1 PerfScore 48.50 G_M16847_IG06: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] lea rcx, bword ptr [rsi+88] mov bword ptr [rsp+D8H], rcx mov r9, gword ptr [rsp+30H] lea r10, bword ptr [rsp+80H] mov gword ptr [r10], rbx mov gword ptr [r10+8], rdx mov gword ptr [r10+16], r8 mov gword ptr [r10+24], rax mov rcx, r9 mov rdx, rbp lea r8, bword ptr [rsp+80H] call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdx, rax mov rcx, rdi call FileVersionInfo:GetFileVersionString(long,String):String mov rcx, bword ptr [rsp+D8H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rsp+28H], rcx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] xor r8, r8 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] lea rcx, bword ptr [rsi+96] mov bword ptr [rsp+D8H], rcx mov r9, gword ptr [rsp+28H] lea r10, bword ptr [rsp+80H] mov gword ptr [r10], rbx mov gword ptr [r10+8], rdx mov gword ptr [r10+16], r8 mov gword ptr [r10+24], rax mov rcx, r9 mov rdx, rbp lea r8, bword ptr [rsp+80H] call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdx, rax mov rcx, rdi call FileVersionInfo:GetFileVersionString(long,String):String mov rcx, bword ptr [rsp+D8H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rsp+20H], rcx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] xor r8, r8 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] lea rcx, bword ptr [rsi+104] mov bword ptr [rsp+D8H], rcx mov r9, gword ptr [rsp+20H] lea r10, bword ptr [rsp+80H] mov gword ptr [r10], rbx mov gword ptr [r10+8], rdx ;; bbWeight=1 PerfScore 48.75 G_M16847_IG07: mov gword ptr [r10+16], r8 mov gword ptr [r10+24], rax mov rcx, r9 mov rdx, rbp lea r8, bword ptr [rsp+80H] call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdx, rax mov rcx, rdi call FileVersionInfo:GetFileVersionString(long,String):String mov rcx, bword ptr [rsp+D8H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rdi call FileVersionInfo:GetFileVersionLanguage(long):String lea rcx, bword ptr [rsi+112] mov rdx, rax call CORINFO_HELP_ASSIGN_REF lea rcx, [rsp+A0H] mov rdx, rdi call FileVersionInfo:GetFixedFileInfo(long):VS_FIXEDFILEINFO mov ecx, dword ptr [rsp+A8H] shr ecx, 16 and ecx, 0xFFFF mov dword ptr [rsi+120], ecx mov ecx, dword ptr [rsp+A8H] and ecx, 0xFFFF mov dword ptr [rsi+124], ecx mov ecx, dword ptr [rsp+ACH] shr ecx, 16 and ecx, 0xFFFF mov dword ptr [rsi+128], ecx mov ecx, dword ptr [rsp+ACH] and ecx, 0xFFFF mov dword ptr [rsi+132], ecx mov ecx, dword ptr [rsp+B0H] shr ecx, 16 and ecx, 0xFFFF mov dword ptr [rsi+136], ecx mov ecx, dword ptr [rsp+B0H] and ecx, 0xFFFF mov dword ptr [rsi+140], ecx mov ecx, dword ptr [rsp+B4H] shr ecx, 16 and ecx, 0xFFFF mov dword ptr [rsi+144], ecx mov ecx, dword ptr [rsp+B4H] and ecx, 0xFFFF mov dword ptr [rsi+148], ecx test byte ptr [rsp+BCH], 1 setne cl mov byte ptr [rsi+152], cl test byte ptr [rsp+BCH], 4 setne cl mov byte ptr [rsi+153], cl test byte ptr [rsp+BCH], 8 setne cl mov byte ptr [rsi+154], cl test byte ptr [rsp+BCH], 2 setne cl mov byte ptr [rsi+155], cl test byte ptr [rsp+BCH], 32 setne cl mov byte ptr [rsi+156], cl mov rcx, gword ptr [rsi+32] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call String:Equals(String,String):bool ;; bbWeight=1 PerfScore 58.75 G_M16847_IG08: test eax, eax sete al movzx rax, al ;; bbWeight=1 PerfScore 1.50 G_M16847_IG09: add rsp, 224 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 2004, prolog size 60, PerfScore 519.38, (MethodHash=51fcbe30) for method FileVersionInfo:GetVersionInfoForCodePage(long,String):bool:this ; ============================================================ ; Assembly listing for method String:ToString():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M27113_IG01: ;; bbWeight=1 PerfScore 0.00 G_M27113_IG02: mov rax, rcx ;; bbWeight=1 PerfScore 0.25 G_M27113_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 1.65, (MethodHash=eab19616) for method String:ToString():String:this ; ============================================================ ; Assembly listing for method ValueStringBuilder:AppendSlow(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 8 ) byref -> rsi this ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdi class-hnd ; V02 loc0 [V02,T03] ( 5, 5 ) int -> rbx ;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V06 tmp2 [V06,T05] ( 2, 4 ) byref -> rdx "Inlining Arg" ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V10 tmp6 [V10,T06] ( 2, 4 ) byref -> rdi "Inlining Arg" ;* V11 tmp7 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V12 tmp8 [V12,T08] ( 2, 4 ) int -> r8 "Inlining Arg" ; V13 tmp9 [V13,T02] ( 3, 6 ) byref -> rcx "Inlining Arg" ;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V15 tmp11 [V15,T07] ( 2, 4 ) byref -> rcx "Inlining Arg" ;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V17 tmp13 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V18 tmp14 [V18,T09] ( 2, 4 ) int -> rax "Inlining Arg" ;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V23 tmp19 [V23 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V24 tmp20 [V24,T10] ( 2, 4 ) long -> r8 "Inlining Arg" ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V27 tmp23 [V27 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V28 tmp24 [V28 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V29 tmp25 [V29,T13] ( 2, 2 ) byref -> rdx V03._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ; V30 tmp26 [V30,T11] ( 3, 3 ) int -> r8 V03._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ; V31 tmp27 [V31,T14] ( 2, 2 ) byref -> rcx V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ; V33 tmp29 [V33,T15] ( 2, 2 ) byref -> rdx V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V34 tmp30 [V34,T21] ( 2, 2 ) int -> r8 V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V35 tmp31 [V35,T16] ( 2, 2 ) byref -> rdi V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ; V36 tmp32 [V36,T22] ( 2, 2 ) int -> r8 V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ;* V37 tmp33 [V37 ] ( 0, 0 ) byref -> zero-ref V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ; V39 tmp35 [V39,T17] ( 2, 2 ) byref -> rdi V11._value(offs=0x00) P-INDEP "field V11._value (fldOffset=0x0)" ; V40 tmp36 [V40,T18] ( 2, 2 ) byref -> rcx V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ; V42 tmp38 [V42,T19] ( 2, 2 ) byref -> rcx V17._value(offs=0x00) P-INDEP "field V17._value (fldOffset=0x0)" ; V43 tmp39 [V43,T20] ( 2, 2 ) byref -> rcx V19._pointer(offs=0x00) P-INDEP "field V19._pointer (fldOffset=0x0)" ;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)" ; V45 cse0 [V45,T12] ( 3, 3 ) int -> rax "CSE - moderate" ; V46 cse1 [V46,T04] ( 5, 5 ) int -> rbp "CSE - aggressive" ; ; Lcl frame size = 40 G_M8254_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 4.75 G_M8254_IG02: mov ebx, dword ptr [rsi+8] lea rdx, bword ptr [rsi+16] mov edx, dword ptr [rdx+8] mov ebp, dword ptr [rdi+8] sub edx, ebp cmp edx, ebx jge SHORT G_M8254_IG03 mov edx, ebp mov rcx, rsi call ValueStringBuilder:Grow(int):this ;; bbWeight=1 PerfScore 9.50 G_M8254_IG03: add rdi, 12 mov r8d, ebp mov rdx, rdi lea rcx, bword ptr [rsi+16] mov eax, dword ptr [rcx+8] cmp ebx, eax ja SHORT G_M8254_IG06 ;; bbWeight=1 PerfScore 4.50 G_M8254_IG04: mov rcx, bword ptr [rcx] sub eax, ebx movsxd r9, ebx lea rcx, bword ptr [rcx+2*r9] cmp r8d, eax ja SHORT G_M8254_IG07 movsxd r8, r8d add r8, r8 call Buffer:Memmove(byref,byref,long) add dword ptr [rsi+8], ebp ;; bbWeight=1 PerfScore 10.75 G_M8254_IG05: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M8254_IG06: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 G_M8254_IG07: call ThrowHelper:ThrowArgumentException_DestinationTooShort() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 116, prolog size 8, PerfScore 44.35, (MethodHash=87dadfc1) for method ValueStringBuilder:AppendSlow(String):this ; ============================================================ ; Assembly listing for method FileVersionInfo:GetFileVersionString(long,String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) long -> rcx ; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rdx class-hnd ; V02 loc0 [V02 ] ( 4, 3 ) long -> [rbp-0x08] do-not-enreg[X] addr-exposed ld-addr-op ; V03 loc1 [V03 ] ( 1, 1 ) int -> [rbp-0x10] do-not-enreg[X] addr-exposed ld-addr-op ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 2, 2 ) long -> rcx ld-addr-op "Inlining Arg" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; ; Lcl frame size = 48 G_M21200_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] ;; bbWeight=1 PerfScore 1.75 G_M21200_IG02: xor r8, r8 mov qword ptr [rbp-08H], r8 lea r8, [rbp-08H] lea r9, [rbp-10H] call Version:VerQueryValue(long,String,byref,byref):bool test eax, eax je SHORT G_M21200_IG05 ;; bbWeight=1 PerfScore 4.50 G_M21200_IG03: mov rcx, qword ptr [rbp-08H] test rcx, rcx je SHORT G_M21200_IG05 mov rcx, qword ptr [rbp-08H] call Marshal:PtrToStringUni(long):String nop ;; bbWeight=0.50 PerfScore 2.25 G_M21200_IG04: lea rsp, [rbp] pop rbp ret ;; bbWeight=0.50 PerfScore 1.00 G_M21200_IG05: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M21200_IG06: lea rsp, [rbp] pop rbp ret ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 78, prolog size 10, PerfScore 19.43, (MethodHash=da47ad2f) for method FileVersionInfo:GetFileVersionString(long,String):String ; ============================================================ ; Assembly listing for method Marshal:PtrToStringUni(long):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 3.50) long -> rsi ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; ; Lcl frame size = 32 G_M16550_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M16550_IG02: mov rcx, rsi call Marshal:IsNullOrWin32Atom(long):bool test eax, eax je SHORT G_M16550_IG05 ;; bbWeight=1 PerfScore 2.50 G_M16550_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M16550_IG04: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M16550_IG05: mov rdx, rsi xor rcx, rcx call String:.ctor(long):this nop ;; bbWeight=0.50 PerfScore 0.88 G_M16550_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 45, prolog size 5, PerfScore 11.25, (MethodHash=4870bf59) for method Marshal:PtrToStringUni(long):String ; ============================================================ ; Assembly listing for method Marshal:IsNullOrWin32Atom(long):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) long -> rcx ;* V01 loc0 [V01 ] ( 0, 0 ) long -> zero-ref ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; ; Lcl frame size = 0 G_M50893_IG01: ;; bbWeight=1 PerfScore 0.00 G_M50893_IG02: test rcx, -0x10000 sete al movzx rax, al ;; bbWeight=1 PerfScore 1.50 G_M50893_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 14, prolog size 0, PerfScore 3.90, (MethodHash=024b3932) for method Marshal:IsNullOrWin32Atom(long):bool ; ============================================================ ; Assembly listing for method FileVersionInfo:GetFileVersionLanguage(long):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) long -> rsi ; V01 loc0 [V01,T04] ( 2, 2 ) int -> rcx ; V02 loc1 [V02,T03] ( 3, 3 ) long -> rsi ; V03 loc2 [V03,T05] ( 2, 2 ) int -> r9 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 2, 4 ) ref -> rax "Single return block return value" ; V06 FramesRoot [V06,T00] ( 6, 6 ) long -> rdi "Pinvoke FrameListRoot" ; V07 PInvokeFrame [V07 ] ( 8, 8 ) blk (72) [rbp+0x08] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V08 GsCookie [V08 ] ( 1, 1 ) long -> [rbp+0x50] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; ; Lcl frame size = 120 G_M52206_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+20H] mov rdx, 0xD1FFAB1E mov qword ptr [rbp+50H], rdx mov rsi, rcx ;; bbWeight=1 PerfScore 10.25 G_M52206_IG02: lea rcx, [rbp+10H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rcx, rsp mov qword ptr [rbp+30H], rcx mov rcx, rbp mov qword ptr [rbp+40H], rcx mov rcx, rsi call FileVersionInfo:GetVarEntry(long):int mov ecx, eax shr ecx, 16 add rsp, 32 test dword ptr [rsp], esp sub rsp, 512 sub rsp, 32 lea rsi, [rsp+20H] mov rdx, rsi mov r8d, 256 mov rax, 0xD1FFAB1E mov qword ptr [rbp+20H], rax lea rax, G_M52206_IG05 mov qword ptr [rbp+38H], rax lea rax, bword ptr [rbp+10H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=1 PerfScore 17.50 G_M52206_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M52206_IG04: call qword ptr [rax]Kernel32:VerLanguageName(int,long,int):int ;; bbWeight=1 PerfScore 3.00 G_M52206_IG05: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M52206_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M52206_IG06: mov r9, bword ptr [rbp+18H] mov qword ptr [rdi+16], r9 mov r9d, eax mov rdx, rsi xor rcx, rcx xor r8d, r8d call String:.ctor(long,int,int):this ;; bbWeight=1 PerfScore 4.00 G_M52206_IG07: mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+50H], rcx je SHORT G_M52206_IG08 call CORINFO_HELP_FAIL_FAST ;; bbWeight=1 PerfScore 3.25 G_M52206_IG08: nop ;; bbWeight=1 PerfScore 0.25 G_M52206_IG09: lea rsp, [rbp+58H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 255, prolog size 35, PerfScore 77.00, (MethodHash=81e63411) for method FileVersionInfo:GetFileVersionLanguage(long):String ; ============================================================ ; Assembly listing for method FileVersionInfo:GetFixedFileInfo(long):VS_FIXEDFILEINFO ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T00] ( 6, 4 ) byref -> rsi ; V01 arg0 [V01,T01] ( 3, 3 ) long -> rcx ; V02 loc0 [V02 ] ( 3, 2.50) long -> [rbp-0x10] do-not-enreg[X] addr-exposed ld-addr-op ; V03 loc1 [V03 ] ( 1, 1 ) int -> [rbp-0x18] do-not-enreg[X] addr-exposed ld-addr-op ;* V04 loc2 [V04 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SB] ld-addr-op ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 56 G_M4655_IG01: push rbp push rsi sub rsp, 56 vzeroupper lea rbp, [rsp+40H] mov rsi, rcx mov rcx, rdx ;; bbWeight=1 PerfScore 4.25 G_M4655_IG02: xor rdx, rdx mov qword ptr [rbp-10H], rdx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea r9, [rbp-18H] lea r8, [rbp-10H] call Version:VerQueryValue(long,String,byref,byref):bool test eax, eax je SHORT G_M4655_IG05 ;; bbWeight=1 PerfScore 6.75 G_M4655_IG03: mov rcx, rsi mov rdx, qword ptr [rbp-10H] call Marshal:PtrToStructure(long):VS_FIXEDFILEINFO mov rax, rsi ;; bbWeight=0.50 PerfScore 1.25 G_M4655_IG04: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=0.50 PerfScore 1.25 G_M4655_IG05: xor eax, eax vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsi], xmm0 vmovdqu xmmword ptr [rsi+16], xmm0 vmovdqu xmmword ptr [rsi+32], xmm0 mov dword ptr [rsi+48], eax mov rax, rsi ;; bbWeight=0.50 PerfScore 2.42 G_M4655_IG06: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=0.50 PerfScore 1.25 ; Total bytes of code 111, prolog size 14, PerfScore 28.67, (MethodHash=a5f3edd0) for method FileVersionInfo:GetFixedFileInfo(long):VS_FIXEDFILEINFO ; ============================================================ ; Assembly listing for method Marshal:PtrToStructure(long):VS_FIXEDFILEINFO ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T01] ( 4, 4 ) byref -> rsi ; V01 arg0 [V01,T02] ( 3, 3 ) long -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 4, 6.50) ref -> rdi "inline UNBOX clone1" ; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M9573_IG01: push rdi push rsi sub rsp, 40 vzeroupper mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M9573_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, rdi call Marshal:PtrToStructure(long,Type):Object mov rdi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rdi], rdx je SHORT G_M9573_IG04 ;; bbWeight=1 PerfScore 6.25 G_M9573_IG03: mov rdx, rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M9573_IG04: vmovdqu xmm0, xmmword ptr [rdi+8] vmovdqu xmmword ptr [rsi], xmm0 vmovdqu xmm0, xmmword ptr [rdi+24] vmovdqu xmmword ptr [rsi+16], xmm0 vmovdqu xmm0, xmmword ptr [rdi+40] vmovdqu xmmword ptr [rsi+32], xmm0 mov eax, dword ptr [rdi+56] mov dword ptr [rsi+48], eax mov rax, rsi ;; bbWeight=1 PerfScore 12.25 G_M9573_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 122, prolog size 9, PerfScore 37.68, (MethodHash=31ddda9a) for method Marshal:PtrToStructure(long):VS_FIXEDFILEINFO ; ============================================================ ; Assembly listing for method Marshal:PtrToStructure(long,Type):Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 3.50) long -> rdi ; V01 arg1 [V01,T00] ( 7, 4.50) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp3 [V05,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V07 tmp5 [V07 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V08 tmp6 [V08,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" ; V09 tmp7 [V09,T06] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp8 [V10,T07] ( 2, 0 ) ref -> rcx "argument with side effect" ; V11 tmp9 [V11,T08] ( 2, 0 ) ref -> rdi "argument with side effect" ; V12 tmp10 [V12,T09] ( 2, 0 ) ref -> r8 "argument with side effect" ; V13 tmp11 [V13,T10] ( 2, 0 ) ref -> rcx "argument with side effect" ; V14 tmp12 [V14,T11] ( 2, 0 ) ref -> rdi "argument with side effect" ; V15 tmp13 [V15,T12] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M13856_IG01: push rdi push rsi sub rsp, 40 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.75 G_M13856_IG02: test rdi, rdi jne SHORT G_M13856_IG05 ;; bbWeight=1 PerfScore 1.25 G_M13856_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M13856_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M13856_IG05: test rsi, rsi je G_M13856_IG11 ;; bbWeight=0.50 PerfScore 0.63 G_M13856_IG06: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+96] call qword ptr [rax+16]Type:get_IsGenericType():bool:this test eax, eax jne G_M13856_IG12 ;; bbWeight=0.50 PerfScore 4.25 G_M13856_IG07: mov rcx, 0xD1FFAB1E cmp qword ptr [rsi], rcx jne SHORT G_M13856_IG10 ;; bbWeight=0.50 PerfScore 1.63 G_M13856_IG08: mov rcx, rdi mov rdx, rsi call Marshal:PtrToStructureHelper(long,Type):Object nop ;; bbWeight=0.50 PerfScore 0.88 G_M13856_IG09: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M13856_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x7EEB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1B1D7 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M13856_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1B1D7 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M13856_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x8087 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1B1D7 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 334, prolog size 6, PerfScore 47.15, (MethodHash=ae4fc9df) for method Marshal:PtrToStructure(long,Type):Object ; ============================================================ ; Assembly listing for method Marshal:PtrToStructureHelper(long,Type):Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 3 ) long -> rsi ; V01 arg1 [V01,T01] ( 4, 3.12) ref -> rdx class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V03 loc1 [V03,T03] ( 3, 3 ) ref -> rdi class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 3, 1.24) long -> rax "fgInsertCommaFormTemp is creating a new local variable" ; V06 tmp2 [V06,T00] ( 5, 6.74) ref -> rcx class-hnd "spilling QMark2" ; ; Lcl frame size = 40 G_M11430_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M11430_IG02: mov rcx, rdx test rcx, rcx je SHORT G_M11430_IG05 ;; bbWeight=1 PerfScore 1.50 G_M11430_IG03: mov rax, 0xD1FFAB1E cmp qword ptr [rcx], rax je SHORT G_M11430_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M11430_IG04: mov rcx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rcx, rax ;; bbWeight=0.12 PerfScore 0.18 G_M11430_IG05: mov dword ptr [rsp+20H], 1 xor edx, edx xor r8d, r8d xor r9d, r9d cmp dword ptr [rcx], ecx call RuntimeType:CreateInstanceDefaultCtor(bool,bool,bool,bool):Object:this mov rdi, rax mov rcx, rsi mov rdx, rdi mov r8d, 1 call Marshal:PtrToStructureHelper(long,Object,bool) mov rax, rdi ;; bbWeight=1 PerfScore 7.00 G_M11430_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 96, prolog size 6, PerfScore 23.84, (MethodHash=e9e3d359) for method Marshal:PtrToStructureHelper(long,Type):Object ; ============================================================ ; Assembly listing for method RuntimeType:CreateInstanceDefaultCtor(bool,bool,bool,bool):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 4, 3 ) bool -> rdi ; V02 arg2 [V02,T03] ( 3, 2.50) bool -> r8 ; V03 arg3 [V03,T04] ( 3, 2.50) bool -> rbx ; V04 arg4 [V04,T16] ( 2, 0.50) bool -> [rbp+0x30] EH do-not-enreg[] EH-live ; V05 loc0 [V05,T05] ( 7, 4.25) ref -> r14 class-hnd ; V06 loc1 [V06,T13] ( 3, 1.50) ref -> rsi class-hnd ; V07 loc2 [V07,T21] ( 2, 0 ) ref -> [rbp-0x28] EH do-not-enreg[] must-init class-hnd EH-live ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1" ; V10 tmp2 [V10,T01] ( 5, 6.74) ref -> r14 class-hnd "spilling QMark2" ; V11 tmp3 [V11,T22] ( 2, 0 ) ref -> rdx class-hnd "impSpillSpecialSideEff" ; V12 tmp4 [V12,T23] ( 2, 0 ) ref -> rax class-hnd "dup spill" ; V13 tmp5 [V13,T17] ( 3, 0 ) ref -> rax ; V14 tmp6 [V14,T20] ( 3, 0 ) int -> rax ;* V15 tmp7 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ; V16 tmp8 [V16,T18] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V17 tmp9 [V17,T19] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V18 tmp10 [V18,T09] ( 3, 2 ) ref -> r14 class-hnd "Inline return value spill temp" ;* V19 tmp11 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" ; V20 tmp12 [V20,T08] ( 3, 2.50) ref -> rcx ; V21 tmp13 [V21,T10] ( 3, 2 ) ref -> rcx class-hnd "Inline return value spill temp" ; V22 tmp14 [V22,T15] ( 2, 1 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V23 tmp15 [V23,T06] ( 2, 4 ) long -> rcx ld-addr-op "Inlining Arg" ;* V24 tmp16 [V24 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V25 tmp17 [V25,T12] ( 2, 2 ) long -> rcx "Inlining Arg" ;* V26 tmp18 [V26 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V27 tmp19 [V27,T11] ( 2, 2 ) byref -> rcx "Inlining Arg" ; V28 tmp20 [V28,T24] ( 2, 0 ) ref -> rcx "argument with side effect" ; V29 tmp21 [V29,T25] ( 2, 0 ) ref -> rcx "argument with side effect" ; V30 tmp22 [V30,T26] ( 2, 0 ) ref -> rdx "argument with side effect" ; V31 PSPSym [V31 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "PSPSym" ; V32 cse0 [V32,T14] ( 3, 1.50) ref -> rax "CSE - moderate" ; V33 rat0 [V33,T07] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 48 G_M43510_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 lea rbp, [rsp+50H] xor rax, rax mov qword ptr [rbp-28H], rax mov qword ptr [rbp-30H], rsp mov rsi, rcx mov edi, edx mov ebx, r9d ;; bbWeight=1 PerfScore 8.75 G_M43510_IG02: mov rcx, qword ptr [rsi+16] test rcx, rcx je SHORT G_M43510_IG04 ;; bbWeight=1 PerfScore 3.25 G_M43510_IG03: mov rcx, qword ptr [rsi+16] mov rcx, gword ptr [rcx] jmp SHORT G_M43510_IG05 ;; bbWeight=0.50 PerfScore 3.00 G_M43510_IG04: xor rcx, rcx ;; bbWeight=0.50 PerfScore 0.13 G_M43510_IG05: test rcx, rcx jne SHORT G_M43510_IG07 ;; bbWeight=1 PerfScore 1.25 G_M43510_IG06: xor r14, r14 jmp SHORT G_M43510_IG08 ;; bbWeight=0.50 PerfScore 1.13 G_M43510_IG07: mov r14, gword ptr [rcx+120] ;; bbWeight=0.50 PerfScore 1.00 G_M43510_IG08: test r14, r14 je SHORT G_M43510_IG11 ;; bbWeight=1 PerfScore 1.25 G_M43510_IG09: mov rcx, 0xD1FFAB1E cmp qword ptr [r14], rcx je SHORT G_M43510_IG11 ;; bbWeight=0.25 PerfScore 0.81 G_M43510_IG10: xor r14, r14 ;; bbWeight=0.12 PerfScore 0.03 G_M43510_IG11: test r14, r14 je SHORT G_M43510_IG19 ;; bbWeight=1 PerfScore 1.25 G_M43510_IG12: cmp byte ptr [r14+20], 0 jne SHORT G_M43510_IG14 ;; bbWeight=0.50 PerfScore 1.50 G_M43510_IG13: mov rcx, r14 call ActivatorCache:Initialize():this ;; bbWeight=0.25 PerfScore 0.31 G_M43510_IG14: test dil, dil je SHORT G_M43510_IG15 cmp gword ptr [r14+8], 0 je SHORT G_M43510_IG15 mov ecx, dword ptr [r14+16] and ecx, 7 cmp ecx, 6 jne SHORT G_M43510_IG22 ;; bbWeight=0.50 PerfScore 3.88 G_M43510_IG15: mov rcx, rsi call RuntimeTypeHandle:Allocate(RuntimeType):Object mov rsi, rax mov rax, gword ptr [r14+8] test rax, rax je SHORT G_M43510_IG17 ;; bbWeight=0.50 PerfScore 2.38 G_M43510_IG16: mov rcx, gword ptr [rax+8] mov rdx, rsi call qword ptr [rax+24]CtorDelegate:Invoke(Object):this nop ;; bbWeight=0.50 PerfScore 2.75 G_M43510_IG17: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M43510_IG18: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M43510_IG19: test r8b, r8b jne SHORT G_M43510_IG20 mov rcx, rsi call RuntimeType:CreateInstanceCheckThis():this ;; bbWeight=0.50 PerfScore 1.25 G_M43510_IG20: movzx r9, bl movzx rdx, dil mov r8d, dword ptr [rbp+30H] movzx r8, r8b mov rcx, rsi call RuntimeType:CreateInstanceDefaultCtorSlow(bool,bool,bool):Object:this nop ;; bbWeight=0.50 PerfScore 1.63 G_M43510_IG21: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M43510_IG22: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x4E03 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, rsi call SR:Format(String,Object):String mov rdx, rax mov rcx, rdi call MissingMethodException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M43510_IG23: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=0 PerfScore 0.00 G_M43510_IG24: mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax jne SHORT G_M43510_IG25 xor eax, eax jmp SHORT G_M43510_IG26 ;; bbWeight=0 PerfScore 0.00 G_M43510_IG25: mov gword ptr [rbp-28H], rax cmp byte ptr [rbp+30H], 0 setne al movzx rax, al ;; bbWeight=0 PerfScore 0.00 G_M43510_IG26: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M43510_IG27: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=0 PerfScore 0.00 G_M43510_IG28: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi mov rdx, gword ptr [rbp-28H] call TargetInvocationException:.ctor(Exception):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 441, prolog size 33, PerfScore 83.76, (MethodHash=79e35609) for method RuntimeType:CreateInstanceDefaultCtor(bool,bool,bool,bool):Object:this ; ============================================================ ; Assembly listing for method RuntimeType:CreateInstanceCheckThis():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp3 [V05,T04] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp4 [V06,T05] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp5 [V07,T06] ( 2, 0 ) ref -> rcx "argument with side effect" ; V08 tmp6 [V08,T07] ( 2, 0 ) ref -> rdx "argument with side effect" ; V09 tmp7 [V09,T08] ( 2, 0 ) ref -> rcx "argument with side effect" ; V10 tmp8 [V10,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 tmp9 [V11,T10] ( 2, 0 ) ref -> rcx "argument with side effect" ; V12 tmp10 [V12,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M33652_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M33652_IG02: mov rcx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]RuntimeType:get_ContainsGenericParameters():bool:this test eax, eax jne SHORT G_M33652_IG06 ;; bbWeight=1 PerfScore 6.75 G_M33652_IG03: mov rcx, rsi call Type:GetRootElementType():Type:this mov rsi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi je SHORT G_M33652_IG07 ;; bbWeight=1 PerfScore 4.00 G_M33652_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi je G_M33652_IG08 ;; bbWeight=1 PerfScore 2.50 G_M33652_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M33652_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x327F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, rsi call SR:Format(String,Object):String mov rdx, rax mov rcx, rdi call ArgumentException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M33652_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x3253 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call NotSupportedException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M33652_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x32D3 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call NotSupportedException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 305, prolog size 6, PerfScore 48.50, (MethodHash=4cb97c8b) for method RuntimeType:CreateInstanceCheckThis():this ; ============================================================ ; Assembly listing for method RuntimeType:CreateInstanceDefaultCtorSlow(bool,bool,bool):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 4.25) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) bool -> rdx ; V02 arg2 [V02,T02] ( 3, 3 ) bool -> r8 ; V03 arg3 [V03,T03] ( 3, 3 ) bool -> rdi ; V04 loc0 [V04 ] ( 3, 2.50) long -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op ; V05 loc1 [V05 ] ( 3, 3 ) bool -> [rsp+0x40] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc2 [V06 ] ( 3, 3 ) bool -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V07 loc3 [V07,T05] ( 2, 2 ) ref -> rbx class-hnd ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T04] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V10 tmp2 [V10,T12] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V11 tmp3 [V11,T06] ( 2, 2 ) long -> rcx "Inlining Arg" ; V12 tmp4 [V12,T08] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ; V13 tmp5 [V13,T09] ( 3, 1 ) ref -> rax class-hnd "Inline stloc first use temp" ; V14 tmp6 [V14,T07] ( 2, 2 ) long -> rcx ld-addr-op "Inlining Arg" ;* V15 tmp7 [V15 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V16 tmp8 [V16,T11] ( 2, 1 ) long -> rcx "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V18 tmp10 [V18,T10] ( 2, 1 ) byref -> rcx "Inlining Arg" ; V19 tmp11 [V19,T13] ( 2, 0 ) ref -> rcx "argument with side effect" ; V20 tmp12 [V20,T14] ( 2, 0 ) ref -> rcx "argument with side effect" ; V21 tmp13 [V21,T15] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 80 G_M26483_IG01: push rdi push rsi push rbx sub rsp, 80 mov rsi, rcx mov edi, r9d ;; bbWeight=1 PerfScore 3.75 G_M26483_IG02: xor r9, r9 mov qword ptr [rsp+48H], r9 mov dword ptr [rsp+40H], r9d mov dword ptr [rsp+38H], r9d lea r9, [rsp+48H] mov qword ptr [rsp+20H], r9 lea r9, [rsp+38H] mov qword ptr [rsp+28H], r9 movzx rdx, dl movzx r8, r8b lea r9, [rsp+40H] mov rcx, rsi call RuntimeTypeHandle:CreateInstance(RuntimeType,bool,bool,byref,byref,byref):Object mov rbx, rax cmp byte ptr [rsp+38H], 0 jne SHORT G_M26483_IG11 ;; bbWeight=1 PerfScore 10.75 G_M26483_IG03: mov ecx, dword ptr [rsp+40H] movzx rcx, cl movzx rax, dil test ecx, eax je SHORT G_M26483_IG09 ;; bbWeight=1 PerfScore 2.75 G_M26483_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, qword ptr [rsp+48H] mov qword ptr [rdi+24], rcx mov rcx, qword ptr [rsi+16] test rcx, rcx je SHORT G_M26483_IG07 ;; bbWeight=0.50 PerfScore 3.38 G_M26483_IG05: mov rcx, qword ptr [rsi+16] mov rax, gword ptr [rcx] test rax, rax je SHORT G_M26483_IG07 ;; bbWeight=0.25 PerfScore 1.31 G_M26483_IG06: jmp SHORT G_M26483_IG08 ;; bbWeight=0.50 PerfScore 1.00 G_M26483_IG07: mov rcx, rsi call RuntimeType:InitializeCache():RuntimeTypeCache:this ;; bbWeight=0.50 PerfScore 0.63 G_M26483_IG08: lea rcx, bword ptr [rax+120] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 0.88 G_M26483_IG09: mov rax, rbx ;; bbWeight=1 PerfScore 0.25 G_M26483_IG10: add rsp, 80 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M26483_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x4E03 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, rsi call SR:Format(String,Object):String mov rdx, rax mov rcx, rdi call MissingMethodException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 256, prolog size 7, PerfScore 53.04, (MethodHash=4b39988c) for method RuntimeType:CreateInstanceDefaultCtorSlow(bool,bool,bool):Object:this ; ============================================================ ; Assembly listing for method CoreRuntime:TryGetVersionFromProductInfo(String,String,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 10, 6.25) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 8, 4.75) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 6, 4 ) byref -> rbx ; V03 loc0 [V03,T06] ( 2, 1 ) ref -> rbp class-hnd ; V04 loc1 [V04,T05] ( 3, 1.50) int -> rax ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ;* V06 tmp1 [V06,T07] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V07 tmp2 [V07,T08] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V08 tmp3 [V08,T03] ( 3, 3 ) int -> rdx "Inlining Arg" ; V09 tmp4 [V09,T04] ( 2, 2 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 40 G_M11000_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M11000_IG02: test rsi, rsi je G_M11000_IG11 ;; bbWeight=1 PerfScore 1.25 G_M11000_IG03: cmp dword ptr [rsi+8], 0 jbe G_M11000_IG11 ;; bbWeight=0.25 PerfScore 0.75 G_M11000_IG04: test rdi, rdi je G_M11000_IG11 ;; bbWeight=0.50 PerfScore 0.63 G_M11000_IG05: cmp dword ptr [rdi+8], 0 jbe G_M11000_IG11 ;; bbWeight=0.25 PerfScore 0.75 G_M11000_IG06: mov dword ptr [rsp+20H], 5 mov r9d, dword ptr [rdi+8] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi xor r8d, r8d call String:IndexOf(String,int,int,int):int:this test eax, eax jl SHORT G_M11000_IG09 mov rcx, rsi call CoreRuntime:GetParsableVersionPart(String):String mov rbp, rax mov rcx, rsi mov rdx, rbx call Version:TryParse(String,byref):bool test eax, eax jne SHORT G_M11000_IG07 mov rcx, rbp mov rdx, rbx call Version:TryParse(String,byref):bool test eax, eax je SHORT G_M11000_IG09 ;; bbWeight=0.50 PerfScore 7.50 G_M11000_IG07: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M11000_IG08: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M11000_IG09: mov dword ptr [rsp+20H], 5 mov r9d, dword ptr [rdi+8] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi xor r8d, r8d call String:IndexOf(String,int,int,int):int:this test eax, eax jl SHORT G_M11000_IG11 xor r9d, r9d mov dword ptr [rsp+20H], r9d mov r9d, dword ptr [rsi+8] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rsi xor r8d, r8d call String:IndexOf(String,int,int,int):int:this test eax, eax jle SHORT G_M11000_IG11 lea edx, [rax+8] mov r8d, dword ptr [rsi+8] sub r8d, edx mov rcx, rsi call String:Substring(int,int):String:this mov rcx, rax call CoreRuntime:GetParsableVersionPart(String):String mov rcx, rax mov rdx, rbx ;; bbWeight=0.50 PerfScore 11.00 G_M11000_IG10: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp Version:TryParse(String,byref):bool ;; bbWeight=0.50 PerfScore 2.13 G_M11000_IG11: xor rax, rax mov gword ptr [rbx], rax ;; bbWeight=0.50 PerfScore 0.63 G_M11000_IG12: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 289, prolog size 8, PerfScore 61.90, (MethodHash=439cd507) for method CoreRuntime:TryGetVersionFromProductInfo(String,String,byref):bool ; ============================================================ ; Assembly listing for method String:IndexOf(String,int,int,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 3.50) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 6, 3.50) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 5, 3.50) int -> rbx ; V03 arg3 [V03,T03] ( 5, 3.50) int -> rbp ; V04 arg4 [V04,T04] ( 6, 4 ) int -> r14 ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T09] ( 9, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T11] ( 3, 0 ) ref -> rsi ; V08 tmp3 [V08,T10] ( 8, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp4 [V09,T06] ( 2, 2 ) ref -> rcx class-hnd "impAppendStmt" ; V10 tmp5 [V10,T07] ( 2, 2 ) ref -> rcx class-hnd "impAppendStmt" ; V11 tmp6 [V11,T08] ( 2, 2 ) ref -> rcx class-hnd "impAppendStmt" ;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V13 tmp8 [V13,T12] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V14 tmp9 [V14,T13] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V15 rat0 [V15,T05] ( 3, 3 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 48 G_M49628_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 mov rdi, rcx mov rsi, rdx mov ebx, r8d mov ebp, r9d mov r14d, dword ptr [rsp+80H] ;; bbWeight=1 PerfScore 7.25 G_M49628_IG02: cmp r14d, 5 ja G_M49628_IG09 mov eax, r14d lea rdx, [reloc @RWD00] mov edx, dword ptr [rdx+4*rax] lea rcx, G_M49628_IG02 add rdx, rcx jmp rdx ;; bbWeight=1 PerfScore 7.25 G_M49628_IG03: call CultureInfo:get_CurrentCulture():CultureInfo mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+48]CultureInfo:get_CompareInfo():CompareInfo:this mov rcx, rax mov dword ptr [rsp+20H], ebp and r14d, 1 mov dword ptr [rsp+28H], r14d mov rdx, rdi mov r8, rsi mov r9d, ebx cmp dword ptr [rcx], ecx call CompareInfo:IndexOf(String,String,int,int,int):int:this nop ;; bbWeight=0.50 PerfScore 7.38 G_M49628_IG04: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M49628_IG05: mov rcx, 0xD1FFAB1E mov edx, 502 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov dword ptr [rsp+20H], ebp mov edx, r14d and edx, 1 mov dword ptr [rsp+28H], edx mov rdx, rdi mov r8, rsi mov r9d, ebx cmp dword ptr [rcx], ecx call CompareInfo:IndexOf(String,String,int,int,int):int:this nop ;; bbWeight=0.50 PerfScore 5.13 G_M49628_IG06: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M49628_IG07: mov rcx, 0xD1FFAB1E mov edx, 502 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov dword ptr [rsp+20H], ebp mov edx, r14d neg edx and edx, r14d shl edx, 28 mov dword ptr [rsp+28H], edx mov rdx, rdi mov r8, rsi mov r9d, ebx cmp dword ptr [rcx], ecx call CompareInfo:IndexOf(String,String,int,int,int):int:this nop ;; bbWeight=0.50 PerfScore 6.25 G_M49628_IG08: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M49628_IG09: test rsi, rsi je SHORT G_M49628_IG10 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+120] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E jmp SHORT G_M49628_IG11 ;; bbWeight=0 PerfScore 0.00 G_M49628_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+120] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E ;; bbWeight=0 PerfScore 0.00 G_M49628_IG11: mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M49628_IG03 - G_M49628_IG02 dd G_M49628_IG03 - G_M49628_IG02 dd G_M49628_IG05 - G_M49628_IG02 dd G_M49628_IG05 - G_M49628_IG02 dd G_M49628_IG07 - G_M49628_IG02 dd G_M49628_IG07 - G_M49628_IG02 ; Total bytes of code 505, prolog size 10, PerfScore 89.38, (MethodHash=f0153e23) for method String:IndexOf(String,int,int,int):int:this ; ============================================================ ; Assembly listing for method CompareInfo:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init "virtual vtable call" ; ; Lcl frame size = 48 G_M37455_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M37455_IG02: call CultureInfo:get_InvariantCulture():CultureInfo mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] mov rax, gword ptr [rbp-08H] mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+48]CultureInfo:get_CompareInfo():CompareInfo:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 12.75 G_M37455_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 68, prolog size 16, PerfScore 24.55, (MethodHash=e0da6db0) for method CompareInfo:.cctor() ; ============================================================ ; Assembly listing for method CultureInfo:get_InvariantCulture():CultureInfo ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M40654_IG01: ;; bbWeight=1 PerfScore 0.00 G_M40654_IG02: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=1 PerfScore 2.25 G_M40654_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 14, prolog size 0, PerfScore 4.65, (MethodHash=f7176131) for method CultureInfo:get_InvariantCulture():CultureInfo ; ============================================================ ; Assembly listing for method CultureInfo:get_CompareInfo():CompareInfo:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T03] ( 4, 3.50) ref -> rax ; V05 tmp3 [V05,T07] ( 3, 1.50) ref -> rdi ; V06 tmp4 [V06,T08] ( 2, 1 ) ref -> rcx ; V07 tmp5 [V07,T05] ( 4, 2 ) ref -> rbx ; V08 tmp6 [V08,T01] ( 4, 4 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V09 tmp7 [V09,T06] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V10 rat0 [V10,T04] ( 3, 3 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 32 G_M7596_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M7596_IG02: mov rax, gword ptr [rsi+8] test rax, rax jne SHORT G_M7596_IG06 ;; bbWeight=1 PerfScore 3.25 G_M7596_IG03: mov rcx, gword ptr [rsi+48] mov rdi, rsi cmp byte ptr [rcx+457], 0 jne SHORT G_M7596_IG04 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, gword ptr [rdi+64] lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rcx, rbx mov rdx, rdi call CompareInfo:InitSort(CultureInfo):this jmp SHORT G_M7596_IG05 ;; bbWeight=0.50 PerfScore 6.88 G_M7596_IG04: mov rcx, rsi mov rcx, gword ptr [rcx+64] call CultureInfo:GetCultureInfo(String):CultureInfo mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+48]CultureInfo:get_CompareInfo():CompareInfo:this mov rbx, rax ;; bbWeight=0.50 PerfScore 5.38 G_M7596_IG05: lea rcx, bword ptr [rsi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, rbx ;; bbWeight=0.50 PerfScore 1.00 G_M7596_IG06: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 130, prolog size 7, PerfScore 35.75, (MethodHash=534be253) for method CultureInfo:get_CompareInfo():CompareInfo:this ; ============================================================ ; Assembly listing for method CompareInfo:InitSort(CultureInfo):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M25974_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M25974_IG02: mov rcx, rdx cmp dword ptr [rcx], ecx call CultureInfo:get_SortName():String:this lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rsi ;; bbWeight=1 PerfScore 5.25 G_M25974_IG03: add rsp, 32 pop rsi jmp CompareInfo:IcuInitSortHandle():this ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 43, prolog size 5, PerfScore 13.80, (MethodHash=23bb9a89) for method CompareInfo:InitSort(CultureInfo):this ; ============================================================ ; Assembly listing for method CultureInfo:get_SortName():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rcx this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T02] ( 4, 3.50) ref -> rax ; V05 tmp3 [V05,T03] ( 3, 3 ) ref -> rsi class-hnd "dup spill" ; V06 tmp4 [V06,T04] ( 2, 2 ) ref -> rdx class-hnd "Inlining Arg" ; ; Lcl frame size = 0 G_M53604_IG01: push rsi ;; bbWeight=1 PerfScore 1.00 G_M53604_IG02: mov rax, gword ptr [rcx+80] test rax, rax jne SHORT G_M53604_IG04 ;; bbWeight=1 PerfScore 3.25 G_M53604_IG03: mov rdx, gword ptr [rcx+48] mov rsi, gword ptr [rdx+8] lea rcx, bword ptr [rcx+80] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rax, rsi ;; bbWeight=0.50 PerfScore 3.00 G_M53604_IG04: pop rsi ret ;; bbWeight=1 PerfScore 1.50 ; Total bytes of code 35, prolog size 1, PerfScore 12.25, (MethodHash=e4af2e9b) for method CultureInfo:get_SortName():String:this ; ============================================================ ; Assembly listing for method CompareInfo:IcuInitSortHandle():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T06] ( 2, 2 ) ref -> rcx ;* V03 tmp2 [V03,T04] ( 0, 0 ) ref -> zero-ref ; V04 tmp3 [V04,T02] ( 5, 3 ) int -> rax ;* V05 tmp4 [V05,T09] ( 0, 0 ) ref -> zero-ref ;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref ; V07 tmp6 [V07,T03] ( 3, 3 ) ref -> rax "arr expr" ; V08 tmp7 [V08,T07] ( 2, 2 ) ref -> rax "arr expr" ; V09 tmp8 [V09,T08] ( 2, 2 ) ref -> rax "arr expr" ; V10 cse0 [V10,T01] ( 8, 5.50) ref -> rcx "CSE - aggressive" ; V11 cse1 [V11,T05] ( 4, 2 ) int -> rdx "CSE - aggressive" ; ; Lcl frame size = 32 G_M43041_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M43041_IG02: mov rcx, rsi mov rcx, gword ptr [rcx+16] cmp dword ptr [rcx+8], 0 je SHORT G_M43041_IG06 ;; bbWeight=1 PerfScore 5.25 G_M43041_IG03: cmp dword ptr [rcx+8], 2 jl SHORT G_M43041_IG05 mov rax, rcx mov edx, dword ptr [rax+8] cmp edx, 0 jbe SHORT G_M43041_IG09 cmp word ptr [rax+12], 101 jne SHORT G_M43041_IG05 mov rax, rcx cmp edx, 1 jbe SHORT G_M43041_IG09 cmp word ptr [rax+14], 110 jne SHORT G_M43041_IG05 cmp dword ptr [rcx+8], 2 je SHORT G_M43041_IG04 mov rax, rcx cmp edx, 2 jbe SHORT G_M43041_IG09 cmp word ptr [rax+16], 45 sete al movzx rax, al jmp SHORT G_M43041_IG07 ;; bbWeight=0.50 PerfScore 11.88 G_M43041_IG04: mov eax, 1 jmp SHORT G_M43041_IG07 ;; bbWeight=0.50 PerfScore 1.13 G_M43041_IG05: xor eax, eax jmp SHORT G_M43041_IG07 ;; bbWeight=0.50 PerfScore 1.13 G_M43041_IG06: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M43041_IG07: mov byte ptr [rsi+44], al call SortHandleCache:GetCachedSortHandle(String):long mov qword ptr [rsi+32], rax ;; bbWeight=1 PerfScore 3.00 G_M43041_IG08: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M43041_IG09: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 127, prolog size 5, PerfScore 38.45, (MethodHash=f66457de) for method CompareInfo:IcuInitSortHandle():this ; ============================================================ ; Assembly listing for method SortHandleCache:GetCachedSortHandle(String):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rsi class-hnd ; V01 loc0 [V01,T03] ( 4, 2.50) ref -> [rbp-0x20] EH do-not-enreg[] class-hnd EH-live ; V02 loc1 [V02 ] ( 5, 4 ) bool -> [rbp-0x10] do-not-enreg[XF] addr-exposed ld-addr-op ; V03 loc2 [V03 ] ( 5, 3 ) long -> [rbp-0x18] do-not-enreg[X] addr-exposed ld-addr-op ; V04 loc3 [V04,T06] ( 3, 1.50) int -> rax ; V05 loc4 [V05,T04] ( 2, 2 ) long -> rsi ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ; V08 tmp2 [V08,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp3 [V09,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp4 [V10,T02] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ; V11 tmp5 [V11,T05] ( 2, 2 ) long -> r8 "Inlining Arg" ;* V12 tmp6 [V12 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; V13 tmp7 [V13,T01] ( 2, 4 ) ref -> rcx "argument with side effect" ; V14 tmp8 [V14,T10] ( 2, 0 ) ref -> rcx "argument with side effect" ; V15 tmp9 [V15,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; V16 PSPSym [V16 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "PSPSym" ;* V17 cse0 [V17,T07] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 72 G_M24086_IG01: push rbp push rsi sub rsp, 72 lea rbp, [rsp+50H] mov qword ptr [rbp-30H], rsp mov rsi, rcx ;; bbWeight=1 PerfScore 4.00 G_M24086_IG02: mov rcx, 0xD1FFAB1E mov edx, 503 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-20H], rdx xor edx, edx mov dword ptr [rbp-10H], edx ;; bbWeight=1 PerfScore 6.00 G_M24086_IG03: cmp byte ptr [rbp-10H], 0 jne G_M24086_IG11 ;; bbWeight=1 PerfScore 2.00 G_M24086_IG04: lea rdx, [rbp-10H] mov rcx, gword ptr [rbp-20H] call Monitor:ReliableEnter(Object,byref) ;; bbWeight=1 PerfScore 2.50 G_M24086_IG05: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] lea r8, [rbp-18H] mov rdx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:TryGetValue(__Canon,byref):bool:this test eax, eax jne G_M24086_IG12 ;; bbWeight=1 PerfScore 9.50 G_M24086_IG06: lea rdx, [rbp-18H] mov rcx, rsi call Globalization:GetSortHandle(String,byref):int cmp eax, 3 je SHORT G_M24086_IG10 ;; bbWeight=0.50 PerfScore 1.50 G_M24086_IG07: test eax, eax jne SHORT G_M24086_IG09 ;; bbWeight=0.50 PerfScore 0.63 G_M24086_IG08: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov r8, qword ptr [rbp-18H] cmp dword ptr [rcx], ecx mov rdx, rsi mov r9d, 2 call Dictionary`2:TryInsert(__Canon,long,ubyte):bool:this jmp SHORT G_M24086_IG12 ;; bbWeight=0.50 PerfScore 4.38 G_M24086_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x3EE9 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ExternalException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M24086_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call OutOfMemoryException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M24086_IG11: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M24086_IG12: mov rsi, qword ptr [rbp-18H] ;; bbWeight=1 PerfScore 1.00 G_M24086_IG13: cmp byte ptr [rbp-10H], 0 je SHORT G_M24086_IG15 ;; bbWeight=1 PerfScore 2.00 G_M24086_IG14: mov rcx, gword ptr [rbp-20H] call Monitor:Exit(Object) ;; bbWeight=0.50 PerfScore 1.00 G_M24086_IG15: mov rax, rsi ;; bbWeight=1 PerfScore 0.25 G_M24086_IG16: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 G_M24086_IG17: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=0 PerfScore 0.00 G_M24086_IG18: mov rcx, qword ptr [rbp-18H] call Globalization:CloseSortHandle(long) call CORINFO_HELP_RETHROW int3 ;; bbWeight=0 PerfScore 0.00 G_M24086_IG19: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=0 PerfScore 0.00 G_M24086_IG20: cmp byte ptr [rbp-10H], 0 je SHORT G_M24086_IG21 mov rcx, gword ptr [rbp-20H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M24086_IG21: nop ;; bbWeight=0 PerfScore 0.00 G_M24086_IG22: add rsp, 40 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 393, prolog size 18, PerfScore 76.55, (MethodHash=552ca1e9) for method SortHandleCache:GetCachedSortHandle(String):long ; ============================================================ ; Assembly listing for method SortHandleCache:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M41818_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M41818_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call Dictionary`2:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M41818_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=b2685ca5) for method SortHandleCache:.cctor() ; ============================================================ ; Assembly listing for method Dictionary`2:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5395_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5395_IG02: xor edx, edx xor r8, r8 ;; bbWeight=1 PerfScore 0.50 G_M5395_IG03: jmp Dictionary`2:.ctor(int,IEqualityComparer`1):this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 10, prolog size 0, PerfScore 3.50, (MethodHash=8404eaec) for method Dictionary`2:.ctor():this ; ============================================================ ; Assembly listing for method Dictionary`2:.ctor(int,IEqualityComparer`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 9, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 5, 4.50) int -> rdx ; V02 arg2 [V02,T02] ( 5, 4 ) ref -> rdi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T08] ( 2, 1.50) long -> rcx "impRuntimeLookup slot" ; V05 tmp2 [V05,T07] ( 2, 2 ) ref -> rdi class-hnd exact "impAppendStmt" ; V06 tmp3 [V06,T05] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V07 tmp4 [V07,T04] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V08 tmp5 [V08,T06] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V09 cse0 [V09,T09] ( 3, 1.25) long -> rdx "CSE - moderate" ; V10 cse1 [V10,T10] ( 3, 1.25) long -> rdx "CSE - moderate" ; V11 cse2 [V11,T03] ( 5, 3.50) long -> rbx "CSE - aggressive" ; ; Lcl frame size = 48 G_M17833_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx mov rdi, r8 ;; bbWeight=1 PerfScore 4.75 G_M17833_IG02: test edx, edx jl G_M17833_IG17 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG03: test edx, edx jle SHORT G_M17833_IG05 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG04: mov rcx, rsi call Dictionary`2:Initialize(int):int:this ;; bbWeight=0.50 PerfScore 0.63 G_M17833_IG05: test rdi, rdi je SHORT G_M17833_IG10 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG06: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rbx, qword ptr [rdx] mov rdx, qword ptr [rbx+32] test rdx, rdx je SHORT G_M17833_IG08 ;; bbWeight=0.50 PerfScore 4.63 G_M17833_IG07: jmp SHORT G_M17833_IG09 ;; bbWeight=0.25 PerfScore 0.50 G_M17833_IG08: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M17833_IG09: mov rcx, rdx call EqualityComparer`1:get_Default():EqualityComparer`1 cmp rax, rdi je SHORT G_M17833_IG10 lea rcx, bword ptr [rsi+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 2.13 G_M17833_IG10: mov rcx, qword ptr [rsi] mov rcx, qword ptr [rcx+48] mov rbx, qword ptr [rcx] mov rcx, 0xD1FFAB1E cmp qword ptr [rbx], rcx jne SHORT G_M17833_IG15 ;; bbWeight=1 PerfScore 9.25 G_M17833_IG11: cmp gword ptr [rsi+24], 0 jne SHORT G_M17833_IG15 mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rbx+24] test rdx, rdx je SHORT G_M17833_IG13 ;; bbWeight=0.50 PerfScore 5.25 G_M17833_IG12: jmp SHORT G_M17833_IG14 ;; bbWeight=0.25 PerfScore 0.50 G_M17833_IG13: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M17833_IG14: mov rcx, rdx mov rdx, rdi call CORINFO_HELP_CHKCASTANY lea rcx, bword ptr [rsi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 1.63 G_M17833_IG15: nop ;; bbWeight=1 PerfScore 0.25 G_M17833_IG16: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M17833_IG17: mov ecx, 22 call ThrowHelper:ThrowArgumentOutOfRangeException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 227, prolog size 12, PerfScore 59.45, (MethodHash=4fbeba56) for method Dictionary`2:.ctor(int,IEqualityComparer`1):this ; ============================================================ ; Assembly listing for method Dictionary`2:TryGetValue(__Canon,byref):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T00] ( 4, 3 ) byref -> rsi ; V03 loc0 [V03,T03] ( 3, 2.50) byref -> rax ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M51562_IG01: push rsi sub rsp, 32 mov rsi, r8 ;; bbWeight=1 PerfScore 1.50 G_M51562_IG02: call Dictionary`2:FindValue(__Canon):byref:this test rax, rax je SHORT G_M51562_IG05 ;; bbWeight=1 PerfScore 2.25 G_M51562_IG03: mov rax, qword ptr [rax] mov qword ptr [rsi], rax mov eax, 1 ;; bbWeight=0.50 PerfScore 1.63 G_M51562_IG04: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M51562_IG05: xor eax, eax mov qword ptr [rsi], rax ;; bbWeight=0.50 PerfScore 0.63 G_M51562_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 46, prolog size 5, PerfScore 12.35, (MethodHash=be493695) for method Dictionary`2:TryGetValue(__Canon,byref):bool:this ; ============================================================ ; Assembly listing for method Dictionary`2:FindValue(__Canon):byref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T09] ( 11, 7.50) ref -> rdi this class-hnd ; V01 arg1 [V01,T08] ( 8, 8.50) ref -> rsi ld-addr-op class-hnd ; V02 loc0 [V02,T00] ( 10, 29 ) byref -> registers ; V03 loc1 [V03,T23] ( 3, 2 ) byref -> rax ; V04 loc2 [V04,T21] ( 4, 3.50) ref -> r14 class-hnd ; V05 loc3 [V05,T16] ( 3, 5 ) int -> r14 ; V06 loc4 [V06,T01] ( 6, 13.50) int -> r15 ; V07 loc5 [V07,T10] ( 3, 8.50) ref -> r12 class-hnd ; V08 loc6 [V08,T03] ( 4, 12.50) int -> r13 ; V09 loc7 [V09,T19] ( 3, 4.50) ref -> rbx class-hnd ; V10 loc8 [V10,T17] ( 3, 5 ) int -> r15 ; V11 loc9 [V11,T02] ( 6, 13.50) int -> r12 ; V12 loc10 [V12,T11] ( 3, 8.50) ref -> r13 class-hnd ; V13 loc11 [V13,T04] ( 4, 12.50) int -> [rsp+0x2C] ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15,T20] ( 2, 4 ) long -> rcx "impRuntimeLookup slot" ;* V16 tmp2 [V16 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V17 tmp3 [V17,T35] ( 2, 1.50) long -> rcx "impRuntimeLookup slot" ;* V18 tmp4 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V19 tmp5 [V19,T22] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V20 tmp6 [V20 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V21 tmp7 [V21,T13] ( 2, 6 ) long -> rcx "impRuntimeLookup slot" ; V22 tmp8 [V22,T12] ( 2, 8 ) ref -> [rsp+0x20] class-hnd "impAppendStmt" ;* V23 tmp9 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V24 tmp10 [V24,T05] ( 4, 12 ) long -> r11 "spilling Runtime Lookup tree" ;* V25 tmp11 [V25 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V26 tmp12 [V26,T36] ( 2, 1.50) long -> rcx "impRuntimeLookup slot" ; V27 tmp13 [V27,T24] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V28 tmp14 [V28,T39] ( 2, 1 ) byref -> rcx "Inline return value spill temp" ; V29 tmp15 [V29,T29] ( 3, 1.50) ref -> rcx class-hnd "Inline stloc first use temp" ; V30 tmp16 [V30,T25] ( 2, 2 ) long -> r8 "Inlining Arg" ; V31 tmp17 [V31,T26] ( 2, 2 ) int -> rax "Inlining Arg" ; V32 tmp18 [V32,T31] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V33 tmp19 [V33,T40] ( 2, 1 ) byref -> rcx "Inline return value spill temp" ; V34 tmp20 [V34,T30] ( 3, 1.50) ref -> rcx class-hnd "Inline stloc first use temp" ; V35 tmp21 [V35,T27] ( 2, 2 ) long -> r8 "Inlining Arg" ; V36 tmp22 [V36,T28] ( 2, 2 ) int -> rax "Inlining Arg" ; V37 tmp23 [V37,T32] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V38 cse0 [V38,T18] ( 3, 5 ) long -> r11 "CSE - moderate" ; V39 cse1 [V39,T37] ( 3, 1.25) long -> rdx "CSE - moderate" ; V40 cse2 [V40,T38] ( 3, 1.25) long -> r11 "CSE - moderate" ; V41 cse3 [V41,T14] ( 4, 4 ) long -> rbp "CSE - moderate" ; V42 cse4 [V42,T33] ( 3, 1.50) int -> rdx "CSE - moderate" ; V43 cse5 [V43,T34] ( 3, 1.50) int -> rdx "CSE - moderate" ; V44 cse6 [V44,T06] ( 3, 12 ) int -> rbp "CSE - aggressive" ; V45 cse7 [V45,T07] ( 3, 12 ) int -> [rsp+0x28] "CSE - aggressive" ; V46 cse8 [V46,T15] ( 5, 5 ) long -> rbx "CSE - moderate" ; ; Lcl frame size = 56 G_M43428_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 9.75 G_M43428_IG02: test rsi, rsi je G_M43428_IG25 ;; bbWeight=1 PerfScore 1.25 G_M43428_IG03: mov rbx, qword ptr [rdi] mov rcx, rbx mov rcx, qword ptr [rcx+48] mov rbp, qword ptr [rcx] cmp gword ptr [rdi+8], 0 je G_M43428_IG24 ;; bbWeight=1 PerfScore 9.25 G_M43428_IG04: mov r14, gword ptr [rdi+24] test r14, r14 jne G_M43428_IG11 mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+24]Object:GetHashCode():int:this mov r14d, eax mov rcx, gword ptr [rdi+8] mov edx, dword ptr [rcx+8] mov eax, edx mov r8, qword ptr [rdi+48] mov r9d, r14d imul r8, r9 shr r8, 32 inc r8 mov eax, eax imul rax, r8 shr rax, 32 cmp eax, edx jae G_M43428_IG27 movsxd rdx, eax lea rcx, bword ptr [rcx+4*rdx+16] mov r15d, dword ptr [rcx] mov r12, gword ptr [rdi+16] xor r13d, r13d mov rcx, rbx mov rdx, qword ptr [rbp+32] test rdx, rdx je SHORT G_M43428_IG06 ;; bbWeight=0.50 PerfScore 18.00 G_M43428_IG05: jmp SHORT G_M43428_IG07 ;; bbWeight=0.25 PerfScore 0.50 G_M43428_IG06: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M43428_IG07: mov rcx, rdx call EqualityComparer`1:get_Default():EqualityComparer`1 mov rbx, rax dec r15d ;; bbWeight=0.50 PerfScore 0.88 G_M43428_IG08: mov ebp, dword ptr [r12+8] cmp ebp, r15d jbe G_M43428_IG24 movsxd rdx, r15d lea rdx, [rdx+2*rdx] lea r15, bword ptr [r12+8*rdx+16] cmp dword ptr [r15+16], r14d jne SHORT G_M43428_IG10 ;; bbWeight=4 PerfScore 32.00 G_M43428_IG09: mov rdx, gword ptr [r15] mov rcx, rbx mov r8, rsi mov rax, qword ptr [rbx] mov rax, qword ptr [rax+64] call qword ptr [rax+48]EqualityComparer`1:Equals(__Canon,__Canon):bool:this test eax, eax jne G_M43428_IG22 ;; bbWeight=2 PerfScore 21.50 G_M43428_IG10: mov r15d, dword ptr [r15+20] inc r13d cmp ebp, r13d jb G_M43428_IG26 jmp SHORT G_M43428_IG08 ;; bbWeight=4 PerfScore 22.00 G_M43428_IG11: mov rcx, rbx mov r11, qword ptr [rbp+48] test r11, r11 je SHORT G_M43428_IG13 ;; bbWeight=0.50 PerfScore 1.75 G_M43428_IG12: jmp SHORT G_M43428_IG14 ;; bbWeight=0.25 PerfScore 0.50 G_M43428_IG13: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M43428_IG14: mov rcx, r14 mov rdx, rsi call qword ptr [r11] mov r15d, eax mov rcx, gword ptr [rdi+8] mov edx, dword ptr [rcx+8] mov eax, edx mov r8, qword ptr [rdi+48] mov r9d, r15d imul r8, r9 shr r8, 32 inc r8 mov eax, eax imul rax, r8 shr rax, 32 cmp eax, edx jae G_M43428_IG27 movsxd rdx, eax lea rcx, bword ptr [rcx+4*rdx+16] mov r12d, dword ptr [rcx] mov r13, gword ptr [rdi+16] xor eax, eax mov dword ptr [rsp+2CH], eax dec r12d ;; bbWeight=0.50 PerfScore 13.38 G_M43428_IG15: mov r8d, dword ptr [r13+8] mov dword ptr [rsp+28H], r8d cmp r8d, r12d jbe G_M43428_IG24 movsxd rcx, r12d lea rcx, [rcx+2*rcx] lea rcx, bword ptr [r13+8*rcx+16] mov r12, rcx cmp dword ptr [r12+16], r15d jne SHORT G_M43428_IG20 ;; bbWeight=4 PerfScore 41.00 G_M43428_IG16: mov r9, gword ptr [r12] mov gword ptr [rsp+20H], r9 mov rcx, rbx mov r11, qword ptr [rbp+56] test r11, r11 je SHORT G_M43428_IG18 ;; bbWeight=2 PerfScore 13.00 G_M43428_IG17: jmp SHORT G_M43428_IG19 ;; bbWeight=1 PerfScore 2.00 G_M43428_IG18: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=1 PerfScore 1.50 G_M43428_IG19: mov rcx, r14 mov rdx, gword ptr [rsp+20H] mov r8, rsi call qword ptr [r11] test eax, eax jne SHORT G_M43428_IG21 ;; bbWeight=2 PerfScore 11.50 G_M43428_IG20: mov r12d, dword ptr [r12+20] mov eax, dword ptr [rsp+2CH] inc eax cmp dword ptr [rsp+28H], eax jb SHORT G_M43428_IG26 mov dword ptr [rsp+2CH], eax jmp SHORT G_M43428_IG15 ;; bbWeight=4 PerfScore 33.00 G_M43428_IG21: mov r15, r12 jmp SHORT G_M43428_IG22 ;; bbWeight=1 PerfScore 2.25 G_M43428_IG22: cmp dword ptr [r15], r15d lea rax, bword ptr [r15+8] ;; bbWeight=0.50 PerfScore 1.25 G_M43428_IG23: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M43428_IG24: xor rax, rax jmp SHORT G_M43428_IG23 ;; bbWeight=0.50 PerfScore 1.13 G_M43428_IG25: mov ecx, 4 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M43428_IG26: call ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() int3 ;; bbWeight=0 PerfScore 0.00 G_M43428_IG27: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 566, prolog size 27, PerfScore 299.98, (MethodHash=5cc0565b) for method Dictionary`2:FindValue(__Canon):byref:this ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(String,byref):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 4, 4 ) byref -> rdi ; V02 loc0 [V02,T10] ( 3, 2 ) int -> [rbp+0x84] EH do-not-enreg[] EH-live ; V03 loc1 [V03,T09] ( 4, 2.50) long -> [rbp+0x78] EH do-not-enreg[] EH-live ; V04 loc2 [V04,T13] ( 3, 1.50) int -> r14 ; V05 loc3 [V05,T08] ( 5, 3.50) long -> [rbp+0x70] EH do-not-enreg[] EH-live ; V06 loc4 [V06 ] ( 1, 1 ) byref -> [rbp+0x68] must-init pinned ;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref ; V08 loc6 [V08,T11] ( 2, 2 ) int -> rsi ; V09 loc7 [V09,T12] ( 2, 2 ) int -> rsi ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11 ] ( 3, 3 ) long -> [rbp+0x50] do-not-enreg[X] addr-exposed "stub argument" ; V12 tmp2 [V12,T03] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V13 tmp3 [V13 ] ( 1, 1 ) long -> [rbp+0x60] do-not-enreg[X] addr-exposed "stub argument" ; V14 tmp4 [V14,T04] ( 2, 4 ) int -> rax "Single return block return value" ; V15 FramesRoot [V15,T01] ( 6, 6 ) long -> rbx "Pinvoke FrameListRoot" ; V16 PInvokeFrame [V16 ] ( 8, 8 ) blk (72) [rbp+0x08] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V17 tmp7 [V17,T05] ( 2, 4 ) long -> rdx "Cast away GC" ; V18 tmp8 [V18,T06] ( 2, 4 ) long -> rcx "argument with side effect" ; V19 tmp9 [V19,T07] ( 2, 4 ) long -> rdx "argument with side effect" ; V20 GsCookie [V20 ] ( 1, 1 ) long -> [rbp+0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V21 PSPSym [V21 ] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 168 G_M8021_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 168 lea rbp, [rsp+20H] mov qword ptr [rbp+50H], r10 xor rsi, rsi mov qword ptr [rbp+68H], rsi mov qword ptr [rbp], rsp mov rsi, 0xD1FFAB1E mov qword ptr [rbp+58H], rsi mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 13.75 G_M8021_IG02: lea rcx, [rbp+10H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rbx, rax mov rcx, rsp mov qword ptr [rbp+30H], rcx mov rcx, rbp mov qword ptr [rbp+40H], rcx lea rcx, bword ptr [rbp+10H] mov qword ptr [rbx+16], rcx xor ecx, ecx mov dword ptr [rbp+84H], ecx ;; bbWeight=1 PerfScore 7.25 G_M8021_IG03: xor rcx, rcx mov qword ptr [rbp+70H], rcx test rsi, rsi je G_M8021_IG07 ;; bbWeight=1 PerfScore 2.50 G_M8021_IG04: mov r14d, dword ptr [rsi+8] add r14d, 2 mov rcx, 0xD1FFAB1E mov edx, 0x468 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E imul r14d, dword ptr [r8] jo G_M8021_IG11 cmp r14d, 261 jg SHORT G_M8021_IG07 mov r8d, r14d test r8d, r8d je SHORT G_M8021_IG06 mov edx, r8d add edx, 15 and edx, -16 add rsp, 32 neg rdx add rdx, rsp jb SHORT G_M8021_IG05 xor rdx, rdx ;; bbWeight=0.50 PerfScore 6.25 G_M8021_IG05: test dword ptr [rsp], esp mov r8, rsp sub r8, 0x1000 mov rsp, r8 cmp rsp, rdx jae SHORT G_M8021_IG05 mov rsp, rdx test dword ptr [rsp], esp sub rsp, 32 lea r8, [rsp+20H] ;; bbWeight=0.50 PerfScore 3.50 G_M8021_IG06: mov qword ptr [rbp+70H], r8 ;; bbWeight=0.50 PerfScore 0.50 G_M8021_IG07: mov r8, qword ptr [rbp+70H] mov rdx, rsi mov ecx, 1 call CSTRMarshaler:ConvertToNative(int,String,long):long mov qword ptr [rbp+78H], rax mov dword ptr [rbp+84H], 1 mov bword ptr [rbp+68H], rdi mov rcx, qword ptr [rbp+50H] mov rcx, qword ptr [rcx+32] mov rax, qword ptr [rcx] mov rcx, qword ptr [rbp+78H] mov rdx, rdi mov r8, qword ptr [rbp+50H] mov qword ptr [rbp+20H], r8 lea r8, G_M8021_IG09 mov qword ptr [rbp+38H], r8 mov byte ptr [rbx+12], 0 ;; bbWeight=1 PerfScore 16.75 G_M8021_IG08: call rax ;; bbWeight=1 PerfScore 3.00 G_M8021_IG09: mov byte ptr [rbx+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M8021_IG10 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M8021_IG10: mov esi, eax jmp SHORT G_M8021_IG12 ;; bbWeight=1 PerfScore 2.25 G_M8021_IG11: call CORINFO_HELP_OVERFLOW int3 ;; bbWeight=0 PerfScore 0.00 G_M8021_IG12: cmp qword ptr [rbp+70H], 0 jne SHORT G_M8021_IG14 ;; bbWeight=1 PerfScore 2.00 G_M8021_IG13: mov rcx, qword ptr [rbp+78H] call Ole32:CoTaskMemFree(long) ;; bbWeight=0.50 PerfScore 1.00 G_M8021_IG14: mov eax, esi ;; bbWeight=1 PerfScore 0.25 G_M8021_IG15: mov rdx, bword ptr [rbp+18H] mov qword ptr [rbx+16], rdx mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+58H], rcx je SHORT G_M8021_IG16 call CORINFO_HELP_FAIL_FAST ;; bbWeight=1 PerfScore 5.25 G_M8021_IG16: nop ;; bbWeight=1 PerfScore 0.25 G_M8021_IG17: lea rsp, [rbp+88H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M8021_IG18: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+20H] ;; bbWeight=0 PerfScore 0.00 G_M8021_IG19: cmp dword ptr [rbp+84H], 0 jle SHORT G_M8021_IG20 cmp qword ptr [rbp+70H], 0 jne SHORT G_M8021_IG20 mov rcx, qword ptr [rbp+78H] call Ole32:CoTaskMemFree(long) ;; bbWeight=0 PerfScore 0.00 G_M8021_IG20: nop ;; bbWeight=0 PerfScore 0.00 G_M8021_IG21: add rsp, 40 pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 505, prolog size 58, PerfScore 128.00, (MethodHash=e295e0aa) for method ILStubClass:IL_STUB_PInvoke(String,byref):int ; ============================================================ ; Assembly listing for method Marshal:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (96) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) struct (16) [rbp-0x10] do-not-enreg[XSB] addr-exposed "NewObj constructor temp" ; ; Lcl frame size = 112 G_M110_IG01: push rbp sub rsp, 112 vzeroupper lea rbp, [rsp+70H] ;; bbWeight=1 PerfScore 2.75 G_M110_IG02: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-10H], xmm0 mov dword ptr [rsp+20H], 192 xor ecx, ecx mov dword ptr [rsp+28H], ecx mov dword ptr [rsp+30H], ecx mov dword ptr [rsp+38H], ecx mov dword ptr [rsp+40H], ecx mov dword ptr [rsp+48H], ecx mov dword ptr [rsp+50H], ecx mov dword ptr [rsp+58H], 70 lea rcx, bword ptr [rbp-10H] xor edx, edx xor r8d, r8d xor r9d, r9d call Guid:.ctor(int,short,short,ubyte,ubyte,ubyte,ubyte,ubyte,ubyte,ubyte,ubyte):this mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] vmovdqu xmm0, xmmword ptr [rbp-10H] vmovdqu xmmword ptr [rax+8], xmm0 mov rax, 0xD1FFAB1E mov dword ptr [rax], 2 call Marshal:GetSystemMaxDBCSCharSize():int mov rdx, 0xD1FFAB1E mov dword ptr [rdx], eax ;; bbWeight=1 PerfScore 19.58 G_M110_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 143, prolog size 13, PerfScore 39.03, (MethodHash=9691ff91) for method Marshal:.cctor() ; ============================================================ ; Assembly listing for method Guid:.ctor(int,short,short,ubyte,ubyte,ubyte,ubyte,ubyte,ubyte,ubyte,ubyte):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 13, 13 ) byref -> rcx this ; V01 arg1 [V01,T01] ( 3, 3 ) int -> rdx ; V02 arg2 [V02,T02] ( 3, 3 ) short -> r8 ; V03 arg3 [V03,T03] ( 3, 3 ) short -> r9 ; V04 arg4 [V04,T04] ( 1, 1 ) ubyte -> [rsp+0x28] ; V05 arg5 [V05,T05] ( 1, 1 ) ubyte -> [rsp+0x30] ; V06 arg6 [V06,T06] ( 1, 1 ) ubyte -> [rsp+0x38] ; V07 arg7 [V07,T07] ( 1, 1 ) ubyte -> [rsp+0x40] ; V08 arg8 [V08,T08] ( 1, 1 ) ubyte -> [rsp+0x48] ; V09 arg9 [V09,T09] ( 1, 1 ) ubyte -> [rsp+0x50] ; V10 arg10 [V10,T10] ( 1, 1 ) ubyte -> [rsp+0x58] ; V11 arg11 [V11,T11] ( 1, 1 ) ubyte -> [rsp+0x60] ;# V12 OutArgs [V12 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M34645_IG01: ;; bbWeight=1 PerfScore 0.00 G_M34645_IG02: mov dword ptr [rcx], edx mov word ptr [rcx+4], r8w mov word ptr [rcx+6], r9w mov eax, dword ptr [rsp+28H] mov byte ptr [rcx+8], al mov eax, dword ptr [rsp+30H] mov byte ptr [rcx+9], al mov eax, dword ptr [rsp+38H] mov byte ptr [rcx+10], al mov eax, dword ptr [rsp+40H] mov byte ptr [rcx+11], al mov eax, dword ptr [rsp+48H] mov byte ptr [rcx+12], al mov eax, dword ptr [rsp+50H] mov byte ptr [rcx+13], al mov eax, dword ptr [rsp+58H] mov byte ptr [rcx+14], al mov eax, dword ptr [rsp+60H] mov byte ptr [rcx+15], al ;; bbWeight=1 PerfScore 19.00 G_M34645_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 69, prolog size 0, PerfScore 26.90, (MethodHash=7fc378aa) for method Guid:.ctor(int,short,short,ubyte,ubyte,ubyte,ubyte,ubyte,ubyte,ubyte,ubyte):this ; ============================================================ ; Assembly listing for method Marshal:GetSystemMaxDBCSCharSize():int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00 ] ( 3, 2.50) struct (24) [rbp-0x58] do-not-enreg[XSFB] addr-exposed ld-addr-op unsafe-buffer ; V01 tmp0 [V01 ] ( 1, 1 ) int -> [rbp-0x5C] do-not-enreg[X] addr-exposed "GSCookie dummy" ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp2 [V03,T01] ( 3, 4 ) int -> rax "Single return block return value" ; V04 FramesRoot [V04,T00] ( 6, 6 ) long -> rsi "Pinvoke FrameListRoot" ; V05 PInvokeFrame [V05 ] ( 8, 8 ) blk (72) [rbp-0xA8] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V06 GsCookie [V06 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; ; Lcl frame size = 152 G_M54988_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 152 vzeroupper lea rbp, [rsp+D0H] mov rcx, 0xD1FFAB1E mov qword ptr [rbp-40H], rcx ;; bbWeight=1 PerfScore 11.00 G_M54988_IG02: lea rcx, [rbp-A0H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rsi, rax mov rdx, rsp mov qword ptr [rbp-80H], rdx mov rdx, rbp mov qword ptr [rbp-70H], rdx xor edx, edx vxorps xmm1, xmm1 vmovdqu xmmword ptr [rbp-58H], xmm1 mov dword ptr [rbp-48H], edx lea rdx, [rbp-58H] xor ecx, ecx mov rax, 0xD1FFAB1E mov qword ptr [rbp-90H], rax lea rax, G_M54988_IG05 mov qword ptr [rbp-78H], rax lea rax, bword ptr [rbp-A0H] mov qword ptr [rsi+16], rax mov byte ptr [rsi+12], 0 ;; bbWeight=1 PerfScore 13.58 G_M54988_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M54988_IG04: call qword ptr [rax]Kernel32:GetCPInfo(int,long):int ;; bbWeight=1 PerfScore 3.00 G_M54988_IG05: mov byte ptr [rsi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M54988_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M54988_IG06: mov rdx, bword ptr [rbp-98H] mov qword ptr [rsi+16], rdx test eax, eax jne SHORT G_M54988_IG08 ;; bbWeight=1 PerfScore 3.25 G_M54988_IG07: mov eax, 2 jmp SHORT G_M54988_IG09 ;; bbWeight=0.50 PerfScore 1.13 G_M54988_IG08: mov eax, dword ptr [rbp-58H] ;; bbWeight=0.50 PerfScore 0.50 G_M54988_IG09: mov rcx, 0xD1FFAB1E cmp qword ptr [rbp-40H], rcx je SHORT G_M54988_IG10 call CORINFO_HELP_FAIL_FAST ;; bbWeight=1 PerfScore 3.25 G_M54988_IG10: nop ;; bbWeight=1 PerfScore 0.25 G_M54988_IG11: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 246, prolog size 44, PerfScore 74.01, (MethodHash=16f92933) for method Marshal:GetSystemMaxDBCSCharSize():int ; ============================================================ ; Assembly listing for method CSTRMarshaler:ConvertToNative(int,String,long):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 3 ) int -> rdi ; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 4, 3 ) long -> r8 ; V03 loc0 [V03,T04] ( 6, 3 ) int -> rbx ld-addr-op ; V04 loc1 [V04,T03] ( 7, 3 ) long -> [rbp-0x20] EH do-not-enreg[] EH-live ; V05 loc2 [V05,T06] ( 3, 1 ) bool -> [rbp-0x24] EH do-not-enreg[] EH-live ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd ;* V07 loc4 [V07 ] ( 0, 0 ) long -> zero-ref ;* V08 loc5 [V08 ] ( 0, 0 ) byref -> zero-ref pinned ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T08] ( 2, 0 ) ref -> rdx class-hnd "impSpillSpecialSideEff" ; V11 tmp2 [V11,T09] ( 2, 0 ) ref -> rax class-hnd "dup spill" ;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref ; V13 tmp4 [V13,T07] ( 3, 0 ) int -> rax ;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ;* V15 tmp6 [V15 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V16 tmp7 [V16,T05] ( 2, 2 ) long -> rax ld-addr-op "Inlining Arg" ;* V17 tmp8 [V17 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V18 PSPSym [V18 ] ( 1, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 72 G_M63033_IG01: push rbp push rdi push rsi push rbx sub rsp, 72 lea rbp, [rsp+60H] mov qword ptr [rbp-38H], rsp mov edi, ecx mov rsi, rdx ;; bbWeight=1 PerfScore 6.25 G_M63033_IG02: test rsi, rsi jne SHORT G_M63033_IG05 ;; bbWeight=1 PerfScore 1.25 G_M63033_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M63033_IG04: lea rsp, [rbp-18H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.75 G_M63033_IG05: mov qword ptr [rbp-20H], r8 mov ebx, dword ptr [rsi+8] add ebx, 1 jo SHORT G_M63033_IG09 add ebx, 1 jo SHORT G_M63033_IG09 xor ecx, ecx mov dword ptr [rbp-24H], ecx test r8, r8 jne SHORT G_M63033_IG06 mov ecx, ebx call Marshal:AllocCoTaskMem(int):long mov qword ptr [rbp-20H], rax mov dword ptr [rbp-24H], 1 ;; bbWeight=0.50 PerfScore 5.63 G_M63033_IG06: mov r9d, edi sar r9d, 8 test r9d, r9d setne r9b movzx r9, r9b mov dword ptr [rsp+20H], r9d test dil, 255 setne r9b movzx r9, r9b mov rcx, rsi mov rdx, qword ptr [rbp-20H] mov r8d, ebx call Marshal:StringToAnsiString(String,long,int,bool,bool):int mov ebx, eax ;; bbWeight=0.50 PerfScore 4.50 G_M63033_IG07: mov rax, qword ptr [rbp-20H] movsxd rdx, ebx mov byte ptr [rax+rdx], 0 mov rax, qword ptr [rbp-20H] inc ebx movsxd rdx, ebx mov byte ptr [rax+rdx], 0 mov rax, qword ptr [rbp-20H] ;; bbWeight=0.50 PerfScore 2.88 G_M63033_IG08: lea rsp, [rbp-18H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=0.50 PerfScore 1.75 G_M63033_IG09: call CORINFO_HELP_OVERFLOW int3 ;; bbWeight=0 PerfScore 0.00 G_M63033_IG10: push rbp push rdi push rsi push rbx sub rsp, 56 mov rbp, qword ptr [rcx+40] mov qword ptr [rsp+28H], rbp lea rbp, [rbp+60H] ;; bbWeight=0 PerfScore 0.00 G_M63033_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax jne SHORT G_M63033_IG12 xor eax, eax jmp SHORT G_M63033_IG13 ;; bbWeight=0 PerfScore 0.00 G_M63033_IG12: cmp dword ptr [rbp-24H], 0 setne al movzx rax, al ;; bbWeight=0 PerfScore 0.00 G_M63033_IG13: add rsp, 56 pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M63033_IG14: push rbp push rdi push rsi push rbx sub rsp, 56 mov rbp, qword ptr [rcx+40] mov qword ptr [rsp+28H], rbp lea rbp, [rbp+60H] ;; bbWeight=0 PerfScore 0.00 G_M63033_IG15: mov rcx, qword ptr [rbp-20H] call IntPtr:op_Explicit(long):long mov rcx, rax call Marshal:FreeCoTaskMem(long) call CORINFO_HELP_RETHROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 286, prolog size 22, PerfScore 52.73, (MethodHash=c1cd09c6) for method CSTRMarshaler:ConvertToNative(int,String,long):long ; ============================================================ ; Assembly listing for method Marshal:StringToAnsiString(String,long,int,bool,bool):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 4.50) ref -> rdi class-hnd ; V01 arg1 [V01,T00] ( 4, 4 ) long -> rsi ; V02 arg2 [V02,T03] ( 3, 3 ) int -> rbx ; V03 arg3 [V03,T04] ( 3, 3 ) bool -> r14 ; V04 arg4 [V04,T24] ( 1, 1 ) bool -> [rbp+0x30] ; V05 loc0 [V05,T06] ( 3, 3 ) int -> rax ; V06 loc1 [V06,T18] ( 2, 2 ) int -> rdx ; V07 loc2 [V07 ] ( 3, 2.50) int -> [rbp-0x3C] do-not-enreg[X] addr-exposed ld-addr-op ;* V08 loc3 [V08 ] ( 0, 0 ) long -> zero-ref ; V09 loc4 [V09 ] ( 3, 2 ) byref -> [rbp-0x48] must-init pinned ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (64) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T07] ( 3, 2 ) int -> rdx ; V12 tmp2 [V12,T08] ( 3, 2 ) long -> r8 ;* V13 tmp3 [V13,T25] ( 0, 0 ) int -> zero-ref ; V14 tmp4 [V14,T09] ( 3, 2 ) int -> rdx ; V15 tmp5 [V15,T10] ( 3, 2 ) long -> r8 ; V16 tmp6 [V16,T11] ( 3, 2 ) int -> r9 ;* V17 tmp7 [V17,T26] ( 0, 0 ) long -> zero-ref ; V18 tmp8 [V18,T12] ( 3, 2 ) int -> rbx ;* V19 tmp9 [V19,T27] ( 0, 0 ) long -> zero-ref ; V20 tmp10 [V20,T19] ( 2, 2 ) long -> rcx "NewObj constructor temp" ;* V21 tmp11 [V21,T21] ( 0, 0 ) int -> zero-ref ; V22 tmp12 [V22,T13] ( 3, 2 ) int -> rdx ; V23 tmp13 [V23,T14] ( 3, 2 ) long -> r8 ; V24 tmp14 [V24,T15] ( 3, 2 ) int -> r9 ;* V25 tmp15 [V25,T22] ( 0, 0 ) long -> zero-ref ; V26 tmp16 [V26,T16] ( 3, 2 ) int -> rbx ;* V27 tmp17 [V27,T23] ( 0, 0 ) long -> zero-ref ; V28 tmp18 [V28,T17] ( 3, 2 ) long -> rcx ; V29 tmp19 [V29,T28] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V30 tmp20 [V30,T05] ( 2, 4 ) int -> rax "Single return block return value" ; V31 FramesRoot [V31,T02] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V32 PInvokeFrame [V32 ] ( 8, 8 ) blk (72) [rbp-0x90] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V33 tmp23 [V33,T20] ( 2, 2 ) long -> r8 "Cast away GC" ; V34 tmp24 [V34,T29] ( 2, 0 ) ref -> rcx "argument with side effect" ; V35 tmp25 [V35,T30] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 152 G_M38274_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 152 lea rbp, [rsp+D0H] xor rbx, rbx mov qword ptr [rbp-48H], rbx mov rdi, rcx mov rsi, rdx mov ebx, r8d mov r14d, r9d ;; bbWeight=1 PerfScore 11.00 G_M38274_IG02: lea rcx, [rbp-88H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-68H], rcx mov rcx, rbp mov qword ptr [rbp-58H], rcx test r14b, r14b jne SHORT G_M38274_IG04 ;; bbWeight=1 PerfScore 5.75 G_M38274_IG03: mov edx, 0x400 jmp SHORT G_M38274_IG05 ;; bbWeight=0.50 PerfScore 1.13 G_M38274_IG04: xor edx, edx ;; bbWeight=0.50 PerfScore 0.13 G_M38274_IG05: xor ecx, ecx mov dword ptr [rbp-3CH], ecx test rdi, rdi jne SHORT G_M38274_IG07 ;; bbWeight=1 PerfScore 2.50 G_M38274_IG06: xor r8, r8 jmp SHORT G_M38274_IG08 ;; bbWeight=0.50 PerfScore 1.13 G_M38274_IG07: lea r8, bword ptr [rdi+12] mov bword ptr [rbp-48H], r8 mov r8, bword ptr [rbp-48H] ;; bbWeight=0.50 PerfScore 1.25 G_M38274_IG08: mov r9d, dword ptr [rdi+8] cmp byte ptr [rbp+30H], 0 jne SHORT G_M38274_IG10 ;; bbWeight=1 PerfScore 4.00 G_M38274_IG09: xor rcx, rcx jmp SHORT G_M38274_IG11 ;; bbWeight=0.50 PerfScore 1.13 G_M38274_IG10: lea rcx, [rbp-3CH] ;; bbWeight=0.50 PerfScore 0.25 G_M38274_IG11: mov qword ptr [rsp+20H], rsi mov dword ptr [rsp+28H], ebx xor rax, rax mov qword ptr [rsp+30H], rax mov qword ptr [rsp+38H], rcx xor ecx, ecx mov rax, 0xD1FFAB1E mov qword ptr [rbp-78H], rax lea rax, G_M38274_IG14 mov qword ptr [rbp-60H], rax lea rax, bword ptr [rbp-88H] mov qword ptr [r15+16], rax mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 10.25 G_M38274_IG12: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M38274_IG13: call qword ptr [rax]Kernel32:WideCharToMultiByte(int,int,long,int,long,int,long,long):int ;; bbWeight=1 PerfScore 3.00 G_M38274_IG14: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M38274_IG15 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M38274_IG15: mov rcx, bword ptr [rbp-80H] mov qword ptr [r15+16], rcx xor rcx, rcx mov bword ptr [rbp-48H], rcx cmp dword ptr [rbp-3CH], 0 jne SHORT G_M38274_IG18 ;; bbWeight=1 PerfScore 5.25 G_M38274_IG16: movsxd rcx, eax mov byte ptr [rsi+rcx], 0 ;; bbWeight=1 PerfScore 1.25 G_M38274_IG17: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M38274_IG18: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC53F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 356, prolog size 33, PerfScore 96.85, (MethodHash=1d076a7d) for method Marshal:StringToAnsiString(String,long,int,bool,bool):int ; ============================================================ ; Assembly listing for method Dictionary`2:TryInsert(__Canon,long,ubyte):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 27, 17.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T08] ( 11, 9 ) ref -> rdi ld-addr-op class-hnd ; V02 arg2 [V02,T16] ( 5, 3.50) long -> rbp ; V03 arg3 [V03,T15] ( 6, 4 ) ubyte -> rbx ; V04 loc0 [V04,T03] ( 12, 23.50) ref -> r14 class-hnd ; V05 loc1 [V05,T14] ( 6, 6 ) ref -> r15 class-hnd ; V06 loc2 [V06,T09] ( 6, 11 ) int -> r12 ; V07 loc3 [V07,T00] ( 8, 25.50) int -> r13 ; V08 loc4 [V08,T23] ( 5, 3.50) byref -> [rsp+0x50] ; V09 loc5 [V09,T02] ( 7, 25 ) int -> [rsp+0x5C] ; V10 loc6 [V10,T24] ( 6, 3 ) int -> rbx ; V11 loc7 [V11,T28] ( 5, 2.50) byref -> [rsp+0x48] ; V12 loc8 [V12,T18] ( 3, 4.50) ref -> [rsp+0x40] class-hnd ; V13 loc9 [V13,T38] ( 3, 1.50) int -> rbx ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15,T31] ( 3, 2 ) int -> r12 ; V16 tmp2 [V16,T22] ( 4, 3.50) ref -> r15 class-hnd "spilling QMark2" ; V17 tmp3 [V17,T10] ( 3, 10 ) long -> rcx "impRuntimeLookup slot" ; V18 tmp4 [V18,T13] ( 2, 8 ) ref -> [rsp+0x38] class-hnd "impAppendStmt" ;* V19 tmp5 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V20 tmp6 [V20,T07] ( 4, 12 ) long -> r11 "spilling Runtime Lookup tree" ;* V21 tmp7 [V21 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V22 tmp8 [V22,T47] ( 4, 0 ) long -> rcx "impRuntimeLookup slot" ;* V23 tmp9 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V24 tmp10 [V24,T49] ( 3, 0 ) long -> rcx "spilling Runtime Lookup tree" ; V25 tmp11 [V25,T29] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V26 tmp12 [V26,T32] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V27 tmp13 [V27,T48] ( 4, 0 ) long -> rcx "impRuntimeLookup slot" ;* V28 tmp14 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V29 tmp15 [V29,T50] ( 3, 0 ) long -> rcx "spilling Runtime Lookup tree" ; V30 tmp16 [V30,T30] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ;* V31 tmp17 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V32 tmp18 [V32,T25] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V33 tmp19 [V33 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V34 tmp20 [V34,T33] ( 2, 2 ) byref -> rax "Inline return value spill temp" ; V35 tmp21 [V35,T19] ( 4, 4 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V36 tmp22 [V36,T20] ( 2, 4 ) long -> rax "Inlining Arg" ; V37 tmp23 [V37,T21] ( 2, 4 ) int -> rdx "Inlining Arg" ; V38 tmp24 [V38,T26] ( 3, 3 ) int -> rdx "Inline stloc first use temp" ; V39 tmp25 [V39,T46] ( 2, 1 ) byref -> rax "Inline return value spill temp" ; V40 tmp26 [V40,T37] ( 3, 1.50) ref -> rdx class-hnd "Inline stloc first use temp" ; V41 tmp27 [V41,T34] ( 2, 2 ) long -> r8 "Inlining Arg" ; V42 tmp28 [V42,T35] ( 2, 2 ) int -> rax "Inlining Arg" ; V43 tmp29 [V43,T39] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V44 tmp30 [V44,T27] ( 3, 3 ) int -> rdx "index expr" ; V45 tmp31 [V45,T36] ( 2, 2 ) int -> rdx "argument with side effect" ; V46 cse0 [V46,T05] ( 4, 12.50) byref -> [rsp+0x30] "CSE - aggressive" ; V47 cse1 [V47,T06] ( 4, 12.50) byref -> [rsp+0x28] "CSE - aggressive" ; V48 cse2 [V48,T17] ( 3, 5 ) long -> r11 "CSE - moderate" ; V49 cse3 [V49,T44] ( 3, 1.25) long -> r11 "CSE - conservative" ; V50 cse4 [V50,T45] ( 3, 1.25) long -> rdx "CSE - conservative" ; V51 cse5 [V51,T11] ( 3, 10 ) long -> rdx "CSE - aggressive" ; V52 cse6 [V52,T12] ( 3, 10 ) long -> rcx "CSE - aggressive" ; V53 cse7 [V53,T40] ( 3, 1.50) int -> rcx "CSE - conservative" ; V54 cse8 [V54,T41] ( 3, 1.50) int -> rdx "CSE - conservative" ; V55 cse9 [V55,T42] ( 3, 1.50) int -> rcx "CSE - conservative" ; V56 cse10 [V56,T43] ( 3, 1.50) int -> rcx "CSE - conservative" ; V57 cse11 [V57,T01] ( 8, 25 ) int -> [rsp+0x58] "CSE - aggressive" ; ; Lcl frame size = 104 G_M40371_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 104 mov qword ptr [rsp+60H], rcx mov rsi, rcx mov rdi, rdx mov rbp, r8 mov ebx, r9d ;; bbWeight=1 PerfScore 10.25 G_M40371_IG02: test rdi, rdi je G_M40371_IG40 ;; bbWeight=1 PerfScore 1.25 G_M40371_IG03: cmp gword ptr [rsi+8], 0 jne SHORT G_M40371_IG05 ;; bbWeight=1 PerfScore 3.00 G_M40371_IG04: mov rcx, rsi xor edx, edx call Dictionary`2:Initialize(int):int:this ;; bbWeight=0.50 PerfScore 0.75 G_M40371_IG05: mov r14, gword ptr [rsi+16] mov r15, gword ptr [rsi+24] test r15, r15 je SHORT G_M40371_IG10 ;; bbWeight=1 PerfScore 5.25 G_M40371_IG06: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov r11, qword ptr [rdx+48] test r11, r11 je SHORT G_M40371_IG08 ;; bbWeight=0.50 PerfScore 4.63 G_M40371_IG07: jmp SHORT G_M40371_IG09 ;; bbWeight=0.25 PerfScore 0.50 G_M40371_IG08: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M40371_IG09: mov rcx, r15 mov rdx, rdi call qword ptr [r11] mov r12d, eax jmp SHORT G_M40371_IG11 ;; bbWeight=0.50 PerfScore 2.88 G_M40371_IG10: mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+64] call qword ptr [rax+24]Object:GetHashCode():int:this mov r12d, eax ;; bbWeight=0.50 PerfScore 3.75 G_M40371_IG11: xor r13d, r13d mov rcx, gword ptr [rsi+8] mov edx, dword ptr [rcx+8] mov rax, qword ptr [rsi+48] mov r8d, r12d imul rax, r8 shr rax, 32 inc rax mov edx, edx imul rdx, rax shr rdx, 32 cmp edx, dword ptr [rcx+8] jae G_M40371_IG48 movsxd rdx, edx lea rax, bword ptr [rcx+4*rdx+16] mov bword ptr [rsp+50H], rax mov r8d, dword ptr [rax] dec r8d mov dword ptr [rsp+5CH], r8d test r15, r15 jne G_M40371_IG23 ;; bbWeight=1 PerfScore 24.75 G_M40371_IG12: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+32] test rdx, rdx je SHORT G_M40371_IG14 ;; bbWeight=0.50 PerfScore 4.63 G_M40371_IG13: jmp SHORT G_M40371_IG15 ;; bbWeight=0.25 PerfScore 0.50 G_M40371_IG14: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M40371_IG15: mov rcx, rdx call EqualityComparer`1:get_Default():EqualityComparer`1 ;; bbWeight=0.50 PerfScore 0.63 G_M40371_IG16: mov r9d, dword ptr [r14+8] mov dword ptr [rsp+58H], r9d mov r10d, dword ptr [rsp+5CH] cmp r9d, r10d jbe G_M40371_IG31 movsxd rdx, r10d lea rdx, [rdx+2*rdx] lea r11, bword ptr [r14+8*rdx+16] mov bword ptr [rsp+30H], r11 cmp dword ptr [r11+16], r12d jne SHORT G_M40371_IG18 ;; bbWeight=4 PerfScore 44.00 G_M40371_IG17: mov rdx, gword ptr [r14+8*rdx+16] mov rcx, rax mov r8, rdi mov gword ptr [rsp+40H], rax mov r10, qword ptr [rax] mov r10, qword ptr [r10+64] call qword ptr [r10+48]EqualityComparer`1:Equals(__Canon,__Canon):bool:this test eax, eax mov rax, gword ptr [rsp+40H] jne SHORT G_M40371_IG19 ;; bbWeight=2 PerfScore 25.50 G_M40371_IG18: mov r11, bword ptr [rsp+30H] mov r10d, dword ptr [r11+20] mov r8d, r10d inc r13d cmp dword ptr [rsp+58H], r13d jb G_M40371_IG47 mov dword ptr [rsp+5CH], r8d jmp SHORT G_M40371_IG16 ;; bbWeight=4 PerfScore 34.00 G_M40371_IG19: cmp bl, 1 jne SHORT G_M40371_IG20 mov r11, bword ptr [rsp+30H] mov qword ptr [r11+8], rbp jmp G_M40371_IG38 ;; bbWeight=0.50 PerfScore 2.63 G_M40371_IG20: cmp bl, 2 je G_M40371_IG41 ;; bbWeight=0.50 PerfScore 0.63 G_M40371_IG21: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M40371_IG22: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M40371_IG23: mov r9d, dword ptr [r14+8] mov dword ptr [rsp+58H], r9d mov r8d, dword ptr [rsp+5CH] cmp r9d, r8d jbe G_M40371_IG31 movsxd rcx, r8d lea rcx, [rcx+2*rcx] lea r8, bword ptr [r14+8*rcx+16] mov bword ptr [rsp+28H], r8 cmp dword ptr [r8+16], r12d jne SHORT G_M40371_IG30 ;; bbWeight=4 PerfScore 44.00 G_M40371_IG24: mov r10, gword ptr [r14+8*rcx+16] mov gword ptr [rsp+38H], r10 mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov r11, qword ptr [rdx+56] test r11, r11 je SHORT G_M40371_IG26 ;; bbWeight=2 PerfScore 24.50 G_M40371_IG25: mov r10, gword ptr [rsp+38H] jmp SHORT G_M40371_IG27 ;; bbWeight=1 PerfScore 3.00 G_M40371_IG26: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax mov r10, gword ptr [rsp+38H] ;; bbWeight=1 PerfScore 2.50 G_M40371_IG27: mov rcx, r15 mov rdx, r10 mov r8, rdi call qword ptr [r11] test eax, eax je SHORT G_M40371_IG30 ;; bbWeight=2 PerfScore 10.00 G_M40371_IG28: cmp bl, 1 jne SHORT G_M40371_IG29 mov r13, bword ptr [rsp+28H] mov qword ptr [r13+8], rbp jmp G_M40371_IG38 ;; bbWeight=0.50 PerfScore 2.63 G_M40371_IG29: cmp bl, 2 je G_M40371_IG44 jmp G_M40371_IG21 ;; bbWeight=0.50 PerfScore 1.63 G_M40371_IG30: mov r8, bword ptr [rsp+28H] mov r8d, dword ptr [r8+20] mov ecx, r8d inc r13d cmp dword ptr [rsp+58H], r13d jb G_M40371_IG47 mov dword ptr [rsp+5CH], ecx jmp G_M40371_IG23 ;; bbWeight=4 PerfScore 34.00 G_M40371_IG31: mov ecx, dword ptr [rsi+64] test ecx, ecx jle SHORT G_M40371_IG32 mov edx, dword ptr [rsi+60] mov ebx, edx cmp edx, dword ptr [rsp+58H] jae G_M40371_IG48 movsxd r9, edx lea rdx, [r9+2*r9] mov edx, dword ptr [r14+8*rdx+36] neg edx add edx, -3 mov dword ptr [rsi+60], edx dec ecx mov dword ptr [rsi+64], ecx jmp SHORT G_M40371_IG34 ;; bbWeight=0.50 PerfScore 7.50 G_M40371_IG32: mov ecx, dword ptr [rsi+56] mov ebx, ecx cmp dword ptr [rsp+58H], ebx jne SHORT G_M40371_IG33 call HashHelpers:ExpandPrime(int):int mov edx, eax mov rcx, rsi xor r8d, r8d call Dictionary`2:Resize(int,bool):this mov rdx, gword ptr [rsi+8] mov ecx, dword ptr [rdx+8] mov eax, ecx mov r8, qword ptr [rsi+48] mov r9d, r12d imul r8, r9 shr r8, 32 inc r8 mov eax, eax imul rax, r8 shr rax, 32 cmp eax, ecx jae G_M40371_IG48 movsxd rcx, eax lea rax, bword ptr [rdx+4*rcx+16] mov r14, rax mov bword ptr [rsp+50H], r14 ;; bbWeight=0.50 PerfScore 12.88 G_M40371_IG33: lea edx, [rbx+1] mov dword ptr [rsi+56], edx mov r14, gword ptr [rsi+16] ;; bbWeight=0.50 PerfScore 1.75 G_M40371_IG34: cmp ebx, dword ptr [r14+8] jae G_M40371_IG48 movsxd rdx, ebx lea rdx, [rdx+2*rdx] lea r8, bword ptr [r14+8*rdx+16] mov dword ptr [r8+16], r12d mov rax, bword ptr [rsp+50H] mov edx, dword ptr [rax] dec edx mov dword ptr [r8+20], edx mov bword ptr [rsp+48H], r8 mov rcx, r8 mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdi, bword ptr [rsp+48H] mov qword ptr [rdi+8], rbp inc ebx mov rdi, bword ptr [rsp+50H] mov dword ptr [rdi], ebx inc dword ptr [rsi+68] cmp r13d, 100 jbe SHORT G_M40371_IG38 test r15, r15 je SHORT G_M40371_IG36 ;; bbWeight=0.50 PerfScore 12.13 G_M40371_IG35: mov rdx, 0xD1FFAB1E cmp qword ptr [r15], rdx jne SHORT G_M40371_IG38 ;; bbWeight=0.25 PerfScore 0.81 G_M40371_IG36: test r15, r15 je SHORT G_M40371_IG38 ;; bbWeight=0.50 PerfScore 0.63 G_M40371_IG37: xor rdx, rdx mov gword ptr [rsi+24], rdx mov edx, dword ptr [r14+8] mov rcx, rsi mov r8d, 1 call Dictionary`2:Resize(int,bool):this ;; bbWeight=0.50 PerfScore 2.38 G_M40371_IG38: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M40371_IG39: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M40371_IG40: mov ecx, 4 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M40371_IG41: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] cmp qword ptr [rdx+64], 0 je SHORT G_M40371_IG42 mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+64] jmp SHORT G_M40371_IG43 ;; bbWeight=0 PerfScore 0.00 G_M40371_IG42: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rcx, rax ;; bbWeight=0 PerfScore 0.00 G_M40371_IG43: mov rdx, rdi call ThrowHelper:ThrowAddingDuplicateWithKeyArgumentException(__Canon) int3 ;; bbWeight=0 PerfScore 0.00 G_M40371_IG44: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] cmp qword ptr [rdx+64], 0 je SHORT G_M40371_IG45 mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+64] jmp SHORT G_M40371_IG46 ;; bbWeight=0 PerfScore 0.00 G_M40371_IG45: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rcx, rax ;; bbWeight=0 PerfScore 0.00 G_M40371_IG46: mov rdx, rdi call ThrowHelper:ThrowAddingDuplicateWithKeyArgumentException(__Canon) int3 ;; bbWeight=0 PerfScore 0.00 G_M40371_IG47: call ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() int3 ;; bbWeight=0 PerfScore 0.00 G_M40371_IG48: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1058, prolog size 33, PerfScore 441.86, (MethodHash=1b01624c) for method Dictionary`2:TryInsert(__Canon,long,ubyte):bool:this ; ============================================================ ; Assembly listing for method Dictionary`2:Initialize(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdx ; V02 loc0 [V02,T01] ( 5, 5 ) int -> rdi ; V03 loc1 [V03,T06] ( 2, 2 ) ref -> rbx class-hnd exact ; V04 loc2 [V04,T07] ( 2, 2 ) ref -> rbp class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V07 tmp2 [V07,T04] ( 3, 3 ) long -> [rsp+0x28] "spilling Runtime Lookup tree" ; V08 cse0 [V08,T05] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 56 G_M48741_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 5.50 G_M48741_IG02: mov ecx, edx call HashHelpers:GetPrime(int):int mov edi, eax movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbx, rax mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+72] test rdx, rdx je SHORT G_M48741_IG04 ;; bbWeight=1 PerfScore 12.50 G_M48741_IG03: mov qword ptr [rsp+28H], rdx jmp SHORT G_M48741_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M48741_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+28H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M48741_IG05: movsxd rdx, edi mov rcx, qword ptr [rsp+28H] call CORINFO_HELP_NEWARR_1_VC mov rbp, rax mov dword ptr [rsi+60], -1 mov rax, -1 mov ecx, edi xor rdx, rdx div rdx:rax, rcx inc rax mov qword ptr [rsi+48], rax lea rcx, bword ptr [rsi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov eax, edi ;; bbWeight=1 PerfScore 70.25 G_M48741_IG06: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 174, prolog size 13, PerfScore 110.21, (MethodHash=ab44419a) for method Dictionary`2:Initialize(int):int:this ; ============================================================ ; Assembly listing for method CompareInfo:IndexOf(String,String,int,int,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T05] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 6, 4.50) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 5, 4 ) ref -> r8 class-hnd ; V03 arg3 [V03,T01] ( 6, 4 ) int -> rsi ; V04 arg4 [V04,T18] ( 2, 1.50) int -> r9 ; V05 arg5 [V05,T27] ( 1, 1 ) int -> [rsp+0x78] ;* V06 loc0 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V07 loc1 [V07,T06] ( 5, 4 ) int -> rax ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V11 tmp3 [V11,T24] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V13 tmp5 [V13,T10] ( 2, 2 ) byref -> rdx "Inlining Arg" ;* V14 tmp6 [V14 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V15 tmp7 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V16 tmp8 [V16 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V17 tmp9 [V17 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V19 tmp11 [V19,T11] ( 2, 2 ) byref -> rax "Inlining Arg" ;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V21 tmp13 [V21,T14] ( 2, 2 ) int -> r8 "Inlining Arg" ; V22 tmp14 [V22,T08] ( 2, 1.50) byref -> rdx V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V23 tmp15 [V23,T09] ( 2, 1.50) int -> r9 V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V24 tmp16 [V24,T12] ( 2, 2 ) byref -> rdx V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ; V25 tmp17 [V25,T15] ( 2, 2 ) int -> r9 V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ; V26 tmp18 [V26,T13] ( 2, 2 ) byref -> rax V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ; V27 tmp19 [V27,T16] ( 2, 2 ) int -> r8 V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ; V28 tmp20 [V28,T20] ( 2, 1 ) byref -> rdx V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ; V29 tmp21 [V29,T25] ( 2, 1 ) int -> r9 V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ; V30 tmp22 [V30,T21] ( 2, 1 ) byref -> rdx V15._value(offs=0x00) P-INDEP "field V15._value (fldOffset=0x0)" ; V31 tmp23 [V31,T17] ( 2, 1.50) byref -> rax V16._pointer(offs=0x00) P-INDEP "field V16._pointer (fldOffset=0x0)" ; V32 tmp24 [V32,T19] ( 2, 1.50) int -> r8 V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)" ; V33 tmp25 [V33,T22] ( 2, 1 ) byref -> rax V17._pointer(offs=0x00) P-INDEP "field V17._pointer (fldOffset=0x0)" ; V34 tmp26 [V34,T26] ( 2, 1 ) int -> r8 V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)" ;* V35 tmp27 [V35 ] ( 0, 0 ) byref -> zero-ref V18._pointer(offs=0x00) P-INDEP "field V18._pointer (fldOffset=0x0)" ;* V36 tmp28 [V36 ] ( 0, 0 ) int -> zero-ref V18._length(offs=0x08) P-INDEP "field V18._length (fldOffset=0x8)" ; V37 tmp29 [V37,T23] ( 2, 1 ) byref -> rax V20._value(offs=0x00) P-INDEP "field V20._value (fldOffset=0x0)" ; V38 tmp30 [V38 ] ( 2, 4 ) struct (16) [rsp+0x30] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V39 tmp31 [V39,T03] ( 3, 6 ) byref -> r10 stack-byref "BlockOp address local" ; V40 tmp32 [V40 ] ( 2, 4 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V41 tmp33 [V41,T04] ( 3, 6 ) byref -> rdx stack-byref "BlockOp address local" ; V42 tmp34 [V42,T07] ( 2, 4 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 64 G_M47417_IG01: push rsi sub rsp, 64 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 mov esi, r9d mov r9d, dword ptr [rsp+70H] ;; bbWeight=1 PerfScore 4.83 G_M47417_IG02: test rdx, rdx je SHORT G_M47417_IG12 ;; bbWeight=1 PerfScore 1.25 G_M47417_IG03: test r8, r8 je SHORT G_M47417_IG13 ;; bbWeight=1 PerfScore 1.25 G_M47417_IG04: mov eax, esi mov r10d, r9d add rax, r10 mov r10d, dword ptr [rdx+8] cmp rax, r10 jbe SHORT G_M47417_IG10 ;; bbWeight=1 PerfScore 4.00 G_M47417_IG05: jmp SHORT G_M47417_IG14 ;; bbWeight=0.50 PerfScore 1.00 G_M47417_IG06: jmp SHORT G_M47417_IG11 ;; bbWeight=1 PerfScore 2.00 G_M47417_IG07: lea r10, bword ptr [rsp+30H] mov bword ptr [r10], rdx mov dword ptr [r10+8], r9d lea rdx, bword ptr [rsp+20H] mov bword ptr [rdx], rax mov dword ptr [rdx+8], r8d lea rdx, bword ptr [rsp+30H] lea r8, bword ptr [rsp+20H] mov r9d, dword ptr [rsp+78H] call CompareInfo:IndexOf(ReadOnlySpan`1,ReadOnlySpan`1,int):int:this test eax, eax jl SHORT G_M47417_IG09 ;; bbWeight=1 PerfScore 9.25 G_M47417_IG08: add eax, esi ;; bbWeight=0.50 PerfScore 0.13 G_M47417_IG09: add rsp, 64 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M47417_IG10: add rdx, 12 movsxd rax, esi lea rdx, bword ptr [rdx+2*rax] jmp SHORT G_M47417_IG06 ;; bbWeight=0.50 PerfScore 1.50 G_M47417_IG11: lea rax, bword ptr [r8+12] mov r8d, dword ptr [r8+8] jmp SHORT G_M47417_IG07 ;; bbWeight=0.50 PerfScore 2.25 G_M47417_IG12: mov ecx, 38 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M47417_IG13: mov ecx, 7 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M47417_IG14: cmp dword ptr [rdx+8], esi jae SHORT G_M47417_IG15 mov ecx, 8 xor edx, edx call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 G_M47417_IG15: mov ecx, 27 mov edx, 3 call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 195, prolog size 21, PerfScore 49.01, (MethodHash=a58046c6) for method CompareInfo:IndexOf(String,String,int,int,int):int:this ; ============================================================ ; Assembly listing for method CompareInfo:IndexOf(ReadOnlySpan`1,ReadOnlySpan`1,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 2.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 7, 9 ) byref -> rdx ; V02 arg2 [V02,T01] ( 4, 8 ) byref -> r8 ld-addr-op ; V03 arg3 [V03,T02] ( 6, 4.50) int -> r9 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T13] ( 2, 1 ) int -> rax "Inline return value spill temp" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V13 tmp9 [V13,T14] ( 2, 1 ) int -> rax "Inline return value spill temp" ;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V27 tmp23 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V29 tmp25 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V30 tmp26 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V31 tmp27 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V32 tmp28 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V33 tmp29 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V34 tmp30 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V35 tmp31 [V35 ] ( 0, 0 ) byref -> zero-ref V63._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref V63._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ; V37 tmp33 [V37,T08] ( 4, 2.50) byref -> r10 V64._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ; V38 tmp34 [V38,T04] ( 5, 3 ) int -> r11 V64._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V39 tmp35 [V39,T10] ( 2, 1 ) byref -> r8 V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V40 tmp36 [V40,T15] ( 2, 1 ) int -> rdx V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V41 tmp37 [V41,T11] ( 2, 1 ) byref -> r10 V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V42 tmp38 [V42,T16] ( 2, 1 ) int -> r11 V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ;* V43 tmp39 [V43 ] ( 0, 0 ) byref -> zero-ref V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ;* V45 tmp41 [V45 ] ( 0, 0 ) byref -> zero-ref V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ; V47 tmp43 [V47,T12] ( 2, 1 ) byref -> rcx V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ; V48 tmp44 [V48,T17] ( 2, 1 ) int -> rdx V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ;* V49 tmp45 [V49 ] ( 0, 0 ) byref -> zero-ref V16._pointer(offs=0x00) P-INDEP "field V16._pointer (fldOffset=0x0)" ;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)" ;* V51 tmp47 [V51 ] ( 0, 0 ) byref -> zero-ref V25._pointer(offs=0x00) P-INDEP "field V25._pointer (fldOffset=0x0)" ;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref V25._length(offs=0x08) P-INDEP "field V25._length (fldOffset=0x8)" ;* V53 tmp49 [V53 ] ( 0, 0 ) byref -> zero-ref V27._pointer(offs=0x00) P-INDEP "field V27._pointer (fldOffset=0x0)" ;* V54 tmp50 [V54 ] ( 0, 0 ) int -> zero-ref V27._length(offs=0x08) P-INDEP "field V27._length (fldOffset=0x8)" ;* V55 tmp51 [V55 ] ( 0, 0 ) byref -> zero-ref V29._pointer(offs=0x00) P-INDEP "field V29._pointer (fldOffset=0x0)" ;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref V29._length(offs=0x08) P-INDEP "field V29._length (fldOffset=0x8)" ;* V57 tmp53 [V57 ] ( 0, 0 ) byref -> zero-ref V31._pointer(offs=0x00) P-INDEP "field V31._pointer (fldOffset=0x0)" ;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref V31._length(offs=0x08) P-INDEP "field V31._length (fldOffset=0x8)" ;* V59 tmp55 [V59 ] ( 0, 0 ) byref -> zero-ref V33._pointer(offs=0x00) P-INDEP "field V33._pointer (fldOffset=0x0)" ;* V60 tmp56 [V60 ] ( 0, 0 ) int -> zero-ref V33._length(offs=0x08) P-INDEP "field V33._length (fldOffset=0x8)" ;* V61 tmp57 [V61 ] ( 0, 0 ) byref -> zero-ref V34._pointer(offs=0x00) P-INDEP "field V34._pointer (fldOffset=0x0)" ;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref V34._length(offs=0x08) P-INDEP "field V34._length (fldOffset=0x8)" ;* V63 tmp59 [V63 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ;* V64 tmp60 [V64 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V65 tmp61 [V65 ] ( 4, 4 ) struct (16) [rsp+0x48] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V66 tmp62 [V66,T05] ( 3, 3 ) byref -> rax stack-byref "BlockOp address local" ; V67 tmp63 [V67 ] ( 4, 4 ) struct (16) [rsp+0x38] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V68 tmp64 [V68,T06] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V69 tmp65 [V69,T09] ( 2, 2 ) ref -> rcx "argument with side effect" ; V70 tmp66 [V70,T07] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 88 G_M65529_IG01: sub rsp, 88 vzeroupper xor rax, rax mov qword ptr [rsp+38H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 mov qword ptr [rsp+50H], rax ;; bbWeight=1 PerfScore 4.83 G_M65529_IG02: mov r10, bword ptr [r8] mov r11d, dword ptr [r8+8] ;; bbWeight=1 PerfScore 4.00 G_M65529_IG03: test r9d, -32 jne SHORT G_M65529_IG08 ;; bbWeight=1 PerfScore 1.25 G_M65529_IG04: test r11d, r11d ja SHORT G_M65529_IG06 xor eax, eax ;; bbWeight=0.50 PerfScore 0.75 G_M65529_IG05: add rsp, 88 ret ;; bbWeight=0.50 PerfScore 0.63 G_M65529_IG06: mov r8, bword ptr [rdx] mov edx, dword ptr [rdx+8] lea rax, bword ptr [rsp+48H] mov bword ptr [rax], r8 mov dword ptr [rax+8], edx lea rdx, bword ptr [rsp+38H] mov bword ptr [rdx], r10 mov dword ptr [rdx+8], r11d xor rdx, rdx mov qword ptr [rsp+20H], rdx mov dword ptr [rsp+28H], 1 lea rdx, bword ptr [rsp+48H] lea r8, bword ptr [rsp+38H] call CompareInfo:IcuIndexOfCore(ReadOnlySpan`1,ReadOnlySpan`1,int,long,bool):int:this nop ;; bbWeight=0.50 PerfScore 6.75 G_M65529_IG07: add rsp, 88 ret ;; bbWeight=0.50 PerfScore 0.63 G_M65529_IG08: cmp r9d, 0xD1FFAB1E je SHORT G_M65529_IG12 cmp r9d, 0xD1FFAB1E jne SHORT G_M65529_IG14 ;; bbWeight=0.50 PerfScore 1.25 G_M65529_IG09: vmovdqu xmm0, xmmword ptr [rdx] vmovdqu xmmword ptr [rsp+48H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M65529_IG10: lea rcx, bword ptr [rsp+38H] mov bword ptr [rcx], r10 mov dword ptr [rcx+8], r11d lea rcx, bword ptr [rsp+48H] lea rdx, bword ptr [rsp+38H] mov r8d, 1 call CompareInfo:IndexOfOrdinalIgnoreCase(ReadOnlySpan`1,ReadOnlySpan`1,bool):int nop ;; bbWeight=0.50 PerfScore 2.50 G_M65529_IG11: add rsp, 88 ret ;; bbWeight=0.50 PerfScore 0.63 G_M65529_IG12: mov rcx, bword ptr [rdx] mov edx, dword ptr [rdx+8] mov r8, r10 mov r9d, r11d call SpanHelpers:IndexOf(byref,int,byref,int):int nop ;; bbWeight=0.50 PerfScore 2.88 G_M65529_IG13: add rsp, 88 ret ;; bbWeight=0.50 PerfScore 0.63 G_M65529_IG14: mov ecx, 66 mov edx, 87 call ThrowHelper:ThrowArgumentException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 228, prolog size 29, PerfScore 51.41, (MethodHash=801e0006) for method CompareInfo:IndexOf(ReadOnlySpan`1,ReadOnlySpan`1,int):int:this ; ============================================================ ; Assembly listing for method CompareInfo:IndexOfOrdinalIgnoreCase(ReadOnlySpan`1,ReadOnlySpan`1,bool):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rsi ld-addr-op ; V01 arg1 [V01,T01] ( 4, 8 ) byref -> rdi ld-addr-op ; V02 arg2 [V02,T03] ( 4, 3 ) bool -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V05 tmp2 [V05,T13] ( 2, 1 ) int -> rax "Inline return value spill temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref ;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V14 tmp11 [V14 ] ( 0, 0 ) byref -> zero-ref pinned "Inline stloc first use temp" ;* V15 tmp12 [V15 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V16 tmp13 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V17 tmp14 [V17 ] ( 0, 0 ) byref -> zero-ref pinned "Inline stloc first use temp" ;* V18 tmp15 [V18 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V19 tmp16 [V19 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref ;* V21 tmp18 [V21 ] ( 0, 0 ) long -> zero-ref ;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref ;* V23 tmp20 [V23 ] ( 0, 0 ) long -> zero-ref ;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref ;* V26 tmp23 [V26 ] ( 0, 0 ) long -> zero-ref ;* V27 tmp24 [V27 ] ( 0, 0 ) int -> zero-ref ;* V28 tmp25 [V28 ] ( 0, 0 ) long -> zero-ref ;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref ;* V30 tmp27 [V30 ] ( 0, 0 ) int -> zero-ref ;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V32 tmp29 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V33 tmp30 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V34 tmp31 [V34,T02] ( 5, 6 ) int -> rax "Single return block return value" ; V35 FramesRoot [V35,T08] ( 1, 1 ) long -> [rbp-0x40] "Pinvoke FrameListRoot" ; V36 PInvokeFrame [V36 ] ( 4, 4 ) blk (72) [rbp-0xA8] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V37 tmp34 [V37,T09] ( 2, 1.50) byref -> r9 V57._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V38 tmp35 [V38,T07] ( 4, 2.50) int -> rax V57._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ; V39 tmp36 [V39,T10] ( 2, 1.50) byref -> rcx V58._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ; V40 tmp37 [V40,T04] ( 4, 3 ) int -> rdx V58._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ; V41 tmp38 [V41,T11] ( 2, 1 ) byref -> r9 V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V42 tmp39 [V42,T14] ( 2, 1 ) int -> r8 V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V43 tmp40 [V43,T12] ( 2, 1 ) byref -> rcx V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V44 tmp41 [V44,T15] ( 2, 1 ) int -> rdx V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ;* V45 tmp42 [V45 ] ( 0, 0 ) byref -> zero-ref V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ;* V46 tmp43 [V46 ] ( 0, 0 ) int -> zero-ref V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ;* V47 tmp44 [V47 ] ( 0, 0 ) byref -> zero-ref V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ;* V48 tmp45 [V48 ] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ;* V49 tmp46 [V49 ] ( 0, 0 ) byref -> zero-ref V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ;* V50 tmp47 [V50 ] ( 0, 0 ) int -> zero-ref V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ;* V51 tmp48 [V51 ] ( 0, 0 ) byref -> zero-ref V16._pointer(offs=0x00) P-INDEP "field V16._pointer (fldOffset=0x0)" ;* V52 tmp49 [V52 ] ( 0, 0 ) int -> zero-ref V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)" ;* V53 tmp50 [V53 ] ( 0, 0 ) byref -> zero-ref V32._pointer(offs=0x00) P-INDEP "field V32._pointer (fldOffset=0x0)" ;* V54 tmp51 [V54 ] ( 0, 0 ) int -> zero-ref V32._length(offs=0x08) P-INDEP "field V32._length (fldOffset=0x8)" ;* V55 tmp52 [V55 ] ( 0, 0 ) byref -> zero-ref V33._pointer(offs=0x00) P-INDEP "field V33._pointer (fldOffset=0x0)" ;* V56 tmp53 [V56 ] ( 0, 0 ) int -> zero-ref V33._length(offs=0x08) P-INDEP "field V33._length (fldOffset=0x8)" ;* V57 tmp54 [V57 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ;* V58 tmp55 [V58 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V59 tmp56 [V59 ] ( 2, 2 ) struct (16) [rbp-0x50] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V60 tmp57 [V60,T05] ( 3, 3 ) byref -> rax stack-byref "BlockOp address local" ; V61 tmp58 [V61 ] ( 2, 2 ) struct (16) [rbp-0x60] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V62 tmp59 [V62,T06] ( 3, 3 ) byref -> r9 stack-byref "BlockOp address local" ; ; Lcl frame size = 152 G_M46887_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 152 lea rbp, [rsp+D0H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-60H], xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 mov rsi, rcx mov rdi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 11.83 G_M46887_IG02: lea rcx, [rbp-A0H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rcx, rsp mov qword ptr [rbp-80H], rcx mov rcx, rbp mov qword ptr [rbp-70H], rcx mov rcx, bword ptr [rdi] mov edx, dword ptr [rdi+8] mov r9, bword ptr [rsi] mov eax, dword ptr [rsi+8] test edx, edx ja SHORT G_M46887_IG05 ;; bbWeight=1 PerfScore 13.50 G_M46887_IG03: test bl, bl jne SHORT G_M46887_IG04 jmp SHORT G_M46887_IG07 ;; bbWeight=0.50 PerfScore 1.63 G_M46887_IG04: xor eax, eax jmp SHORT G_M46887_IG07 ;; bbWeight=0.50 PerfScore 1.13 G_M46887_IG05: cmp edx, eax jle SHORT G_M46887_IG06 mov eax, -1 jmp SHORT G_M46887_IG07 ;; bbWeight=0.50 PerfScore 1.75 G_M46887_IG06: mov r8d, eax lea rax, bword ptr [rbp-50H] mov bword ptr [rax], r9 mov dword ptr [rax+8], r8d lea r9, bword ptr [rbp-60H] mov bword ptr [r9], rcx mov dword ptr [r9+8], edx lea rcx, bword ptr [rbp-50H] lea rdx, bword ptr [rbp-60H] movzx r9, bl mov r8d, 1 call CompareInfo:IcuIndexOfOrdinalCore(ReadOnlySpan`1,ReadOnlySpan`1,bool,bool):int ;; bbWeight=0.50 PerfScore 3.88 G_M46887_IG07: nop ;; bbWeight=1 PerfScore 0.25 G_M46887_IG08: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 182, prolog size 41, PerfScore 57.96, (MethodHash=b94748d8) for method CompareInfo:IndexOfOrdinalIgnoreCase(ReadOnlySpan`1,ReadOnlySpan`1,bool):int ; ============================================================ ; Assembly listing for method CompareInfo:IcuIndexOfOrdinalCore(ReadOnlySpan`1,ReadOnlySpan`1,bool,bool):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T08] ( 4, 8 ) byref -> rdx ld-addr-op ; V02 arg2 [V02,T12] ( 3, 2.50) bool -> r8 ; V03 arg3 [V03,T10] ( 4, 3 ) bool -> r9 ; V04 loc0 [V04,T15] ( 3, 1.50) int -> rax ; V05 loc1 [V05,T09] ( 4, 5.50) int -> rcx ; V06 loc2 [V06,T11] ( 3, 5 ) int -> r8 ;* V07 loc3 [V07 ] ( 0, 0 ) long -> zero-ref ; V08 loc4 [V08 ] ( 1, 0.50) byref -> [rbp-0x28] must-init pinned ;* V09 loc5 [V09 ] ( 0, 0 ) long -> zero-ref ; V10 loc6 [V10 ] ( 1, 0.50) byref -> [rbp-0x30] must-init pinned ; V11 loc7 [V11,T06] ( 7, 17.50) int -> rax ; V12 loc8 [V12,T00] ( 6, 72 ) int -> r9 ; V13 loc9 [V13,T01] ( 5, 52 ) int -> r11 ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ;* V15 tmp1 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V16 tmp2 [V16 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V17 tmp3 [V17 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V18 tmp4 [V18 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V19 tmp5 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V20 tmp6 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V21 tmp7 [V21,T04] ( 4, 18 ) byref -> rdi V29._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V22 tmp8 [V22,T03] ( 6, 19.50) int -> r10 V29._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ; V23 tmp9 [V23,T05] ( 4, 18 ) byref -> rsi V30._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ; V24 tmp10 [V24,T02] ( 7, 39.50) int -> rdx V30._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ;* V25 tmp11 [V25,T16] ( 0, 0 ) byref -> zero-ref V19._pointer(offs=0x00) P-INDEP "field V19._pointer (fldOffset=0x0)" ;* V26 tmp12 [V26 ] ( 0, 0 ) int -> zero-ref V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)" ;* V27 tmp13 [V27,T17] ( 0, 0 ) byref -> zero-ref V20._pointer(offs=0x00) P-INDEP "field V20._pointer (fldOffset=0x0)" ;* V28 tmp14 [V28 ] ( 0, 0 ) int -> zero-ref V20._length(offs=0x08) P-INDEP "field V20._length (fldOffset=0x8)" ;* V29 tmp15 [V29 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ;* V30 tmp16 [V30 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V31 tmp17 [V31,T13] ( 2, 2 ) long -> r8 "Cast away GC" ; V32 tmp18 [V32,T14] ( 2, 2 ) long -> rcx "Cast away GC" ; ; Lcl frame size = 64 G_M43565_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 lea rbp, [rsp+60H] xor rax, rax mov qword ptr [rbp-28H], rax mov qword ptr [rbp-30H], rax ;; bbWeight=1 PerfScore 8.00 G_M43565_IG02: mov rsi, bword ptr [rdx] mov edx, dword ptr [rdx+8] mov rdi, bword ptr [rcx] mov r10d, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 8.00 G_M43565_IG03: cmp r10d, edx jge SHORT G_M43565_IG06 ;; bbWeight=1 PerfScore 1.25 G_M43565_IG04: mov eax, -1 ;; bbWeight=0.50 PerfScore 0.13 G_M43565_IG05: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M43565_IG06: test r8b, r8b je SHORT G_M43565_IG08 mov bword ptr [rbp-28H], rdi mov r8, rdi mov bword ptr [rbp-30H], rsi mov rcx, rsi test r9b, r9b sete r9b movzx r9, r9b mov dword ptr [rsp+20H], r9d mov r9d, r10d call Globalization:IndexOfOrdinalIgnoreCase(long,int,long,int,bool):int nop ;; bbWeight=0.50 PerfScore 3.88 G_M43565_IG07: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M43565_IG08: test r9b, r9b je SHORT G_M43565_IG09 xor eax, eax mov ecx, r10d sub ecx, edx inc ecx mov r8d, 1 jmp SHORT G_M43565_IG10 ;; bbWeight=0.50 PerfScore 2.25 G_M43565_IG09: mov eax, r10d sub eax, edx mov ecx, -1 mov r8d, -1 ;; bbWeight=0.50 PerfScore 0.50 G_M43565_IG10: cmp eax, ecx je SHORT G_M43565_IG17 ;; bbWeight=0.50 PerfScore 0.63 G_M43565_IG11: xor r9d, r9d mov r11d, eax jmp SHORT G_M43565_IG13 ;; bbWeight=4 PerfScore 10.00 G_M43565_IG12: inc r9d inc r11d ;; bbWeight=8 PerfScore 4.00 G_M43565_IG13: cmp r9d, edx jge SHORT G_M43565_IG15 ;; bbWeight=32 PerfScore 40.00 G_M43565_IG14: cmp r11d, r10d jae SHORT G_M43565_IG20 movsxd rbx, r11d movzx rbx, word ptr [rdi+2*rbx] movsxd r14, r9d cmp bx, word ptr [rsi+2*r14] je SHORT G_M43565_IG12 ;; bbWeight=16 PerfScore 108.00 G_M43565_IG15: cmp r9d, edx je SHORT G_M43565_IG19 ;; bbWeight=4 PerfScore 5.00 G_M43565_IG16: add eax, r8d cmp eax, ecx jne SHORT G_M43565_IG11 ;; bbWeight=4 PerfScore 6.00 G_M43565_IG17: mov eax, -1 ;; bbWeight=0.50 PerfScore 0.13 G_M43565_IG18: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M43565_IG19: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0.50 PerfScore 2.00 G_M43565_IG20: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 242, prolog size 25, PerfScore 229.95, (MethodHash=035d55d2) for method CompareInfo:IcuIndexOfOrdinalCore(ReadOnlySpan`1,ReadOnlySpan`1,bool,bool):int ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(long,int,long,int,bool):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) long -> rsi ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi ; V02 arg2 [V02,T03] ( 3, 3 ) long -> rbx ; V03 arg3 [V03,T04] ( 3, 3 ) int -> r14 ; V04 arg4 [V04,T11] ( 1, 1 ) bool -> [rbp+0x30] ;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref ;* V06 loc1 [V06 ] ( 0, 0 ) long -> zero-ref ; V07 loc2 [V07,T07] ( 2, 2 ) long -> rdx ;* V08 loc3 [V08 ] ( 0, 0 ) long -> zero-ref ; V09 loc4 [V09,T08] ( 2, 2 ) long -> r9 ; V10 loc5 [V10,T09] ( 2, 2 ) int -> rcx ;* V11 loc6 [V11 ] ( 0, 0 ) int -> zero-ref ; V12 loc7 [V12,T10] ( 2, 2 ) int -> rax ; V13 OutArgs [V13 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V14 tmp1 [V14 ] ( 3, 3 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "stub argument" ; V15 tmp2 [V15,T05] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V16 tmp3 [V16,T06] ( 2, 4 ) int -> rax "Single return block return value" ; V17 FramesRoot [V17,T00] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V18 PInvokeFrame [V18 ] ( 8, 8 ) blk (72) [rbp-0x88] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 120 G_M13736_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] mov qword ptr [rbp-40H], r10 mov rsi, rcx mov edi, edx mov rbx, r8 mov r14d, r9d ;; bbWeight=1 PerfScore 10.75 G_M13736_IG02: lea rcx, [rbp-80H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-60H], rcx mov rcx, rbp mov qword ptr [rbp-50H], rcx lea rcx, bword ptr [rbp-80H] mov qword ptr [r15+16], rcx movsxd rdx, edi movsxd r9, r14d cmp byte ptr [rbp+30H], 0 setne cl movzx rcx, cl mov r8, qword ptr [rbp-40H] mov r8, qword ptr [r8+32] mov rax, qword ptr [r8] mov dword ptr [rsp+20H], ecx mov rcx, rsi mov r8, rbx mov r10, qword ptr [rbp-40H] mov qword ptr [rbp-70H], r10 lea r10, G_M13736_IG04 mov qword ptr [rbp-58H], r10 mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 20.25 G_M13736_IG03: call rax ;; bbWeight=1 PerfScore 3.00 G_M13736_IG04: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M13736_IG05 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M13736_IG05: mov rdx, bword ptr [rbp-78H] mov qword ptr [r15+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M13736_IG06: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 196, prolog size 28, PerfScore 68.60, (MethodHash=f02eca57) for method ILStubClass:IL_STUB_PInvoke(long,int,long,int,bool):int ; ============================================================ ; Assembly listing for method Assembly:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M33336_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax mov qword ptr [rbp-10H], rax ;; bbWeight=1 PerfScore 4.00 G_M33336_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call Dictionary`2:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] call List`1:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 13.25 G_M33336_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 121, prolog size 20, PerfScore 31.35, (MethodHash=c0097dc7) for method Assembly:.cctor() ; ============================================================ ; Assembly listing for method Dictionary`2:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5395_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5395_IG02: xor edx, edx xor r8, r8 ;; bbWeight=1 PerfScore 0.50 G_M5395_IG03: jmp Dictionary`2:.ctor(int,IEqualityComparer`1):this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 10, prolog size 0, PerfScore 3.50, (MethodHash=8404eaec) for method Dictionary`2:.ctor():this ; ============================================================ ; Assembly listing for method List`1:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V03 tmp2 [V03,T02] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V04 cse0 [V04,T03] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M33098_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M33098_IG02: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M33098_IG04 ;; bbWeight=1 PerfScore 9.25 G_M33098_IG03: jmp SHORT G_M33098_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M33098_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M33098_IG05: mov rcx, rdx call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov rdx, gword ptr [rax] lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 5.00 G_M33098_IG06: add rsp, 48 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 79, prolog size 10, PerfScore 27.28, (MethodHash=85777eb5) for method List`1:.ctor():this ; ============================================================ ; Assembly listing for method List`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00 ] ( 1, 1 ) long -> [rbp+0x10] ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02 ] ( 1, 1 ) long -> [rbp-0x10] "spilling Runtime Lookup tree" ; TEMP_01 byref -> [rbp-0x18] ; ; Lcl frame size = 64 G_M53717_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] xor rax, rax mov qword ptr [rbp-18H], rax mov qword ptr [rbp-08H], rcx mov qword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 5.00 G_M53717_IG02: mov rcx, qword ptr [rbp+10H] mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] cmp qword ptr [rcx+16], 0 je SHORT G_M53717_IG04 ;; bbWeight=1 PerfScore 8.00 G_M53717_IG03: mov rcx, qword ptr [rbp+10H] mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+16] mov qword ptr [rbp-10H], rcx jmp SHORT G_M53717_IG05 ;; bbWeight=0.50 PerfScore 5.00 G_M53717_IG04: mov rcx, qword ptr [rbp+10H] mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rbp-10H], rax ;; bbWeight=0.50 PerfScore 1.63 G_M53717_IG05: mov rcx, qword ptr [rbp+10H] call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov bword ptr [rbp-18H], rax mov rcx, qword ptr [rbp-10H] xor rdx, rdx call CORINFO_HELP_NEWARR_1_OBJ mov rcx, bword ptr [rbp-18H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 7.75 G_M53717_IG06: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 129, prolog size 20, PerfScore 42.28, (MethodHash=531c2e2a) for method List`1:.cctor() ; ============================================================ ; Assembly listing for method TargetFrameworkAttribute:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M35869_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M35869_IG02: test rdx, rdx je SHORT G_M35869_IG05 ;; bbWeight=1 PerfScore 1.25 G_M35869_IG03: lea rcx, bword ptr [rcx+8] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M35869_IG04: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M35869_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1AF41 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 84, prolog size 5, PerfScore 14.40, (MethodHash=e55b73e2) for method TargetFrameworkAttribute:.ctor(String):this ; ============================================================ ; Assembly listing for method CustomAttribute:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) struct ( 8) [rbp-0x08] do-not-enreg[SB] must-init "struct address for call/obj" ; V02 tmp2 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[SB] must-init "struct address for call/obj" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init "argument with side effect" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init "argument with side effect" ; ; Lcl frame size = 64 G_M27465_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 4.08 G_M27465_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPEHANDLE mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call Type:GetTypeFromHandle(RuntimeTypeHandle):Type mov gword ptr [rbp-18H], rax mov rdx, gword ptr [rbp-18H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTCLASS mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPEHANDLE mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] call Type:GetTypeFromHandle(RuntimeTypeHandle):Type mov gword ptr [rbp-20H], rax mov rdx, gword ptr [rbp-20H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTCLASS mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 18.25 G_M27465_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 169, prolog size 24, PerfScore 41.53, (MethodHash=48d994b6) for method CustomAttribute:.cctor() ; ============================================================ ; Assembly listing for method Type:GetProperty(String,int,Binder,Type,ref,ref):PropertyInfo:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) int -> r8 ; V03 arg3 [V03,T02] ( 3, 3 ) ref -> r9 class-hnd ; V04 arg4 [V04,T05] ( 1, 1 ) ref -> [rsp+0x50] class-hnd ; V05 arg5 [V05,T04] ( 2, 2 ) ref -> rax class-hnd ; V06 arg6 [V06,T06] ( 1, 1 ) ref -> [rsp+0x60] class-hnd ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T07] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp2 [V09,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp3 [V10,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 tmp4 [V11,T10] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M18083_IG01: push rsi sub rsp, 32 mov rax, gword ptr [rsp+58H] ;; bbWeight=1 PerfScore 2.25 G_M18083_IG02: test rdx, rdx je SHORT G_M18083_IG06 ;; bbWeight=1 PerfScore 1.25 G_M18083_IG03: test rax, rax je SHORT G_M18083_IG07 ;; bbWeight=1 PerfScore 1.25 G_M18083_IG04: mov r10, gword ptr [rsp+50H] mov gword ptr [rsp+50H], r10 mov gword ptr [rsp+58H], rax mov rax, gword ptr [rsp+60H] mov gword ptr [rsp+60H], rax mov rax, qword ptr [rcx] mov rax, qword ptr [rax+136] mov rax, qword ptr [rax+56] ;; bbWeight=1 PerfScore 11.00 G_M18083_IG05: add rsp, 32 pop rsi rex.jmp rax ;; bbWeight=1 PerfScore 2.75 G_M18083_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 839 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M18083_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x19DA mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 182, prolog size 10, PerfScore 36.70, (MethodHash=74e4b95c) for method Type:GetProperty(String,int,Binder,Type,ref,ref):PropertyInfo:this ; ============================================================ ; Assembly listing for method RuntimeType:GetPropertyImpl(String,int,Binder,Type,ref,ref):PropertyInfo:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T02] ( 4, 4 ) ref -> [rsp+0x78] class-hnd ; V02 arg2 [V02,T01] ( 5, 4 ) int -> rdi ; V03 arg3 [V03,T00] ( 6, 4 ) ref -> rsi class-hnd ; V04 arg4 [V04,T05] ( 6, 3 ) ref -> rbx class-hnd ; V05 arg5 [V05,T06] ( 5, 3 ) ref -> rbp class-hnd ; V06 arg6 [V06,T12] ( 2, 1 ) ref -> [rsp+0xA0] class-hnd ; V07 loc0 [V07 ] ( 9, 5.50) struct (24) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V08 loc1 [V08,T07] ( 4, 2 ) ref -> rdi class-hnd ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T13] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V11 tmp2 [V11,T14] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V12 tmp3 [V12,T11] ( 3, 1.50) ref -> rdi class-hnd "Inline return value spill temp" ; V13 tmp4 [V13,T04] ( 4, 4 ) ref -> rdi "Single return block return value" ; V14 tmp5 [V14 ] ( 6, 3.50) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed V07._items(offs=0x00) P-DEP "field V07._items (fldOffset=0x0)" ; V15 tmp6 [V15 ] ( 4, 2.50) ref -> [rsp+0x38] do-not-enreg[X] addr-exposed V07._item(offs=0x08) P-DEP "field V07._item (fldOffset=0x8)" ; V16 tmp7 [V16 ] ( 5, 3.50) int -> [rsp+0x40] do-not-enreg[X] addr-exposed V07._count(offs=0x10) P-DEP "field V07._count (fldOffset=0x10)" ; V17 tmp8 [V17 ] ( 3, 2 ) int -> [rsp+0x44] do-not-enreg[X] addr-exposed V07._capacity(offs=0x14) P-DEP "field V07._capacity (fldOffset=0x14)" ; V18 tmp9 [V18,T15] ( 2, 0 ) ref -> rdx "argument with side effect" ; V19 tmp10 [V19,T08] ( 2, 2 ) ref -> rdx "argument with side effect" ; V20 tmp11 [V20,T16] ( 2, 0 ) ref -> rcx "argument with side effect" ; V21 tmp12 [V21,T17] ( 2, 0 ) ref -> rdx "argument with side effect" ; V22 tmp13 [V22,T09] ( 2, 2 ) ref -> rcx "argument with side effect" ; V23 tmp14 [V23,T10] ( 2, 2 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 72 G_M9671_IG01: push rdi push rsi push rbp push rbx sub rsp, 72 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 xor rax, rax mov qword ptr [rsp+40H], rax mov edi, r8d mov rsi, r9 mov rbx, gword ptr [rsp+90H] mov rbp, gword ptr [rsp+98H] ;; bbWeight=1 PerfScore 9.33 G_M9671_IG02: mov gword ptr [rsp+78H], rdx test rdx, rdx je G_M9671_IG17 ;; bbWeight=1 PerfScore 2.25 G_M9671_IG03: mov gword ptr [rsp+20H], rbp xor r8d, r8d mov dword ptr [rsp+28H], r8d lea rdx, bword ptr [rsp+30H] mov r8, gword ptr [rsp+78H] mov r9d, edi call RuntimeType:GetPropertyCandidates(String,int,ref,bool):ListBuilder`1:this cmp dword ptr [rsp+40H], 0 je SHORT G_M9671_IG08 ;; bbWeight=1 PerfScore 7.00 G_M9671_IG04: test rbp, rbp je SHORT G_M9671_IG05 cmp dword ptr [rbp+8], 0 jne SHORT G_M9671_IG12 ;; bbWeight=0.50 PerfScore 2.13 G_M9671_IG05: cmp dword ptr [rsp+40H], 1 jne SHORT G_M9671_IG11 cmp gword ptr [rsp+30H], 0 jne SHORT G_M9671_IG06 mov rdi, gword ptr [rsp+38H] jmp SHORT G_M9671_IG07 ;; bbWeight=0.50 PerfScore 3.50 G_M9671_IG06: mov rcx, gword ptr [rsp+30H] cmp dword ptr [rcx+8], 0 jbe G_M9671_IG19 mov rcx, gword ptr [rsp+30H] mov rdi, gword ptr [rcx+16] ;; bbWeight=0.50 PerfScore 3.50 G_M9671_IG07: test rbx, rbx je SHORT G_M9671_IG10 mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+80] call gword ptr [rax+16]PropertyInfo:get_PropertyType():Type:this mov rdx, rax mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+152] call qword ptr [rax+24]Type:IsEquivalentTo(Type):bool:this test eax, eax jne SHORT G_M9671_IG10 ;; bbWeight=0.50 PerfScore 8.63 G_M9671_IG08: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M9671_IG09: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M9671_IG10: jmp G_M9671_IG15 ;; bbWeight=0.50 PerfScore 1.00 G_M9671_IG11: test rbx, rbx je G_M9671_IG18 ;; bbWeight=0.50 PerfScore 0.63 G_M9671_IG12: test edi, 0x10000 je SHORT G_M9671_IG13 lea rcx, bword ptr [rsp+30H] mov rdx, 0xD1FFAB1E call ListBuilder`1:ToArray():ref:this mov rcx, rax mov rdx, rbx mov r8, rbp mov r9, gword ptr [rsp+A0H] call DefaultBinder:ExactPropertyBinding(ref,Type,ref,ref):PropertyInfo mov rdi, rax jmp SHORT G_M9671_IG15 ;; bbWeight=0.50 PerfScore 4.00 G_M9671_IG13: test rsi, rsi jne SHORT G_M9671_IG14 call Type:get_DefaultBinder():Binder mov rsi, rax ;; bbWeight=0.50 PerfScore 1.25 G_M9671_IG14: lea rcx, bword ptr [rsp+30H] mov rdx, 0xD1FFAB1E call ListBuilder`1:ToArray():ref:this mov r8, rax mov gword ptr [rsp+20H], rbp mov rbp, gword ptr [rsp+A0H] mov gword ptr [rsp+28H], rbp mov edx, edi mov rcx, rsi mov r9, rbx mov rax, qword ptr [rsi] mov rax, qword ptr [rax+72] call gword ptr [rax+8]Binder:SelectProperty(int,ref,Type,ref,ref):PropertyInfo:this mov rdi, rax ;; bbWeight=0.50 PerfScore 6.50 G_M9671_IG15: mov rax, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M9671_IG16: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M9671_IG17: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 839 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M9671_IG18: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x35D3 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call AmbiguousMatchException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M9671_IG19: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 495, prolog size 25, PerfScore 102.91, (MethodHash=78e1da38) for method RuntimeType:GetPropertyImpl(String,int,Binder,Type,ref,ref):PropertyInfo:this ; ============================================================ ; Assembly listing for method RuntimeType:GetPropertyCandidates(String,int,ref,bool):ListBuilder`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T08] ( 5, 3.75) ref -> rbx this class-hnd ; V01 RetBuf [V01,T05] ( 7, 7 ) byref -> rdi ; V02 arg1 [V02 ] ( 5, 6 ) ref -> [rsp+0xB0] do-not-enreg[X] addr-exposed ld-addr-op class-hnd ; V03 arg2 [V03,T04] ( 6, 9 ) int -> rsi ; V04 arg3 [V04,T10] ( 2, 4 ) ref -> rbp class-hnd ; V05 arg4 [V05,T21] ( 1, 1 ) bool -> [rsp+0xC8] ; V06 loc0 [V06 ] ( 2, 3 ) bool -> [rsp+0x58] do-not-enreg[X] addr-exposed ld-addr-op ; V07 loc1 [V07 ] ( 2, 3 ) bool -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V08 loc2 [V08 ] ( 2, 2 ) int -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op ; V09 loc3 [V09,T07] ( 3, 6 ) ref -> rbx class-hnd ; V10 loc4 [V10 ] ( 9, 10 ) struct (24) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V11 loc5 [V11,T00] ( 5, 17 ) int -> r15 ; V12 loc6 [V12,T02] ( 5, 14 ) ref -> r12 class-hnd ; V13 OutArgs [V13 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V14 tmp1 [V14,T01] ( 2, 16 ) int -> rcx "impAppendStmt" ; V15 tmp2 [V15,T09] ( 5, 4 ) ref -> rcx class-hnd "Inline return value spill temp" ; V16 tmp3 [V16,T18] ( 3, 1 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V17 tmp4 [V17,T13] ( 2, 4 ) long -> rcx ld-addr-op "Inlining Arg" ;* V18 tmp5 [V18 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V19 tmp6 [V19,T20] ( 2, 1 ) long -> rcx "Inlining Arg" ;* V20 tmp7 [V20 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V21 tmp8 [V21,T19] ( 2, 1 ) byref -> rcx "Inlining Arg" ; V22 tmp9 [V22,T14] ( 2, 4 ) int -> rbx "Inlining Arg" ; V23 tmp10 [V23,T11] ( 2, 4 ) ref -> r14 class-hnd "Inlining Arg" ; V24 tmp11 [V24,T16] ( 2, 2 ) ref -> rbx class-hnd "Inline return value spill temp" ; V25 tmp12 [V25,T12] ( 2, 4 ) byref -> r8 "Inlining Arg" ; V26 tmp13 [V26,T17] ( 2, 2 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V27 tmp14 [V27,T15] ( 2, 4 ) int -> r8 "Inlining Arg" ; V28 tmp15 [V28 ] ( 3, 4 ) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed V10._items(offs=0x00) P-DEP "field V10._items (fldOffset=0x0)" ; V29 tmp16 [V29 ] ( 3, 4 ) ref -> [rsp+0x38] do-not-enreg[X] addr-exposed V10._item(offs=0x08) P-DEP "field V10._item (fldOffset=0x8)" ; V30 tmp17 [V30 ] ( 3, 4 ) int -> [rsp+0x40] do-not-enreg[X] addr-exposed V10._count(offs=0x10) P-DEP "field V10._count (fldOffset=0x10)" ; V31 tmp18 [V31 ] ( 3, 4 ) int -> [rsp+0x44] do-not-enreg[X] addr-exposed V10._capacity(offs=0x14) P-DEP "field V10._capacity (fldOffset=0x14)" ; V32 cse0 [V32,T03] ( 3, 12 ) int -> r8 "CSE - aggressive" ; V33 cse1 [V33,T06] ( 4, 7 ) int -> r14 "CSE - aggressive" ; ; Lcl frame size = 96 G_M33587_IG01: push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 96 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 xor rax, rax mov qword ptr [rsp+40H], rax mov gword ptr [rsp+B0H], r8 mov rbx, rcx mov rdi, rdx mov esi, r9d mov rbp, gword ptr [rsp+C0H] ;; bbWeight=1 PerfScore 12.58 G_M33587_IG02: lea r8, [rsp+50H] mov qword ptr [rsp+20H], r8 lea r8, [rsp+48H] mov qword ptr [rsp+28H], r8 mov r8d, dword ptr [rsp+C8H] movzx r8, r8b lea rdx, [rsp+B0H] lea r9, [rsp+58H] mov ecx, esi call RuntimeType:FilterHelper(int,byref,bool,byref,byref,byref) mov rcx, qword ptr [rbx+16] test rcx, rcx je SHORT G_M33587_IG05 ;; bbWeight=1 PerfScore 9.75 G_M33587_IG03: mov rcx, qword ptr [rbx+16] mov rcx, gword ptr [rcx] test rcx, rcx je SHORT G_M33587_IG05 ;; bbWeight=0.25 PerfScore 1.31 G_M33587_IG04: jmp SHORT G_M33587_IG06 ;; bbWeight=0.50 PerfScore 1.00 G_M33587_IG05: mov rcx, rbx call RuntimeType:InitializeCache():RuntimeTypeCache:this mov rcx, rax ;; bbWeight=0.50 PerfScore 0.75 G_M33587_IG06: mov ebx, dword ptr [rsp+48H] mov r14, gword ptr [rsp+B0H] cmp dword ptr [rcx], ecx lea r8, bword ptr [rcx+96] mov rdx, 0xD1FFAB1E call RuntimeTypeCache:GetMemberCache(byref):MemberInfoCache`1:this mov rcx, rax mov edx, ebx mov r8, r14 mov r9d, 3 cmp dword ptr [rcx], ecx call MemberInfoCache`1:GetMemberList(int,String,int):ref:this mov rbx, rax xor esi, 2 mov r14d, dword ptr [rbx+8] mov r8d, r14d xor rcx, rcx mov gword ptr [rsp+30H], rcx mov gword ptr [rsp+38H], rcx mov dword ptr [rsp+40H], ecx mov dword ptr [rsp+44H], r8d xor r15d, r15d test r14d, r14d jle SHORT G_M33587_IG12 ;; bbWeight=1 PerfScore 18.25 G_M33587_IG07: movsxd r8, r15d mov r12, gword ptr [rbx+8*r8+16] mov r8d, dword ptr [r12+88] mov ecx, esi and ecx, r8d cmp ecx, r8d jne SHORT G_M33587_IG11 ;; bbWeight=4 PerfScore 24.00 G_M33587_IG08: cmp byte ptr [rsp+58H], 0 je SHORT G_M33587_IG09 mov r8d, dword ptr [rsp+50H] movzx r8, r8b mov rcx, r12 mov rdx, gword ptr [rsp+B0H] call RuntimeType:FilterApplyPrefixLookup(MemberInfo,String,bool):bool test eax, eax je SHORT G_M33587_IG11 ;; bbWeight=2 PerfScore 13.50 G_M33587_IG09: test rbp, rbp je SHORT G_M33587_IG10 mov rcx, r12 mov rax, 0xD1FFAB1E call gword ptr [rax]RuntimePropertyInfo:GetIndexParameters():ref:this mov ecx, dword ptr [rax+8] cmp ecx, dword ptr [rbp+8] jne SHORT G_M33587_IG11 ;; bbWeight=2 PerfScore 19.50 G_M33587_IG10: lea rcx, bword ptr [rsp+30H] mov r8, r12 mov rdx, 0xD1FFAB1E call ListBuilder`1:Add(__Canon):this ;; bbWeight=2 PerfScore 4.00 G_M33587_IG11: inc r15d cmp r14d, r15d jg SHORT G_M33587_IG07 ;; bbWeight=4 PerfScore 6.00 G_M33587_IG12: mov rdx, gword ptr [rsp+30H] mov rcx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF lea rcx, bword ptr [rdi+8] mov rdx, gword ptr [rsp+38H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov eax, dword ptr [rsp+40H] mov dword ptr [rdi+16], eax mov eax, dword ptr [rsp+44H] mov dword ptr [rdi+20], eax mov rax, rdi ;; bbWeight=1 PerfScore 9.00 G_M33587_IG13: add rsp, 96 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.75 ; Total bytes of code 415, prolog size 56, PerfScore 166.10, (MethodHash=efff7ccc) for method RuntimeType:GetPropertyCandidates(String,int,ref,bool):ListBuilder`1:this ; ============================================================ ; Assembly listing for method MemberInfoCache`1:PopulateProperties(Filter):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 7.50) ref -> rdi this class-hnd ; V01 arg1 [V01,T01] ( 5, 14 ) byref -> rsi ld-addr-op ; V02 loc0 [V02,T00] ( 12, 31.50) ref -> rbx class-hnd ; V03 loc1 [V03 ] ( 3, 5.50) struct (24) [rsp+0x48] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V04 loc2 [V04,T04] ( 2, 4.50) ref -> rbp class-hnd ; V05 loc3 [V05,T05] ( 2, 4.50) ref -> r14 class-hnd exact ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T09] ( 3, 1.50) ref -> rbp ; V08 tmp2 [V08,T07] ( 3, 3 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V09 tmp3 [V09,T06] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V10 tmp4 [V10,T08] ( 2, 2 ) long -> rdx "argument with side effect" ; V11 tmp5 [V11 ] ( 4, 18 ) struct (24) [rsp+0x30] do-not-enreg[XSB] addr-exposed "by-value struct argument" ;* V12 tmp6 [V12,T03] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V13 tmp7 [V13,T10] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; ; Lcl frame size = 96 G_M1010_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 96 vzeroupper vxorps xmm4, xmm4 vmovdqu xmmword ptr [rsp+48H], xmm4 xor rax, rax mov qword ptr [rsp+58H], rax mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 9.33 G_M1010_IG02: mov rcx, gword ptr [rdi+16] mov rbx, gword ptr [rcx+8] mov rcx, rbx call RuntimeTypeHandle:IsInterface(RuntimeType):bool test eax, eax jne G_M1010_IG10 ;; bbWeight=1 PerfScore 6.50 G_M1010_IG03: mov rcx, rbx call RuntimeTypeHandle:IsGenericVariable(RuntimeType):bool test eax, eax je SHORT G_M1010_IG05 ;; bbWeight=0.50 PerfScore 1.25 G_M1010_IG04: mov rcx, rbx cmp dword ptr [rcx], ecx call RuntimeType:GetBaseType():RuntimeType:this mov rbx, rax mov rcx, rbx call RuntimeTypeHandle:IsGenericVariable(RuntimeType):bool test eax, eax jne SHORT G_M1010_IG04 ;; bbWeight=4 PerfScore 24.00 G_M1010_IG05: cmp dword ptr [rsi+16], 1 je SHORT G_M1010_IG06 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, rbp xor edx, edx xor r8, r8 call Dictionary`2:.ctor(int,IEqualityComparer`1):this jmp SHORT G_M1010_IG07 ;; bbWeight=0.50 PerfScore 4.13 G_M1010_IG06: xor rbp, rbp ;; bbWeight=0.50 PerfScore 0.13 G_M1010_IG07: mov rcx, rbx call RuntimeTypeHandle:GetNumVirtuals(RuntimeType):int movsxd rdx, eax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov r14, rax ;; bbWeight=0.50 PerfScore 1.50 G_M1010_IG08: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rsp+30H], xmm0 mov rcx, qword ptr [rsi+16] mov qword ptr [rsp+40H], rcx mov gword ptr [rsp+20H], r14 lea rcx, [rsp+48H] mov qword ptr [rsp+28H], rcx mov rcx, rdi lea rdx, bword ptr [rsp+30H] mov r8, rbx mov r9, rbp call MemberInfoCache`1:PopulateProperties(Filter,RuntimeType,Dictionary`2,ref,byref):this mov rcx, rbx call RuntimeTypeHandle:GetBaseType(RuntimeType):RuntimeType mov rbx, rax test rbx, rbx jne SHORT G_M1010_IG08 ;; bbWeight=4 PerfScore 54.00 G_M1010_IG09: jmp SHORT G_M1010_IG11 ;; bbWeight=0.50 PerfScore 1.00 G_M1010_IG10: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rsp+30H], xmm0 mov rcx, qword ptr [rsi+16] mov qword ptr [rsp+40H], rcx xor rcx, rcx mov gword ptr [rsp+20H], rcx lea rcx, [rsp+48H] mov qword ptr [rsp+28H], rcx mov rcx, rdi lea rdx, bword ptr [rsp+30H] mov r8, rbx xor r9, r9 call MemberInfoCache`1:PopulateProperties(Filter,RuntimeType,Dictionary`2,ref,byref):this ;; bbWeight=0.50 PerfScore 5.50 G_M1010_IG11: lea rcx, bword ptr [rsp+48H] mov rdx, 0xD1FFAB1E call ListBuilder`1:ToArray():ref:this nop ;; bbWeight=1 PerfScore 2.00 G_M1010_IG12: add rsp, 96 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 325, prolog size 30, PerfScore 146.18, (MethodHash=013ffc0d) for method MemberInfoCache`1:PopulateProperties(Filter):ref:this ; ============================================================ ; Assembly listing for method MemberInfoCache`1:PopulateProperties(Filter,RuntimeType,Dictionary`2,ref,byref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T54] ( 3, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T33] ( 3, 6 ) byref -> rsi ld-addr-op ; V02 arg2 [V02,T55] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T56] ( 3, 3 ) ref -> r14 class-hnd ; V04 arg4 [V04,T78] ( 1, 1 ) ref -> [rbp+0x30] class-hnd ptr ; V05 arg5 [V05,T79] ( 1, 1 ) byref -> [rbp+0x38] ptr ; V06 loc0 [V06,T72] ( 3, 2.50) int -> [rbp-0x94] ;* V07 loc1 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V08 loc2 [V08 ] ( 6, 13 ) struct (80) [rbp-0x90] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ptr unsafe-buffer ; V09 loc3 [V09,T73] ( 2, 2.50) ref -> [rbp-0xE8] class-hnd ptr ; V10 loc4 [V10,T74] ( 2, 2.50) int -> [rbp-0x98] ; V11 loc5 [V11,T17] ( 7, 18.50) int -> [rbp-0x9C] ptr ; V12 loc6 [V12,T28] ( 4, 10 ) int -> [rbp-0xA0] ptr ; V13 loc7 [V13,T07] ( 11, 42 ) ref -> [rbp-0xF0] class-hnd exact ptr ; V14 loc8 [V14 ] ( 2, 4 ) bool -> [rbp-0xA8] do-not-enreg[X] addr-exposed ld-addr-op ;* V15 loc9 [V15 ] ( 0, 0 ) struct (16) zero-ref ;* V16 loc10 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V17 loc11 [V17,T45] ( 4, 6.48) ref -> rdx class-hnd ; V18 loc12 [V18,T27] ( 5, 10 ) int -> rax ; V19 loc13 [V19,T47] ( 3, 6 ) ref -> [rbp-0xF8] class-hnd ptr ; V20 loc14 [V20,T10] ( 7, 34 ) ref -> [rbp-0x100] ld-addr-op class-hnd ptr ; V21 loc15 [V21,T03] ( 7, 58 ) int -> [rbp-0xAC] ptr ;* V22 loc16 [V22,T62] ( 0, 0 ) bool -> zero-ref ; V23 loc17 [V23,T00] ( 6, 66 ) int -> [rbp-0xB0] ptr ; V24 tmp0 [V24 ] ( 1, 1 ) int -> [rbp-0xB4] do-not-enreg[X] addr-exposed "GSCookie dummy" ; V25 OutArgs [V25 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V26 tmp2 [V26,T20] ( 3, 12 ) ref -> [rbp-0x108] class-hnd exact ptr "NewObj constructor temp" ;* V27 tmp3 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr "dup spill" ; V28 tmp4 [V28,T31] ( 4, 8 ) ref -> rdx ; V29 tmp5 [V29,T21] ( 3, 12 ) ref -> [rbp-0x110] class-hnd exact ptr "NewObj constructor temp" ; V30 tmp6 [V30,T30] ( 3, 8.96) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V31 tmp7 [V31,T18] ( 5, 16.96) ref -> [rbp-0x118] class-hnd ptr "spilling QMark2" ;* V32 tmp8 [V32 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V33 tmp9 [V33,T75] ( 2, 2 ) long -> rcx "Inlining Arg" ; V34 tmp10 [V34,T34] ( 3, 8 ) int -> r10 "Inline return value spill temp" ; V35 tmp11 [V35 ] ( 3, 8 ) byref -> [rbp-0xC0] must-init pinned ptr "Inline stloc first use temp" ;* V36 tmp12 [V36 ] ( 0, 0 ) long -> zero-ref ptr "Inline stloc first use temp" ; V37 tmp13 [V37,T52] ( 2, 4 ) bool -> rcx "Inline return value spill temp" ; V38 tmp14 [V38 ] ( 3, 12 ) ref -> [rbp-0xC8] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ptr "Inlining Arg" ;* V39 tmp15 [V39 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V40 tmp16 [V40,T37] ( 2, 8 ) int -> r8 "Inlining Arg" ; V41 tmp17 [V41,T35] ( 2, 8 ) ref -> rdx class-hnd "Inlining Arg" ; V42 tmp18 [V42,T22] ( 3, 12 ) ref -> rax class-hnd "Inlining Arg" ;* V43 tmp19 [V43 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V44 tmp20 [V44,T38] ( 2, 8 ) long -> rcx "Inlining Arg" ; V45 tmp21 [V45 ] ( 2, 4 ) long -> [rbp-0xD0] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V46 tmp22 [V46 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V47 tmp23 [V47,T39] ( 2, 8 ) long -> rsi "Inlining Arg" ; V48 tmp24 [V48,T43] ( 4, 7 ) long -> rsi "Inline stloc first use temp" ; V49 tmp25 [V49,T70] ( 3, 3 ) int -> rax "Inline stloc first use temp" ; V50 tmp26 [V50,T46] ( 4, 6 ) bool -> rsi "Inline stloc first use temp" ;* V51 tmp27 [V51 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V52 tmp28 [V52,T71] ( 3, 3 ) bool -> rsi "Inline return value spill temp" ;* V53 tmp29 [V53 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V54 tmp30 [V54,T58] ( 4, 4 ) bool -> rsi "Inline return value spill temp" ;* V55 tmp31 [V55 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V56 tmp32 [V56,T36] ( 2, 8 ) ref -> rcx class-hnd "Inlining Arg" ; V57 tmp33 [V57,T48] ( 3, 6 ) ref -> rdx class-hnd "Inline return value spill temp" ; V58 tmp34 [V58,T49] ( 3, 6 ) ref -> rdx class-hnd "Inline return value spill temp" ;* V59 tmp35 [V59,T63] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V60 tmp36 [V60,T64] ( 2, 4 ) int -> rax "Inline stloc first use temp" ;* V61 tmp37 [V61 ] ( 0, 0 ) long -> zero-ref ptr "NewObj constructor temp" ; V62 tmp38 [V62,T40] ( 2, 8 ) long -> rcx "Inlining Arg" ; V63 tmp39 [V63,T53] ( 3, 6 ) bool -> rax "Inline return value spill temp" ; V64 tmp40 [V64,T50] ( 3, 6 ) byref -> rax "Inline stloc first use temp" ;* V65 tmp41 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr "Inlining Arg" ;* V66 tmp42 [V66 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; V67 tmp43 [V67,T12] ( 2, 32 ) ref -> r8 class-hnd "Inlining Arg" ; V68 tmp44 [V68,T13] ( 2, 32 ) ref -> [rbp-0x120] class-hnd ptr "Inlining Arg" ; V69 tmp45 [V69,T14] ( 2, 32 ) ref -> [rbp-0x128] class-hnd "impAppendStmt" ;* V70 tmp46 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr "Inlining Arg" ; V71 tmp47 [V71,T16] ( 7, 28 ) ref -> rcx class-hnd "Inlining Arg" ; V72 tmp48 [V72,T51] ( 3, 6 ) ref -> rdx class-hnd "Inline stloc first use temp" ; V73 tmp49 [V73,T32] ( 4, 8 ) int -> r8 "Inline stloc first use temp" ; V74 tmp50 [V74,T11] ( 3, 32 ) ref -> [rbp-0x130] class-hnd ptr "Inline return value spill temp" ; V75 tmp51 [V75,T01] ( 2, 64 ) ref -> [rbp-0x138] class-hnd "impAppendStmt" ; V76 FramesRoot [V76,T26] ( 6, 10 ) long -> r15 "Pinvoke FrameListRoot" ; V77 PInvokeFrame [V77 ] ( 8, 12 ) blk (72) [rbp-0x1B0] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ;* V78 tmp54 [V78 ] ( 0, 0 ) ref -> zero-ref ptr V07.m_keepalive(offs=0x00) P-INDEP "field V07.m_keepalive (fldOffset=0x0)" ;* V79 tmp55 [V79 ] ( 0, 0 ) long -> zero-ref V07.m_metadataImport2(offs=0x08) P-INDEP "field V07.m_metadataImport2 (fldOffset=0x8)" ; V80 tmp56 [V80,T65] ( 2, 4 ) long -> rsi V15.m_pStringHeap(offs=0x00) P-INDEP "field V15.m_pStringHeap (fldOffset=0x0)" ; V81 tmp57 [V81,T66] ( 2, 4 ) int -> rax V15.m_StringHeapByteLength(offs=0x08) P-INDEP "field V15.m_StringHeapByteLength (fldOffset=0x8)" ;* V82 tmp58 [V82 ] ( 0, 0 ) ref -> zero-ref V16.m_keepalive(offs=0x00) P-INDEP "field V16.m_keepalive (fldOffset=0x0)" ;* V83 tmp59 [V83 ] ( 0, 0 ) long -> zero-ref V16.m_metadataImport2(offs=0x08) P-INDEP "field V16.m_metadataImport2 (fldOffset=0x8)" ;* V84 tmp60 [V84 ] ( 0, 0 ) ref -> zero-ref ptr V32.m_keepalive(offs=0x00) P-INDEP "field V32.m_keepalive (fldOffset=0x0)" ;* V85 tmp61 [V85 ] ( 0, 0 ) long -> zero-ref V32.m_metadataImport2(offs=0x08) P-INDEP "field V32.m_metadataImport2 (fldOffset=0x8)" ; V86 tmp62 [V86,T67] ( 2, 4 ) long -> rcx V39._ptr(offs=0x00) P-INDEP "field V39._ptr (fldOffset=0x0)" ; V87 tmp63 [V87,T68] ( 2, 4 ) long -> rdx V39._module(offs=0x08) P-INDEP "field V39._module (fldOffset=0x8)" ;* V88 tmp64 [V88 ] ( 0, 0 ) ref -> zero-ref V43.m_keepalive(offs=0x00) P-INDEP "field V43.m_keepalive (fldOffset=0x0)" ;* V89 tmp65 [V89 ] ( 0, 0 ) long -> zero-ref V43.m_metadataImport2(offs=0x08) P-INDEP "field V43.m_metadataImport2 (fldOffset=0x8)" ; V90 tmp66 [V90,T69] ( 2, 4 ) long -> rsi V46.m_pStringHeap(offs=0x00) P-INDEP "field V46.m_pStringHeap (fldOffset=0x0)" ; V91 tmp67 [V91,T59] ( 3, 4 ) int -> rax V46.m_StringHeapByteLength(offs=0x08) P-INDEP "field V46.m_StringHeapByteLength (fldOffset=0x8)" ; V92 tmp68 [V92,T60] ( 3, 4 ) long -> rcx V51.m_pStringHeap(offs=0x00) P-INDEP "field V51.m_pStringHeap (fldOffset=0x0)" ; V93 tmp69 [V93,T61] ( 3, 4 ) int -> rax V51.m_StringHeapByteLength(offs=0x08) P-INDEP "field V51.m_StringHeapByteLength (fldOffset=0x8)" ; V94 tmp70 [V94,T76] ( 2, 2 ) long -> rcx V53.m_pStringHeap(offs=0x00) P-INDEP "field V53.m_pStringHeap (fldOffset=0x0)" ;* V95 tmp71 [V95 ] ( 0, 0 ) int -> zero-ref V53.m_StringHeapByteLength(offs=0x08) P-INDEP "field V53.m_StringHeapByteLength (fldOffset=0x8)" ; V96 tmp72 [V96,T77] ( 2, 2 ) long -> rcx V55.m_pStringHeap(offs=0x00) P-INDEP "field V55.m_pStringHeap (fldOffset=0x0)" ;* V97 tmp73 [V97 ] ( 0, 0 ) int -> zero-ref V55.m_StringHeapByteLength(offs=0x08) P-INDEP "field V55.m_StringHeapByteLength (fldOffset=0x8)" ; V98 tmp74 [V98,T23] ( 3, 12 ) ref -> rcx "arr expr" ; V99 tmp75 [V99,T41] ( 2, 8 ) long -> rcx "Cast away GC" ; V100 tmp76 [V100 ] ( 2, 8 ) struct (16) [rbp-0xE0] do-not-enreg[XSB] addr-exposed ptr "by-value struct argument" ; V101 tmp77 [V101,T24] ( 3, 12 ) byref -> r11 stack-byref "BlockOp address local" ; V102 tmp78 [V102,T04] ( 3, 48 ) ref -> rdx "arr expr" ; V103 tmp79 [V103,T15] ( 2, 32 ) ref -> rdx "argument with side effect" ; V104 tmp80 [V104,T05] ( 3, 48 ) ref -> rcx "arr expr" ; V105 tmp81 [V105,T02] ( 2, 64 ) ref -> rdx "argument with side effect" ; V106 GsCookie [V106 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V107 tmp83 [V107,T57] ( 3, 5 ) ref -> [rbp-0x140] this ptr "shadowVar" ; V108 tmp84 [V108,T19] ( 10, 16 ) byref -> [rbp-0x148] ptr "shadowVar" ; V109 tmp85 [V109,T25] ( 9, 11.50) ref -> [rbp-0x150] ptr "shadowVar" ; V110 tmp86 [V110,T42] ( 4, 7 ) ref -> [rbp-0x158] ptr "shadowVar" ; V111 tmp87 [V111,T29] ( 5, 9 ) ref -> [rbp-0x160] ptr "shadowVar" ; V112 tmp88 [V112,T06] ( 6, 45 ) byref -> [rbp-0x168] ptr "shadowVar" ; V113 cse0 [V113,T09] ( 3, 40 ) int -> rdx "CSE - aggressive" ; V114 cse1 [V114,T44] ( 7, 6.48) int -> r8 "CSE - conservative" ; V115 cse2 [V115,T08] ( 3, 40 ) ref -> rcx "CSE - aggressive" ; ; Lcl frame size = 424 G_M50156_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 424 lea rbp, [rsp+1E0H] xor rbx, rbx mov qword ptr [rbp-C8H], rbx vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-C0H], xmm4 vmovdqa xmmword ptr [rbp-B0H], xmm4 mov rbx, -96 vmovdqa xmmword ptr [rbp+rbx-40H], xmm4 vmovdqa xmmword ptr [rbp+rbx-30H], xmm4 vmovdqa xmmword ptr [rbp+rbx-20H], xmm4 add rbx, 48 jne SHORT -5 instr mov rbx, 0xD1FFAB1E mov qword ptr [rbp-40H], rbx mov rdi, rcx mov rsi, rdx mov rbx, r8 mov r14, r9 ;; bbWeight=1 PerfScore 19.08 G_M50156_IG02: lea rcx, [rbp-1A8H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-188H], rcx mov rcx, rbp mov qword ptr [rbp-178H], rcx mov r12, bword ptr [rbp+38H] mov bword ptr [rbp-168H], r12 mov r13, gword ptr [rbp+30H] mov gword ptr [rbp-160H], r13 mov gword ptr [rbp-158H], r14 mov gword ptr [rbp-140H], rdi mov rcx, rbx call RuntimeTypeHandle:GetToken(RuntimeType):int mov dword ptr [rbp-94H], eax test eax, 0xD1FFAB1E je G_M50156_IG62 ;; bbWeight=1 PerfScore 14.00 G_M50156_IG03: mov rcx, rbx call RuntimeTypeHandle:_GetMetadataImport(RuntimeType):long mov rcx, rax lea r9, [rbp-90H] mov r8d, dword ptr [rbp-94H] mov edx, 0xD1FFAB1E call MetadataImport:_Enum(long,int,int,byref) mov rcx, rbx call RuntimeTypeHandle:GetModule(RuntimeType):RuntimeModule mov gword ptr [rbp-E8H], rax mov gword ptr [rbp-150H], rbx mov rcx, rbx call RuntimeTypeHandle:GetNumVirtuals(RuntimeType):int mov dword ptr [rbp-98H], eax xor r9d, r9d cmp dword ptr [rbp-88H], 0 jle G_M50156_IG62 ;; bbWeight=0.50 PerfScore 6.00 G_M50156_IG04: cmp gword ptr [rbp-90H], 0 je SHORT G_M50156_IG06 ;; bbWeight=4 PerfScore 8.00 G_M50156_IG05: mov rcx, gword ptr [rbp-90H] cmp r9d, dword ptr [rcx+8] jae G_M50156_IG68 movsxd rdx, r9d mov r10d, dword ptr [rcx+4*rdx+16] jmp SHORT G_M50156_IG07 ;; bbWeight=2 PerfScore 16.50 G_M50156_IG06: lea r10, bword ptr [rbp-80H] mov bword ptr [rbp-C0H], r10 mov rcx, bword ptr [rbp-C0H] mov dword ptr [rbp-9CH], r9d movsxd rdx, r9d mov r10d, dword ptr [rcx+4*rdx] mov r9d, dword ptr [rbp-9CH] ;; bbWeight=2 PerfScore 13.50 G_M50156_IG07: xor rcx, rcx mov bword ptr [rbp-C0H], rcx cmp dword ptr [rsi+16], 1 je G_M50156_IG18 ;; bbWeight=4 PerfScore 17.00 G_M50156_IG08: cmp dword ptr [rsi+16], 2 sete cl movzx rcx, cl test ecx, ecx mov dword ptr [rbp-9CH], r9d je G_M50156_IG17 ;; bbWeight=2 PerfScore 11.00 G_M50156_IG09: mov r11, gword ptr [rbp-E8H] mov gword ptr [rbp-C8H], r11 mov bword ptr [rbp-148H], rsi mov r8d, dword ptr [rsi+20] lea rcx, [rbp-C8H] mov rdx, gword ptr [rbp-C8H] mov rdx, qword ptr [rdx+32] lea r11, bword ptr [rbp-E0H] mov qword ptr [r11], rcx mov qword ptr [r11+8], rdx lea rcx, bword ptr [rbp-E0H] mov dword ptr [rbp-A0H], r10d mov edx, r10d mov r11, 0xD1FFAB1E mov qword ptr [rbp-198H], r11 lea r11, G_M50156_IG12 mov qword ptr [rbp-180H], r11 lea r11, bword ptr [rbp-1A8H] mov qword ptr [r15+16], r11 mov byte ptr [r15+12], 0 ;; bbWeight=2 PerfScore 37.00 G_M50156_IG10: mov r11, 0xD1FFAB1E ;; bbWeight=2 PerfScore 0.50 G_M50156_IG11: call qword ptr [r11]ModuleHandle:_ContainsPropertyMatchingHash(QCallModule,int,int):int ;; bbWeight=2 PerfScore 6.00 G_M50156_IG12: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M50156_IG13 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=2 PerfScore 15.00 G_M50156_IG13: mov rcx, bword ptr [rbp-1A0H] mov qword ptr [r15+16], rcx test eax, eax je SHORT G_M50156_IG16 mov rbx, gword ptr [rbp-150H] cmp dword ptr [rbx], ebx mov rcx, rbx call RuntimeTypeHandle:GetModule(RuntimeType):RuntimeModule cmp dword ptr [rax], eax mov rcx, rax call ModuleHandle:_GetMetadataImport(RuntimeModule):long mov rcx, rax lea r8, [rbp-D0H] mov edx, dword ptr [rbp-A0H] call MetadataImport:_GetName(long,int,long) mov rsi, qword ptr [rbp-D0H] test rsi, rsi je SHORT G_M50156_IG19 ;; bbWeight=2 PerfScore 31.50 G_M50156_IG14: mov rcx, rsi xor edx, edx mov r8d, 0xD1FFAB1E call SpanHelpers:IndexOf(byref,ubyte,int):int test eax, eax jl G_M50156_IG66 ;; bbWeight=1 PerfScore 3.00 G_M50156_IG15: jmp SHORT G_M50156_IG20 ;; bbWeight=1 PerfScore 2.00 G_M50156_IG16: mov rbx, gword ptr [rbp-150H] mov rsi, bword ptr [rbp-148H] mov rdi, gword ptr [rbp-140H] mov r12, bword ptr [rbp-168H] mov r13, gword ptr [rbp-160H] mov r14, gword ptr [rbp-158H] jmp G_M50156_IG61 ;; bbWeight=1 PerfScore 8.00 G_M50156_IG17: mov dword ptr [rbp-A0H], r10d mov rbx, gword ptr [rbp-150H] jmp SHORT G_M50156_IG29 ;; bbWeight=1 PerfScore 4.00 G_M50156_IG18: mov dword ptr [rbp-9CH], r9d jmp G_M50156_IG09 ;; bbWeight=2 PerfScore 6.00 G_M50156_IG19: xor eax, eax ;; bbWeight=1 PerfScore 0.25 G_M50156_IG20: mov rcx, rsi mov esi, 1 mov rdi, bword ptr [rbp-148H] cmp dword ptr [rdi+16], 1 jne SHORT G_M50156_IG24 ;; bbWeight=2 PerfScore 9.00 G_M50156_IG21: mov r8d, dword ptr [rdi+8] cmp eax, r8d je SHORT G_M50156_IG22 xor esi, esi jmp SHORT G_M50156_IG23 ;; bbWeight=1 PerfScore 5.50 G_M50156_IG22: mov r8d, r8d mov rdx, qword ptr [rdi] call SpanHelpers:SequenceEqual(byref,byref,long):bool mov esi, eax ;; bbWeight=1 PerfScore 3.50 G_M50156_IG23: jmp SHORT G_M50156_IG28 ;; bbWeight=1 PerfScore 2.00 G_M50156_IG24: cmp dword ptr [rdi+16], 2 jne SHORT G_M50156_IG28 mov r8d, dword ptr [rdi+8] cmp eax, r8d je SHORT G_M50156_IG25 xor esi, esi jmp SHORT G_M50156_IG28 ;; bbWeight=1 PerfScore 8.50 G_M50156_IG25: test r8d, r8d je SHORT G_M50156_IG27 ;; bbWeight=0.48 PerfScore 0.60 G_M50156_IG26: mov rdx, qword ptr [rdi] call MdUtf8String:EqualsCaseInsensitive(long,long,int):bool mov esi, eax jmp SHORT G_M50156_IG28 ;; bbWeight=1 PerfScore 5.25 G_M50156_IG27: mov esi, 1 ;; bbWeight=1 PerfScore 0.25 G_M50156_IG28: test esi, esi mov rsi, rdi je G_M50156_IG32 ;; bbWeight=2 PerfScore 3.00 G_M50156_IG29: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST lea r9, [rbp-A8H] mov qword ptr [rsp+20H], r9 mov rdi, gword ptr [rbp-140H] mov r9, gword ptr [rdi+16] mov gword ptr [rbp-108H], rax mov rcx, rax mov edx, dword ptr [rbp-A0H] mov r8, rbx call RuntimePropertyInfo:.ctor(int,RuntimeType,RuntimeTypeCache,byref):this mov rax, gword ptr [rbp-108H] mov r13, gword ptr [rbp-160H] test r13, r13 je SHORT G_M50156_IG31 mov rcx, gword ptr [rdi+16] cmp rbx, gword ptr [rcx+8] setne cl movzx rcx, cl mov edx, dword ptr [rbp-A8H] movzx rdx, dl test ecx, edx jne SHORT G_M50156_IG30 mov gword ptr [rbp-F0H], rax mov rcx, gword ptr [rax+24] xor edx, edx call Associates:IncludeAccessor(MethodInfo,bool):bool test eax, eax jne SHORT G_M50156_IG33 xor rdx, rdx jmp SHORT G_M50156_IG34 ;; bbWeight=2 PerfScore 56.00 G_M50156_IG30: mov r12, bword ptr [rbp-168H] mov r14, gword ptr [rbp-158H] jmp G_M50156_IG61 ;; bbWeight=1 PerfScore 4.00 G_M50156_IG31: mov gword ptr [rbp-F0H], rax mov r12, bword ptr [rbp-168H] mov r14, gword ptr [rbp-158H] jmp G_M50156_IG60 ;; bbWeight=1 PerfScore 5.00 G_M50156_IG32: mov rdi, gword ptr [rbp-140H] mov r12, bword ptr [rbp-168H] mov r13, gword ptr [rbp-160H] mov r14, gword ptr [rbp-158H] jmp G_M50156_IG61 ;; bbWeight=1 PerfScore 6.00 G_M50156_IG33: mov rax, gword ptr [rbp-F0H] mov rdx, gword ptr [rax+24] mov gword ptr [rbp-F0H], rax ;; bbWeight=2 PerfScore 8.00 G_M50156_IG34: test rdx, rdx jne SHORT G_M50156_IG35 mov rax, gword ptr [rbp-F0H] mov rcx, gword ptr [rax+32] xor edx, edx call Associates:IncludeAccessor(MethodInfo,bool):bool test eax, eax jne SHORT G_M50156_IG36 xor rdx, rdx mov rax, gword ptr [rbp-F0H] jmp SHORT G_M50156_IG37 ;; bbWeight=2 PerfScore 20.00 G_M50156_IG35: mov rax, gword ptr [rbp-F0H] jmp SHORT G_M50156_IG37 ;; bbWeight=1 PerfScore 3.00 G_M50156_IG36: mov rax, gword ptr [rbp-F0H] mov rdx, gword ptr [rax+32] mov rax, gword ptr [rbp-F0H] ;; bbWeight=2 PerfScore 8.00 G_M50156_IG37: test rdx, rdx je SHORT G_M50156_IG40 mov r8, rdx mov rcx, 0xD1FFAB1E cmp qword ptr [r8], rcx mov gword ptr [rbp-F0H], rax je SHORT G_M50156_IG39 ;; bbWeight=2 PerfScore 11.50 G_M50156_IG38: call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov r8, rax ;; bbWeight=0.48 PerfScore 0.60 G_M50156_IG39: mov gword ptr [rbp-118H], r8 mov rcx, qword ptr [r8+72] call RuntimeMethodHandle:GetSlot(long):int cmp eax, dword ptr [rbp-98H] jge G_M50156_IG42 cmp eax, dword ptr [r13+8] jae G_M50156_IG68 movsxd rcx, eax cmp byte ptr [r13+rcx+16], 0 jne SHORT G_M50156_IG41 movsxd rcx, eax mov byte ptr [r13+rcx+16], 1 mov rax, gword ptr [rbp-F0H] ;; bbWeight=2 PerfScore 29.00 G_M50156_IG40: mov r14, gword ptr [rbp-158H] test r14, r14 je G_M50156_IG53 mov gword ptr [rbp-F0H], rax mov rcx, rax mov r8, 0xD1FFAB1E call gword ptr [r8]RuntimePropertyInfo:get_Name():String:this mov rcx, r14 mov gword ptr [rbp-F8H], rax mov rdx, rax call Dictionary`2:FindValue(__Canon):byref:this test rax, rax je SHORT G_M50156_IG43 mov rax, gword ptr [rax] mov rcx, rax mov eax, 1 jmp SHORT G_M50156_IG44 ;; bbWeight=2 PerfScore 30.00 G_M50156_IG41: mov r12, bword ptr [rbp-168H] mov r14, gword ptr [rbp-158H] jmp G_M50156_IG61 ;; bbWeight=1 PerfScore 4.00 G_M50156_IG42: mov rax, gword ptr [rbp-F0H] jmp SHORT G_M50156_IG40 ;; bbWeight=1 PerfScore 3.00 G_M50156_IG43: xor rcx, rcx xor eax, eax ;; bbWeight=2 PerfScore 1.00 G_M50156_IG44: test eax, eax jne SHORT G_M50156_IG45 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-110H], rax mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rcx, gword ptr [rbp-110H] lea rcx, bword ptr [rcx+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp-110H] mov gword ptr [rbp-100H], rcx mov rcx, r14 mov rdx, gword ptr [rbp-F8H] mov r8, gword ptr [rbp-100H] mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this mov rcx, gword ptr [rbp-100H] ;; bbWeight=2 PerfScore 28.50 G_M50156_IG45: xor eax, eax jmp SHORT G_M50156_IG49 ;; bbWeight=2 PerfScore 4.50 G_M50156_IG46: mov gword ptr [rbp-100H], rcx mov r8, rcx cmp eax, edx jae G_M50156_IG67 ;; bbWeight=8 PerfScore 20.00 G_M50156_IG47: mov rdx, gword ptr [r8+8] cmp eax, dword ptr [rdx+8] jae G_M50156_IG68 mov dword ptr [rbp-ACH], eax movsxd r8, eax mov rdx, gword ptr [rdx+8*r8+16] mov gword ptr [rbp-120H], rdx mov rcx, gword ptr [rbp-F0H] call RuntimePropertyInfo:get_Signature():Signature:this mov gword ptr [rbp-128H], rax mov rcx, gword ptr [rbp-120H] cmp dword ptr [rcx], ecx call RuntimePropertyInfo:get_Signature():Signature:this mov rdx, rax mov rcx, gword ptr [rbp-128H] call Signature:CompareSig(Signature,Signature):bool test eax, eax jne SHORT G_M50156_IG51 ;; bbWeight=8 PerfScore 158.00 G_M50156_IG48: mov eax, dword ptr [rbp-ACH] inc eax mov rcx, gword ptr [rbp-100H] ;; bbWeight=8 PerfScore 18.00 G_M50156_IG49: mov edx, dword ptr [rcx+16] cmp eax, edx jl SHORT G_M50156_IG46 ;; bbWeight=16 PerfScore 52.00 G_M50156_IG50: inc dword ptr [rcx+20] mov rdx, gword ptr [rcx+8] mov r8d, dword ptr [rcx+16] cmp dword ptr [rdx+8], r8d jbe SHORT G_M50156_IG52 lea eax, [r8+1] mov dword ptr [rcx+16], eax mov rcx, rdx mov edx, r8d mov r8, gword ptr [rbp-F0H] call CORINFO_HELP_ARRADDR_ST mov r12, bword ptr [rbp-168H] jmp G_M50156_IG60 ;; bbWeight=2 PerfScore 38.00 G_M50156_IG51: mov r12, bword ptr [rbp-168H] jmp G_M50156_IG61 ;; bbWeight=4 PerfScore 12.00 G_M50156_IG52: mov rdx, gword ptr [rbp-F0H] call List`1:AddWithResize(__Canon):this mov r12, bword ptr [rbp-168H] jmp G_M50156_IG60 ;; bbWeight=2 PerfScore 10.00 G_M50156_IG53: xor r8d, r8d mov r12, bword ptr [rbp-168H] cmp dword ptr [r12+16], 0 jle SHORT G_M50156_IG56 ;; bbWeight=2 PerfScore 8.50 G_M50156_IG54: mov rcx, gword ptr [r12] test rcx, rcx jne SHORT G_M50156_IG57 ;; bbWeight=16 PerfScore 52.00 G_M50156_IG55: mov r9, gword ptr [r12+8] mov dword ptr [rbp-B0H], r8d mov gword ptr [rbp-130H], r9 jmp SHORT G_M50156_IG58 ;; bbWeight=8 PerfScore 48.00 G_M50156_IG56: mov gword ptr [rbp-F0H], rax jmp SHORT G_M50156_IG60 ;; bbWeight=1 PerfScore 3.00 G_M50156_IG57: cmp r8d, dword ptr [rcx+8] jae G_M50156_IG68 mov dword ptr [rbp-B0H], r8d movsxd r9, r8d mov r9, gword ptr [rcx+8*r9+16] mov gword ptr [rbp-130H], r9 ;; bbWeight=8 PerfScore 58.00 G_M50156_IG58: mov gword ptr [rbp-F0H], rax mov rcx, rax call RuntimePropertyInfo:get_Signature():Signature:this mov gword ptr [rbp-138H], rax mov rcx, gword ptr [rbp-130H] cmp dword ptr [rcx], ecx call RuntimePropertyInfo:get_Signature():Signature:this mov rdx, rax mov rcx, gword ptr [rbp-138H] call Signature:CompareSig(Signature,Signature):bool test eax, eax jne SHORT G_M50156_IG61 ;; bbWeight=16 PerfScore 172.00 G_M50156_IG59: mov r8d, dword ptr [rbp-B0H] inc r8d cmp r8d, dword ptr [r12+16] jl SHORT G_M50156_IG65 ;; bbWeight=16 PerfScore 68.00 G_M50156_IG60: mov rcx, r12 mov r8, gword ptr [rbp-F0H] mov rdx, 0xD1FFAB1E call ListBuilder`1:Add(__Canon):this ;; bbWeight=2 PerfScore 5.00 G_M50156_IG61: mov r9d, dword ptr [rbp-9CH] inc r9d cmp r9d, dword ptr [rbp-88H] mov bword ptr [rbp-168H], r12 mov gword ptr [rbp-150H], rbx mov gword ptr [rbp-160H], r13 mov gword ptr [rbp-158H], r14 mov gword ptr [rbp-140H], rdi jl G_M50156_IG04 ;; bbWeight=4 PerfScore 33.00 G_M50156_IG62: mov rcx, 0xD1FFAB1E cmp qword ptr [rbp-40H], rcx je SHORT G_M50156_IG63 call CORINFO_HELP_FAIL_FAST ;; bbWeight=1 PerfScore 3.25 G_M50156_IG63: nop ;; bbWeight=1 PerfScore 0.25 G_M50156_IG64: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M50156_IG65: mov rax, gword ptr [rbp-F0H] jmp G_M50156_IG54 ;; bbWeight=8 PerfScore 24.00 G_M50156_IG66: call String:ThrowMustBeNullTerminatedString() int3 ;; bbWeight=0 PerfScore 0.00 G_M50156_IG67: call ThrowHelper:ThrowArgumentOutOfRange_IndexException() int3 ;; bbWeight=0 PerfScore 0.00 G_M50156_IG68: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 2019, prolog size 104, PerfScore 1469.03, (MethodHash=25243c13) for method MemberInfoCache`1:PopulateProperties(Filter,RuntimeType,Dictionary`2,ref,byref):this ; ============================================================ ; Assembly listing for method RuntimePropertyInfo:.ctor(int,RuntimeType,RuntimeTypeCache,byref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 11, 11 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 5, 5 ) int -> rbx ; V02 arg2 [V02,T01] ( 6, 6 ) ref -> rdi class-hnd ; V03 arg3 [V03,T03] ( 4, 4 ) ref -> r14 class-hnd ; V04 arg4 [V04,T10] ( 1, 1 ) byref -> [rbp+0x30] ; V05 loc0 [V05 ] ( 4, 4 ) struct (16) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V06 loc1 [V06 ] ( 1, 1 ) struct (16) [rbp-0x50] do-not-enreg[XS] addr-exposed ld-addr-op ; V07 loc2 [V07 ] ( 1, 1 ) ref -> [rbp-0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V08 loc3 [V08 ] ( 1, 1 ) ref -> [rbp-0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V09 loc4 [V09 ] ( 1, 1 ) ref -> [rbp-0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (96) [rsp+0x00] "OutgoingArgSpace" ;* V11 tmp1 [V11 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ; V12 tmp2 [V12,T04] ( 3, 6 ) ref -> rax class-hnd "Inlining Arg" ; V13 tmp3 [V13 ] ( 2, 2 ) long -> [rbp-0x70] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V14 tmp4 [V14 ] ( 2, 2 ) int -> [rbp-0x78] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V15 tmp5 [V15,T06] ( 2, 4 ) byref -> r15 "Inlining Arg" ; V16 tmp6 [V16,T07] ( 2, 4 ) byref -> r12 "Inlining Arg" ; V17 tmp7 [V17 ] ( 2, 2 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed V05.m_keepalive(offs=0x00) P-DEP "field V05.m_keepalive (fldOffset=0x0)" ; V18 tmp8 [V18 ] ( 3, 3 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed V05.m_metadataImport2(offs=0x08) P-DEP "field V05.m_metadataImport2 (fldOffset=0x8)" ; V19 tmp9 [V19 ] ( 1, 1 ) int -> [rbp-0x50] do-not-enreg[X] addr-exposed V06.m_length(offs=0x00) P-DEP "field V06.m_length (fldOffset=0x0)" ; V20 tmp10 [V20 ] ( 1, 1 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed V06.m_constArray(offs=0x08) P-DEP "field V06.m_constArray (fldOffset=0x8)" ; V21 tmp11 [V21,T08] ( 2, 2 ) ref -> rcx V11.m_keepalive(offs=0x00) P-INDEP "field V11.m_keepalive (fldOffset=0x0)" ; V22 tmp12 [V22,T09] ( 2, 2 ) long -> r9 V11.m_metadataImport2(offs=0x08) P-INDEP "field V11.m_metadataImport2 (fldOffset=0x8)" ; V23 tmp13 [V23 ] ( 2, 4 ) struct (16) [rbp-0x88] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V24 tmp14 [V24,T05] ( 3, 6 ) byref -> rdx stack-byref "BlockOp address local" ; ; Lcl frame size = 192 G_M3701_IG01: push rbp push r15 push r14 push r12 push rdi push rsi push rbx sub rsp, 192 lea rbp, [rsp+F0H] xor rax, rax mov qword ptr [rbp-88H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-80H], xmm4 vmovdqa xmmword ptr [rbp-70H], xmm4 vmovdqa xmmword ptr [rbp-60H], xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 vmovdqa xmmword ptr [rbp-40H], xmm4 mov rsi, rcx mov ebx, edx mov rdi, r8 mov r14, r9 ;; bbWeight=1 PerfScore 15.33 G_M3701_IG02: cmp dword ptr [rdi], edi mov rcx, rdi call RuntimeTypeHandle:GetModule(RuntimeType):RuntimeModule cmp dword ptr [rax], eax lea rcx, bword ptr [rbp-40H] mov rdx, rax call ModuleHandle:GetMetadataImport(RuntimeModule):MetadataImport mov dword ptr [rsi+80], ebx lea rcx, bword ptr [rsi+16] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+48] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF lea r15, bword ptr [rsi+72] lea r12, bword ptr [rsi+84] lea r9, bword ptr [rbp-50H] mov bword ptr [rsp+20H], r9 lea r9, [rbp-78H] lea r8, [rbp-70H] mov rcx, qword ptr [rbp-38H] mov edx, ebx call MetadataImport:_GetPropertyProps(long,int,long,byref,byref) mov rcx, qword ptr [rbp-70H] mov qword ptr [r15], rcx mov ecx, dword ptr [rbp-78H] mov dword ptr [r12], ecx mov rcx, gword ptr [rbp-40H] mov r9, qword ptr [rbp-38H] lea rdx, bword ptr [rbp-88H] mov gword ptr [rdx], rcx mov qword ptr [rdx+8], r9 lea rcx, [rbp-58H] mov qword ptr [rsp+20H], rcx lea rcx, [rbp-60H] mov qword ptr [rsp+28H], rcx lea rcx, [rbp-68H] mov qword ptr [rsp+30H], rcx lea rcx, bword ptr [rsi+24] mov bword ptr [rsp+38H], rcx lea rcx, bword ptr [rsi+32] mov bword ptr [rsp+40H], rcx lea rcx, bword ptr [rsi+40] mov bword ptr [rsp+48H], rcx mov r15, bword ptr [rbp+30H] mov bword ptr [rsp+50H], r15 add rsi, 88 mov bword ptr [rsp+58H], rsi lea rcx, bword ptr [rbp-88H] mov r9, gword ptr [r14+8] mov edx, ebx mov r8, rdi call Associates:AssignAssociates(MetadataImport,int,RuntimeType,RuntimeType,byref,byref,byref,byref,byref,byref,byref,byref) nop ;; bbWeight=1 PerfScore 42.25 G_M3701_IG03: lea rsp, [rbp-30H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.00 ; Total bytes of code 306, prolog size 63, PerfScore 93.78, (MethodHash=267df18a) for method RuntimePropertyInfo:.ctor(int,RuntimeType,RuntimeTypeCache,byref):this ; ============================================================ ; Assembly listing for method Associates:AssignAssociates(MetadataImport,int,RuntimeType,RuntimeType,byref,byref,byref,byref,byref,byref,byref,byref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T17] ( 3, 6 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T29] ( 3, 3 ) int -> rsi ; V02 arg2 [V02,T27] ( 3, 3 ) ref -> r8 class-hnd ; V03 arg3 [V03,T28] ( 3, 3 ) ref -> r9 class-hnd ; V04 arg4 [V04,T52] ( 1, 1 ) byref -> [rsp+0x140] ptr ; V05 arg5 [V05,T53] ( 1, 1 ) byref -> [rsp+0x148] ptr ; V06 arg6 [V06,T54] ( 1, 1 ) byref -> [rsp+0x150] ptr ; V07 arg7 [V07,T55] ( 1, 1 ) byref -> [rsp+0x158] ptr ; V08 arg8 [V08,T56] ( 1, 1 ) byref -> [rsp+0x160] ptr ; V09 arg9 [V09,T57] ( 1, 1 ) byref -> [rsp+0x168] ptr ; V10 arg10 [V10,T58] ( 1, 1 ) byref -> [rsp+0x170] ptr ; V11 arg11 [V11,T59] ( 1, 1 ) byref -> [rsp+0x178] ptr ; V12 loc0 [V12,T01] ( 14, 24 ) int -> [rsp+0xCC] ; V13 loc1 [V13,T49] ( 2, 2 ) bool -> [rsp+0xC8] ptr ; V14 loc2 [V14,T06] ( 11, 18.50) ref -> [rsp+0xA0] class-hnd ptr ; V15 loc3 [V15 ] ( 8, 18 ) struct (80) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ptr unsafe-buffer ; V16 loc4 [V16,T14] ( 4, 8 ) int -> rsi ; V17 loc5 [V17,T50] ( 2, 2 ) bool -> rcx ; V18 loc6 [V18,T51] ( 2, 2 ) bool -> r8 ;* V19 loc7 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr ; V20 loc8 [V20,T07] ( 5, 17 ) int -> [rsp+0xC4] ptr ; V21 loc9 [V21,T20] ( 2, 8 ) int -> r8 ; V22 loc10 [V22,T09] ( 6, 14 ) int -> [rsp+0xC0] ptr ; V23 loc11 [V23,T02] ( 10, 24 ) ref -> [rsp+0x98] class-hnd ptr ; V24 loc12 [V24,T15] ( 4, 8 ) int -> rdx ; V25 loc13 [V25,T36] ( 2, 4 ) bool -> r8 ; V26 loc14 [V26,T37] ( 2, 4 ) bool -> r9 ; V27 loc15 [V27,T38] ( 2, 4 ) int -> rcx ; V28 loc16 [V28,T39] ( 2, 4 ) bool -> rcx ; V29 loc17 [V29,T40] ( 2, 4 ) bool -> rdx ; V30 tmp0 [V30 ] ( 1, 1 ) int -> [rsp+0xBC] do-not-enreg[X] addr-exposed "GSCookie dummy" ; V31 OutArgs [V31 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V32 tmp2 [V32,T08] ( 3, 16.96) ref -> rax "CASTCLASS eval op1" ; V33 tmp3 [V33,T30] ( 3, 4.96) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V34 tmp4 [V34,T00] ( 5, 26.96) ref -> registers class-hnd ptr "spilling QMark2" ; V35 tmp5 [V35,T10] ( 3, 12 ) ref -> [rsp+0x90] class-hnd exact ptr "NewObj constructor temp" ; V36 tmp6 [V36,T42] ( 3, 2 ) byref -> rbp ; V37 tmp7 [V37,T43] ( 3, 2 ) byref -> rbp ; V38 tmp8 [V38,T44] ( 3, 2 ) ref -> rdx ; V39 tmp9 [V39,T18] ( 3, 8 ) int -> r8 "Inline return value spill temp" ; V40 tmp10 [V40 ] ( 3, 8 ) byref -> [rsp+0xB0] must-init pinned ptr "Inline stloc first use temp" ;* V41 tmp11 [V41 ] ( 0, 0 ) long -> zero-ref ptr "Inline stloc first use temp" ; V42 tmp12 [V42,T04] ( 4, 20 ) int -> rdx "Inlining Arg" ; V43 tmp13 [V43,T19] ( 3, 8 ) int -> r9 "Inline return value spill temp" ; V44 tmp14 [V44 ] ( 3, 8 ) byref -> [rsp+0xA8] must-init pinned ptr "Inline stloc first use temp" ;* V45 tmp15 [V45 ] ( 0, 0 ) long -> zero-ref ptr "Inline stloc first use temp" ; V46 tmp16 [V46,T05] ( 4, 20 ) int -> rcx "Inlining Arg" ;* V47 tmp17 [V47,T41] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V48 tmp18 [V48,T23] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V49 tmp19 [V49,T16] ( 4, 8 ) int -> r8 "Inline stloc first use temp" ; V50 tmp20 [V50,T11] ( 3, 12 ) ref -> r8 "arr expr" ; V51 tmp21 [V51,T21] ( 2, 8 ) long -> r8 "Cast away GC" ; V52 tmp22 [V52,T12] ( 3, 12 ) ref -> rdx "arr expr" ; V53 tmp23 [V53,T22] ( 2, 8 ) long -> rdx "Cast away GC" ; V54 GsCookie [V54 ] ( 1, 1 ) long -> [rsp+0xD0] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V55 tmp25 [V55,T45] ( 2, 2 ) byref -> [rsp+0x88] ptr "shadowVar" ; V56 tmp26 [V56,T24] ( 3, 6 ) ref -> [rsp+0x80] ptr "shadowVar" ; V57 tmp27 [V57,T03] ( 8, 23 ) ref -> [rsp+0x78] ptr "shadowVar" ; V58 tmp28 [V58,T31] ( 3, 4 ) byref -> [rsp+0x70] ptr "shadowVar" ; V59 tmp29 [V59,T32] ( 3, 4 ) byref -> r13 "shadowVar" ; V60 tmp30 [V60,T33] ( 3, 4 ) byref -> r12 "shadowVar" ; V61 tmp31 [V61,T34] ( 3, 4 ) byref -> r15 "shadowVar" ; V62 tmp32 [V62,T35] ( 3, 4 ) byref -> r14 "shadowVar" ; V63 tmp33 [V63,T46] ( 2, 2 ) byref -> rbp "shadowVar" ; V64 tmp34 [V64,T47] ( 2, 2 ) byref -> rbx "shadowVar" ; V65 tmp35 [V65,T48] ( 2, 2 ) byref -> rdi "shadowVar" ; V66 cse0 [V66,T13] ( 3, 12 ) int -> rcx "CSE - moderate" ; V67 cse1 [V67,T25] ( 3, 6 ) int -> rcx "CSE - moderate" ; V68 rat0 [V68,T26] ( 3, 6 ) int -> rsi "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 216 G_M2415_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 216 vxorps xmm4, xmm4 mov rax, -144 vmovdqa xmmword ptr [rsp+rax+B0H], xmm4 vmovdqa xmmword ptr [rsp+rax+C0H], xmm4 vmovdqa xmmword ptr [rsp+rax+D0H], xmm4 add rax, 48 jne SHORT -5 instr mov qword ptr [rsp+B0H], rax mov rax, 0xD1FFAB1E mov qword ptr [rsp+D0H], rax mov esi, edx ;; bbWeight=1 PerfScore 15.58 G_M2415_IG02: mov rdi, bword ptr [rsp+178H] mov rbx, bword ptr [rsp+170H] mov rbp, bword ptr [rsp+168H] mov r14, bword ptr [rsp+160H] mov r15, bword ptr [rsp+158H] mov r12, bword ptr [rsp+150H] mov r13, bword ptr [rsp+148H] mov rax, bword ptr [rsp+140H] mov rdx, r9 mov gword ptr [rsp+80H], r8 mov bword ptr [rsp+88H], rcx ;; bbWeight=1 PerfScore 10.25 G_M2415_IG03: xor rcx, rcx mov gword ptr [r14], rcx mov gword ptr [r15], rcx mov gword ptr [r12], rcx mov gword ptr [r13], rcx mov bword ptr [rsp+70H], rax mov gword ptr [rax], rcx mov dword ptr [rsp+CCH], 15 mov gword ptr [rsp+78H], rdx mov rcx, rdx call RuntimeTypeHandle:IsGenericVariable(RuntimeType):bool test eax, eax je SHORT G_M2415_IG08 ;; bbWeight=1 PerfScore 10.75 G_M2415_IG04: mov rax, gword ptr [rsp+78H] cmp dword ptr [rax], eax mov rcx, rax call RuntimeType:GetBaseType():RuntimeType:this mov r8, rax test r8, r8 je SHORT G_M2415_IG07 ;; bbWeight=4 PerfScore 23.00 G_M2415_IG05: mov rcx, 0xD1FFAB1E cmp qword ptr [r8], rcx je SHORT G_M2415_IG07 ;; bbWeight=1 PerfScore 3.25 G_M2415_IG06: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov r8, rax ;; bbWeight=0.48 PerfScore 0.72 G_M2415_IG07: mov rax, r8 mov gword ptr [rsp+78H], rax mov rcx, rax call RuntimeTypeHandle:IsGenericVariable(RuntimeType):bool test eax, eax jne SHORT G_M2415_IG04 ;; bbWeight=4 PerfScore 15.00 G_M2415_IG08: mov r10, gword ptr [rsp+78H] cmp gword ptr [rsp+80H], r10 setne r11b movzx r11, r11b mov dword ptr [rsp+C8H], r11d xor rdx, rdx mov gword ptr [rsp+A0H], rdx mov rcx, bword ptr [rsp+88H] mov rcx, qword ptr [rcx+8] lea r9, [rsp+20H] mov r8d, esi mov edx, 0xD1FFAB1E call MetadataImport:_Enum(long,int,int,byref) mov esi, dword ptr [rsp+28H] mov eax, esi shr eax, 31 add esi, eax sar esi, 1 xor eax, eax test esi, esi jle G_M2415_IG30 ;; bbWeight=1 PerfScore 16.00 G_M2415_IG09: mov dword ptr [rsp+C4H], eax lea ecx, [rax+rax] mov edx, ecx cmp gword ptr [rsp+20H], 0 je SHORT G_M2415_IG11 ;; bbWeight=4 PerfScore 15.00 G_M2415_IG10: mov r8, gword ptr [rsp+20H] cmp edx, dword ptr [r8+8] jae G_M2415_IG36 movsxd rdx, edx mov r8d, dword ptr [r8+4*rdx+16] jmp SHORT G_M2415_IG12 ;; bbWeight=2 PerfScore 16.50 G_M2415_IG11: lea r8, bword ptr [rsp+30H] mov bword ptr [rsp+B0H], r8 mov r8, bword ptr [rsp+B0H] movsxd rdx, edx mov r8d, dword ptr [r8+4*rdx] ;; bbWeight=2 PerfScore 9.50 G_M2415_IG12: xor rdx, rdx mov bword ptr [rsp+B0H], rdx inc ecx cmp gword ptr [rsp+20H], 0 je SHORT G_M2415_IG14 ;; bbWeight=4 PerfScore 14.00 G_M2415_IG13: mov rdx, gword ptr [rsp+20H] cmp ecx, dword ptr [rdx+8] jae G_M2415_IG36 movsxd rcx, ecx mov r9d, dword ptr [rdx+4*rcx+16] jmp SHORT G_M2415_IG15 ;; bbWeight=2 PerfScore 16.50 G_M2415_IG14: lea r9, bword ptr [rsp+30H] mov bword ptr [rsp+A8H], r9 mov rdx, bword ptr [rsp+A8H] movsxd rcx, ecx mov r9d, dword ptr [rdx+4*rcx] ;; bbWeight=2 PerfScore 9.50 G_M2415_IG15: xor rcx, rcx mov bword ptr [rsp+A8H], rcx mov dword ptr [rsp+C0H], r9d mov ecx, r8d mov rdx, gword ptr [rsp+80H] mov r8, gword ptr [rsp+78H] call Associates:AssignAssociates(int,RuntimeType,RuntimeType):RuntimeMethodInfo test rax, rax je G_M2415_IG29 ;; bbWeight=4 PerfScore 27.00 G_M2415_IG16: mov edx, dword ptr [rax+84] mov ecx, edx and ecx, 7 cmp ecx, 1 sete r8b movzx r8, r8b test dl, 64 setne r9b movzx r9, r9b cmp ecx, 6 sete cl movzx rcx, cl test dl, 16 setne dl movzx rdx, dl test ecx, ecx je SHORT G_M2415_IG17 mov r10d, dword ptr [rsp+CCH] and r10d, -5 and r10d, -3 jmp SHORT G_M2415_IG18 ;; bbWeight=2 PerfScore 26.50 G_M2415_IG17: test r8d, r8d jne SHORT G_M2415_IG21 mov r10d, dword ptr [rsp+CCH] and r10d, -3 ;; bbWeight=2 PerfScore 5.00 G_M2415_IG18: test edx, edx je SHORT G_M2415_IG19 and r10d, -9 ;; bbWeight=2 PerfScore 3.00 G_M2415_IG19: test r9d, r9d jne SHORT G_M2415_IG20 and r10d, -2 mov dword ptr [rsp+CCH], r10d mov r10d, dword ptr [rsp+CCH] ;; bbWeight=2 PerfScore 7.00 G_M2415_IG20: mov r8d, dword ptr [rsp+C0H] cmp r8d, 1 jne SHORT G_M2415_IG22 mov dword ptr [rsp+CCH], r10d mov rcx, r14 mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M2415_IG29 ;; bbWeight=2 PerfScore 13.50 G_M2415_IG21: mov r10d, dword ptr [rsp+CCH] jmp SHORT G_M2415_IG18 ;; bbWeight=1 PerfScore 3.00 G_M2415_IG22: cmp r8d, 2 jne SHORT G_M2415_IG23 mov dword ptr [rsp+CCH], r10d mov rcx, r15 mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M2415_IG29 ;; bbWeight=2 PerfScore 11.50 G_M2415_IG23: cmp r8d, 32 jne SHORT G_M2415_IG24 mov dword ptr [rsp+CCH], r10d mov rcx, r12 mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M2415_IG29 ;; bbWeight=2 PerfScore 11.50 G_M2415_IG24: cmp r8d, 8 jne SHORT G_M2415_IG25 mov dword ptr [rsp+CCH], r10d mov rcx, bword ptr [rsp+70H] mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M2415_IG29 ;; bbWeight=2 PerfScore 13.00 G_M2415_IG25: cmp r8d, 16 jne SHORT G_M2415_IG26 mov dword ptr [rsp+CCH], r10d mov rcx, r13 mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M2415_IG29 ;; bbWeight=2 PerfScore 11.50 G_M2415_IG26: mov rdx, gword ptr [rsp+A0H] test rdx, rdx jne SHORT G_M2415_IG27 mov dword ptr [rsp+CCH], r10d mov gword ptr [rsp+98H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdx, rax mov gword ptr [rsp+90H], rdx mov rcx, rdx mov edx, esi call List`1:.ctor(int):this mov rdx, gword ptr [rsp+90H] mov rax, rdx mov rdx, rax mov rax, gword ptr [rsp+98H] mov r10d, dword ptr [rsp+CCH] ;; bbWeight=2 PerfScore 23.50 G_M2415_IG27: inc dword ptr [rdx+20] mov rcx, gword ptr [rdx+8] mov r8d, dword ptr [rdx+16] cmp dword ptr [rcx+8], r8d jbe SHORT G_M2415_IG28 mov dword ptr [rsp+CCH], r10d lea r9d, [r8+1] mov gword ptr [rsp+A0H], rdx mov dword ptr [rdx+16], r9d mov edx, r8d mov r8, rax call CORINFO_HELP_ARRADDR_ST jmp SHORT G_M2415_IG29 ;; bbWeight=2 PerfScore 38.00 G_M2415_IG28: mov dword ptr [rsp+CCH], r10d mov gword ptr [rsp+A0H], rdx mov rcx, rdx mov rdx, rax call List`1:AddWithResize(__Canon):this ;; bbWeight=2 PerfScore 7.00 G_M2415_IG29: mov eax, dword ptr [rsp+C4H] inc eax cmp eax, esi jl G_M2415_IG09 ;; bbWeight=4 PerfScore 10.00 G_M2415_IG30: mov esi, dword ptr [rsp+CCH] test sil, 4 sete cl movzx rcx, cl test sil, 8 sete r8b movzx r8, r8b mov edx, dword ptr [rsp+C8H] call RuntimeType:FilterPreCalculate(bool,bool,bool):int mov dword ptr [rdi], eax test sil, 2 setne cl mov byte ptr [rbx], cl mov rsi, gword ptr [rsp+A0H] test rsi, rsi jne SHORT G_M2415_IG32 ;; bbWeight=1 PerfScore 11.50 G_M2415_IG31: xor rdx, rdx jmp SHORT G_M2415_IG33 ;; bbWeight=0.50 PerfScore 1.13 G_M2415_IG32: mov rcx, rsi call List`1:ToArray():ref:this mov rdx, rax ;; bbWeight=0.50 PerfScore 0.75 G_M2415_IG33: mov rcx, rbp call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E cmp qword ptr [rsp+D0H], rcx je SHORT G_M2415_IG34 call CORINFO_HELP_FAIL_FAST ;; bbWeight=1 PerfScore 4.50 G_M2415_IG34: nop ;; bbWeight=1 PerfScore 0.25 G_M2415_IG35: add rsp, 216 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M2415_IG36: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1206, prolog size 92, PerfScore 530.93, (MethodHash=be85f690) for method Associates:AssignAssociates(MetadataImport,int,RuntimeType,RuntimeType,byref,byref,byref,byref,byref,byref,byref,byref) ; ============================================================ ; Assembly listing for method Associates:AssignAssociates(int,RuntimeType,RuntimeType):RuntimeMethodInfo ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T11] ( 5, 4 ) int -> rbx ; V01 arg1 [V01,T09] ( 7, 4.50) ref -> rsi class-hnd ; V02 arg2 [V02,T10] ( 7, 4.50) ref -> rdi class-hnd ; V03 loc0 [V03,T22] ( 2, 1 ) bool -> rbp ; V04 loc1 [V04,T04] ( 7, 14 ) ref -> r14 class-hnd ; V05 loc2 [V05,T20] ( 3, 1.50) int -> r15 ; V06 loc3 [V06,T08] ( 5, 9.50) ref -> r12 class-hnd ; V07 loc4 [V07,T15] ( 5, 2.50) long -> r14 ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V09 loc6 [V09 ] ( 8, 21 ) struct ( 8) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V10 loc7 [V10,T01] ( 10, 36.50) int -> rcx ; V11 loc8 [V11,T21] ( 3, 1.50) int -> rax ; V12 loc9 [V12,T23] ( 2, 1 ) bool -> rcx ; V13 loc10 [V13,T24] ( 2, 1 ) int -> rdx ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15,T17] ( 2, 2 ) ref -> rax "CASTCLASS eval op1" ; V16 tmp2 [V16,T12] ( 5, 3.74) ref -> rax class-hnd "spilling QMark2" ; V17 tmp3 [V17,T16] ( 4, 2 ) ref -> rax ; V18 tmp4 [V18,T18] ( 2, 2 ) ref -> rax "CASTCLASS eval op1" ; V19 tmp5 [V19,T13] ( 5, 3.74) ref -> rax class-hnd "spilling QMark2" ;* V20 tmp6 [V20 ] ( 0, 0 ) long -> zero-ref "Strict ordering of exceptions for Array store" ;* V21 tmp7 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V22 tmp8 [V22,T00] ( 6, 48 ) ref -> rdx class-hnd "Inlining Arg" ;* V23 tmp9 [V23 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V24 tmp10 [V24,T02] ( 6, 16 ) long -> r8 "Inline return value spill temp" ; V25 tmp11 [V25 ] ( 8, 21 ) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed V09.m_type(offs=0x00) P-DEP "field V09.m_type (fldOffset=0x0)" ;* V26 tmp12 [V26,T25] ( 0, 0 ) ref -> zero-ref V21.m_type(offs=0x00) P-INDEP "field V21.m_type (fldOffset=0x0)" ; V27 tmp13 [V27,T03] ( 4, 16 ) ref -> rdx V23.m_type(offs=0x00) P-INDEP "field V23.m_type (fldOffset=0x0)" ; V28 tmp14 [V28,T19] ( 2, 2 ) ref -> rcx "argument with side effect" ; V29 tmp15 [V29,T14] ( 3, 3 ) ref -> rax "argument with side effect" ; V30 cse0 [V30,T07] ( 7, 10.50) int -> r13 "CSE - aggressive" ; V31 cse1 [V31,T05] ( 3, 12 ) long -> rax "CSE - aggressive" ; V32 cse2 [V32,T06] ( 3, 12 ) long -> rax "CSE - aggressive" ; ; Lcl frame size = 56 G_M7748_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 xor rax, rax mov qword ptr [rsp+30H], rax mov ebx, ecx mov rsi, rdx mov rdi, r8 ;; bbWeight=1 PerfScore 10.25 G_M7748_IG02: test ebx, 0xD1FFAB1E jne SHORT G_M7748_IG05 ;; bbWeight=1 PerfScore 1.25 G_M7748_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M7748_IG04: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M7748_IG05: cmp rsi, rdi setne bpl movzx rbp, bpl xor r14, r14 xor r15d, r15d cmp dword ptr [rsi], esi mov gword ptr [rsp+30H], rsi lea rcx, bword ptr [rsp+30H] call RuntimeTypeHandle:GetInstantiationInternal():ref:this mov r12, rax test r12, r12 je G_M7748_IG15 mov r13d, dword ptr [r12+8] mov r15d, r13d movsxd rdx, r13d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov r14, rax xor ecx, ecx test r13d, r13d jle SHORT G_M7748_IG15 cmp dword ptr [r14+8], r13d jl SHORT G_M7748_IG11 ;; bbWeight=0.50 PerfScore 8.25 G_M7748_IG06: movsxd rax, ecx mov rdx, gword ptr [r12+8*rax+16] cmp dword ptr [rdx], edx mov gword ptr [rsp+30H], rdx cmp gword ptr [rsp+30H], 0 jne SHORT G_M7748_IG08 ;; bbWeight=4 PerfScore 29.00 G_M7748_IG07: xor r8, r8 jmp SHORT G_M7748_IG09 ;; bbWeight=2 PerfScore 4.50 G_M7748_IG08: mov r8, gword ptr [rsp+30H] mov r8, qword ptr [r8+24] ;; bbWeight=2 PerfScore 6.00 G_M7748_IG09: mov qword ptr [r14+8*rax+16], r8 inc ecx cmp r13d, ecx jg SHORT G_M7748_IG06 ;; bbWeight=4 PerfScore 10.00 G_M7748_IG10: jmp SHORT G_M7748_IG15 ;; bbWeight=0.50 PerfScore 1.00 G_M7748_IG11: movsxd rax, ecx mov rdx, gword ptr [r12+8*rax+16] cmp dword ptr [rdx], edx mov gword ptr [rsp+30H], rdx cmp gword ptr [rsp+30H], 0 jne SHORT G_M7748_IG13 ;; bbWeight=4 PerfScore 29.00 G_M7748_IG12: xor r8, r8 jmp SHORT G_M7748_IG14 ;; bbWeight=2 PerfScore 4.50 G_M7748_IG13: mov r8, gword ptr [rsp+30H] mov r8, qword ptr [r8+24] ;; bbWeight=2 PerfScore 6.00 G_M7748_IG14: cmp ecx, dword ptr [r14+8] jae G_M7748_IG25 mov qword ptr [r14+8*rax+16], r8 inc ecx cmp r13d, ecx jg SHORT G_M7748_IG11 ;; bbWeight=4 PerfScore 22.00 G_M7748_IG15: mov rcx, rsi call RuntimeTypeHandle:GetModule(RuntimeType):RuntimeModule mov rcx, rax xor rdx, rdx mov gword ptr [rsp+20H], rdx mov dword ptr [rsp+28H], edx mov edx, ebx mov r8, r14 mov r9d, r15d call ModuleHandle:ResolveMethodHandleInternalCore(RuntimeModule,int,ref,int,ref,int):long mov r14, rax test ebp, ebp je SHORT G_M7748_IG18 mov rcx, r14 call RuntimeMethodHandle:GetAttributes(long):int mov ecx, eax and ecx, 7 cmp ecx, 1 jne SHORT G_M7748_IG17 xor rax, rax ;; bbWeight=0.50 PerfScore 5.13 G_M7748_IG16: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M7748_IG17: test al, 64 je SHORT G_M7748_IG18 mov rcx, rsi call RuntimeTypeHandle:GetAttributes(RuntimeType):int test al, 32 sete cl movzx rcx, cl test ecx, ecx je SHORT G_M7748_IG18 mov rcx, r14 call RuntimeMethodHandle:GetSlot(long):int mov edx, eax mov rcx, rdi call RuntimeTypeHandle:GetMethodAt(RuntimeType,int):long mov r14, rax ;; bbWeight=0.50 PerfScore 4.13 G_M7748_IG18: mov rcx, rdi mov rdx, r14 call RuntimeType:GetMethodBase(RuntimeType,long):MethodBase test rax, rax je SHORT G_M7748_IG21 ;; bbWeight=0.50 PerfScore 1.38 G_M7748_IG19: mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx je SHORT G_M7748_IG21 ;; bbWeight=0.25 PerfScore 0.81 G_M7748_IG20: xor rax, rax ;; bbWeight=0.12 PerfScore 0.03 G_M7748_IG21: test rax, rax jne SHORT G_M7748_IG24 cmp dword ptr [rdi], edi mov rcx, rdi call RuntimeTypeHandle:GetModule(RuntimeType):RuntimeModule mov rcx, rax mov edx, ebx xor r8, r8 xor r9, r9 mov rax, qword ptr [rax] mov rax, qword ptr [rax+88] call gword ptr [rax+48]Module:ResolveMethod(int,ref,ref):MethodBase:this test rax, rax je SHORT G_M7748_IG24 ;; bbWeight=0.50 PerfScore 6.88 G_M7748_IG22: mov rdx, 0xD1FFAB1E cmp qword ptr [rax], rdx je SHORT G_M7748_IG24 ;; bbWeight=0.25 PerfScore 0.81 G_M7748_IG23: xor rax, rax ;; bbWeight=0.12 PerfScore 0.03 G_M7748_IG24: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M7748_IG25: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 494, prolog size 31, PerfScore 208.34, (MethodHash=2bf2e1bb) for method Associates:AssignAssociates(int,RuntimeType,RuntimeType):RuntimeMethodInfo ; ============================================================ ; Assembly listing for method RuntimeType:GetMethodBase(RuntimeType,long):MethodBase ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T05] ( 22, 9.75) ref -> [rbp+0x10] class-hnd ; V01 arg1 [V01,T02] ( 19, 14.50) long -> rsi ld-addr-op ; V02 loc0 [V02,T09] ( 16, 6.50) ref -> [rbp-0x50] class-hnd ; V03 loc1 [V03,T21] ( 4, 2 ) ref -> r15 class-hnd ; V04 loc2 [V04,T22] ( 4, 2 ) ref -> rax class-hnd ; V05 loc3 [V05,T23] ( 4, 2 ) ref -> rax class-hnd ; V06 loc4 [V06,T11] ( 3, 5 ) ref -> r12 class-hnd ; V07 loc5 [V07,T19] ( 3, 3 ) bool -> r13 ; V08 loc6 [V08,T03] ( 5, 16.50) int -> rbx ; V09 loc7 [V09,T07] ( 2, 8 ) ref -> rcx class-hnd ; V10 loc8 [V10,T08] ( 2, 8 ) long -> rax ld-addr-op ; V11 loc9 [V11,T14] ( 2, 4.50) ref -> r12 class-hnd ; V12 loc10 [V12,T01] ( 7, 17.50) ref -> r13 class-hnd ; V13 loc11 [V13,T00] ( 7, 22 ) ref -> [rbp-0x58] class-hnd ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15,T48] ( 2, 0 ) ref -> rsi class-hnd "impAppendStmt" ; V16 tmp2 [V16,T49] ( 2, 0 ) ref -> rbx class-hnd "impAppendStmt" ; V17 tmp3 [V17,T50] ( 2, 0 ) ref -> rdi class-hnd "impAppendStmt" ; V18 tmp4 [V18,T45] ( 3, 0 ) ref -> r15 class-hnd exact "NewObj constructor temp" ; V19 tmp5 [V19,T20] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V20 tmp6 [V20,T32] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V21 tmp7 [V21,T16] ( 5, 3.74) ref -> r12 class-hnd "spilling QMark2" ; V22 tmp8 [V22,T06] ( 3, 8.96) ref -> rax "CASTCLASS eval op1" ; V23 tmp9 [V23,T13] ( 3, 4.96) long -> rdx "fgInsertCommaFormTemp is creating a new local variable" ; V24 tmp10 [V24,T04] ( 5, 14.96) ref -> rcx class-hnd "spilling QMark2" ; V25 tmp11 [V25,T46] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V26 tmp12 [V26 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ; V27 tmp13 [V27,T47] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V28 tmp14 [V28,T30] ( 2, 1 ) bool -> rcx "Inline return value spill temp" ; V29 tmp15 [V29,T31] ( 3, 1.50) ubyte -> rax "Inline stloc first use temp" ;* V30 tmp16 [V30 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V31 tmp17 [V31 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V32 tmp18 [V32,T36] ( 2, 1 ) ref -> r15 class-hnd "Inline return value spill temp" ; V33 tmp19 [V33 ] ( 4, 2 ) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" ;* V34 tmp20 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V35 tmp21 [V35 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ;* V36 tmp22 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V37 tmp23 [V37,T17] ( 6, 3 ) ref -> rbx class-hnd "Inline return value spill temp" ; V38 tmp24 [V38,T33] ( 3, 1 ) ref -> rbx class-hnd "Inline stloc first use temp" ; V39 tmp25 [V39,T26] ( 2, 2 ) long -> r8 ld-addr-op "Inlining Arg" ;* V40 tmp26 [V40 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V41 tmp27 [V41,T40] ( 2, 1 ) long -> r8 "Inlining Arg" ;* V42 tmp28 [V42 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V43 tmp29 [V43,T37] ( 2, 1 ) byref -> r8 "Inlining Arg" ;* V44 tmp30 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V45 tmp31 [V45,T29] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" ; V46 tmp32 [V46,T34] ( 3, 1 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V47 tmp33 [V47,T27] ( 2, 2 ) long -> rcx ld-addr-op "Inlining Arg" ;* V48 tmp34 [V48 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V49 tmp35 [V49,T41] ( 2, 1 ) long -> rcx "Inlining Arg" ;* V50 tmp36 [V50 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V51 tmp37 [V51,T38] ( 2, 1 ) byref -> rcx "Inlining Arg" ; V52 tmp38 [V52,T18] ( 6, 3 ) ref -> rbx class-hnd "Inline return value spill temp" ; V53 tmp39 [V53,T35] ( 3, 1 ) ref -> rbx class-hnd "Inline stloc first use temp" ; V54 tmp40 [V54,T28] ( 2, 2 ) long -> rcx ld-addr-op "Inlining Arg" ;* V55 tmp41 [V55 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V56 tmp42 [V56,T42] ( 2, 1 ) long -> rcx "Inlining Arg" ;* V57 tmp43 [V57 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V58 tmp44 [V58,T39] ( 2, 1 ) byref -> rcx "Inlining Arg" ;* V59 tmp45 [V59 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V60 tmp46 [V60,T10] ( 4, 5 ) ref -> rax "Single return block return value" ; V61 FramesRoot [V61,T15] ( 6, 4 ) long -> rbx "Pinvoke FrameListRoot" ; V62 PInvokeFrame [V62 ] ( 8, 6 ) blk (72) [rbp-0xA0] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V63 tmp49 [V63,T43] ( 2, 1 ) long -> rdx V35._ptr(offs=0x00) P-INDEP "field V35._ptr (fldOffset=0x0)" ; V64 tmp50 [V64,T44] ( 2, 1 ) long -> rdx V36._ptr(offs=0x00) P-INDEP "field V36._ptr (fldOffset=0x0)" ; V65 tmp51 [V65,T24] ( 2, 2 ) ref -> rdx "argument with side effect" ; V66 tmp52 [V66,T25] ( 2, 2 ) ref -> rdx "argument with side effect" ; V67 tmp53 [V67,T51] ( 2, 0 ) ref -> rcx "argument with side effect" ; V68 tmp54 [V68,T52] ( 2, 0 ) ref -> rcx "argument with side effect" ; V69 tmp55 [V69,T53] ( 2, 0 ) ref -> rdx "argument with side effect" ; V70 tmp56 [V70,T54] ( 2, 0 ) ref -> rcx "argument with side effect" ; V71 tmp57 [V71,T55] ( 2, 0 ) ref -> rcx "argument with side effect" ; V72 tmp58 [V72,T56] ( 2, 0 ) ref -> rdx "argument with side effect" ; V73 tmp59 [V73,T57] ( 2, 0 ) ref -> rcx "argument with side effect" ; V74 tmp60 [V74,T58] ( 2, 0 ) ref -> r9 "argument with side effect" ; V75 tmp61 [V75,T59] ( 2, 0 ) ref -> rdx "argument with side effect" ; V76 cse0 [V76,T12] ( 3, 5 ) int -> [rbp-0x44] "CSE - aggressive" ; ; Lcl frame size = 136 G_M39435_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] xor rsi, rsi mov qword ptr [rbp-40H], rsi mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 10.50 G_M39435_IG02: lea rcx, [rbp-98H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rbx, rax mov rcx, rsp mov qword ptr [rbp-78H], rcx mov rcx, rbp mov qword ptr [rbp-68H], rcx mov rcx, rsi call RuntimeMethodHandle:IsDynamicMethod(long):bool test eax, eax je SHORT G_M39435_IG05 ;; bbWeight=1 PerfScore 7.00 G_M39435_IG03: mov rcx, rsi call RuntimeMethodHandle:GetResolver(long):Resolver test rax, rax je SHORT G_M39435_IG04 mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+32]Resolver:GetDynamicMethod():MethodInfo:this jmp G_M39435_IG46 ;; bbWeight=0.50 PerfScore 5.88 G_M39435_IG04: xor rax, rax jmp G_M39435_IG46 ;; bbWeight=0.50 PerfScore 1.13 G_M39435_IG05: mov rcx, rsi call RuntimeMethodHandle:GetDeclaringType(long):RuntimeType mov r14, rax xor r15, r15 test rdi, rdi jne SHORT G_M39435_IG06 mov rdi, r14 ;; bbWeight=0.50 PerfScore 1.63 G_M39435_IG06: cmp rdi, r14 je G_M39435_IG12 mov rcx, rdi mov rdx, r14 mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]RuntimeType:IsSubclassOf(Type):bool:this test eax, eax jne G_M39435_IG12 mov rcx, rdi call RuntimeTypeHandle:GetCorElementType(RuntimeType):ubyte cmp eax, 20 je SHORT G_M39435_IG07 cmp eax, 29 sete cl movzx rcx, cl test ecx, ecx je G_M39435_IG16 ;; bbWeight=0.50 PerfScore 6.75 G_M39435_IG07: mov rcx, rsi call RuntimeMethodHandle:GetName(long):String mov rdx, rax mov rcx, rdi mov r8d, 9 mov r9d, 52 mov rax, 0xD1FFAB1E call gword ptr [rax]RuntimeType:GetMember(String,int,int):ref:this mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFARRAY mov r12, rax xor r13d, r13d xor ebx, ebx mov eax, dword ptr [r12+8] mov dword ptr [rbp-44H], eax test eax, eax jle SHORT G_M39435_IG11 ;; bbWeight=0.50 PerfScore 6.00 G_M39435_IG08: movsxd rdx, ebx mov rdx, gword ptr [r12+8*rdx+16] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTINTERFACE mov rcx, rax mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IRuntimeMethodInfo:get_Value():long:this cmp rax, rsi jne SHORT G_M39435_IG10 ;; bbWeight=4 PerfScore 34.00 G_M39435_IG09: mov r13d, 1 ;; bbWeight=2 PerfScore 0.50 G_M39435_IG10: inc ebx mov ecx, dword ptr [rbp-44H] cmp ecx, ebx mov dword ptr [rbp-44H], ecx jg SHORT G_M39435_IG08 ;; bbWeight=4 PerfScore 14.00 G_M39435_IG11: test r13d, r13d je G_M39435_IG47 ;; bbWeight=0.50 PerfScore 0.63 G_M39435_IG12: mov rcx, rsi mov rdx, r14 mov r8, r15 call RuntimeMethodHandle:GetStubIfNeeded(long,RuntimeType,ref):long mov rsi, rax mov rcx, rsi call RuntimeMethodHandle:IsConstructor(long):bool test eax, eax je G_M39435_IG36 mov r8, qword ptr [rdi+16] test r8, r8 je G_M39435_IG35 ;; bbWeight=0.50 PerfScore 3.88 G_M39435_IG13: mov r8, qword ptr [rdi+16] mov rbx, gword ptr [r8] test rbx, rbx je G_M39435_IG35 ;; bbWeight=0.25 PerfScore 1.31 G_M39435_IG14: cmp dword ptr [rbx], ebx lea r8, bword ptr [rbx+64] mov rcx, rbx mov rdx, 0xD1FFAB1E call RuntimeTypeCache:GetMemberCache(byref):MemberInfoCache`1:this mov rcx, gword ptr [rbx+64] mov rdx, r14 mov r8, rsi mov r9d, 1 cmp dword ptr [rcx], ecx call MemberInfoCache`1:AddMethod(RuntimeType,long,int):MethodBase:this ;; bbWeight=0.50 PerfScore 4.88 G_M39435_IG15: jmp G_M39435_IG46 ;; bbWeight=0.50 PerfScore 1.00 G_M39435_IG16: cmp dword ptr [r14], r14d mov rcx, r14 call RuntimeTypeHandle:HasInstantiation(RuntimeType):bool test eax, eax je G_M39435_IG34 mov rcx, r14 mov rax, 0xD1FFAB1E call gword ptr [rax]RuntimeType:GetGenericTypeDefinition():Type:this mov r12, rax test r12, r12 je SHORT G_M39435_IG19 ;; bbWeight=0.50 PerfScore 4.75 G_M39435_IG17: mov rcx, 0xD1FFAB1E cmp qword ptr [r12], rcx je SHORT G_M39435_IG19 ;; bbWeight=0.25 PerfScore 0.81 G_M39435_IG18: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov r12, rax ;; bbWeight=0.12 PerfScore 0.18 G_M39435_IG19: mov gword ptr [rbp+10H], rdi mov r13, rdi mov rdi, gword ptr [rbp+10H] ;; bbWeight=0.50 PerfScore 1.13 G_M39435_IG20: mov rax, r13 cmp dword ptr [rax], eax mov gword ptr [rbp-58H], rax mov rcx, rax call RuntimeTypeHandle:HasInstantiation(RuntimeType):bool test eax, eax je SHORT G_M39435_IG25 ;; bbWeight=4 PerfScore 23.00 G_M39435_IG21: mov rcx, gword ptr [rbp-58H] call RuntimeTypeHandle:IsGenericTypeDefinition(RuntimeType):bool test eax, eax jne SHORT G_M39435_IG25 mov rcx, gword ptr [rbp-58H] mov rax, 0xD1FFAB1E call gword ptr [rax]RuntimeType:GetGenericTypeDefinition():Type:this mov rcx, rax test rcx, rcx je SHORT G_M39435_IG24 ;; bbWeight=2 PerfScore 18.00 G_M39435_IG22: mov rdx, 0xD1FFAB1E cmp qword ptr [rcx], rdx je SHORT G_M39435_IG24 ;; bbWeight=1 PerfScore 3.25 G_M39435_IG23: mov rcx, rdx mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rcx, rax ;; bbWeight=0.48 PerfScore 0.84 G_M39435_IG24: mov gword ptr [rbp-58H], rcx ;; bbWeight=2 PerfScore 2.00 G_M39435_IG25: mov rcx, gword ptr [rbp-58H] cmp rcx, r12 je SHORT G_M39435_IG26 mov rcx, r13 call RuntimeType:GetBaseType():RuntimeType:this mov r13, rax test r13, r13 jne SHORT G_M39435_IG20 ;; bbWeight=4 PerfScore 20.00 G_M39435_IG26: test r13, r13 je G_M39435_IG48 ;; bbWeight=0.50 PerfScore 0.63 G_M39435_IG27: mov gword ptr [rbp-50H], r13 mov rcx, rsi call RuntimeMethodHandle:IsGenericMethodDefinition(long):bool test eax, eax jne G_M39435_IG33 mov gword ptr [rbp+10H], rdi xor rcx, rcx mov gword ptr [rbp-40H], rcx lea rdx, [rbp-40H] mov rcx, rsi mov r8d, 1 mov rax, 0xD1FFAB1E mov qword ptr [rbp-88H], rax lea rax, G_M39435_IG30 mov qword ptr [rbp-70H], rax lea rax, bword ptr [rbp-98H] mov qword ptr [rbx+16], rax mov byte ptr [rbx+12], 0 ;; bbWeight=0.50 PerfScore 6.25 G_M39435_IG28: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M39435_IG29: call qword ptr [rax]RuntimeMethodHandle:GetMethodInstantiation(long,ObjectHandleOnStack,int) ;; bbWeight=0.50 PerfScore 1.50 G_M39435_IG30: mov byte ptr [rbx+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M39435_IG31 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M39435_IG31: mov rcx, bword ptr [rbp-90H] mov qword ptr [rbx+16], rcx mov r15, gword ptr [rbp-40H] xor rcx, rcx mov gword ptr [rbp-40H], rcx mov rdi, gword ptr [rbp+10H] mov r14, gword ptr [rbp-50H] ;; bbWeight=0.50 PerfScore 3.13 G_M39435_IG32: mov rcx, rsi mov rdx, r14 call RuntimeMethodHandle:GetMethodFromCanonical(long,RuntimeType):long mov rsi, rax jmp G_M39435_IG12 ;; bbWeight=0.50 PerfScore 1.88 G_M39435_IG33: mov r14, gword ptr [rbp-50H] jmp SHORT G_M39435_IG32 ;; bbWeight=0.25 PerfScore 0.75 G_M39435_IG34: mov rcx, r14 mov rdx, rdi mov rax, 0xD1FFAB1E call qword ptr [rax]RuntimeType:IsAssignableFrom(TypeInfo):bool:this test eax, eax je G_M39435_IG49 jmp G_M39435_IG12 ;; bbWeight=0.50 PerfScore 3.50 G_M39435_IG35: mov rcx, rdi call RuntimeType:InitializeCache():RuntimeTypeCache:this mov rbx, rax jmp G_M39435_IG14 ;; bbWeight=0.50 PerfScore 1.75 G_M39435_IG36: mov rcx, rsi call RuntimeMethodHandle:HasMethodInstantiation(long):bool test eax, eax je SHORT G_M39435_IG41 mov rcx, rsi call RuntimeMethodHandle:IsGenericMethodDefinition(long):bool test eax, eax jne SHORT G_M39435_IG41 mov rcx, qword ptr [rdi+16] test rcx, rcx je SHORT G_M39435_IG39 ;; bbWeight=0.50 PerfScore 4.13 G_M39435_IG37: mov rcx, qword ptr [rdi+16] mov rcx, gword ptr [rcx] test rcx, rcx je SHORT G_M39435_IG39 ;; bbWeight=0.25 PerfScore 1.31 G_M39435_IG38: jmp SHORT G_M39435_IG40 ;; bbWeight=0.50 PerfScore 1.00 G_M39435_IG39: mov rcx, rdi call RuntimeType:InitializeCache():RuntimeTypeCache:this mov rcx, rax ;; bbWeight=0.50 PerfScore 0.75 G_M39435_IG40: mov rdx, rsi cmp dword ptr [rcx], ecx call RuntimeTypeCache:GetGenericMethodInfo(long):MethodInfo:this jmp G_M39435_IG15 ;; bbWeight=0.50 PerfScore 2.63 G_M39435_IG41: mov rcx, qword ptr [rdi+16] test rcx, rcx je SHORT G_M39435_IG44 ;; bbWeight=0.50 PerfScore 1.63 G_M39435_IG42: mov rcx, qword ptr [rdi+16] mov rbx, gword ptr [rcx] test rbx, rbx je SHORT G_M39435_IG44 ;; bbWeight=0.25 PerfScore 1.31 G_M39435_IG43: jmp SHORT G_M39435_IG45 ;; bbWeight=0.50 PerfScore 1.00 G_M39435_IG44: mov rcx, rdi call RuntimeType:InitializeCache():RuntimeTypeCache:this mov rbx, rax ;; bbWeight=0.50 PerfScore 0.75 G_M39435_IG45: cmp dword ptr [rbx], ebx lea r8, bword ptr [rbx+56] mov rcx, rbx mov rdx, 0xD1FFAB1E call RuntimeTypeCache:GetMemberCache(byref):MemberInfoCache`1:this mov rcx, gword ptr [rbx+56] mov rdx, r14 mov r8, rsi xor r9d, r9d cmp dword ptr [rcx], ecx call MemberInfoCache`1:AddMethod(RuntimeType,long,int):MethodBase:this jmp G_M39435_IG15 ;; bbWeight=0.50 PerfScore 5.88 G_M39435_IG46: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M39435_IG47: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x8787 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, rdi mov r8, r14 call SR:Format(String,Object,Object):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M39435_IG48: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x8787 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rcx, rax mov rdx, rdi mov r8, r14 call SR:Format(String,Object,Object):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M39435_IG49: call CultureInfo:get_CurrentCulture():CultureInfo mov rsi, rax mov ecx, 0x8787 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov rcx, rdi mov edx, 1 call RuntimeType:GetCachedName(int):String:this mov rdi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov rcx, r14 mov edx, 1 call RuntimeType:GetCachedName(int):String:this mov r9, rax mov rdx, rbx mov r8, rdi mov rcx, rsi call String:Format(IFormatProvider,String,Object,Object):String mov rdx, rax mov rcx, r15 call ArgumentException:.ctor(String):this mov rcx, r15 call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1375, prolog size 33, PerfScore 359.65, (MethodHash=9ee765f4) for method RuntimeType:GetMethodBase(RuntimeType,long):MethodBase ; ============================================================ ; Assembly listing for method MemberInfoCache`1:AddMethod(RuntimeType,long,int):MethodBase:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T04] ( 5, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T05] ( 5, 4 ) long -> rbx ; V03 arg3 [V03,T06] ( 4, 3.50) int -> rbp ; V04 loc0 [V04 ] ( 5, 4 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V05 loc1 [V05,T08] ( 5, 4 ) int -> r14 ; V06 loc2 [V06,T19] ( 2, 2 ) bool -> rcx ; V07 loc3 [V07,T20] ( 2, 2 ) bool -> r8 ; V08 loc4 [V08,T21] ( 2, 2 ) bool -> rdx ; V09 loc5 [V09,T14] ( 3, 2 ) int -> r15 ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T10] ( 3, 3 ) ref -> rbp class-hnd exact "dup spill" ; V12 tmp2 [V12,T01] ( 8, 8 ) ref -> r12 class-hnd exact "NewObj constructor temp" ; V13 tmp3 [V13,T12] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V14 tmp4 [V14,T15] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V15 tmp5 [V15,T07] ( 3, 4.24) ref -> rdx "CASTCLASS eval op1" ; V16 tmp6 [V16,T24] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V17 tmp7 [V17,T03] ( 5, 6.74) ref -> rax class-hnd "spilling QMark2" ; V18 tmp8 [V18,T11] ( 3, 3 ) ref -> rbp class-hnd exact "dup spill" ; V19 tmp9 [V19,T02] ( 7, 7 ) ref -> r12 class-hnd exact "NewObj constructor temp" ; V20 tmp10 [V20,T13] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V21 tmp11 [V21,T16] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V22 tmp12 [V22,T09] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ;* V23 tmp13 [V23 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V24 tmp14 [V24,T17] ( 2, 2 ) ref -> r13 class-hnd "Inlining Arg" ; V25 tmp15 [V25,T18] ( 2, 2 ) ref -> rdx class-hnd "Inlining Arg" ;* V26 tmp16 [V26 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V27 cse0 [V27,T22] ( 3, 1.25) long -> rdx "CSE - moderate" ; V28 cse1 [V28,T23] ( 3, 1.25) long -> rdx "CSE - moderate" ; ; Lcl frame size = 56 G_M1613_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax mov qword ptr [rsp+30H], rcx mov rsi, rcx mov rdi, rdx mov rbx, r8 mov ebp, r9d ;; bbWeight=1 PerfScore 11.50 G_M1613_IG02: mov rcx, rbx call RuntimeMethodHandle:GetAttributes(long):int mov r14d, eax mov ecx, r14d and ecx, 7 cmp ecx, 6 sete cl movzx rcx, cl test r14b, 16 setne r8b movzx r8, r8b mov rdx, gword ptr [rsi+16] cmp rdi, gword ptr [rdx+8] setne dl movzx rdx, dl call RuntimeType:FilterPreCalculate(bool,bool,bool):int mov r15d, eax test ebp, ebp je SHORT G_M1613_IG04 ;; bbWeight=1 PerfScore 12.75 G_M1613_IG03: cmp ebp, 1 je G_M1613_IG08 jmp G_M1613_IG12 ;; bbWeight=0.50 PerfScore 1.63 G_M1613_IG04: mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rbp, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r12, rax mov r13, gword ptr [rsi+16] mov dword ptr [r12+80], r15d lea rcx, bword ptr [r12+56] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF xor rdx, rdx mov gword ptr [r12+64], rdx mov qword ptr [r12+72], rbx lea rcx, bword ptr [r12+8] mov rdx, r13 call CORINFO_HELP_ASSIGN_REF mov dword ptr [r12+84], r14d lea rcx, bword ptr [rbp+16] mov rdx, r12 call CORINFO_HELP_ASSIGN_REF mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M1613_IG06 ;; bbWeight=0.50 PerfScore 12.00 G_M1613_IG05: jmp SHORT G_M1613_IG07 ;; bbWeight=0.25 PerfScore 0.50 G_M1613_IG06: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M1613_IG07: mov rcx, rdx mov rdx, rbp call CORINFO_HELP_CHKCASTARRAY mov gword ptr [rsp+28H], rax jmp G_M1613_IG12 ;; bbWeight=0.50 PerfScore 2.25 G_M1613_IG08: mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rbp, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r12, rax mov rdx, gword ptr [rsi+16] mov dword ptr [r12+84], r15d lea rcx, bword ptr [r12+16] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r12+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov qword ptr [r12+72], rbx mov dword ptr [r12+80], r14d lea rcx, bword ptr [rbp+16] mov rdx, r12 call CORINFO_HELP_ASSIGN_REF mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M1613_IG10 ;; bbWeight=0.50 PerfScore 11.25 G_M1613_IG09: jmp SHORT G_M1613_IG11 ;; bbWeight=0.25 PerfScore 0.50 G_M1613_IG10: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M1613_IG11: mov rcx, rdx mov rdx, rbp call CORINFO_HELP_CHKCASTARRAY mov gword ptr [rsp+28H], rax ;; bbWeight=0.50 PerfScore 1.25 G_M1613_IG12: lea rdx, [rsp+28H] mov rcx, rsi xor r8, r8 mov r9d, 3 call MemberInfoCache`1:Insert(byref,String,int):this mov rcx, gword ptr [rsp+28H] cmp dword ptr [rcx+8], 0 jbe SHORT G_M1613_IG17 mov rcx, gword ptr [rsp+28H] mov rdx, gword ptr [rcx+16] mov rax, rdx test rax, rax je SHORT G_M1613_IG15 ;; bbWeight=1 PerfScore 10.75 G_M1613_IG13: mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx je SHORT G_M1613_IG15 ;; bbWeight=0.25 PerfScore 0.81 G_M1613_IG14: call CORINFO_HELP_CHKCASTCLASS_SPECIAL ;; bbWeight=0.12 PerfScore 0.12 G_M1613_IG15: nop ;; bbWeight=1 PerfScore 0.25 G_M1613_IG16: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M1613_IG17: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 527, prolog size 28, PerfScore 124.26, (MethodHash=c177f9b2) for method MemberInfoCache`1:AddMethod(RuntimeType,long,int):MethodBase:this ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:CacheEquals(Object):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 loc0 [V02,T03] ( 3, 2.50) ref -> rdx class-hnd ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 5, 6.74) ref -> rdx class-hnd "spilling QMark2" ; V05 tmp2 [V05,T04] ( 2, 2 ) long -> rax ld-addr-op "Inlining Arg" ; V06 tmp3 [V06,T05] ( 2, 2 ) long -> rdx ld-addr-op "Inlining Arg" ; ; Lcl frame size = 0 G_M3074_IG01: ;; bbWeight=1 PerfScore 0.00 G_M3074_IG02: test rdx, rdx je SHORT G_M3074_IG05 ;; bbWeight=1 PerfScore 1.25 G_M3074_IG03: mov rax, 0xD1FFAB1E cmp qword ptr [rdx], rax je SHORT G_M3074_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M3074_IG04: xor rdx, rdx ;; bbWeight=0.12 PerfScore 0.03 G_M3074_IG05: test rdx, rdx je SHORT G_M3074_IG08 ;; bbWeight=1 PerfScore 1.25 G_M3074_IG06: mov rax, qword ptr [rdx+72] mov rdx, qword ptr [rcx+72] cmp rax, rdx sete al movzx rax, al ;; bbWeight=0.50 PerfScore 2.75 G_M3074_IG07: ret ;; bbWeight=0.50 PerfScore 0.50 G_M3074_IG08: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M3074_IG09: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 48, prolog size 0, PerfScore 12.02, (MethodHash=1768f3fd) for method RuntimeMethodInfo:CacheEquals(Object):bool:this ; ============================================================ ; Assembly listing for method Array:Resize(byref,int) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T01] ( 8, 4.75) long -> rdi ; V01 arg0 [V01,T02] ( 5, 4 ) byref -> rbx ; V02 arg1 [V02,T00] ( 8, 5.50) int -> rsi ; V03 loc0 [V03,T03] ( 5, 3.50) ref -> rbp class-hnd ; V04 loc1 [V04,T13] ( 3, 1.50) ref -> r15 class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T07] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V08 tmp3 [V08,T10] ( 2, 2 ) byref -> r12 "bubbling QMark1" ;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V10 tmp5 [V10,T11] ( 2, 2 ) byref -> r13 "impAppendStmt" ; V11 tmp6 [V11,T12] ( 2, 2 ) long -> rsi "bubbling QMark1" ; V12 tmp7 [V12,T08] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V13 tmp8 [V13,T09] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V14 tmp9 [V14,T14] ( 3, 1.50) int -> rcx "Inline return value spill temp" ; V15 tmp10 [V15,T05] ( 3, 3 ) int -> rcx "Inlining Arg" ;* V16 cse0 [V16,T15] ( 0, 0 ) long -> zero-ref "CSE - moderate" ; V17 cse1 [V17,T06] ( 6, 2.50) long -> rcx "CSE - aggressive" ; V18 cse2 [V18,T16] ( 3, 1.25) long -> rcx "CSE - moderate" ; V19 cse3 [V19,T04] ( 5, 2.50) long -> r14 "CSE - aggressive" ; ; Lcl frame size = 40 G_M5663_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rdi, rcx mov rbx, rdx mov esi, r8d ;; bbWeight=1 PerfScore 10.00 G_M5663_IG02: test esi, esi jl G_M5663_IG20 ;; bbWeight=1 PerfScore 1.25 G_M5663_IG03: mov rbp, gword ptr [rbx] test rbp, rbp jne SHORT G_M5663_IG09 ;; bbWeight=1 PerfScore 3.25 G_M5663_IG04: mov r14, qword ptr [rdi+16] mov rcx, qword ptr [r14+16] test rcx, rcx je SHORT G_M5663_IG06 ;; bbWeight=0.50 PerfScore 2.63 G_M5663_IG05: jmp SHORT G_M5663_IG07 ;; bbWeight=0.25 PerfScore 0.50 G_M5663_IG06: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M5663_IG07: movsxd rdx, esi call CORINFO_HELP_NEWARR_1_OBJ mov rdx, rax mov rcx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 1.50 G_M5663_IG08: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M5663_IG09: cmp dword ptr [rbp+8], esi je G_M5663_IG18 mov r14, qword ptr [rdi+16] mov rcx, qword ptr [r14+16] test rcx, rcx je SHORT G_M5663_IG11 ;; bbWeight=0.50 PerfScore 4.13 G_M5663_IG10: jmp SHORT G_M5663_IG12 ;; bbWeight=0.25 PerfScore 0.50 G_M5663_IG11: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M5663_IG12: movsxd rdx, esi call CORINFO_HELP_NEWARR_1_OBJ mov r15, rax lea r12, bword ptr [r15+16] lea r13, bword ptr [rbp+16] mov ecx, dword ptr [rbp+8] cmp esi, ecx jle SHORT G_M5663_IG13 jmp SHORT G_M5663_IG14 ;; bbWeight=0.50 PerfScore 3.88 G_M5663_IG13: mov ecx, esi ;; bbWeight=0.50 PerfScore 0.13 G_M5663_IG14: mov esi, ecx mov rcx, qword ptr [r14+32] test rcx, rcx je SHORT G_M5663_IG16 ;; bbWeight=0.50 PerfScore 1.75 G_M5663_IG15: jmp SHORT G_M5663_IG17 ;; bbWeight=0.25 PerfScore 0.50 G_M5663_IG16: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M5663_IG17: mov rdx, r12 mov r8, r13 mov r9, rsi call Buffer:Memmove(byref,byref,long) mov rcx, rbx mov rdx, r15 call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 1.63 G_M5663_IG18: nop ;; bbWeight=0.50 PerfScore 0.13 G_M5663_IG19: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M5663_IG20: mov ecx, 69 mov edx, 11 call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 287, prolog size 21, PerfScore 67.01, (MethodHash=16e8e9e0) for method Array:Resize(byref,int) ; ============================================================ ; Assembly listing for method Buffer:Memmove(byref,byref,long) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 3, 3 ) long -> rcx ; V01 arg0 [V01,T02] ( 3, 3 ) byref -> rdx ; V02 arg1 [V02,T03] ( 3, 3 ) byref -> r8 ; V03 arg2 [V03,T04] ( 3, 3 ) long -> r9 ;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V07 tmp3 [V07,T06] ( 3, 4 ) byref -> rdx "bubbling QMark1" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V09 tmp5 [V09,T07] ( 3, 4 ) byref -> r8 "bubbling QMark1" ;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ;* V11 tmp7 [V11 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref "bubbling QMark1" ;* V13 tmp9 [V13 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref "bubbling QMark1" ;* V15 tmp11 [V15 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V16 tmp12 [V16,T01] ( 4, 6 ) long -> r9 "Inlining Arg" ;* V17 cse0 [V17,T08] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ;* V18 cse1 [V18,T05] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 0 G_M35999_IG01: ;; bbWeight=1 PerfScore 0.00 G_M35999_IG02: shl r9, 3 cmp r9, 0x4000 ja SHORT G_M35999_IG05 ;; bbWeight=1 PerfScore 3.25 G_M35999_IG03: mov rcx, rdx mov rdx, r8 mov r8, r9 ;; bbWeight=0.50 PerfScore 0.38 G_M35999_IG04: jmp Buffer:__BulkMoveWithWriteBarrier(byref,byref,long) ;; bbWeight=0.50 PerfScore 1.00 G_M35999_IG05: mov rcx, rdx mov rdx, r8 mov r8, r9 ;; bbWeight=0.50 PerfScore 0.38 G_M35999_IG06: jmp Buffer:_BulkMoveWithWriteBarrier(byref,byref,long) ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 41, prolog size 0, PerfScore 10.10, (MethodHash=08457360) for method Buffer:Memmove(byref,byref,long) ; ============================================================ ; Assembly listing for method Associates:IncludeAccessor(MethodInfo,bool):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 3, 2.50) bool -> rdx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M41348_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M41348_IG02: test rcx, rcx jne SHORT G_M41348_IG05 ;; bbWeight=1 PerfScore 1.25 G_M41348_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M41348_IG04: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M41348_IG05: test dl, dl je SHORT G_M41348_IG07 mov eax, 1 ;; bbWeight=0.50 PerfScore 0.75 G_M41348_IG06: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M41348_IG07: mov rax, qword ptr [rcx] mov rax, qword ptr [rax+80] call qword ptr [rax+40]MethodBase:get_Attributes():int:this and eax, 7 cmp eax, 6 jne SHORT G_M41348_IG09 mov eax, 1 ;; bbWeight=0.50 PerfScore 4.38 G_M41348_IG08: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M41348_IG09: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M41348_IG10: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 65, prolog size 4, PerfScore 15.88, (MethodHash=14875e7b) for method Associates:IncludeAccessor(MethodInfo,bool):bool ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:get_Attributes():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M22207_IG01: ;; bbWeight=1 PerfScore 0.00 G_M22207_IG02: mov eax, dword ptr [rcx+84] ;; bbWeight=1 PerfScore 2.00 G_M22207_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 3.40, (MethodHash=0009a940) for method RuntimeMethodInfo:get_Attributes():int:this ; ============================================================ ; Assembly listing for method RuntimePropertyInfo:GetIndexParameters():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 loc0 [V01,T01] ( 4, 3 ) ref -> rsi class-hnd ; V02 loc1 [V02,T02] ( 4, 3 ) int -> rdi ; V03 loc2 [V03,T03] ( 3, 1.50) ref -> rbx class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M6193_IG01: push rdi push rsi push rbx sub rsp, 32 ;; bbWeight=1 PerfScore 3.25 G_M6193_IG02: call RuntimePropertyInfo:GetIndexParametersNoCopy():ref:this mov rsi, rax mov edi, dword ptr [rsi+8] test edi, edi jne SHORT G_M6193_IG05 ;; bbWeight=1 PerfScore 4.50 G_M6193_IG03: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M6193_IG04: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M6193_IG05: movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_OBJ mov rbx, rax mov rcx, rsi mov rdx, rbx mov r8d, edi call Array:Copy(Array,Array,int) mov rax, rbx ;; bbWeight=0.50 PerfScore 1.88 G_M6193_IG06: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 79, prolog size 7, PerfScore 20.40, (MethodHash=1135e7ce) for method RuntimePropertyInfo:GetIndexParameters():ref:this ; ============================================================ ; Assembly listing for method RuntimePropertyInfo:GetIndexParametersNoCopy():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 11, 14.50) ref -> rsi this class-hnd ; V01 loc0 [V01,T06] ( 6, 6.50) int -> rdi ; V02 loc1 [V02,T05] ( 7, 10.50) ref -> rbx class-hnd ; V03 loc2 [V03,T09] ( 8, 4 ) ref -> rcx class-hnd ; V04 loc3 [V04,T07] ( 3, 5 ) ref -> rbp class-hnd exact ; V05 loc4 [V05,T02] ( 7, 24.50) int -> r14 ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T03] ( 3, 16.96) ref -> rdx "CASTCLASS eval op1" ; V08 tmp2 [V08,T08] ( 3, 4.96) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V09 tmp3 [V09,T01] ( 5, 26.96) ref -> r15 class-hnd "spilling QMark2" ; V10 tmp4 [V10,T00] ( 4, 32 ) ref -> r12 class-hnd exact "NewObj constructor temp" ; V11 tmp5 [V11,T10] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" ;* V12 tmp6 [V12,T12] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V13 tmp7 [V13,T11] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" ;* V14 tmp8 [V14,T13] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; ; Lcl frame size = 32 G_M51093_IG01: push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 7.50 G_M51093_IG02: cmp gword ptr [rsi+64], 0 jne G_M51093_IG15 ;; bbWeight=1 PerfScore 3.00 G_M51093_IG03: xor edi, edi xor rbx, rbx mov rcx, gword ptr [rsi+24] mov edx, 1 call Associates:IncludeAccessor(MethodInfo,bool):bool test eax, eax jne SHORT G_M51093_IG04 xor rcx, rcx jmp SHORT G_M51093_IG05 ;; bbWeight=0.50 PerfScore 3.63 G_M51093_IG04: mov rcx, gword ptr [rsi+24] ;; bbWeight=0.50 PerfScore 1.00 G_M51093_IG05: test rcx, rcx je SHORT G_M51093_IG06 mov rax, qword ptr [rcx] mov rax, qword ptr [rax+80] call gword ptr [rax+16]MethodBase:GetParametersNoCopy():ref:this mov rbx, rax mov edi, dword ptr [rbx+8] jmp SHORT G_M51093_IG09 ;; bbWeight=0.50 PerfScore 6.25 G_M51093_IG06: mov rcx, gword ptr [rsi+32] mov edx, 1 call Associates:IncludeAccessor(MethodInfo,bool):bool test eax, eax jne SHORT G_M51093_IG07 xor rcx, rcx jmp SHORT G_M51093_IG08 ;; bbWeight=0.50 PerfScore 3.38 G_M51093_IG07: mov rcx, gword ptr [rsi+32] ;; bbWeight=0.50 PerfScore 1.00 G_M51093_IG08: test rcx, rcx je SHORT G_M51093_IG09 mov rax, qword ptr [rcx] mov rax, qword ptr [rax+80] call gword ptr [rax+16]MethodBase:GetParametersNoCopy():ref:this mov rbx, rax mov edi, dword ptr [rbx+8] dec edi ;; bbWeight=0.50 PerfScore 5.38 G_M51093_IG09: movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_OBJ mov rbp, rax xor r14d, r14d test edi, edi jle G_M51093_IG14 ;; bbWeight=0.50 PerfScore 1.63 G_M51093_IG10: cmp r14d, dword ptr [rbx+8] jae G_M51093_IG17 movsxd rcx, r14d mov rdx, gword ptr [rbx+8*rcx+16] mov r15, rdx test r15, r15 je SHORT G_M51093_IG13 ;; bbWeight=4 PerfScore 27.00 G_M51093_IG11: mov rcx, 0xD1FFAB1E cmp qword ptr [r15], rcx je SHORT G_M51093_IG13 ;; bbWeight=1 PerfScore 3.25 G_M51093_IG12: call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov r15, rax ;; bbWeight=0.48 PerfScore 0.60 G_M51093_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r12, rax mov rcx, r12 mov rdx, r15 mov r8, rsi call RuntimeParameterInfo:.ctor(RuntimeParameterInfo,MemberInfo):this mov rcx, rsi call RuntimePropertyInfo:get_Signature():Signature:this lea rcx, bword ptr [r12+48] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rbp mov edx, r14d mov r8, r12 call CORINFO_HELP_ARRADDR_ST inc r14d cmp r14d, edi jl SHORT G_M51093_IG10 ;; bbWeight=4 PerfScore 38.00 G_M51093_IG14: lea rcx, bword ptr [rsi+64] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 0.88 G_M51093_IG15: mov rax, gword ptr [rsi+64] ;; bbWeight=1 PerfScore 2.00 G_M51093_IG16: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.75 G_M51093_IG17: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 323, prolog size 14, PerfScore 141.53, (MethodHash=fbc3386a) for method RuntimePropertyInfo:GetIndexParametersNoCopy():ref:this ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:GetParametersNoCopy():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M13107_IG01: ;; bbWeight=1 PerfScore 0.00 G_M13107_IG02: jmp RuntimeMethodInfo:FetchNonReturnParameters():ref:this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 5, prolog size 0, PerfScore 2.50, (MethodHash=8946cccc) for method RuntimeMethodInfo:GetParametersNoCopy():ref:this ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:FetchNonReturnParameters():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T02] ( 4, 3.50) ref -> rax ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" ; V06 tmp4 [V06,T04] ( 3, 1.50) ref -> rdi class-hnd "Inline return value spill temp" ; V07 tmp5 [V07,T03] ( 2, 2 ) ref -> r8 class-hnd "Inlining Arg" ; V08 tmp6 [V08 ] ( 2, 1 ) ref -> [rsp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" ; ; Lcl frame size = 56 G_M33432_IG01: push rdi push rsi sub rsp, 56 xor rax, rax mov qword ptr [rsp+30H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 3.75 G_M33432_IG02: mov rax, gword ptr [rsi+32] test rax, rax jne SHORT G_M33432_IG04 ;; bbWeight=1 PerfScore 3.25 G_M33432_IG03: mov rcx, rsi call RuntimeMethodInfo:get_Signature():Signature:this mov r8, rax xor r9d, r9d mov dword ptr [rsp+20H], r9d lea r9, [rsp+30H] mov rcx, rsi mov rdx, rsi call RuntimeParameterInfo:GetParameters(IRuntimeMethodInfo,MemberInfo,Signature,byref,bool):ref mov rdi, rax xor rdx, rdx mov gword ptr [rsp+30H], rdx lea rcx, bword ptr [rsi+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 4.13 G_M33432_IG04: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 92, prolog size 13, PerfScore 22.58, (MethodHash=f42b7d67) for method RuntimeMethodInfo:FetchNonReturnParameters():ref:this ; ============================================================ ; Assembly listing for method RuntimeParameterInfo:GetParameters(IRuntimeMethodInfo,MemberInfo,Signature,byref,bool):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T28] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T29] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T30] ( 3, 3 ) ref -> r8 class-hnd ; V03 arg3 [V03,T31] ( 3, 3 ) byref -> r9 ; V04 arg4 [V04,T57] ( 1, 1 ) bool -> [rsp+0x150] ; V05 loc0 [V05,T32] ( 4, 4 ) int -> r14 ; V06 loc1 [V06,T13] ( 6, 10.50) ref -> r12 class-hnd ; V07 loc2 [V07,T42] ( 3, 2.50) int -> r13 ; V08 loc3 [V08,T26] ( 6, 7 ) int -> registers ptr ;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V10 loc5 [V10 ] ( 5, 9 ) struct (80) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ptr unsafe-buffer ; V11 loc6 [V11,T04] ( 7, 18.50) int -> [rsp+0xDC] ptr ; V12 loc7 [V12,T05] ( 6, 14 ) int -> [rsp+0xD8] ptr ; V13 loc8 [V13 ] ( 8, 22 ) int -> [rsp+0xD0] do-not-enreg[X] addr-exposed ld-addr-op ; V14 loc9 [V14,T18] ( 3, 8 ) int -> [rsp+0xCC] ld-addr-op ; V15 loc10 [V15,T03] ( 7, 20.50) int -> rbp ; V16 tmp0 [V16 ] ( 1, 1 ) int -> [rsp+0xC8] do-not-enreg[X] addr-exposed "GSCookie dummy" ; V17 OutArgs [V17 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V18 tmp2 [V18,T43] ( 3, 2 ) ref -> r12 ; V19 tmp3 [V19,T02] ( 10, 40 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V20 tmp4 [V20,T14] ( 10, 10 ) ref -> r13 class-hnd exact "NewObj constructor temp" ; V21 tmp5 [V21,T00] ( 10, 40 ) ref -> [rsp+0x98] class-hnd exact ptr "NewObj constructor temp" ; V22 tmp6 [V22,T12] ( 3, 12 ) int -> [rsp+0xC4] "impAppendStmt" ; V23 tmp7 [V23,T59] ( 7, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V24 tmp8 [V24,T01] ( 10, 40 ) ref -> [rsp+0x90] class-hnd exact ptr "NewObj constructor temp" ; V25 tmp9 [V25,T60] ( 7, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V26 tmp10 [V26,T61] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V27 tmp11 [V27,T52] ( 3, 1.50) ref -> rbp class-hnd "Inline return value spill temp" ; V28 tmp12 [V28,T53] ( 2, 1 ) ref -> rax class-hnd "Inline stloc first use temp" ;* V29 tmp13 [V29 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V30 tmp14 [V30,T41] ( 2, 2 ) long -> rax "Inlining Arg" ; V31 tmp15 [V31,T19] ( 3, 8 ) int -> r10 "Inline return value spill temp" ; V32 tmp16 [V32 ] ( 3, 8 ) byref -> [rsp+0xB8] must-init pinned ptr "Inline stloc first use temp" ;* V33 tmp17 [V33 ] ( 0, 0 ) long -> zero-ref ptr "Inline stloc first use temp" ; V34 tmp18 [V34 ] ( 2, 8 ) int -> [rsp+0xB0] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V35 tmp19 [V35,T62] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V36 tmp20 [V36,T20] ( 2, 8 ) int -> rdx "Inlining Arg" ;* V37 tmp21 [V37,T46] ( 0, 0 ) ref -> zero-ref ptr ;* V38 tmp22 [V38,T44] ( 0, 0 ) ref -> zero-ref ptr ; V39 tmp23 [V39,T33] ( 3, 4 ) int -> rdx ;* V40 tmp24 [V40 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V41 tmp25 [V41,T21] ( 2, 8 ) int -> [rsp+0xAC] "Inlining Arg" ; V42 tmp26 [V42,T63] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ;* V43 tmp27 [V43,T37] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V44 tmp28 [V44,T47] ( 0, 0 ) ref -> zero-ref ptr ;* V45 tmp29 [V45,T45] ( 0, 0 ) ref -> zero-ref ptr ; V46 tmp30 [V46,T34] ( 3, 4 ) int -> rdx ;* V47 tmp31 [V47 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V48 tmp32 [V48,T22] ( 2, 8 ) int -> [rsp+0xA8] "Inlining Arg" ;* V49 tmp33 [V49 ] ( 0, 0 ) ref -> zero-ref ptr ;* V50 tmp34 [V50 ] ( 0, 0 ) ref -> zero-ref ptr ;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref ;* V52 tmp36 [V52 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V53 tmp37 [V53 ] ( 0, 0 ) ref -> zero-ref ptr ;* V54 tmp38 [V54 ] ( 0, 0 ) ref -> zero-ref ptr ;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref ;* V56 tmp40 [V56 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V57 tmp41 [V57,T17] ( 3, 4.50) ref -> rbp V09.m_keepalive(offs=0x00) P-INDEP "field V09.m_keepalive (fldOffset=0x0)" ; V58 tmp42 [V58,T06] ( 5, 9 ) long -> [rsp+0xA0] V09.m_metadataImport2(offs=0x08) P-INDEP "field V09.m_metadataImport2 (fldOffset=0x8)" ; V59 tmp43 [V59,T54] ( 2, 1 ) ref -> rbp V29.m_keepalive(offs=0x00) P-INDEP "field V29.m_keepalive (fldOffset=0x0)" ;* V60 tmp44 [V60,T58] ( 0, 0 ) long -> zero-ref V29.m_metadataImport2(offs=0x08) P-INDEP "field V29.m_metadataImport2 (fldOffset=0x8)" ;* V61 tmp45 [V61,T48] ( 0, 0 ) ref -> zero-ref V40.m_keepalive(offs=0x00) P-INDEP "field V40.m_keepalive (fldOffset=0x0)" ;* V62 tmp46 [V62,T50] ( 0, 0 ) long -> zero-ref V40.m_metadataImport2(offs=0x08) P-INDEP "field V40.m_metadataImport2 (fldOffset=0x8)" ;* V63 tmp47 [V63,T49] ( 0, 0 ) ref -> zero-ref V47.m_keepalive(offs=0x00) P-INDEP "field V47.m_keepalive (fldOffset=0x0)" ;* V64 tmp48 [V64,T51] ( 0, 0 ) long -> zero-ref V47.m_metadataImport2(offs=0x08) P-INDEP "field V47.m_metadataImport2 (fldOffset=0x8)" ; V65 tmp49 [V65,T55] ( 2, 1 ) ref -> rbp V52.m_keepalive(offs=0x00) P-INDEP "field V52.m_keepalive (fldOffset=0x0)" ; V66 tmp50 [V66,T56] ( 2, 1 ) long -> r14 V52.m_metadataImport2(offs=0x08) P-INDEP "field V52.m_metadataImport2 (fldOffset=0x8)" ; V67 tmp51 [V67,T35] ( 2, 4 ) ref -> r15 V56.m_keepalive(offs=0x00) P-INDEP "field V56.m_keepalive (fldOffset=0x0)" ; V68 tmp52 [V68,T36] ( 2, 4 ) long -> r13 V56.m_metadataImport2(offs=0x08) P-INDEP "field V56.m_metadataImport2 (fldOffset=0x8)" ; V69 tmp53 [V69,T64] ( 2, 0 ) ref -> rcx "argument with side effect" ; V70 tmp54 [V70,T65] ( 2, 0 ) ref -> rdx "argument with side effect" ; V71 tmp55 [V71,T07] ( 3, 12 ) ref -> r8 "arr expr" ; V72 tmp56 [V72,T23] ( 2, 8 ) long -> r8 "Cast away GC" ; V73 tmp57 [V73,T66] ( 2, 0 ) ref -> rcx "argument with side effect" ; V74 tmp58 [V74,T08] ( 3, 12 ) byref -> [rsp+0x88] ptr "BlockOp address local" ; V75 tmp59 [V75,T67] ( 2, 0 ) ref -> rcx "argument with side effect" ; V76 tmp60 [V76,T09] ( 3, 12 ) byref -> [rsp+0x80] ptr "BlockOp address local" ; V77 tmp61 [V77,T39] ( 3, 3 ) byref -> rdx "BlockOp address local" ; V78 tmp62 [V78,T40] ( 3, 3 ) byref -> rbx "BlockOp address local" ; V79 tmp63 [V79,T10] ( 3, 12 ) byref -> rdx "BlockOp address local" ; V80 tmp64 [V80,T11] ( 3, 12 ) byref -> [rsp+0x78] ptr "BlockOp address local" ; V81 GsCookie [V81 ] ( 1, 1 ) long -> [rsp+0xE0] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V82 tmp66 [V82,T38] ( 4, 3 ) ref -> rbp "shadowVar" ; V83 tmp67 [V83,T24] ( 5, 7.50) ref -> rbx "shadowVar" ; V84 tmp68 [V84,T16] ( 6, 8.50) ref -> rdi "shadowVar" ; V85 tmp69 [V85,T25] ( 6, 7 ) byref -> rsi "shadowVar" ; V86 cse0 [V86,T27] ( 4, 5.50) int -> rsi "CSE - moderate" ; V87 cse1 [V87,T15] ( 5, 9 ) int -> r15 "CSE - moderate" ; ; Lcl frame size = 232 G_M49255_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 232 xor rax, rax mov qword ptr [rsp+28H], rax vxorps xmm4, xmm4 mov rax, -144 vmovdqa xmmword ptr [rsp+rax+C0H], xmm4 vmovdqa xmmword ptr [rsp+rax+D0H], xmm4 vmovdqa xmmword ptr [rsp+rax+E0H], xmm4 add rax, 48 jne SHORT -5 instr mov rax, 0xD1FFAB1E mov qword ptr [rsp+E0H], rax ;; bbWeight=1 PerfScore 15.58 G_M49255_IG02: mov rsi, r9 mov rdi, r8 mov rbx, rdx mov rbp, rcx ;; bbWeight=1 PerfScore 1.00 G_M49255_IG03: xor rdx, rdx mov gword ptr [rsi], rdx mov rdx, gword ptr [rdi+8] mov r14d, dword ptr [rdx+8] mov edx, dword ptr [rsp+150H] movzx r15, dl test r15d, r15d jne SHORT G_M49255_IG05 ;; bbWeight=1 PerfScore 7.75 G_M49255_IG04: movsxd rdx, r14d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_OBJ mov r12, rax jmp SHORT G_M49255_IG06 ;; bbWeight=0.50 PerfScore 1.88 G_M49255_IG05: xor r12, r12 ;; bbWeight=0.50 PerfScore 0.13 G_M49255_IG06: mov rcx, rbp call RuntimeMethodHandle:GetMethodDef(IRuntimeMethodInfo):int mov r13d, eax xor eax, eax test r13d, 0xD1FFAB1E je G_M49255_IG11 ;; bbWeight=1 PerfScore 3.00 G_M49255_IG07: mov rcx, rbp mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IRuntimeMethodInfo:get_Value():long:this mov rcx, rax call RuntimeMethodHandle:GetDeclaringType(long):RuntimeType mov rbp, rax mov rcx, rbp call RuntimeTypeHandle:_GetMetadataImport(RuntimeType):long lea r9, [rsp+28H] mov qword ptr [rsp+A0H], rax mov rcx, rax mov r8d, r13d mov edx, 0xD1FFAB1E call MetadataImport:_Enum(long,int,int,byref) mov eax, dword ptr [rsp+30H] mov r13d, eax lea r8d, [r14+1] cmp r13d, r8d jg G_M49255_IG34 ;; bbWeight=0.50 PerfScore 6.38 G_M49255_IG08: xor eax, eax test r13d, r13d jle G_M49255_IG25 ;; bbWeight=0.50 PerfScore 0.75 G_M49255_IG09: cmp gword ptr [rsp+28H], 0 je SHORT G_M49255_IG12 ;; bbWeight=4 PerfScore 8.00 G_M49255_IG10: mov r8, gword ptr [rsp+28H] cmp eax, dword ptr [r8+8] jae G_M49255_IG37 movsxd r9, eax mov r10d, dword ptr [r8+4*r9+16] mov dword ptr [rsp+DCH], eax jmp SHORT G_M49255_IG13 ;; bbWeight=2 PerfScore 18.50 G_M49255_IG11: mov r13d, eax jmp G_M49255_IG25 ;; bbWeight=0.50 PerfScore 1.13 G_M49255_IG12: lea r10, bword ptr [rsp+38H] mov bword ptr [rsp+B8H], r10 mov r8, bword ptr [rsp+B8H] mov dword ptr [rsp+DCH], eax movsxd r9, eax mov r10d, dword ptr [r8+4*r9] ;; bbWeight=2 PerfScore 11.50 G_M49255_IG13: xor r8, r8 mov bword ptr [rsp+B8H], r8 lea r8, [rsp+D0H] lea r9, [rsp+B0H] mov rcx, qword ptr [rsp+A0H] mov dword ptr [rsp+D8H], r10d mov edx, r10d call MetadataImport:_GetParamDefProps(long,int,byref,byref) mov eax, dword ptr [rsp+B0H] mov dword ptr [rsp+CCH], eax mov ecx, dword ptr [rsp+D0H] dec ecx mov dword ptr [rsp+D0H], ecx test r15d, r15d je G_M49255_IG19 ;; bbWeight=4 PerfScore 44.00 G_M49255_IG14: cmp dword ptr [rsp+D0H], -1 jne G_M49255_IG19 cmp gword ptr [rsi], 0 jne G_M49255_IG35 ;; bbWeight=2 PerfScore 10.00 G_M49255_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov edx, dword ptr [rsp+D0H] mov r8d, dword ptr [rsp+CCH] mov dword ptr [rsp+ACH], r8d mov dword ptr [rax+44], edx mov gword ptr [rsp+90H], rax lea rcx, bword ptr [rax+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+90H] lea rcx, bword ptr [rax+48] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov edx, dword ptr [rsp+D8H] test edx, 0xD1FFAB1E je SHORT G_M49255_IG17 ;; bbWeight=2 PerfScore 26.00 G_M49255_IG16: jmp SHORT G_M49255_IG18 ;; bbWeight=1 PerfScore 2.00 G_M49255_IG17: mov edx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M49255_IG18: mov rax, gword ptr [rsp+90H] mov dword ptr [rax+64], edx mov gword ptr [rsp+90H], rax lea r8, bword ptr [rax+72] mov rcx, r8 mov bword ptr [rsp+88H], rcx mov rdx, rbp call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, bword ptr [rsp+88H] mov rax, qword ptr [rsp+A0H] mov qword ptr [rcx+8], rax mov r8, gword ptr [rsp+90H] mov edx, dword ptr [rsp+ACH] mov dword ptr [r8+40], edx xor rdx, rdx mov gword ptr [r8+8], rdx mov gword ptr [r8+32], rdx mov rcx, rsi mov rdx, r8 call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M49255_IG24 ;; bbWeight=2 PerfScore 35.50 G_M49255_IG19: test r15d, r15d jne G_M49255_IG24 cmp dword ptr [rsp+D0H], 0 jl G_M49255_IG24 cmp dword ptr [rsp+D0H], r14d jge G_M49255_IG36 ;; bbWeight=2 PerfScore 10.50 G_M49255_IG20: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r8d, dword ptr [rsp+D0H] mov edx, dword ptr [rsp+CCH] mov dword ptr [rsp+A8H], edx mov dword ptr [rsp+C4H], r8d mov dword ptr [rax+44], r8d mov gword ptr [rsp+98H], rax lea rcx, bword ptr [rax+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+98H] lea rcx, bword ptr [rax+48] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov edx, dword ptr [rsp+D8H] test edx, 0xD1FFAB1E je SHORT G_M49255_IG22 ;; bbWeight=2 PerfScore 28.00 G_M49255_IG21: jmp SHORT G_M49255_IG23 ;; bbWeight=1 PerfScore 2.00 G_M49255_IG22: mov edx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M49255_IG23: mov rax, gword ptr [rsp+98H] mov dword ptr [rax+64], edx mov gword ptr [rsp+98H], rax lea r8, bword ptr [rax+72] mov rcx, r8 mov bword ptr [rsp+80H], rcx mov rdx, rbp call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, bword ptr [rsp+80H] mov rax, qword ptr [rsp+A0H] mov qword ptr [rcx+8], rax mov r9, gword ptr [rsp+98H] mov ecx, dword ptr [rsp+A8H] mov dword ptr [r9+40], ecx xor rcx, rcx mov gword ptr [r9+8], rcx mov gword ptr [r9+32], rcx mov rcx, r12 mov edx, dword ptr [rsp+C4H] mov r8, r9 call CORINFO_HELP_ARRADDR_ST ;; bbWeight=2 PerfScore 33.50 G_M49255_IG24: mov eax, dword ptr [rsp+DCH] inc eax cmp eax, r13d jl G_M49255_IG09 ;; bbWeight=4 PerfScore 10.00 G_M49255_IG25: test r15d, r15d je G_M49255_IG27 ;; bbWeight=1 PerfScore 1.25 G_M49255_IG26: cmp gword ptr [rsi], 0 jne G_M49255_IG31 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r13, rax mov rcx, 0xD1FFAB1E mov edx, 0x5BF call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] add rdx, 8 mov rbp, gword ptr [rdx] mov r14, qword ptr [rdx+8] mov dword ptr [r13+44], -1 lea rcx, bword ptr [r13+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r13+48] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov dword ptr [r13+64], 0xD1FFAB1E lea rbx, bword ptr [r13+72] mov rcx, rbx mov rdx, rbp call CORINFO_HELP_CHECKED_ASSIGN_REF mov qword ptr [rbx+8], r14 xor edx, edx mov dword ptr [r13+40], edx mov gword ptr [r13+8], rdx mov gword ptr [r13+32], rdx mov rcx, rsi mov rdx, r13 call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M49255_IG31 ;; bbWeight=0.50 PerfScore 13.88 G_M49255_IG27: mov esi, dword ptr [r12+8] lea eax, [rsi+1] cmp eax, r13d jle G_M49255_IG31 xor ebp, ebp test esi, esi jle G_M49255_IG31 ;; bbWeight=0.50 PerfScore 2.63 G_M49255_IG28: movsxd rcx, ebp cmp gword ptr [r12+8*rcx+16], 0 jne G_M49255_IG30 ;; bbWeight=4 PerfScore 13.00 G_M49255_IG29: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rcx, 0xD1FFAB1E mov edx, 0x5BF call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] add rdx, 8 mov r15, gword ptr [rdx] mov r13, qword ptr [rdx+8] mov dword ptr [r14+44], ebp lea rcx, bword ptr [r14+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r14+48] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov dword ptr [r14+64], 0xD1FFAB1E lea rax, bword ptr [r14+72] mov bword ptr [rsp+78H], rax mov rcx, rax mov rdx, r15 call CORINFO_HELP_CHECKED_ASSIGN_REF mov r15, bword ptr [rsp+78H] mov qword ptr [r15+8], r13 xor ecx, ecx mov dword ptr [r14+40], ecx mov gword ptr [r14+8], rcx mov gword ptr [r14+32], rcx mov rcx, r12 mov edx, ebp mov r8, r14 call CORINFO_HELP_ARRADDR_ST ;; bbWeight=2 PerfScore 50.00 G_M49255_IG30: inc ebp cmp esi, ebp jg G_M49255_IG28 ;; bbWeight=4 PerfScore 6.00 G_M49255_IG31: mov rax, r12 mov rcx, 0xD1FFAB1E cmp qword ptr [rsp+E0H], rcx je SHORT G_M49255_IG32 call CORINFO_HELP_FAIL_FAST ;; bbWeight=1 PerfScore 3.50 G_M49255_IG32: nop ;; bbWeight=1 PerfScore 0.25 G_M49255_IG33: add rsp, 232 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M49255_IG34: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xAB5B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call BadImageFormatException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M49255_IG35: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xAB5B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M49255_IG36: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xAB5B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M49255_IG37: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1661, prolog size 91, PerfScore 539.83, (MethodHash=b3213f98) for method RuntimeParameterInfo:GetParameters(IRuntimeMethodInfo,MemberInfo,Signature,byref,bool):ref ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V03 tmp2 [V03,T01] ( 2, 4 ) long -> rax "Inlining Arg" ; ; Lcl frame size = 0 G_M37027_IG01: ;; bbWeight=1 PerfScore 0.00 G_M37027_IG02: mov rax, qword ptr [rcx+72] ;; bbWeight=1 PerfScore 2.00 G_M37027_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=a6c56f5c) for method RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this ; ============================================================ ; Assembly listing for method RuntimePropertyInfo:get_PropertyType():Type:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" ; ; Lcl frame size = 40 G_M31772_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M31772_IG02: call RuntimePropertyInfo:get_Signature():Signature:this mov rax, gword ptr [rax+24] ;; bbWeight=1 PerfScore 3.00 G_M31772_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 18, prolog size 4, PerfScore 6.30, (MethodHash=972783e3) for method RuntimePropertyInfo:get_PropertyType():Type:this ; ============================================================ ; Assembly listing for method RuntimePropertyInfo:get_Signature():Signature:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 6 ) ref -> rsi this class-hnd ; V01 loc0 [V01 ] ( 3, 1.50) struct (16) [rsp+0x50] do-not-enreg[XS] addr-exposed ld-addr-op ;* V02 loc1 [V02 ] ( 0, 0 ) long -> zero-ref ld-addr-op ;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref ld-addr-op ; V04 loc3 [V04 ] ( 2, 1 ) struct (16) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V05 loc4 [V05,T07] ( 2, 1 ) long -> rdi ld-addr-op ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ; V08 tmp2 [V08,T01] ( 3, 3 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V09 tmp3 [V09,T02] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ; V10 tmp4 [V10,T03] ( 3, 3 ) ref -> rax class-hnd "Inlining Arg" ; V11 tmp5 [V11,T05] ( 2, 2 ) int -> rdx "Inlining Arg" ; V12 tmp6 [V12 ] ( 1, 0.50) long -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V13 tmp7 [V13 ] ( 1, 0.50) int -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V14 tmp8 [V14,T06] ( 2, 2 ) int -> r8 "Inlining Arg" ;* V15 tmp9 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V16 tmp10 [V16,T04] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V17 tmp11 [V17 ] ( 2, 1 ) int -> [rsp+0x50] do-not-enreg[X] addr-exposed V01.m_length(offs=0x00) P-DEP "field V01.m_length (fldOffset=0x0)" ; V18 tmp12 [V18 ] ( 2, 1 ) long -> [rsp+0x58] do-not-enreg[X] addr-exposed V01.m_constArray(offs=0x08) P-DEP "field V01.m_constArray (fldOffset=0x8)" ; V19 tmp13 [V19 ] ( 1, 0.50) ref -> [rsp+0x40] do-not-enreg[X] addr-exposed V04.m_keepalive(offs=0x00) P-DEP "field V04.m_keepalive (fldOffset=0x0)" ; V20 tmp14 [V20 ] ( 2, 1 ) long -> [rsp+0x48] do-not-enreg[X] addr-exposed V04.m_metadataImport2(offs=0x08) P-DEP "field V04.m_metadataImport2 (fldOffset=0x8)" ;* V21 tmp15 [V21,T08] ( 0, 0 ) long -> zero-ref V15.m_handle(offs=0x00) P-INDEP "field V15.m_handle (fldOffset=0x0)" ; ; Lcl frame size = 96 G_M44827_IG01: push rdi push rsi push rbx sub rsp, 96 xor rax, rax mov qword ptr [rsp+40H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 4.75 G_M44827_IG02: cmp gword ptr [rsi+56], 0 jne G_M44827_IG04 ;; bbWeight=1 PerfScore 3.00 G_M44827_IG03: mov rcx, gword ptr [rsi+48] cmp dword ptr [rcx], ecx call RuntimeTypeHandle:GetModule(RuntimeType):RuntimeModule cmp dword ptr [rax], eax lea rcx, bword ptr [rsp+40H] mov rdx, rax call ModuleHandle:GetMetadataImport(RuntimeModule):MetadataImport mov edx, dword ptr [rsi+80] lea r9, bword ptr [rsp+50H] mov bword ptr [rsp+20H], r9 lea r9, [rsp+30H] lea r8, [rsp+38H] mov rcx, qword ptr [rsp+48H] call MetadataImport:_GetPropertyProps(long,int,long,byref,byref) mov rdi, qword ptr [rsp+58H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov r8d, dword ptr [rsp+50H] mov rcx, gword ptr [rsi+48] xor rdx, rdx mov gword ptr [rsp+20H], rdx mov gword ptr [rsp+28H], rcx mov rcx, rbx mov rdx, rdi xor r9, r9 call Signature:GetSignature(long,int,RuntimeFieldHandleInternal,IRuntimeMethodInfo,RuntimeType):this lea rcx, bword ptr [rsi+56] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 13.25 G_M44827_IG04: mov rax, gword ptr [rsi+56] ;; bbWeight=1 PerfScore 2.00 G_M44827_IG05: add rsp, 96 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 169, prolog size 14, PerfScore 42.65, (MethodHash=fa2450e4) for method RuntimePropertyInfo:get_Signature():Signature:this ; ============================================================ ; Assembly listing for method RuntimeType:IsEquivalentTo(Type):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd ; V02 loc0 [V02,T03] ( 4, 3 ) ref -> rdx class-hnd ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 5, 6.74) ref -> rdx class-hnd "spilling QMark2" ; ; Lcl frame size = 0 G_M26008_IG01: ;; bbWeight=1 PerfScore 0.00 G_M26008_IG02: test rdx, rdx je SHORT G_M26008_IG05 ;; bbWeight=1 PerfScore 1.25 G_M26008_IG03: mov rax, 0xD1FFAB1E cmp qword ptr [rdx], rax je SHORT G_M26008_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M26008_IG04: xor rdx, rdx ;; bbWeight=0.12 PerfScore 0.03 G_M26008_IG05: test rdx, rdx jne SHORT G_M26008_IG08 ;; bbWeight=1 PerfScore 1.25 G_M26008_IG06: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M26008_IG07: ret ;; bbWeight=0.50 PerfScore 0.50 G_M26008_IG08: cmp rdx, rcx jne SHORT G_M26008_IG10 mov eax, 1 ;; bbWeight=0.50 PerfScore 0.75 G_M26008_IG09: ret ;; bbWeight=0.50 PerfScore 0.50 G_M26008_IG10: jmp RuntimeTypeHandle:IsEquivalentTo(RuntimeType,RuntimeType):bool ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 46, prolog size 0, PerfScore 10.82, (MethodHash=07319a67) for method RuntimeType:IsEquivalentTo(Type):bool:this ; ============================================================ ; Assembly listing for method RuntimePropertyInfo:GetSetMethod(bool):MethodInfo:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) bool -> rdx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M11174_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M11174_IG02: mov rcx, gword ptr [rsi+32] movzx rdx, dl call Associates:IncludeAccessor(MethodInfo,bool):bool test eax, eax jne SHORT G_M11174_IG05 ;; bbWeight=1 PerfScore 4.50 G_M11174_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M11174_IG04: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M11174_IG05: mov rax, gword ptr [rsi+32] ;; bbWeight=0.50 PerfScore 1.00 G_M11174_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 42, prolog size 5, PerfScore 13.08, (MethodHash=e490d459) for method RuntimePropertyInfo:GetSetMethod(bool):MethodInfo:this ; ============================================================ ; Assembly listing for method TargetFrameworkAttribute:set_FrameworkDisplayName(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M27301_IG01: ;; bbWeight=1 PerfScore 0.00 G_M27301_IG02: lea rcx, bword ptr [rcx+16] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M27301_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 11, prolog size 0, PerfScore 3.85, (MethodHash=9d7c955a) for method TargetFrameworkAttribute:set_FrameworkDisplayName(String):this ; ============================================================ ; Assembly listing for method CoreRuntime:TryGetVersionFromFrameworkName(String,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 7, 4.75) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 4, 3 ) byref -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03,T03] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V04 tmp2 [V04,T02] ( 2, 2 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 40 G_M10911_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 2.75 G_M10911_IG02: test rsi, rsi je SHORT G_M10911_IG06 ;; bbWeight=1 PerfScore 1.25 G_M10911_IG03: cmp dword ptr [rsi+8], 0 jbe SHORT G_M10911_IG06 ;; bbWeight=0.25 PerfScore 0.75 G_M10911_IG04: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rsi call String:StartsWith(String):bool:this test eax, eax je SHORT G_M10911_IG06 mov r8d, dword ptr [rsi+8] add r8d, -21 mov rcx, rsi mov edx, 21 call String:Substring(int,int):String:this mov rcx, rax call CoreRuntime:GetParsableVersionPart(String):String mov rcx, rax mov rdx, rdi ;; bbWeight=0.50 PerfScore 5.13 G_M10911_IG05: add rsp, 40 pop rsi pop rdi jmp Version:TryParse(String,byref):bool ;; bbWeight=0.50 PerfScore 1.63 G_M10911_IG06: xor rax, rax mov gword ptr [rdi], rax ;; bbWeight=0.50 PerfScore 0.63 G_M10911_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 106, prolog size 6, PerfScore 23.85, (MethodHash=2a8fd560) for method CoreRuntime:TryGetVersionFromFrameworkName(String,byref):bool ; ============================================================ ; Assembly listing for method String:StartsWith(String):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M56216_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M56216_IG02: test rdx, rdx je SHORT G_M56216_IG05 ;; bbWeight=1 PerfScore 1.25 G_M56216_IG03: xor r8d, r8d ;; bbWeight=1 PerfScore 0.25 G_M56216_IG04: add rsp, 32 pop rsi jmp String:StartsWith(String,int):bool:this ;; bbWeight=1 PerfScore 2.75 G_M56216_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 773 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 81, prolog size 5, PerfScore 13.60, (MethodHash=8bc32467) for method String:StartsWith(String):bool:this ; ============================================================ ; Assembly listing for method CultureInfo:GetCultureInfo(String):CultureInfo ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 10, 9 ) ref -> rsi class-hnd ; V01 loc0 [V01,T02] ( 5, 5 ) ref -> rdi class-hnd ; V02 loc1 [V02 ] ( 7, 7 ) ref -> [rbp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V03 loc2 [V03,T03] ( 4, 4 ) ref -> [rbp-0x40] EH do-not-enreg[] class-hnd EH-live ; V04 loc3 [V04 ] ( 5, 5 ) bool -> [rbp-0x30] do-not-enreg[XF] addr-exposed ld-addr-op ; V05 loc4 [V05,T10] ( 2, 2 ) ref -> [rbp-0x48] EH do-not-enreg[] must-init class-hnd EH-live ; V06 loc5 [V06,T07] ( 4, 3 ) ref -> [rbp-0x50] EH do-not-enreg[] class-hnd EH-live ; V07 loc6 [V07 ] ( 5, 4 ) bool -> [rbp-0x38] do-not-enreg[XF] addr-exposed ld-addr-op ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" ; V10 tmp2 [V10,T08] ( 3, 3 ) ref -> r14 ; V11 tmp3 [V11,T11] ( 4, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V12 tmp4 [V12,T12] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V13 tmp5 [V13,T09] ( 3, 3 ) ref -> r14 class-hnd "Inline return value spill temp" ; V14 tmp6 [V14,T04] ( 4, 4 ) ref -> rbx class-hnd "Inline stloc first use temp" ; V15 tmp7 [V15,T01] ( 5, 10 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V16 tmp8 [V16,T13] ( 2, 0 ) ref -> rbx class-hnd "Inlining Arg" ; V17 tmp9 [V17,T05] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V18 tmp10 [V18,T06] ( 2, 4 ) ref -> r8 class-hnd "Inlining Arg" ;* V19 tmp11 [V19 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; V20 tmp12 [V20,T14] ( 2, 0 ) ref -> rdx "argument with side effect" ; V21 tmp13 [V21,T15] ( 2, 0 ) ref -> rcx "argument with side effect" ; V22 tmp14 [V22,T16] ( 2, 0 ) ref -> r8 "argument with side effect" ; V23 PSPSym [V23 ] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 96 G_M18010_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 96 lea rbp, [rsp+80H] xor rax, rax mov qword ptr [rbp-28H], rax mov qword ptr [rbp-48H], rax mov qword ptr [rbp-60H], rsp mov rsi, rcx ;; bbWeight=1 PerfScore 9.25 G_M18010_IG02: test rsi, rsi je G_M18010_IG24 ;; bbWeight=1 PerfScore 1.25 G_M18010_IG03: mov rcx, rsi call TextInfo:ToLowerAsciiInvariant(String):String mov rsi, rax call CultureInfo:get_CachedCulturesByName():Dictionary`2 mov rdi, rax mov gword ptr [rbp-40H], rdi xor edx, edx mov dword ptr [rbp-30H], edx ;; bbWeight=1 PerfScore 5.00 G_M18010_IG04: cmp byte ptr [rbp-30H], 0 jne SHORT G_M18010_IG07 ;; bbWeight=1 PerfScore 2.00 G_M18010_IG05: lea rdx, [rbp-30H] mov rcx, gword ptr [rbp-40H] call Monitor:ReliableEnter(Object,byref) ;; bbWeight=1 PerfScore 2.50 G_M18010_IG06: lea r8, [rbp-28H] mov rcx, rdi mov rdx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:TryGetValue(__Canon,byref):bool:this test eax, eax je SHORT G_M18010_IG08 mov rcx, gword ptr [rbp-28H] mov gword ptr [rbp-48H], rcx jmp SHORT G_M18010_IG09 ;; bbWeight=1 PerfScore 11.50 G_M18010_IG07: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M18010_IG08: cmp byte ptr [rbp-30H], 0 je SHORT G_M18010_IG11 mov rcx, gword ptr [rbp-40H] call Monitor:Exit(Object) jmp SHORT G_M18010_IG11 ;; bbWeight=1 PerfScore 6.00 G_M18010_IG09: mov rcx, rsp call G_M18010_IG26 ;; bbWeight=1 PerfScore 1.25 G_M18010_IG10: jmp G_M18010_IG22 ;; bbWeight=1 PerfScore 2.00 G_M18010_IG11: mov rcx, rsi xor edx, edx call CultureData:GetCultureData(String,bool):CultureData mov rbx, rax test rbx, rbx jne SHORT G_M18010_IG12 xor r14, r14 jmp SHORT G_M18010_IG13 ;; bbWeight=1 PerfScore 5.25 G_M18010_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax lea rcx, bword ptr [r14+48] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, rbx call CultureData:get_CultureName():String:this lea rcx, bword ptr [r14+64] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov byte ptr [r14+96], 0 ;; bbWeight=1 PerfScore 7.25 G_M18010_IG13: test r14, r14 je G_M18010_IG25 ;; bbWeight=1 PerfScore 1.25 G_M18010_IG14: mov gword ptr [rbp-28H], r14 mov rcx, gword ptr [rbp-28H] mov byte ptr [rcx+96], 1 mov rcx, gword ptr [rbp-28H] mov rcx, gword ptr [rcx+64] call TextInfo:ToLowerAsciiInvariant(String):String mov rsi, rax mov gword ptr [rbp-50H], rdi xor edx, edx mov dword ptr [rbp-38H], edx ;; bbWeight=1 PerfScore 9.50 G_M18010_IG15: cmp byte ptr [rbp-38H], 0 jne SHORT G_M18010_IG17 ;; bbWeight=1 PerfScore 2.00 G_M18010_IG16: lea rdx, [rbp-38H] mov rcx, gword ptr [rbp-50H] call Monitor:ReliableEnter(Object,byref) jmp SHORT G_M18010_IG18 ;; bbWeight=1 PerfScore 4.50 G_M18010_IG17: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M18010_IG18: mov r8, gword ptr [rbp-28H] mov rcx, rdi mov rdx, rsi mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=1 PerfScore 3.00 G_M18010_IG19: cmp byte ptr [rbp-38H], 0 je SHORT G_M18010_IG20 mov rcx, gword ptr [rbp-50H] call Monitor:Exit(Object) ;; bbWeight=1 PerfScore 4.00 G_M18010_IG20: mov rax, gword ptr [rbp-28H] ;; bbWeight=1 PerfScore 1.00 G_M18010_IG21: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M18010_IG22: mov rax, gword ptr [rbp-48H] ;; bbWeight=1 PerfScore 1.00 G_M18010_IG23: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M18010_IG24: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 839 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M18010_IG25: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x6431 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov ecx, 839 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rbx mov rcx, rdi call ArgumentException:.ctor(String,String):this lea rcx, bword ptr [rdi+128] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M18010_IG26: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+80H] ;; bbWeight=1 PerfScore 8.75 G_M18010_IG27: cmp byte ptr [rbp-30H], 0 je SHORT G_M18010_IG28 mov rcx, gword ptr [rbp-40H] call Monitor:Exit(Object) ;; bbWeight=1 PerfScore 4.00 G_M18010_IG28: nop ;; bbWeight=1 PerfScore 0.25 G_M18010_IG29: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 3.75 G_M18010_IG30: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+80H] ;; bbWeight=0 PerfScore 0.00 G_M18010_IG31: cmp byte ptr [rbp-38H], 0 je SHORT G_M18010_IG32 mov rcx, gword ptr [rbp-50H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M18010_IG32: nop ;; bbWeight=0 PerfScore 0.00 G_M18010_IG33: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 655, prolog size 35, PerfScore 169.75, (MethodHash=9599b9a5) for method CultureInfo:GetCultureInfo(String):CultureInfo ; ============================================================ ; Assembly listing for method CultureInfo:get_CachedCulturesByName():Dictionary`2 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T00] ( 7, 5 ) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 3 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T03] ( 2, 2 ) ref -> rax class-hnd "dup spill" ; V04 tmp3 [V04,T02] ( 4, 2 ) ref -> rax ; ; Lcl frame size = 32 G_M32977_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M32977_IG02: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] test rsi, rsi jne SHORT G_M32977_IG05 ;; bbWeight=1 PerfScore 3.50 G_M32977_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi xor edx, edx xor r8, r8 call Dictionary`2:.ctor(int,IEqualityComparer`1):this mov rdx, rsi mov rcx, 0xD1FFAB1E xor r8, r8 call Interlocked:CompareExchange(byref,Object,Object):Object test rax, rax jne SHORT G_M32977_IG04 mov rax, rsi ;; bbWeight=0.50 PerfScore 3.25 G_M32977_IG04: mov rsi, rax ;; bbWeight=0.50 PerfScore 0.13 G_M32977_IG05: mov rax, rsi ;; bbWeight=1 PerfScore 0.25 G_M32977_IG06: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 95, prolog size 5, PerfScore 19.63, (MethodHash=1a257f2e) for method CultureInfo:get_CachedCulturesByName():Dictionary`2 ; ============================================================ ; Assembly listing for method CompareInfo:IsPrefix(String,String,int):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rdx class-hnd ; V02 arg2 [V02,T01] ( 5, 5 ) ref -> r8 class-hnd ; V03 arg3 [V03,T05] ( 3, 3 ) int -> r9 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V10 tmp6 [V10,T06] ( 2, 4 ) byref -> rax "Inlining Arg" ;* V11 tmp7 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V12 tmp8 [V12,T09] ( 2, 4 ) int -> rdx "Inlining Arg" ;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V16 tmp12 [V16,T07] ( 2, 4 ) byref -> r10 "Inlining Arg" ;* V17 tmp13 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V18 tmp14 [V18,T10] ( 2, 4 ) int -> r8 "Inlining Arg" ; V19 tmp15 [V19,T11] ( 2, 2 ) byref -> rax V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ; V20 tmp16 [V20,T19] ( 2, 2 ) int -> rdx V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ; V21 tmp17 [V21,T12] ( 2, 2 ) byref -> r10 V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V22 tmp18 [V22,T20] ( 2, 2 ) int -> r8 V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V23 tmp19 [V23,T13] ( 2, 2 ) byref -> rax V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V24 tmp20 [V24,T21] ( 2, 2 ) int -> rdx V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V25 tmp21 [V25,T14] ( 2, 2 ) byref -> rax V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ; V26 tmp22 [V26,T22] ( 2, 2 ) int -> rdx V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ;* V27 tmp23 [V27 ] ( 0, 0 ) byref -> zero-ref V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ;* V28 tmp24 [V28 ] ( 0, 0 ) int -> zero-ref V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ; V29 tmp25 [V29,T15] ( 2, 2 ) byref -> rax V11._value(offs=0x00) P-INDEP "field V11._value (fldOffset=0x0)" ; V30 tmp26 [V30,T16] ( 2, 2 ) byref -> r10 V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ; V31 tmp27 [V31,T23] ( 2, 2 ) int -> r8 V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V32 tmp28 [V32,T17] ( 2, 2 ) byref -> r10 V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ; V33 tmp29 [V33,T24] ( 2, 2 ) int -> r8 V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ;* V34 tmp30 [V34 ] ( 0, 0 ) byref -> zero-ref V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ; V36 tmp32 [V36,T18] ( 2, 2 ) byref -> r10 V17._value(offs=0x00) P-INDEP "field V17._value (fldOffset=0x0)" ; V37 tmp33 [V37 ] ( 2, 4 ) struct (16) [rsp+0x38] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V38 tmp34 [V38,T02] ( 3, 6 ) byref -> r11 stack-byref "BlockOp address local" ; V39 tmp35 [V39 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V40 tmp36 [V40,T03] ( 3, 6 ) byref -> rdx stack-byref "BlockOp address local" ; V41 tmp37 [V41,T08] ( 2, 4 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 72 G_M60185_IG01: sub rsp, 72 xor rax, rax mov qword ptr [rsp+28H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 mov qword ptr [rsp+40H], rax ;; bbWeight=1 PerfScore 3.83 G_M60185_IG02: test rdx, rdx je SHORT G_M60185_IG06 ;; bbWeight=1 PerfScore 1.25 G_M60185_IG03: test r8, r8 je SHORT G_M60185_IG07 ;; bbWeight=1 PerfScore 1.25 G_M60185_IG04: lea rax, bword ptr [rdx+12] mov edx, dword ptr [rdx+8] lea r10, bword ptr [r8+12] mov r8d, dword ptr [r8+8] lea r11, bword ptr [rsp+38H] mov bword ptr [r11], rax mov dword ptr [r11+8], edx lea rdx, bword ptr [rsp+28H] mov bword ptr [rdx], r10 mov dword ptr [rdx+8], r8d lea rdx, bword ptr [rsp+38H] lea r8, bword ptr [rsp+28H] call CompareInfo:IsPrefix(ReadOnlySpan`1,ReadOnlySpan`1,int):bool:this nop ;; bbWeight=1 PerfScore 12.25 G_M60185_IG05: add rsp, 72 ret ;; bbWeight=1 PerfScore 1.25 G_M60185_IG06: mov ecx, 38 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M60185_IG07: mov ecx, 88 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 118, prolog size 26, PerfScore 31.83, (MethodHash=abe514e6) for method CompareInfo:IsPrefix(String,String,int):bool:this ; ============================================================ ; Assembly listing for method CompareInfo:IsPrefix(ReadOnlySpan`1,ReadOnlySpan`1,int):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 2.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 4, 8 ) byref -> rdx ; V02 arg2 [V02,T01] ( 4, 8 ) byref -> r8 ld-addr-op ; V03 arg3 [V03,T02] ( 7, 4 ) int -> r9 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T21] ( 2, 1 ) bool -> rax "Inline return value spill temp" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V08 tmp4 [V08,T11] ( 3, 1.50) bool -> rax "Inline return value spill temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V10 tmp6 [V10,T12] ( 3, 1.50) int -> r8 "Inline stloc first use temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V13 tmp9 [V13,T24] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V17 tmp13 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V21 tmp17 [V21,T13] ( 3, 1.50) bool -> rax "Inline return value spill temp" ;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V23 tmp19 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V27 tmp23 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V28 tmp24 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V29 tmp25 [V29,T07] ( 4, 2.50) byref -> rbx V57._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ; V30 tmp26 [V30,T09] ( 4, 2.50) int -> rbp V57._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ; V31 tmp27 [V31,T08] ( 4, 2.50) byref -> rsi V58._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ; V32 tmp28 [V32,T04] ( 5, 3.50) int -> rdi V58._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V33 tmp29 [V33,T15] ( 2, 1 ) byref -> rbx V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V34 tmp30 [V34,T22] ( 2, 1 ) int -> rbp V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V35 tmp31 [V35,T16] ( 2, 1 ) byref -> rsi V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V36 tmp32 [V36,T23] ( 2, 1 ) int -> rdi V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V37 tmp33 [V37,T17] ( 2, 1 ) byref -> rdx V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ; V39 tmp35 [V39,T18] ( 2, 1 ) byref -> rcx V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ;* V40 tmp36 [V40 ] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ;* V41 tmp37 [V41 ] ( 0, 0 ) byref -> zero-ref V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ;* V42 tmp38 [V42 ] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ;* V43 tmp39 [V43 ] ( 0, 0 ) byref -> zero-ref V17._pointer(offs=0x00) P-INDEP "field V17._pointer (fldOffset=0x0)" ;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)" ;* V45 tmp41 [V45 ] ( 0, 0 ) byref -> zero-ref V19._pointer(offs=0x00) P-INDEP "field V19._pointer (fldOffset=0x0)" ;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)" ;* V47 tmp43 [V47 ] ( 0, 0 ) byref -> zero-ref V20._pointer(offs=0x00) P-INDEP "field V20._pointer (fldOffset=0x0)" ;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref V20._length(offs=0x08) P-INDEP "field V20._length (fldOffset=0x8)" ; V49 tmp45 [V49,T19] ( 2, 1 ) byref -> rdx V22._pointer(offs=0x00) P-INDEP "field V22._pointer (fldOffset=0x0)" ; V50 tmp46 [V50,T14] ( 3, 1.50) int -> r8 V22._length(offs=0x08) P-INDEP "field V22._length (fldOffset=0x8)" ; V51 tmp47 [V51,T20] ( 2, 1 ) byref -> rcx V23._pointer(offs=0x00) P-INDEP "field V23._pointer (fldOffset=0x0)" ;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref V23._length(offs=0x08) P-INDEP "field V23._length (fldOffset=0x8)" ;* V53 tmp49 [V53 ] ( 0, 0 ) byref -> zero-ref V27._pointer(offs=0x00) P-INDEP "field V27._pointer (fldOffset=0x0)" ;* V54 tmp50 [V54 ] ( 0, 0 ) int -> zero-ref V27._length(offs=0x08) P-INDEP "field V27._length (fldOffset=0x8)" ;* V55 tmp51 [V55 ] ( 0, 0 ) byref -> zero-ref V28._pointer(offs=0x00) P-INDEP "field V28._pointer (fldOffset=0x0)" ;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref V28._length(offs=0x08) P-INDEP "field V28._length (fldOffset=0x8)" ;* V57 tmp53 [V57 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ;* V58 tmp54 [V58 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V59 tmp55 [V59 ] ( 2, 2 ) struct (16) [rsp+0x38] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V60 tmp56 [V60,T05] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V61 tmp57 [V61 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V62 tmp58 [V62,T06] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V63 tmp59 [V63,T10] ( 2, 2 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 72 G_M22361_IG01: push rdi push rsi push rbp push rbx sub rsp, 72 xor rax, rax mov qword ptr [rsp+28H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 mov qword ptr [rsp+40H], rax ;; bbWeight=1 PerfScore 7.83 G_M22361_IG02: mov rsi, bword ptr [r8] mov edi, dword ptr [r8+8] mov rbx, bword ptr [rdx] mov ebp, dword ptr [rdx+8] ;; bbWeight=1 PerfScore 8.00 G_M22361_IG03: test edi, edi ja SHORT G_M22361_IG06 ;; bbWeight=1 PerfScore 1.25 G_M22361_IG04: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M22361_IG05: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M22361_IG06: test r9d, -32 jne SHORT G_M22361_IG08 lea rdx, bword ptr [rsp+38H] mov bword ptr [rdx], rbx mov dword ptr [rdx+8], ebp lea rdx, bword ptr [rsp+28H] mov bword ptr [rdx], rsi mov dword ptr [rdx+8], edi lea rdx, bword ptr [rsp+38H] lea r8, bword ptr [rsp+28H] call CompareInfo:IcuStartsWith(ReadOnlySpan`1,ReadOnlySpan`1,int):bool:this movzx rax, al ;; bbWeight=0.50 PerfScore 4.25 G_M22361_IG07: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M22361_IG08: cmp r9d, 0xD1FFAB1E je SHORT G_M22361_IG12 cmp r9d, 0xD1FFAB1E jne SHORT G_M22361_IG16 ;; bbWeight=0.50 PerfScore 1.25 G_M22361_IG09: mov rcx, rbx mov rdx, rsi mov r8d, edi cmp r8d, ebp jg SHORT G_M22361_IG15 call CompareInfo:EqualsOrdinalIgnoreCase(byref,byref,int):bool ;; bbWeight=0.50 PerfScore 1.50 G_M22361_IG10: nop ;; bbWeight=0.50 PerfScore 0.13 G_M22361_IG11: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M22361_IG12: mov rcx, rbx mov rdx, rsi mov r8d, edi cmp r8d, ebp jg SHORT G_M22361_IG13 movsxd r8, r8d add r8, r8 call SpanHelpers:SequenceEqual(byref,byref,long):bool jmp SHORT G_M22361_IG14 ;; bbWeight=0.50 PerfScore 2.75 G_M22361_IG13: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M22361_IG14: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M22361_IG15: xor eax, eax jmp SHORT G_M22361_IG10 ;; bbWeight=0.50 PerfScore 1.13 G_M22361_IG16: mov ecx, r9d call CompareInfo:ThrowCompareOptionsCheckFailed(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 217, prolog size 30, PerfScore 56.73, (MethodHash=5796a8a6) for method CompareInfo:IsPrefix(ReadOnlySpan`1,ReadOnlySpan`1,int):bool:this ; ============================================================ ; Assembly listing for method CompareInfo:IcuStartsWith(ReadOnlySpan`1,ReadOnlySpan`1,int):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 6, 4.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 6, 8 ) byref -> rdx ld-addr-op ; V02 arg2 [V02,T01] ( 6, 8 ) byref -> r8 ld-addr-op ; V03 arg3 [V03,T03] ( 7, 4.50) int -> r9 ;* V04 loc0 [V04 ] ( 0, 0 ) long -> zero-ref ; V05 loc1 [V05 ] ( 1, 0.50) byref -> [rbp-0x08] must-init pinned ;* V06 loc2 [V06 ] ( 0, 0 ) long -> zero-ref ; V07 loc3 [V07 ] ( 1, 0.50) byref -> [rbp-0x10] must-init pinned ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T04] ( 2, 2 ) long -> rcx "impAppendStmt" ; V10 tmp2 [V10,T05] ( 2, 2 ) int -> r8 "impAppendStmt" ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V13 tmp5 [V13 ] ( 0, 0 ) byref -> zero-ref V21._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ;* V14 tmp6 [V14 ] ( 0, 0 ) int -> zero-ref V21._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ;* V15 tmp7 [V15 ] ( 0, 0 ) byref -> zero-ref V22._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ;* V16 tmp8 [V16 ] ( 0, 0 ) int -> zero-ref V22._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V17 tmp9 [V17,T08] ( 3, 1.50) byref -> rax V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ;* V18 tmp10 [V18 ] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ; V19 tmp11 [V19,T09] ( 3, 1.50) byref -> r10 V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ;* V20 tmp12 [V20 ] ( 0, 0 ) int -> zero-ref V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ;* V21 tmp13 [V21 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ;* V22 tmp14 [V22 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V23 tmp15 [V23 ] ( 4, 4 ) struct (16) [rbp-0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V24 tmp16 [V24 ] ( 4, 4 ) struct (16) [rbp-0x30] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ;* V25 tmp17 [V25,T10] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V26 tmp18 [V26,T11] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V27 tmp19 [V27,T06] ( 2, 2 ) long -> rax "Cast away GC" ; V28 tmp20 [V28,T07] ( 2, 2 ) long -> r10 "Cast away GC" ; ; Lcl frame size = 96 G_M44989_IG01: push rbp sub rsp, 96 vzeroupper lea rbp, [rsp+60H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-30H], xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 6.08 G_M44989_IG02: cmp byte ptr [rcx+44], 0 je SHORT G_M44989_IG12 ;; bbWeight=1 PerfScore 3.00 G_M44989_IG03: test r9b, 4 jne SHORT G_M44989_IG12 test r9b, 1 je SHORT G_M44989_IG08 ;; bbWeight=0.50 PerfScore 1.25 G_M44989_IG04: vmovdqu xmm0, xmmword ptr [rdx] vmovdqu xmmword ptr [rbp-20H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M44989_IG05: vmovdqu xmm0, xmmword ptr [r8] vmovdqu xmmword ptr [rbp-30H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M44989_IG06: lea rdx, bword ptr [rbp-20H] lea r8, bword ptr [rbp-30H] call CompareInfo:StartsWithOrdinalIgnoreCaseHelper(ReadOnlySpan`1,ReadOnlySpan`1,int):bool:this nop ;; bbWeight=0.50 PerfScore 1.13 G_M44989_IG07: lea rsp, [rbp] pop rbp ret ;; bbWeight=0.50 PerfScore 1.00 G_M44989_IG08: vmovdqu xmm0, xmmword ptr [rdx] vmovdqu xmmword ptr [rbp-20H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M44989_IG09: vmovdqu xmm0, xmmword ptr [r8] vmovdqu xmmword ptr [rbp-30H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M44989_IG10: lea rdx, bword ptr [rbp-20H] lea r8, bword ptr [rbp-30H] call CompareInfo:StartsWithOrdinalHelper(ReadOnlySpan`1,ReadOnlySpan`1,int):bool:this nop ;; bbWeight=0.50 PerfScore 1.13 G_M44989_IG11: lea rsp, [rbp] pop rbp ret ;; bbWeight=0.50 PerfScore 1.00 G_M44989_IG12: mov rax, bword ptr [rdx] mov bword ptr [rbp-08H], rax mov r10, bword ptr [r8] mov bword ptr [rbp-10H], r10 mov rcx, qword ptr [rcx+32] mov r8d, dword ptr [r8+8] mov edx, dword ptr [rdx+8] mov dword ptr [rsp+20H], edx mov dword ptr [rsp+28H], r9d mov rdx, r10 mov r9, rax call Globalization:StartsWith(long,long,int,long,int,int):bool nop ;; bbWeight=0.50 PerfScore 7.88 G_M44989_IG13: lea rsp, [rbp] pop rbp ret ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 180, prolog size 32, PerfScore 48.46, (MethodHash=ba4d5042) for method CompareInfo:IcuStartsWith(ReadOnlySpan`1,ReadOnlySpan`1,int):bool:this ; ============================================================ ; Assembly listing for method CompareInfo:StartsWithOrdinalHelper(ReadOnlySpan`1,ReadOnlySpan`1,int):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T09] ( 3, 2.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T05] ( 4, 8 ) byref -> rdx ld-addr-op ; V02 arg2 [V02,T06] ( 4, 8 ) byref -> r8 ld-addr-op ; V03 arg3 [V03,T10] ( 3, 2.50) int -> r9 ; V04 loc0 [V04,T04] ( 5, 14 ) int -> r11 ; V05 loc1 [V05,T17] ( 4, 3 ) long -> r10 ; V06 loc2 [V06 ] ( 1, 1 ) byref -> [rbp-0x38] must-init pinned ; V07 loc3 [V07,T18] ( 4, 3 ) long -> rax ; V08 loc4 [V08 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned ; V09 loc5 [V09,T02] ( 7, 14.50) long -> rsi ; V10 loc6 [V10,T03] ( 7, 14.50) long -> rdi ; V11 loc7 [V11,T00] ( 4, 16 ) int -> rbx ; V12 loc8 [V12,T01] ( 4, 16 ) int -> r14 ;* V13 loc9 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15,T13] ( 2, 4 ) int -> r11 "impAppendStmt" ; V16 tmp2 [V16,T20] ( 2, 2 ) long -> rcx "impAppendStmt" ;* V17 tmp3 [V17 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V18 tmp4 [V18 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V19 tmp5 [V19 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V20 tmp6 [V20,T19] ( 3, 2 ) int -> r11 "Inline return value spill temp" ; V21 tmp7 [V21,T14] ( 2, 4 ) int -> rsi "Inlining Arg" ;* V22 tmp8 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V23 tmp9 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V24 tmp10 [V24 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V25 tmp11 [V25 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V26 tmp12 [V26 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V27 tmp13 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V28 tmp14 [V28,T11] ( 3, 3 ) byref -> r10 V44._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ; V29 tmp15 [V29,T07] ( 7, 4.50) int -> rdx V44._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ; V30 tmp16 [V30,T12] ( 3, 3 ) byref -> rax V45._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ; V31 tmp17 [V31,T08] ( 7, 4.50) int -> r8 V45._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ;* V32 tmp18 [V32 ] ( 0, 0 ) byref -> zero-ref V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ;* V33 tmp19 [V33 ] ( 0, 0 ) int -> zero-ref V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ;* V34 tmp20 [V34,T21] ( 0, 0 ) byref -> zero-ref V22._pointer(offs=0x00) P-INDEP "field V22._pointer (fldOffset=0x0)" ;* V35 tmp21 [V35 ] ( 0, 0 ) int -> zero-ref V22._length(offs=0x08) P-INDEP "field V22._length (fldOffset=0x8)" ;* V36 tmp22 [V36,T22] ( 0, 0 ) byref -> zero-ref V23._pointer(offs=0x00) P-INDEP "field V23._pointer (fldOffset=0x0)" ;* V37 tmp23 [V37 ] ( 0, 0 ) int -> zero-ref V23._length(offs=0x08) P-INDEP "field V23._length (fldOffset=0x8)" ;* V38 tmp24 [V38 ] ( 0, 0 ) byref -> zero-ref V24._pointer(offs=0x00) P-INDEP "field V24._pointer (fldOffset=0x0)" ;* V39 tmp25 [V39 ] ( 0, 0 ) int -> zero-ref V24._length(offs=0x08) P-INDEP "field V24._length (fldOffset=0x8)" ;* V40 tmp26 [V40 ] ( 0, 0 ) byref -> zero-ref V25._value(offs=0x00) P-INDEP "field V25._value (fldOffset=0x0)" ;* V41 tmp27 [V41 ] ( 0, 0 ) byref -> zero-ref V26._pointer(offs=0x00) P-INDEP "field V26._pointer (fldOffset=0x0)" ;* V42 tmp28 [V42 ] ( 0, 0 ) int -> zero-ref V26._length(offs=0x08) P-INDEP "field V26._length (fldOffset=0x8)" ;* V43 tmp29 [V43 ] ( 0, 0 ) byref -> zero-ref V27._value(offs=0x00) P-INDEP "field V27._value (fldOffset=0x0)" ;* V44 tmp30 [V44 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ;* V45 tmp31 [V45 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V46 tmp32 [V46,T15] ( 2, 4 ) long -> r10 "Cast away GC" ; V47 tmp33 [V47,T16] ( 2, 4 ) long -> rax "Cast away GC" ; ; Lcl frame size = 64 G_M15543_IG01: push rbp push r15 push r14 push r12 push rdi push rsi push rbx sub rsp, 64 lea rbp, [rsp+70H] xor rax, rax mov qword ptr [rbp-38H], rax mov qword ptr [rbp-40H], rax ;; bbWeight=1 PerfScore 10.00 G_M15543_IG02: mov rax, bword ptr [r8] mov r8d, dword ptr [r8+8] mov r10, bword ptr [rdx] mov edx, dword ptr [rdx+8] ;; bbWeight=1 PerfScore 8.00 G_M15543_IG03: mov r11d, edx mov esi, r8d cmp r11d, esi jle SHORT G_M15543_IG05 ;; bbWeight=1 PerfScore 1.75 G_M15543_IG04: mov r11d, r8d jmp SHORT G_M15543_IG06 ;; bbWeight=0.50 PerfScore 1.13 G_M15543_IG05: mov r11d, edx ;; bbWeight=0.50 PerfScore 0.13 G_M15543_IG06: mov bword ptr [rbp-38H], r10 mov bword ptr [rbp-40H], rax mov rsi, r10 mov rdi, rax test r11d, r11d je SHORT G_M15543_IG08 ;; bbWeight=1 PerfScore 3.75 G_M15543_IG07: movzx rbx, word ptr [rsi] movzx r14, word ptr [rdi] cmp ebx, 128 jge G_M15543_IG17 cmp r14d, 128 jge G_M15543_IG17 movsxd r15, ebx mov r12, 0xD1FFAB1E cmp byte ptr [r15+r12], 0 jne G_M15543_IG17 movsxd r15, r14d mov r12, 0xD1FFAB1E cmp byte ptr [r15+r12], 0 jne G_M15543_IG17 cmp ebx, r14d jne SHORT G_M15543_IG10 add rsi, 2 add rdi, 2 dec r11d jne SHORT G_M15543_IG07 ;; bbWeight=4 PerfScore 66.00 G_M15543_IG08: cmp edx, r8d jge SHORT G_M15543_IG14 cmp word ptr [rdi], 128 jae SHORT G_M15543_IG17 xor eax, eax ;; bbWeight=0.50 PerfScore 2.25 G_M15543_IG09: lea rsp, [rbp-30H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.50 G_M15543_IG10: movsxd r11, edx lea r11, [r10+2*r11-2] cmp r11, rsi jbe SHORT G_M15543_IG11 cmp word ptr [rsi+2], 128 jae SHORT G_M15543_IG17 ;; bbWeight=0.50 PerfScore 2.75 G_M15543_IG11: movsxd r11, r8d lea r11, [rax+2*r11-2] cmp r11, rdi jbe SHORT G_M15543_IG12 cmp word ptr [rdi+2], 128 jae SHORT G_M15543_IG17 ;; bbWeight=0.50 PerfScore 2.75 G_M15543_IG12: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M15543_IG13: lea rsp, [rbp-30H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.50 G_M15543_IG14: cmp edx, r8d jle SHORT G_M15543_IG15 cmp word ptr [rsi], 128 jae SHORT G_M15543_IG17 ;; bbWeight=0.50 PerfScore 2.13 G_M15543_IG15: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M15543_IG16: lea rsp, [rbp-30H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.50 G_M15543_IG17: mov rcx, qword ptr [rcx+32] mov dword ptr [rsp+20H], edx mov dword ptr [rsp+28H], r9d mov rdx, rax mov r9, r10 call Globalization:StartsWith(long,long,int,long,int,int):bool nop ;; bbWeight=0.50 PerfScore 2.88 G_M15543_IG18: lea rsp, [rbp-30H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.50 ; Total bytes of code 338, prolog size 29, PerfScore 147.55, (MethodHash=51cac348) for method CompareInfo:StartsWithOrdinalHelper(ReadOnlySpan`1,ReadOnlySpan`1,int):bool:this ; ============================================================ ; Assembly listing for method Version:.ctor(int,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) int -> rdx ; V02 arg2 [V02,T02] ( 4, 4 ) int -> r8 ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp3 [V06,T05] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp4 [V07,T06] ( 2, 0 ) ref -> rdi "argument with side effect" ; V08 tmp5 [V08,T07] ( 2, 0 ) ref -> r8 "argument with side effect" ; V09 tmp6 [V09,T08] ( 2, 0 ) ref -> rcx "argument with side effect" ; V10 tmp7 [V10,T09] ( 2, 0 ) ref -> rdi "argument with side effect" ; V11 tmp8 [V11,T10] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M30831_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M30831_IG02: test edx, edx jl SHORT G_M30831_IG06 ;; bbWeight=1 PerfScore 1.25 G_M30831_IG03: test r8d, r8d jl SHORT G_M30831_IG07 ;; bbWeight=1 PerfScore 1.25 G_M30831_IG04: mov dword ptr [rcx+8], edx mov dword ptr [rcx+12], r8d mov dword ptr [rcx+16], -1 mov dword ptr [rcx+20], -1 ;; bbWeight=1 PerfScore 4.00 G_M30831_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M30831_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x138D4 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA807 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M30831_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x138E0 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA807 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 230, prolog size 6, PerfScore 34.00, (MethodHash=5ec78790) for method Version:.ctor(int,int):this ; ============================================================ ; Assembly listing for method Version:get_DefaultFormatFieldCount():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M33870_IG01: ;; bbWeight=1 PerfScore 0.00 G_M33870_IG02: cmp dword ptr [rcx+16], -1 je SHORT G_M33870_IG07 ;; bbWeight=1 PerfScore 3.00 G_M33870_IG03: cmp dword ptr [rcx+20], -1 je SHORT G_M33870_IG05 mov eax, 4 ;; bbWeight=0.50 PerfScore 1.63 G_M33870_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M33870_IG05: mov eax, 3 ;; bbWeight=0.50 PerfScore 0.13 G_M33870_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 G_M33870_IG07: mov eax, 2 ;; bbWeight=0.50 PerfScore 0.13 G_M33870_IG08: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 30, prolog size 0, PerfScore 9.38, (MethodHash=71d97bb1) for method Version:get_DefaultFormatFieldCount():int:this ; ============================================================ ; Assembly listing for method Version:ToString(int):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 5, 4 ) int -> rdx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" ; V04 tmp2 [V04,T02] ( 5, 4.50) ref -> rsi class-hnd "Inlining Arg" ; V05 tmp3 [V05,T04] ( 2, 1 ) ref -> rdi class-hnd "Inline stloc first use temp" ; V06 tmp4 [V06,T03] ( 2, 2 ) byref -> rcx "Inlining Arg" ; ; Lcl frame size = 40 G_M55349_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M55349_IG02: test edx, edx je SHORT G_M55349_IG09 ;; bbWeight=1 PerfScore 1.25 G_M55349_IG03: cmp edx, 1 je SHORT G_M55349_IG07 call Version:ToCachedStringBuilder(int):StringBuilder:this mov rsi, rax mov rcx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]StringBuilder:ToString():String:this mov rdi, rax mov rcx, gword ptr [rsi+8] mov ecx, dword ptr [rcx+8] add ecx, dword ptr [rsi+28] cmp ecx, 360 jg SHORT G_M55349_IG05 ;; bbWeight=0.50 PerfScore 7.75 G_M55349_IG04: mov rcx, 0xD1FFAB1E mov edx, 926 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR lea rcx, bword ptr [rax+64] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.25 PerfScore 0.81 G_M55349_IG05: mov rax, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M55349_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M55349_IG07: add rcx, 8 mov ecx, dword ptr [rcx] ;; bbWeight=0.50 PerfScore 1.13 G_M55349_IG08: add rsp, 40 pop rsi pop rdi jmp Number:Int32ToDecStr(int):String ;; bbWeight=0.50 PerfScore 1.63 G_M55349_IG09: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M55349_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 140, prolog size 6, PerfScore 32.31, (MethodHash=3ac127ca) for method Version:ToString(int):String:this ; ============================================================ ; Assembly listing for method Version:ToCachedStringBuilder(int):StringBuilder:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 13, 7.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) int -> rdx ; V02 loc0 [V02,T04] ( 6, 3 ) ref -> rdi class-hnd ; V03 loc1 [V03,T03] ( 8, 4 ) ref -> rdi class-hnd ; V04 loc2 [V04,T02] ( 10, 5 ) ref -> rdi class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T14] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T15] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp3 [V08,T16] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp4 [V09,T05] ( 2, 2 ) int -> rdx "Inlining Arg" ; V10 tmp5 [V10,T06] ( 2, 2 ) int -> rdx "Inlining Arg" ; V11 tmp6 [V11,T07] ( 2, 2 ) int -> rdx "Inlining Arg" ; V12 tmp7 [V12,T08] ( 2, 2 ) int -> rdx "Inlining Arg" ; V13 tmp8 [V13,T09] ( 2, 2 ) int -> rdx "Inlining Arg" ; V14 tmp9 [V14,T10] ( 2, 2 ) int -> rdx "Inlining Arg" ; V15 tmp10 [V15,T11] ( 2, 2 ) int -> rdx "Inlining Arg" ; V16 tmp11 [V16,T12] ( 2, 2 ) int -> rdx "Inlining Arg" ; V17 tmp12 [V17,T13] ( 2, 2 ) int -> rdx "Inlining Arg" ; V18 tmp13 [V18,T17] ( 2, 0 ) ref -> rcx "argument with side effect" ; V19 tmp14 [V19,T18] ( 2, 0 ) ref -> rdi "argument with side effect" ; V20 tmp15 [V20,T19] ( 2, 0 ) ref -> rbx "argument with side effect" ; V21 tmp16 [V21,T20] ( 2, 0 ) ref -> r8 "argument with side effect" ; V22 tmp17 [V22,T21] ( 2, 0 ) ref -> rdi "argument with side effect" ; V23 tmp18 [V23,T22] ( 2, 0 ) ref -> r8 "argument with side effect" ; V24 tmp19 [V24,T23] ( 2, 0 ) ref -> rcx "argument with side effect" ; V25 tmp20 [V25,T24] ( 2, 0 ) ref -> rdi "argument with side effect" ; V26 tmp21 [V26,T25] ( 2, 0 ) ref -> rbx "argument with side effect" ; V27 tmp22 [V27,T26] ( 2, 0 ) ref -> r8 "argument with side effect" ; V28 tmp23 [V28,T27] ( 2, 0 ) ref -> rdi "argument with side effect" ; V29 tmp24 [V29,T28] ( 2, 0 ) ref -> r8 "argument with side effect" ; V30 tmp25 [V30,T29] ( 2, 0 ) ref -> rcx "argument with side effect" ; V31 tmp26 [V31,T30] ( 2, 0 ) ref -> rdi "argument with side effect" ; V32 tmp27 [V32,T31] ( 2, 0 ) ref -> rbx "argument with side effect" ; V33 tmp28 [V33,T32] ( 2, 0 ) ref -> r8 "argument with side effect" ; V34 tmp29 [V34,T33] ( 2, 0 ) ref -> rdi "argument with side effect" ; V35 tmp30 [V35,T34] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 32 G_M28349_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M28349_IG02: cmp edx, 2 jne SHORT G_M28349_IG05 ;; bbWeight=1 PerfScore 1.25 G_M28349_IG03: mov ecx, 16 call StringBuilderCache:Acquire(int):StringBuilder mov rdi, rax mov edx, dword ptr [rsi+8] cmp dword ptr [rdi], edi mov rcx, rdi call StringBuilder:AppendSpanFormattable(int):StringBuilder:this mov rcx, rdi mov edx, 46 call StringBuilder:Append(ushort):StringBuilder:this mov edx, dword ptr [rsi+12] mov rcx, rdi call StringBuilder:AppendSpanFormattable(int):StringBuilder:this mov rax, rdi ;; bbWeight=0.50 PerfScore 5.88 G_M28349_IG04: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M28349_IG05: cmp dword ptr [rsi+16], -1 je G_M28349_IG12 ;; bbWeight=0.50 PerfScore 1.50 G_M28349_IG06: cmp edx, 3 jne SHORT G_M28349_IG08 mov ecx, 16 call StringBuilderCache:Acquire(int):StringBuilder mov rdi, rax mov edx, dword ptr [rsi+8] cmp dword ptr [rdi], edi mov rcx, rdi call StringBuilder:AppendSpanFormattable(int):StringBuilder:this mov rcx, rdi mov edx, 46 call StringBuilder:Append(ushort):StringBuilder:this mov edx, dword ptr [rsi+12] mov rcx, rdi call StringBuilder:AppendSpanFormattable(int):StringBuilder:this mov rcx, rdi mov edx, 46 call StringBuilder:Append(ushort):StringBuilder:this mov edx, dword ptr [rsi+16] mov rcx, rdi call StringBuilder:AppendSpanFormattable(int):StringBuilder:this mov rax, rdi ;; bbWeight=0.50 PerfScore 8.88 G_M28349_IG07: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M28349_IG08: cmp dword ptr [rsi+20], -1 je G_M28349_IG13 ;; bbWeight=0.50 PerfScore 1.50 G_M28349_IG09: cmp edx, 4 jne SHORT G_M28349_IG11 mov ecx, 16 call StringBuilderCache:Acquire(int):StringBuilder mov rdi, rax mov edx, dword ptr [rsi+8] cmp dword ptr [rdi], edi mov rcx, rdi call StringBuilder:AppendSpanFormattable(int):StringBuilder:this mov rcx, rdi mov edx, 46 call StringBuilder:Append(ushort):StringBuilder:this mov edx, dword ptr [rsi+12] mov rcx, rdi call StringBuilder:AppendSpanFormattable(int):StringBuilder:this mov rcx, rdi mov edx, 46 call StringBuilder:Append(ushort):StringBuilder:this mov edx, dword ptr [rsi+16] mov rcx, rdi call StringBuilder:AppendSpanFormattable(int):StringBuilder:this mov rcx, rdi mov edx, 46 call StringBuilder:Append(ushort):StringBuilder:this mov edx, dword ptr [rsi+20] mov rcx, rdi call StringBuilder:AppendSpanFormattable(int):StringBuilder:this mov rax, rdi ;; bbWeight=0.50 PerfScore 11.25 G_M28349_IG10: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M28349_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x9551 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 741 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov ecx, 0x2BB2 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rcx, rdi mov rdx, rbx call SR:Format(String,Object,Object):String mov rdi, rax mov ecx, 0x1390A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M28349_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x9551 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 741 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov ecx, 0x2BAA mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rcx, rdi mov rdx, rbx call SR:Format(String,Object,Object):String mov rdi, rax mov ecx, 0x1390A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M28349_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x9551 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 741 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov ecx, 0x2BAE mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rcx, rdi mov rdx, rbx call SR:Format(String,Object,Object):String mov rdi, rax mov ecx, 0x1390A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 760, prolog size 7, PerfScore 113.88, (MethodHash=be419142) for method Version:ToCachedStringBuilder(int):StringBuilder:this ; ============================================================ ; Assembly listing for method StringBuilderCache:Acquire(int):StringBuilder ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4 ) int -> rsi ; V01 loc0 [V01,T01] ( 6, 3 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 cse0 [V04,T03] ( 3, 1.50) byref -> rax "CSE - moderate" ; ; Lcl frame size = 40 G_M55100_IG01: push rdi push rsi sub rsp, 40 mov esi, ecx ;; bbWeight=1 PerfScore 2.50 G_M55100_IG02: cmp esi, 360 jg SHORT G_M55100_IG05 ;; bbWeight=1 PerfScore 1.25 G_M55100_IG03: mov rcx, 0xD1FFAB1E mov edx, 926 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR mov rdi, gword ptr [rax+64] test rdi, rdi je SHORT G_M55100_IG05 mov rcx, gword ptr [rdi+8] mov ecx, dword ptr [rcx+8] add ecx, dword ptr [rdi+28] cmp ecx, esi jl SHORT G_M55100_IG05 xor rcx, rcx mov gword ptr [rax+64], rcx mov rcx, rdi xor edx, edx call StringBuilder:set_Length(int):this mov rax, rdi ;; bbWeight=0.50 PerfScore 7.50 G_M55100_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M55100_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov edx, esi mov r8d, 0xD1FFAB1E call StringBuilder:.ctor(int,int):this mov rax, rdi ;; bbWeight=0.50 PerfScore 1.75 G_M55100_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 129, prolog size 6, PerfScore 28.15, (MethodHash=a17428c3) for method StringBuilderCache:Acquire(int):StringBuilder ; ============================================================ ; Assembly listing for method StringBuilder:.ctor(int,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 9, 7.50) int -> rsi ; V02 arg2 [V02,T01] ( 7, 6 ) int -> r8 ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T10] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp3 [V06,T11] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp4 [V07,T07] ( 3, 1.50) int -> rsi "Inline return value spill temp" ; V08 tmp5 [V08,T03] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" ;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V10 tmp7 [V10 ] ( 2, 1 ) struct ( 8) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" ; V11 tmp8 [V11,T04] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ;* V12 tmp9 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V13 tmp10 [V13,T05] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ; V14 tmp11 [V14 ] ( 2, 1 ) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed V10.m_type(offs=0x00) P-DEP "field V10.m_type (fldOffset=0x0)" ; V15 tmp12 [V15,T08] ( 2, 1 ) ref -> rax V12.m_type(offs=0x00) P-INDEP "field V12.m_type (fldOffset=0x0)" ; V16 tmp13 [V16,T12] ( 2, 0 ) ref -> rcx "argument with side effect" ; V17 tmp14 [V17,T13] ( 2, 0 ) ref -> rdi "argument with side effect" ; V18 tmp15 [V18,T14] ( 2, 0 ) ref -> r8 "argument with side effect" ; V19 tmp16 [V19,T15] ( 2, 0 ) ref -> rcx "argument with side effect" ; V20 tmp17 [V20,T16] ( 2, 0 ) ref -> rdi "argument with side effect" ; V21 tmp18 [V21,T17] ( 2, 0 ) ref -> r8 "argument with side effect" ; V22 tmp19 [V22,T18] ( 2, 0 ) ref -> rcx "argument with side effect" ; V23 tmp20 [V23,T19] ( 2, 0 ) ref -> rbx "argument with side effect" ; V24 tmp21 [V24,T20] ( 2, 0 ) ref -> rdx "argument with side effect" ; V25 tmp22 [V25,T21] ( 2, 0 ) ref -> rdi "argument with side effect" ; V26 tmp23 [V26,T22] ( 2, 0 ) ref -> r8 "argument with side effect" ; V27 tmp24 [V27,T06] ( 2, 2 ) long -> rcx "argument with side effect" ; ; Lcl frame size = 48 G_M21345_IG01: push rdi push rsi push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov rdi, rcx mov esi, edx ;; bbWeight=1 PerfScore 5.00 G_M21345_IG02: cmp esi, r8d jg G_M21345_IG13 ;; bbWeight=1 PerfScore 1.25 G_M21345_IG03: test r8d, r8d jle G_M21345_IG14 ;; bbWeight=1 PerfScore 1.25 G_M21345_IG04: test esi, esi jl G_M21345_IG15 ;; bbWeight=1 PerfScore 1.25 G_M21345_IG05: test esi, esi jne SHORT G_M21345_IG08 ;; bbWeight=1 PerfScore 1.25 G_M21345_IG06: cmp r8d, 16 jge SHORT G_M21345_IG07 mov esi, r8d jmp SHORT G_M21345_IG08 ;; bbWeight=0.50 PerfScore 1.75 G_M21345_IG07: mov esi, 16 ;; bbWeight=0.50 PerfScore 0.13 G_M21345_IG08: mov dword ptr [rdi+32], r8d cmp esi, 0x400 jge SHORT G_M21345_IG10 ;; bbWeight=1 PerfScore 2.25 G_M21345_IG09: movsxd rdx, esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC jmp SHORT G_M21345_IG11 ;; bbWeight=0.50 PerfScore 1.75 G_M21345_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov gword ptr [rsp+28H], rax lea rcx, bword ptr [rsp+28H] call RuntimeTypeHandle:get_Value():long:this mov rcx, rax mov edx, esi mov r8d, 16 call GC:AllocateNewArray(long,int,int):Array ;; bbWeight=0.50 PerfScore 2.75 G_M21345_IG11: lea rcx, bword ptr [rdi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 2.00 G_M21345_IG12: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M21345_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x12EC2 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x95DF mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M21345_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1A449 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA4C1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M21345_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x12EC2 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA041 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov ecx, 0x12EC2 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rbx call SR:Format(String,Object):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 478, prolog size 14, PerfScore 71.18, (MethodHash=5a44ac9e) for method StringBuilder:.ctor(int,int):this ; ============================================================ ; Assembly listing for method StringBuilder:AppendSpanFormattable(int):StringBuilder:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T06] ( 4, 3.50) int -> rdi ld-addr-op ; V02 loc0 [V02 ] ( 2, 1.50) int -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V07 tmp3 [V07,T01] ( 3, 6 ) ref -> r8 class-hnd "Inlining Arg" ; V08 tmp4 [V08,T04] ( 3, 6 ) int -> r9 "Inlining Arg" ; V09 tmp5 [V09,T05] ( 3, 6 ) int -> rcx "Inlining Arg" ;* V10 tmp6 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V11 tmp7 [V11,T07] ( 2, 4 ) byref -> r8 "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V14 tmp10 [V14,T11] ( 2, 2 ) byref -> rdx V03._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ; V15 tmp11 [V15,T18] ( 2, 2 ) int -> r9 V03._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ; V16 tmp12 [V16,T12] ( 2, 2 ) byref -> r8 V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ; V17 tmp13 [V17,T19] ( 2, 2 ) int -> rcx V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ; V18 tmp14 [V18,T13] ( 2, 2 ) byref -> r8 V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V19 tmp15 [V19,T20] ( 2, 2 ) int -> rcx V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V20 tmp16 [V20,T14] ( 2, 2 ) byref -> r8 V10._value(offs=0x00) P-INDEP "field V10._value (fldOffset=0x0)" ; V21 tmp17 [V21,T15] ( 2, 2 ) byref -> rdx V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ; V22 tmp18 [V22,T21] ( 2, 2 ) int -> r9 V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ; V23 tmp19 [V23,T16] ( 2, 2 ) byref -> r8 V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ; V24 tmp20 [V24,T22] ( 2, 2 ) int -> rcx V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V25 tmp21 [V25 ] ( 2, 4 ) struct (16) [rsp+0x40] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V26 tmp22 [V26,T02] ( 3, 6 ) byref -> r10 stack-byref "BlockOp address local" ; V27 tmp23 [V27 ] ( 2, 4 ) struct (16) [rsp+0x30] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V28 tmp24 [V28,T03] ( 3, 6 ) byref -> rdx stack-byref "BlockOp address local" ; V29 tmp25 [V29,T08] ( 2, 4 ) int -> rax "argument with side effect" ; V30 tmp26 [V30,T17] ( 2, 2 ) ref -> rdx "argument with side effect" ; V31 cse0 [V31,T09] ( 3, 3 ) ref -> rcx "CSE - aggressive" ; V32 cse1 [V32,T10] ( 3, 3 ) int -> rdx "CSE - aggressive" ; ; Lcl frame size = 88 G_M3723_IG01: push rdi push rsi sub rsp, 88 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 5.08 G_M3723_IG02: mov rcx, gword ptr [rsi+8] mov r8, rcx mov edx, dword ptr [rsi+24] mov r9d, edx mov ecx, dword ptr [rcx+8] sub ecx, edx mov edx, r9d mov eax, ecx add rdx, rax mov eax, dword ptr [r8+8] cmp rdx, rax ja G_M3723_IG08 ;; bbWeight=1 PerfScore 10.75 G_M3723_IG03: add r8, 16 movsxd rdx, r9d lea r8, bword ptr [r8+2*rdx] xor rdx, rdx xor r9d, r9d mov eax, edi lea r10, bword ptr [rsp+40H] mov bword ptr [r10], rdx mov dword ptr [r10+8], r9d lea rdx, bword ptr [rsp+30H] mov bword ptr [rdx], r8 mov dword ptr [rdx+8], ecx lea rcx, [rsp+50H] mov qword ptr [rsp+28H], rcx mov ecx, eax lea r8, bword ptr [rsp+30H] mov bword ptr [rsp+20H], r8 lea r8, bword ptr [rsp+40H] mov edx, -1 xor r9, r9 call Number:TryFormatInt32(int,int,ReadOnlySpan`1,IFormatProvider,Span`1,byref):bool test al, al je SHORT G_M3723_IG06 ;; bbWeight=1 PerfScore 13.25 G_M3723_IG04: mov eax, dword ptr [rsp+50H] add dword ptr [rsi+24], eax mov rax, rsi ;; bbWeight=0.50 PerfScore 3.13 G_M3723_IG05: add rsp, 88 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M3723_IG06: mov ecx, edi call Number:Int32ToDecStr(int):String mov rdx, rax mov rcx, rsi call StringBuilder:Append(String):StringBuilder:this nop ;; bbWeight=0.50 PerfScore 1.50 G_M3723_IG07: add rsp, 88 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M3723_IG08: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 200, prolog size 22, PerfScore 56.26, (MethodHash=f98cf174) for method StringBuilder:AppendSpanFormattable(int):StringBuilder:this ; ============================================================ ; Assembly listing for method StringBuilder:Append(ushort):StringBuilder:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 3 ) ushort -> rdx ; V02 loc0 [V02,T03] ( 3, 2.50) int -> r8 ; V03 loc1 [V03,T02] ( 3, 2.50) ref -> rax class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 cse0 [V05,T04] ( 3, 2.50) int -> rcx "CSE - aggressive" ; V06 cse1 [V06,T05] ( 2, 2 ) int -> r9 "CSE - aggressive" ; ; Lcl frame size = 32 G_M35150_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M35150_IG02: mov ecx, dword ptr [rsi+24] mov r8d, ecx mov rax, gword ptr [rsi+8] mov r9d, dword ptr [rax+8] cmp r9d, r8d jbe SHORT G_M35150_IG04 ;; bbWeight=1 PerfScore 7.50 G_M35150_IG03: movsxd r8, r8d mov word ptr [rax+2*r8+16], dx inc ecx mov dword ptr [rsi+24], ecx jmp SHORT G_M35150_IG05 ;; bbWeight=0.50 PerfScore 2.25 G_M35150_IG04: movzx rdx, dx mov rcx, rsi mov r8d, 1 call StringBuilder:Append(ushort,int):StringBuilder:this ;; bbWeight=0.50 PerfScore 0.88 G_M35150_IG05: mov rax, rsi ;; bbWeight=1 PerfScore 0.25 G_M35150_IG06: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 69, prolog size 5, PerfScore 21.03, (MethodHash=922276b1) for method StringBuilder:Append(ushort):StringBuilder:this ; ============================================================ ; Assembly listing for method StringBuilder:ToString():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 5, 4.50) ref -> rsi this class-hnd ; V01 loc0 [V01,T08] ( 5, 4 ) ref -> rdi class-hnd ; V02 loc1 [V02,T00] ( 7, 20.50) ref -> rsi class-hnd ; V03 loc2 [V03,T10] ( 2, 2.50) long -> rbx ; V04 loc3 [V04 ] ( 2, 1 ) byref -> [rsp+0x28] must-init pinned ; V05 loc4 [V05,T05] ( 3, 6 ) ref -> rcx class-hnd ; V06 loc5 [V06,T06] ( 3, 6 ) int -> rdx ; V07 loc6 [V07,T02] ( 4, 8 ) int -> r8 ;* V08 loc7 [V08 ] ( 0, 0 ) long -> zero-ref ; V09 loc8 [V09 ] ( 3, 6 ) byref -> [rsp+0x20] must-init pinned ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T12] ( 3, 1.50) long -> rbx ; V12 tmp2 [V12,T13] ( 9, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V13 tmp3 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V14 tmp4 [V14,T14] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V15 tmp5 [V15,T11] ( 2, 2 ) long -> rbx "Cast away GC" ; V16 tmp6 [V16,T03] ( 2, 8 ) long -> rax "Cast away GC" ; V17 tmp7 [V17,T15] ( 2, 0 ) ref -> rcx "argument with side effect" ; V18 cse0 [V18,T09] ( 3, 2.50) int -> rcx "CSE - aggressive" ; V19 cse1 [V19,T01] ( 3, 10 ) int -> r8 "CSE - aggressive" ; V20 cse2 [V20,T07] ( 3, 6 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 48 G_M9928_IG01: push rdi push rsi push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov qword ptr [rsp+20H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 5.75 G_M9928_IG02: mov ecx, dword ptr [rsi+28] add ecx, dword ptr [rsi+24] jne SHORT G_M9928_IG05 ;; bbWeight=1 PerfScore 5.00 G_M9928_IG03: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M9928_IG04: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M9928_IG05: call String:FastAllocateString(int):String mov rdi, rax test rdi, rdi jne SHORT G_M9928_IG06 xor rbx, rbx jmp SHORT G_M9928_IG07 ;; bbWeight=0.50 PerfScore 2.38 G_M9928_IG06: lea rcx, bword ptr [rdi+12] mov bword ptr [rsp+28H], rcx mov rbx, bword ptr [rsp+28H] ;; bbWeight=0.50 PerfScore 1.25 G_M9928_IG07: mov r8d, dword ptr [rsi+24] test r8d, r8d jle SHORT G_M9928_IG09 ;; bbWeight=4 PerfScore 13.00 G_M9928_IG08: mov rcx, gword ptr [rsi+8] mov edx, dword ptr [rsi+28] lea eax, [r8+rdx] cmp eax, dword ptr [rdi+8] ja SHORT G_M9928_IG12 mov eax, dword ptr [rcx+8] cmp eax, r8d jb SHORT G_M9928_IG12 cmp eax, 0 jbe G_M9928_IG13 add rcx, 16 mov bword ptr [rsp+20H], rcx mov rax, bword ptr [rsp+20H] movsxd rcx, edx lea rcx, [rbx+2*rcx] add r8d, r8d mov rdx, rax call Buffer:Memmove(long,long,long) xor rax, rax mov bword ptr [rsp+20H], rax ;; bbWeight=2 PerfScore 35.50 G_M9928_IG09: mov rsi, gword ptr [rsi+16] test rsi, rsi jne SHORT G_M9928_IG07 ;; bbWeight=4 PerfScore 13.00 G_M9928_IG10: mov rax, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M9928_IG11: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M9928_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x9B45 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov ecx, 0x1A4CB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS lea rcx, bword ptr [rsi+120] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M9928_IG13: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 325, prolog size 22, PerfScore 112.38, (MethodHash=9817d937) for method StringBuilder:ToString():String:this ; ============================================================ ; Assembly listing for method IntrospectionExtensions:GetTypeInfo(Type):TypeInfo ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rsi class-hnd ; V01 loc0 [V01,T02] ( 3, 2.50) ref -> rax class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp3 [V05,T04] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M48552_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M48552_IG02: test rsi, rsi je SHORT G_M48552_IG08 ;; bbWeight=1 PerfScore 1.25 G_M48552_IG03: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFINTERFACE test rax, rax je SHORT G_M48552_IG06 ;; bbWeight=1 PerfScore 2.75 G_M48552_IG04: mov rcx, rax mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=0.50 PerfScore 1.38 G_M48552_IG05: add rsp, 40 pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.63 G_M48552_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov rdx, rsi call TypeDelegator:.ctor(Type):this mov rax, rdi ;; bbWeight=0.50 PerfScore 1.63 G_M48552_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M48552_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 235 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 169, prolog size 9, PerfScore 29.15, (MethodHash=6dc64257) for method IntrospectionExtensions:GetTypeInfo(Type):TypeInfo ; ============================================================ ; Assembly listing for method TypeInfo:System.Reflection.IReflectableType.GetTypeInfo():TypeInfo:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M12383_IG01: ;; bbWeight=1 PerfScore 0.00 G_M12383_IG02: mov rax, rcx ;; bbWeight=1 PerfScore 0.25 G_M12383_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 1.65, (MethodHash=a3eacfa0) for method TypeInfo:System.Reflection.IReflectableType.GetTypeInfo():TypeInfo:this ; ============================================================ ; Assembly listing for method RuntimeType:get_Assembly():Assembly:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M37834_IG01: ;; bbWeight=1 PerfScore 0.00 G_M37834_IG02: jmp RuntimeTypeHandle:GetAssembly(RuntimeType):RuntimeAssembly ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 5, prolog size 0, PerfScore 2.50, (MethodHash=48526c35) for method RuntimeType:get_Assembly():Assembly:this ; ============================================================ ; Assembly listing for method String:Concat(ref):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 8, 13 ) ref -> rsi class-hnd ; V01 loc0 [V01,T09] ( 5, 5.50) long -> rbx ; V02 loc1 [V02,T10] ( 5, 4 ) int -> rbx ; V03 loc2 [V03,T12] ( 3, 3 ) ref -> rbp class-hnd ; V04 loc3 [V04,T06] ( 7, 9.50) int -> r14 ; V05 loc4 [V05,T00] ( 5, 16.50) int -> rbp ; V06 loc5 [V06,T05] ( 3, 10 ) ref -> rcx class-hnd ; V07 loc6 [V07,T01] ( 5, 16.50) int -> r15 ; V08 loc7 [V08,T03] ( 5, 13 ) ref -> r8 class-hnd ; V09 loc8 [V09,T08] ( 3, 6 ) int -> r12 ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T17] ( 7, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V12 tmp2 [V12,T13] ( 4, 2 ) ref -> rax ; V13 tmp3 [V13,T14] ( 2, 2 ) ref -> rax class-hnd "dup spill" ; V14 tmp4 [V14,T16] ( 9, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V15 tmp5 [V15,T18] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V16 tmp6 [V16,T19] ( 2, 0 ) ref -> rdx class-hnd "Inline return value spill temp" ; V17 tmp7 [V17 ] ( 4, 0 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" ;* V18 tmp8 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V19 tmp9 [V19,T11] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V20 tmp10 [V20,T07] ( 6, 7 ) ref -> rax "Single return block return value" ; V21 tmp11 [V21,T21] ( 2, 0 ) long -> rdx V18._ptr(offs=0x00) P-INDEP "field V18._ptr (fldOffset=0x0)" ; V22 tmp12 [V22,T20] ( 2, 0 ) ref -> rcx "argument with side effect" ; V23 tmp13 [V23,T15] ( 2, 2 ) ref -> rdx "argument with side effect" ; V24 cse0 [V24,T04] ( 8, 12 ) int -> rdi "CSE - aggressive" ; ; Lcl frame size = 48 G_M53822_IG01: push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 8.75 G_M53822_IG02: test rsi, rsi je G_M53822_IG24 ;; bbWeight=1 PerfScore 1.25 G_M53822_IG03: mov edi, dword ptr [rsi+8] cmp edi, 1 jg SHORT G_M53822_IG07 ;; bbWeight=1 PerfScore 3.25 G_M53822_IG04: test edi, edi je SHORT G_M53822_IG05 cmp edi, 0 jbe G_M53822_IG26 mov rax, gword ptr [rsi+16] test rax, rax jne SHORT G_M53822_IG06 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] jmp G_M53822_IG23 ;; bbWeight=0.50 PerfScore 5.00 G_M53822_IG05: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M53822_IG06: jmp G_M53822_IG23 ;; bbWeight=0.50 PerfScore 1.00 G_M53822_IG07: xor rbx, rbx xor ebp, ebp test edi, edi jle SHORT G_M53822_IG11 ;; bbWeight=0.50 PerfScore 0.88 G_M53822_IG08: movsxd rcx, ebp mov rcx, gword ptr [rsi+8*rcx+16] test rcx, rcx je SHORT G_M53822_IG10 ;; bbWeight=4 PerfScore 14.00 G_M53822_IG09: mov ecx, dword ptr [rcx+8] movsxd rcx, ecx add rcx, rbx mov rbx, rcx ;; bbWeight=2 PerfScore 5.50 G_M53822_IG10: inc ebp cmp edi, ebp jg SHORT G_M53822_IG08 ;; bbWeight=4 PerfScore 6.00 G_M53822_IG11: cmp rbx, 0xD1FFAB1E jg G_M53822_IG25 ;; bbWeight=0.50 PerfScore 0.63 G_M53822_IG12: test ebx, ebx jne SHORT G_M53822_IG13 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] jmp G_M53822_IG23 ;; bbWeight=0.50 PerfScore 2.75 G_M53822_IG13: mov ecx, ebx call String:FastAllocateString(int):String mov rbp, rax xor r14d, r14d xor r15d, r15d test edi, edi jle SHORT G_M53822_IG21 ;; bbWeight=0.50 PerfScore 1.63 G_M53822_IG14: movsxd rcx, r15d mov r8, gword ptr [rsi+8*rcx+16] test r8, r8 je SHORT G_M53822_IG18 ;; bbWeight=4 PerfScore 14.00 G_M53822_IG15: cmp dword ptr [r8+8], 0 jbe SHORT G_M53822_IG18 ;; bbWeight=1 PerfScore 3.00 G_M53822_IG16: mov r12d, dword ptr [r8+8] mov ecx, ebx sub ecx, r14d cmp ecx, r12d jl SHORT G_M53822_IG20 ;; bbWeight=2 PerfScore 7.50 G_M53822_IG17: mov rcx, rbp mov edx, r14d call String:FillStringChecked(String,int,String) add r14d, r12d ;; bbWeight=2 PerfScore 3.50 G_M53822_IG18: inc r15d cmp edi, r15d jg SHORT G_M53822_IG14 ;; bbWeight=4 PerfScore 6.00 G_M53822_IG19: jmp SHORT G_M53822_IG21 ;; bbWeight=0.50 PerfScore 1.00 G_M53822_IG20: mov r14d, -1 ;; bbWeight=0.50 PerfScore 0.13 G_M53822_IG21: cmp r14d, ebx je SHORT G_M53822_IG22 mov rcx, rsi call Object:MemberwiseClone():Object:this mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTARRAY mov rcx, rax call String:Concat(ref):String jmp SHORT G_M53822_IG23 ;; bbWeight=0.50 PerfScore 3.63 G_M53822_IG22: mov rax, rbp ;; bbWeight=0.50 PerfScore 0.13 G_M53822_IG23: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.75 G_M53822_IG24: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x924F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov ecx, 0x1998 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS lea rcx, bword ptr [rsi+120] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M53822_IG25: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax xor rdx, rdx mov gword ptr [rsp+28H], rdx lea rdx, [rsp+28H] mov ecx, 3 call Exception:GetMessageFromNativeResources(int,StringHandleOnStack) mov rdx, gword ptr [rsp+28H] xor rcx, rcx mov gword ptr [rsp+28H], rcx mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M53822_IG26: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 555, prolog size 24, PerfScore 150.88, (MethodHash=47662dc1) for method String:Concat(ref):String ; ============================================================ ; Assembly listing for method RuntimeInformation:GetConfiguration():String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00 ] ( 4, 3 ) struct ( 8) [rbp-0x40] do-not-enreg[SB] must-init ld-addr-op ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T03] ( 3, 2 ) ref -> rcx class-hnd "Inline return value spill temp" ; V03 tmp2 [V03,T05] ( 2, 1 ) ref -> rcx class-hnd "Inline return value spill temp" ; V04 tmp3 [V04 ] ( 4, 2 ) ref -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" ;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V07 tmp6 [V07,T00] ( 4, 5 ) ref -> rax "Single return block return value" ; V08 FramesRoot [V08,T01] ( 6, 4 ) long -> rsi "Pinvoke FrameListRoot" ; V09 PInvokeFrame [V09 ] ( 8, 6 ) blk (72) [rbp-0x90] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V10 tmp9 [V10,T02] ( 3, 2.50) bool -> [rbp-0x40] do-not-enreg[] V00.hasValue(offs=0x00) P-DEP "field V00.hasValue (fldOffset=0x0)" ; V11 tmp10 [V11,T04] ( 2, 1.50) bool -> [rbp-0x3F] do-not-enreg[] V00.value(offs=0x01) P-DEP "field V00.value (fldOffset=0x1)" ; V12 tmp11 [V12,T06] ( 2, 1 ) long -> rcx V05._ptr(offs=0x00) P-INDEP "field V05._ptr (fldOffset=0x0)" ; V13 tmp12 [V13,T07] ( 2, 1 ) long -> rcx V06._ptr(offs=0x00) P-INDEP "field V06._ptr (fldOffset=0x0)" ; ; Lcl frame size = 120 G_M63288_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] xor rcx, rcx mov qword ptr [rbp-40H], rcx mov qword ptr [rbp-48H], rcx ;; bbWeight=1 PerfScore 11.00 G_M63288_IG02: lea rcx, [rbp-88H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rsi, rax mov rcx, rsp mov qword ptr [rbp-68H], rcx mov rcx, rbp mov qword ptr [rbp-58H], rcx mov rcx, 0xD1FFAB1E cmp byte ptr [rcx], 0 je SHORT G_M63288_IG04 ;; bbWeight=1 PerfScore 7.75 G_M63288_IG03: xor rcx, rcx jmp SHORT G_M63288_IG09 ;; bbWeight=0.50 PerfScore 1.13 G_M63288_IG04: xor rcx, rcx mov gword ptr [rbp-48H], rcx lea rcx, [rbp-48H] mov rax, 0xD1FFAB1E mov qword ptr [rbp-78H], rax lea rax, G_M63288_IG07 mov qword ptr [rbp-60H], rax lea rax, bword ptr [rbp-88H] mov qword ptr [rsi+16], rax mov byte ptr [rsi+12], 0 ;; bbWeight=0.50 PerfScore 3.75 G_M63288_IG05: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M63288_IG06: call qword ptr [rax]Assembly:GetEntryAssemblyNative(ObjectHandleOnStack) ;; bbWeight=0.50 PerfScore 1.50 G_M63288_IG07: mov byte ptr [rsi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M63288_IG08 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M63288_IG08: mov rcx, bword ptr [rbp-80H] mov qword ptr [rsi+16], rcx mov rcx, gword ptr [rbp-48H] xor rax, rax mov gword ptr [rbp-48H], rax ;; bbWeight=0.50 PerfScore 2.13 G_M63288_IG09: call AssemblyExtensions:GetDebuggableAttribute(Assembly):DebuggableAttribute mov rcx, rax call AssemblyExtensions:IsJitTrackingEnabled(DebuggableAttribute):Nullable`1 mov word ptr [rbp-40H], ax cmp byte ptr [rbp-40H], 0 jne SHORT G_M63288_IG11 ;; bbWeight=1 PerfScore 5.25 G_M63288_IG10: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] jmp SHORT G_M63288_IG14 ;; bbWeight=0.50 PerfScore 2.13 G_M63288_IG11: cmp byte ptr [rbp-40H], 0 je SHORT G_M63288_IG15 ;; bbWeight=0.50 PerfScore 1.00 G_M63288_IG12: cmp byte ptr [rbp-3FH], 0 jne SHORT G_M63288_IG13 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] jmp SHORT G_M63288_IG14 ;; bbWeight=0.50 PerfScore 3.13 G_M63288_IG13: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M63288_IG14: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M63288_IG15: call ThrowHelper:ThrowInvalidOperationException_InvalidOperation_NoValue() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 297, prolog size 34, PerfScore 78.95, (MethodHash=6b8d08c7) for method RuntimeInformation:GetConfiguration():String ; ============================================================ ; Assembly listing for method AssemblyExtensions:GetDebuggableAttribute(Assembly):DebuggableAttribute ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 3.50) ref -> rcx class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 3, 3 ) ref -> rsi class-hnd "Inlining Arg" ; V03 tmp2 [V03,T01] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp3 [V04,T03] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V05 tmp4 [V05,T04] ( 4, 1.75) ref -> rcx ; ; Lcl frame size = 40 G_M11079_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M11079_IG02: test rcx, rcx jne SHORT G_M11079_IG05 ;; bbWeight=1 PerfScore 1.25 G_M11079_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M11079_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M11079_IG05: mov edx, 1 call Attribute:GetCustomAttributes(Assembly,bool):ref mov rsi, rax test rsi, rsi je SHORT G_M11079_IG10 ;; bbWeight=0.50 PerfScore 1.38 G_M11079_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov dword ptr [rdi+40], -2 mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M11079_IG08 ;; bbWeight=0.50 PerfScore 3.63 G_M11079_IG07: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M11079_IG08: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rdi+44], eax lea rcx, bword ptr [rdi+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rdx, rdi mov rcx, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 3.13 G_M11079_IG09: add rsp, 40 pop rsi pop rdi jmp Enumerable:SingleOrDefault(IEnumerable`1):__Canon ;; bbWeight=0.50 PerfScore 1.63 G_M11079_IG10: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 157, prolog size 6, PerfScore 30.51, (MethodHash=0980d4b8) for method AssemblyExtensions:GetDebuggableAttribute(Assembly):DebuggableAttribute ; ============================================================ ; Assembly listing for method Attribute:GetCustomAttributes(Assembly,bool):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 5 ) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) bool -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V04 tmp2 [V04,T04] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V05 tmp3 [V05,T06] ( 2, 0 ) ref -> rdx "argument with side effect" ; V06 tmp4 [V06,T02] ( 2, 4 ) ref -> rdx "argument with side effect" ; V07 tmp5 [V07,T03] ( 2, 4 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M35872_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 2.75 G_M35872_IG02: test rsi, rsi je SHORT G_M35872_IG04 mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax movzx r8, dil mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+88] call gword ptr [rax+48]Assembly:GetCustomAttributes(Type,bool):ref:this mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTARRAY nop ;; bbWeight=1 PerfScore 12.00 G_M35872_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M35872_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 219 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 135, prolog size 6, PerfScore 30.50, (MethodHash=ac6573df) for method Attribute:GetCustomAttributes(Assembly,bool):ref ; ============================================================ ; Assembly listing for method CompilationRelaxationsAttribute:.ctor(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) int -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M52243_IG01: ;; bbWeight=1 PerfScore 0.00 G_M52243_IG02: mov dword ptr [rcx+8], edx ;; bbWeight=1 PerfScore 1.00 G_M52243_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 2.40, (MethodHash=6c7333ec) for method CompilationRelaxationsAttribute:.ctor(int):this ; ============================================================ ; Assembly listing for method RuntimeCompatibilityAttribute:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M13879_IG01: ;; bbWeight=1 PerfScore 0.00 G_M13879_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=4991c9c8) for method RuntimeCompatibilityAttribute:.ctor():this ; ============================================================ ; Assembly listing for method RuntimeCompatibilityAttribute:set_WrapNonExceptionThrows(bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) bool -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M39401_IG01: ;; bbWeight=1 PerfScore 0.00 G_M39401_IG02: mov byte ptr [rcx+8], dl ;; bbWeight=1 PerfScore 1.00 G_M39401_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 2.40, (MethodHash=0eed6616) for method RuntimeCompatibilityAttribute:set_WrapNonExceptionThrows(bool):this ; ============================================================ ; Assembly listing for method DebuggableAttribute:.ctor(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) int -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5802_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5802_IG02: mov dword ptr [rcx+8], edx ;; bbWeight=1 PerfScore 1.00 G_M5802_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 2.40, (MethodHash=43fae955) for method DebuggableAttribute:.ctor(int):this ; ============================================================ ; Assembly listing for method String:Equals(Object):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 3.50) ref -> rdx class-hnd ; V02 loc0 [V02,T03] ( 4, 2 ) ref -> rdx class-hnd ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 5, 3.74) ref -> rdx class-hnd "spilling QMark2" ;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V06 tmp3 [V06,T04] ( 2, 2 ) byref -> rcx "Inlining Arg" ; V07 tmp4 [V07,T05] ( 2, 2 ) byref -> rdx "Inlining Arg" ; V08 cse0 [V08,T06] ( 3, 1.50) int -> r8 "CSE - moderate" ; ; Lcl frame size = 0 G_M61558_IG01: ;; bbWeight=1 PerfScore 0.00 G_M61558_IG02: cmp rcx, rdx jne SHORT G_M61558_IG05 ;; bbWeight=1 PerfScore 1.25 G_M61558_IG03: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M61558_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M61558_IG05: test rdx, rdx je SHORT G_M61558_IG08 ;; bbWeight=0.50 PerfScore 0.63 G_M61558_IG06: mov rax, 0xD1FFAB1E cmp qword ptr [rdx], rax je SHORT G_M61558_IG08 ;; bbWeight=0.25 PerfScore 0.81 G_M61558_IG07: xor rdx, rdx ;; bbWeight=0.12 PerfScore 0.03 G_M61558_IG08: test rdx, rdx jne SHORT G_M61558_IG10 xor eax, eax ;; bbWeight=0.50 PerfScore 0.75 G_M61558_IG09: ret ;; bbWeight=0.50 PerfScore 0.50 G_M61558_IG10: mov r8d, dword ptr [rcx+8] cmp r8d, dword ptr [rdx+8] je SHORT G_M61558_IG12 xor eax, eax ;; bbWeight=0.50 PerfScore 2.63 G_M61558_IG11: ret ;; bbWeight=0.50 PerfScore 0.50 G_M61558_IG12: add rcx, 12 add rdx, 12 movsxd r8, r8d add r8, r8 ;; bbWeight=0.50 PerfScore 0.50 G_M61558_IG13: jmp SpanHelpers:SequenceEqual(byref,byref,long):bool ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 73, prolog size 0, PerfScore 16.52, (MethodHash=65330f89) for method String:Equals(Object):bool:this ; ============================================================ ; Assembly listing for method AssemblyCompanyAttribute:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M23689_IG01: ;; bbWeight=1 PerfScore 0.00 G_M23689_IG02: lea rcx, bword ptr [rcx+8] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M23689_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 11, prolog size 0, PerfScore 3.85, (MethodHash=c5c3a376) for method AssemblyCompanyAttribute:.ctor(String):this ; ============================================================ ; Assembly listing for method AssemblyConfigurationAttribute:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M55262_IG01: ;; bbWeight=1 PerfScore 0.00 G_M55262_IG02: lea rcx, bword ptr [rcx+8] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M55262_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 11, prolog size 0, PerfScore 3.85, (MethodHash=7fc42821) for method AssemblyConfigurationAttribute:.ctor(String):this ; ============================================================ ; Assembly listing for method AssemblyCopyrightAttribute:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M23627_IG01: ;; bbWeight=1 PerfScore 0.00 G_M23627_IG02: lea rcx, bword ptr [rcx+8] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M23627_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 11, prolog size 0, PerfScore 3.85, (MethodHash=dc53a3b4) for method AssemblyCopyrightAttribute:.ctor(String):this ; ============================================================ ; Assembly listing for method AssemblyFileVersionAttribute:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03,T03] ( 0, 0 ) ref -> zero-ref ; V04 tmp2 [V04,T02] ( 3, 3 ) ref -> rdx ; V05 tmp3 [V05,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp4 [V06,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M22258_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M22258_IG02: test rdx, rdx je SHORT G_M22258_IG05 ;; bbWeight=1 PerfScore 1.25 G_M22258_IG03: lea rcx, bword ptr [rcx+8] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M22258_IG04: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M22258_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1F6C mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 84, prolog size 5, PerfScore 14.40, (MethodHash=0414a90d) for method AssemblyFileVersionAttribute:.ctor(String):this ; ============================================================ ; Assembly listing for method AssemblyProductAttribute:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M42949_IG01: ;; bbWeight=1 PerfScore 0.00 G_M42949_IG02: lea rcx, bword ptr [rcx+8] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M42949_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 11, prolog size 0, PerfScore 3.85, (MethodHash=84b2583a) for method AssemblyProductAttribute:.ctor(String):this ; ============================================================ ; Assembly listing for method AssemblyTitleAttribute:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M45710_IG01: ;; bbWeight=1 PerfScore 0.00 G_M45710_IG02: lea rcx, bword ptr [rcx+8] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M45710_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 11, prolog size 0, PerfScore 3.85, (MethodHash=b50a4d71) for method AssemblyTitleAttribute:.ctor(String):this ; ============================================================ ; Assembly listing for method AssemblyMetadataAttribute:.ctor(String,String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rdi class-hnd ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M14938_IG01: push rdi push rsi mov rsi, rcx mov rdi, r8 ;; bbWeight=1 PerfScore 2.50 G_M14938_IG02: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 3.50 G_M14938_IG03: pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 33, prolog size 2, PerfScore 11.30, (MethodHash=609fc5a5) for method AssemblyMetadataAttribute:.ctor(String,String):this ; ============================================================ ; Assembly listing for method NeutralResourcesLanguageAttribute:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M56430_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M56430_IG02: test rdx, rdx je SHORT G_M56430_IG05 ;; bbWeight=1 PerfScore 1.25 G_M56430_IG03: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF xor ecx, ecx mov dword ptr [rsi+16], ecx ;; bbWeight=1 PerfScore 2.75 G_M56430_IG04: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M56430_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x15F02 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 91, prolog size 5, PerfScore 16.35, (MethodHash=99412391) for method NeutralResourcesLanguageAttribute:.ctor(String):this ; ============================================================ ; Assembly listing for method Enumerable:SingleOrDefault(IEnumerable`1):__Canon ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 9, 6.20) long -> rsi ; V01 arg0 [V01,T01] ( 5, 5 ) ref -> rdi class-hnd ; V02 loc0 [V02,T09] ( 4, 4 ) ref -> r14 class-hnd ; V03 loc1 [V03,T12] ( 3, 3 ) int -> rax ; V04 loc2 [V04,T11] ( 3, 3 ) ref -> [rbp-0x30] EH do-not-enreg[] must-init ld-addr-op class-hnd EH-live ; V05 loc3 [V05,T02] ( 7, 6 ) ref -> [rbp-0x38] EH do-not-enreg[] class-hnd EH-live ; V06 loc4 [V06,T18] ( 2, 2 ) ref -> rsi class-hnd ;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T10] ( 3, 4 ) long -> rcx "spilling Runtime Lookup tree" ; V10 tmp2 [V10,T04] ( 4, 6 ) long -> r11 "spilling Runtime Lookup tree" ;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V12 tmp4 [V12,T05] ( 4, 6 ) long -> r11 "spilling Runtime Lookup tree" ;* V13 tmp5 [V13 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V14 tmp6 [V14,T06] ( 4, 6 ) long -> r11 "spilling Runtime Lookup tree" ;* V15 tmp7 [V15 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V16 tmp8 [V16,T08] ( 3, 5.60) long -> rbx "impRuntimeLookup indirectOffset" ; V17 tmp9 [V17,T07] ( 4, 6 ) long -> r11 "spilling Runtime Lookup tree" ;* V18 tmp10 [V18 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V19 PSPSym [V19 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ; V20 tmp12 [V20,T19] ( 2, 2 ) ref -> rax "optAddCopies" ; V21 cse0 [V21,T13] ( 3, 2.50) long -> rcx "CSE - moderate" ; V22 cse1 [V22,T14] ( 3, 2.50) long -> r11 "CSE - moderate" ; V23 cse2 [V23,T15] ( 3, 2.50) long -> r11 "CSE - moderate" ; V24 cse3 [V24,T16] ( 3, 2.50) long -> r11 "CSE - moderate" ; V25 cse4 [V25,T03] ( 6, 6 ) long -> rbx "CSE - aggressive" ; V26 cse5 [V26,T17] ( 3, 2.40) long -> r11 "CSE - moderate" ; ; Lcl frame size = 64 G_M20418_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 lea rbp, [rsp+60H] xor rax, rax mov qword ptr [rbp-30H], rax mov qword ptr [rbp-40H], rsp mov qword ptr [rbp-28H], rcx mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 9.50 G_M20418_IG02: test rdi, rdi je G_M20418_IG31 ;; bbWeight=1 PerfScore 1.25 G_M20418_IG03: mov rbx, qword ptr [rsi+16] mov rcx, qword ptr [rbx+16] test rcx, rcx je SHORT G_M20418_IG05 ;; bbWeight=1 PerfScore 5.25 G_M20418_IG04: jmp SHORT G_M20418_IG06 ;; bbWeight=0.50 PerfScore 1.00 G_M20418_IG05: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.50 PerfScore 0.88 G_M20418_IG06: mov rdx, rdi call CORINFO_HELP_ISINSTANCEOFINTERFACE mov r14, rax test r14, r14 je SHORT G_M20418_IG17 mov r11, qword ptr [rbx+40] test r11, r11 je SHORT G_M20418_IG08 ;; bbWeight=1 PerfScore 6.00 G_M20418_IG07: jmp SHORT G_M20418_IG09 ;; bbWeight=0.50 PerfScore 1.00 G_M20418_IG08: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=0.50 PerfScore 0.88 G_M20418_IG09: mov rcx, r14 call qword ptr [r11] test eax, eax je SHORT G_M20418_IG14 cmp eax, 1 jne G_M20418_IG32 ;; bbWeight=1 PerfScore 5.75 G_M20418_IG10: cmp qword ptr [rbx+8], 48 jle SHORT G_M20418_IG16 ;; bbWeight=1 PerfScore 3.00 G_M20418_IG11: mov r11, qword ptr [rbx+48] test r11, r11 je SHORT G_M20418_IG16 ;; bbWeight=0.80 PerfScore 2.60 G_M20418_IG12: mov rcx, r14 xor edx, edx call gword ptr [r11] nop ;; bbWeight=1 PerfScore 3.75 G_M20418_IG13: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M20418_IG14: xor rax, rax ;; bbWeight=1 PerfScore 0.25 G_M20418_IG15: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M20418_IG16: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax jmp SHORT G_M20418_IG12 ;; bbWeight=0.20 PerfScore 0.75 G_M20418_IG17: mov r11, qword ptr [rbx+24] test r11, r11 je SHORT G_M20418_IG19 ;; bbWeight=1 PerfScore 3.25 G_M20418_IG18: jmp SHORT G_M20418_IG20 ;; bbWeight=0.50 PerfScore 1.00 G_M20418_IG19: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=0.50 PerfScore 0.88 G_M20418_IG20: mov rcx, rdi call gword ptr [r11] mov gword ptr [rbp-38H], rax ;; bbWeight=1 PerfScore 4.25 G_M20418_IG21: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M20418_IG22 xor rcx, rcx mov gword ptr [rbp-30H], rcx jmp SHORT G_M20418_IG27 ;; bbWeight=1 PerfScore 9.00 G_M20418_IG22: mov r11, qword ptr [rbx+32] test r11, r11 je SHORT G_M20418_IG24 ;; bbWeight=1 PerfScore 3.25 G_M20418_IG23: jmp SHORT G_M20418_IG25 ;; bbWeight=0.50 PerfScore 1.00 G_M20418_IG24: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=0.50 PerfScore 0.88 G_M20418_IG25: mov rcx, gword ptr [rbp-38H] call gword ptr [r11] mov rsi, rax mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M20418_IG26 mov gword ptr [rbp-30H], rsi jmp SHORT G_M20418_IG27 ;; bbWeight=1 PerfScore 13.00 G_M20418_IG26: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this jmp SHORT G_M20418_IG32 ;; bbWeight=0 PerfScore 0.00 G_M20418_IG27: mov rcx, rsp call G_M20418_IG33 ;; bbWeight=1 PerfScore 1.25 G_M20418_IG28: nop ;; bbWeight=1 PerfScore 0.25 G_M20418_IG29: mov rax, gword ptr [rbp-30H] ;; bbWeight=1 PerfScore 1.00 G_M20418_IG30: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M20418_IG31: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M20418_IG32: call ThrowHelper:ThrowMoreThanOneElementException() int3 ;; bbWeight=0 PerfScore 0.00 G_M20418_IG33: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=1 PerfScore 8.75 G_M20418_IG34: cmp gword ptr [rbp-38H], 0 je SHORT G_M20418_IG35 mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=1 PerfScore 6.50 G_M20418_IG35: nop ;; bbWeight=1 PerfScore 0.25 G_M20418_IG36: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 514, prolog size 35, PerfScore 163.50, (MethodHash=d6d3b03d) for method Enumerable:SingleOrDefault(IEnumerable`1):__Canon ; ============================================================ ; Assembly listing for method d__62`1:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 6 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T02] ( 4, 3 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 4, 4 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T05] ( 2, 2 ) int -> rdi "impAppendStmt" ; V05 tmp3 [V05,T03] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V06 tmp4 [V06,T06] ( 4, 1.75) ref -> rcx ; V07 tmp5 [V07,T04] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V08 tmp6 [V08,T07] ( 4, 1.75) ref -> rcx ; ; Lcl frame size = 40 G_M54080_IG01: push rdi push rsi sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M54080_IG02: cmp dword ptr [rsi+40], -2 jne SHORT G_M54080_IG06 ;; bbWeight=1 PerfScore 3.00 G_M54080_IG03: mov edi, dword ptr [rsi+44] mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M54080_IG05 ;; bbWeight=0.50 PerfScore 3.38 G_M54080_IG04: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M54080_IG05: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this cmp eax, edi jne SHORT G_M54080_IG06 xor ecx, ecx mov dword ptr [rsi+40], ecx mov rdi, rsi jmp SHORT G_M54080_IG09 ;; bbWeight=0.50 PerfScore 3.88 G_M54080_IG06: mov rcx, qword ptr [rsi] call CORINFO_HELP_NEWSFAST mov rdi, rax xor ecx, ecx mov dword ptr [rdi+40], ecx mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M54080_IG08 ;; bbWeight=0.50 PerfScore 4.63 G_M54080_IG07: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M54080_IG08: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rdi+44], eax ;; bbWeight=0.50 PerfScore 2.00 G_M54080_IG09: mov rdx, gword ptr [rsi+24] lea rcx, bword ptr [rdi+16] call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=1 PerfScore 3.75 G_M54080_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 167, prolog size 11, PerfScore 43.70, (MethodHash=e3ed2cbf) for method d__62`1:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method d__62`1:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 18, 16.50) ref -> [rbp+0x10] EH do-not-enreg[] this class-hnd EH-live ; V01 loc0 [V01,T02] ( 4, 2.50) bool -> rax ; V02 loc1 [V02,T03] ( 3, 2.50) int -> rcx ; V03 loc2 [V03,T01] ( 3, 4.50) ref -> rsi class-hnd ; V04 loc3 [V04,T04] ( 2, 1 ) ref -> rax class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 PSPSym [V06 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "PSPSym" ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref "optAddCopies" ; ; Lcl frame size = 56 G_M46591_IG01: push rbp push rsi sub rsp, 56 lea rbp, [rsp+40H] mov qword ptr [rbp-20H], rsp mov qword ptr [rbp-10H], rcx mov gword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 5.75 G_M46591_IG02: mov rcx, gword ptr [rbp+10H] mov ecx, dword ptr [rcx+40] test ecx, ecx je SHORT G_M46591_IG04 ;; bbWeight=1 PerfScore 4.25 G_M46591_IG03: cmp ecx, 1 je G_M46591_IG07 xor eax, eax jmp G_M46591_IG10 ;; bbWeight=0.50 PerfScore 1.75 G_M46591_IG04: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+40], -1 mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+16] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable:GetEnumerator():IEnumerator:this mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+32] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+40], -3 mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+32] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M46591_IG09 ;; bbWeight=0.50 PerfScore 10.50 G_M46591_IG05: mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+32] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerator:get_Current():Object:this mov rsi, rax mov rcx, gword ptr [rbp+10H] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx] mov rdx, rsi call CORINFO_HELP_ISINSTANCEOFANY test rax, rax je SHORT G_M46591_IG08 ;; bbWeight=2 PerfScore 36.50 G_M46591_IG06: mov rcx, gword ptr [rbp+10H] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx] mov rdx, rsi call CORINFO_HELP_CHKCASTANY mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+40], 1 mov eax, 1 jmp SHORT G_M46591_IG10 ;; bbWeight=0.50 PerfScore 8.63 G_M46591_IG07: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+40], -3 ;; bbWeight=0.50 PerfScore 1.00 G_M46591_IG08: mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+32] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne G_M46591_IG05 ;; bbWeight=4 PerfScore 31.00 G_M46591_IG09: mov rcx, gword ptr [rbp+10H] call d__62`1:<>m__Finally1():this mov rax, gword ptr [rbp+10H] xor rcx, rcx mov gword ptr [rax+32], rcx xor eax, eax ;; bbWeight=0.50 PerfScore 2.25 G_M46591_IG10: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 G_M46591_IG11: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+40H] ;; bbWeight=0 PerfScore 0.00 G_M46591_IG12: mov rcx, gword ptr [rbp+10H] mov rax, 0xD1FFAB1E call qword ptr [rax]d__62`1:System.IDisposable.Dispose():this nop ;; bbWeight=0 PerfScore 0.00 G_M46591_IG13: add rsp, 40 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 398, prolog size 23, PerfScore 143.93, (MethodHash=093a4a00) for method d__62`1:MoveNext():bool:this ; ============================================================ ; Assembly listing for method Array:GetEnumerator():IEnumerator:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 9, 7 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T05] ( 3, 2 ) int -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 3, 3 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T01] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V05 tmp3 [V05,T07] ( 2, 1 ) int -> rcx "Inline return value spill temp" ; V06 tmp4 [V06,T04] ( 3, 2.50) int -> rcx "Inline stloc first use temp" ; V07 tmp5 [V07,T06] ( 2, 2 ) int -> rcx "Inline stloc first use temp" ; V08 tmp6 [V08,T02] ( 2, 4 ) byref -> rcx "Inlining Arg" ; ; Lcl frame size = 32 G_M56385_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M56385_IG02: mov rcx, rsi xor edx, edx call Array:GetLowerBound(int):int:this mov edi, eax mov rcx, qword ptr [rsi] mov ecx, dword ptr [rcx+4] add ecx, -24 shr ecx, 3 test ecx, ecx je SHORT G_M56385_IG04 ;; bbWeight=1 PerfScore 9.25 G_M56385_IG03: cmp ecx, 1 jne SHORT G_M56385_IG06 ;; bbWeight=0.50 PerfScore 0.63 G_M56385_IG04: test edi, edi jne SHORT G_M56385_IG06 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov dword ptr [rdi+16], -1 mov eax, dword ptr [rsi+8] test eax, eax jl SHORT G_M56385_IG08 mov dword ptr [rdi+20], eax mov rax, rdi ;; bbWeight=0.50 PerfScore 5.00 G_M56385_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M56385_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov r9d, dword ptr [rsi+8] test r9d, r9d jl SHORT G_M56385_IG08 mov rcx, rbx mov rdx, rsi mov r8d, edi call ArrayEnumerator:.ctor(Array,int,int):this mov rax, rbx ;; bbWeight=0.50 PerfScore 3.38 G_M56385_IG07: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M56385_IG08: call CORINFO_HELP_OVERFLOW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 163, prolog size 7, PerfScore 40.80, (MethodHash=2e8823be) for method Array:GetEnumerator():IEnumerator:this ; ============================================================ ; Assembly listing for method Array:GetLowerBound(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) int -> rdx ; V02 loc0 [V02,T03] ( 4, 3 ) int -> r8 ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T05] ( 2, 2 ) int -> r8 "Inline stloc first use temp" ; V06 tmp3 [V06,T02] ( 2, 4 ) byref -> rax "Inlining Arg" ; V07 tmp4 [V07,T04] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V09 tmp6 [V09,T07] ( 2, 0 ) ref -> rcx "argument with side effect" ; V10 tmp7 [V10,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M36761_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M36761_IG02: mov rax, qword ptr [rcx] mov r8d, dword ptr [rax+4] add r8d, -24 shr r8d, 3 mov eax, r8d or eax, edx jne SHORT G_M36761_IG05 ;; bbWeight=1 PerfScore 7.75 G_M36761_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M36761_IG04: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M36761_IG05: cmp edx, r8d jae SHORT G_M36761_IG08 ;; bbWeight=0.50 PerfScore 0.63 G_M36761_IG06: add rcx, 16 add edx, r8d movsxd rax, edx mov eax, dword ptr [rcx+4*rax] ;; bbWeight=0.50 PerfScore 1.38 G_M36761_IG07: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M36761_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC3BB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call IndexOutOfRangeException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 127, prolog size 5, PerfScore 25.58, (MethodHash=29ae7066) for method Array:GetLowerBound(int):int:this ; ============================================================ ; Assembly listing for method SZArrayEnumerator:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4.50) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 cse0 [V02,T03] ( 3, 1.50) int -> rax "CSE - moderate" ; V03 cse1 [V03,T01] ( 3, 2.50) int -> rax "CSE - aggressive" ; V04 cse2 [V04,T02] ( 3, 2.50) int -> rdx "CSE - aggressive" ; ; Lcl frame size = 0 G_M36483_IG01: ;; bbWeight=1 PerfScore 0.00 G_M36483_IG02: mov eax, dword ptr [rcx+16] mov edx, dword ptr [rcx+20] cmp eax, edx jge SHORT G_M36483_IG05 ;; bbWeight=1 PerfScore 5.25 G_M36483_IG03: inc eax mov dword ptr [rcx+16], eax cmp eax, edx setl al movzx rax, al ;; bbWeight=0.50 PerfScore 1.38 G_M36483_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M36483_IG05: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M36483_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 27, prolog size 0, PerfScore 10.45, (MethodHash=4947717c) for method SZArrayEnumerator:MoveNext():bool:this ; ============================================================ ; Assembly listing for method SZArrayEnumerator:get_Current():Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 cse0 [V02,T01] ( 4, 4 ) int -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M39150_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M39150_IG02: mov edx, dword ptr [rcx+16] test edx, edx jl SHORT G_M39150_IG06 ;; bbWeight=1 PerfScore 3.25 G_M39150_IG03: cmp edx, dword ptr [rcx+20] jge SHORT G_M39150_IG07 ;; bbWeight=1 PerfScore 3.00 G_M39150_IG04: mov rcx, gword ptr [rcx+8] cmp dword ptr [rcx], ecx ;; bbWeight=1 PerfScore 4.00 G_M39150_IG05: add rsp, 40 jmp Array:GetValue(int):Object:this ;; bbWeight=1 PerfScore 2.25 G_M39150_IG06: call ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumNotStarted() int3 ;; bbWeight=0 PerfScore 0.00 G_M39150_IG07: call ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumEnded() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 43, prolog size 4, PerfScore 17.05, (MethodHash=49506711) for method SZArrayEnumerator:get_Current():Object:this ; ============================================================ ; Assembly listing for method Array:GetValue(int):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rcx this class-hnd ; V01 arg1 [V01 ] ( 3, 3 ) int -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op ; V02 loc0 [V02 ] ( 3, 3 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 1 ) int -> rax "Inline return value spill temp" ; V05 tmp2 [V05,T02] ( 3, 2.50) int -> rax "Inline stloc first use temp" ; V06 tmp3 [V06,T03] ( 2, 2 ) int -> rax "Inline stloc first use temp" ; V07 tmp4 [V07,T01] ( 2, 4 ) byref -> r9 "Inlining Arg" ; V08 tmp5 [V08 ] ( 3, 3 ) byref -> [rsp+0x28] do-not-enreg[X] addr-exposed V02._value(offs=0x00) P-DEP "field V02._value (fldOffset=0x0)" ; V09 tmp6 [V09 ] ( 3, 3 ) long -> [rsp+0x30] do-not-enreg[X] addr-exposed V02._type(offs=0x08) P-DEP "field V02._type (fldOffset=0x8)" ; ; Lcl frame size = 56 G_M26149_IG01: sub rsp, 56 vzeroupper xor rax, rax mov qword ptr [rsp+28H], rax mov dword ptr [rsp+48H], edx ;; bbWeight=1 PerfScore 3.50 G_M26149_IG02: mov r9, qword ptr [rcx] mov eax, dword ptr [r9+4] add eax, -24 shr eax, 3 test eax, eax jne SHORT G_M26149_IG05 ;; bbWeight=1 PerfScore 7.50 G_M26149_IG03: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+28H], xmm0 lea r9, [rsp+48H] lea rdx, bword ptr [rsp+28H] mov r8d, 1 call Array:InternalGetReference(long,int,long):this lea rcx, bword ptr [rsp+28H] call TypedReference:InternalToObject(long):Object nop ;; bbWeight=1 PerfScore 5.33 G_M26149_IG04: add rsp, 56 ret ;; bbWeight=1 PerfScore 1.25 G_M26149_IG05: cmp eax, 1 je SHORT G_M26149_IG03 ;; bbWeight=0.50 PerfScore 0.63 G_M26149_IG06: mov ecx, 55 call ThrowHelper:ThrowArgumentException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 98, prolog size 14, PerfScore 28.21, (MethodHash=7f4e99da) for method Array:GetValue(int):Object:this ; ============================================================ ; Assembly listing for method d__62`1:System.Collections.Generic.IEnumerator.get_Current():__Canon:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M53121_IG01: ;; bbWeight=1 PerfScore 0.00 G_M53121_IG02: mov rax, gword ptr [rcx+8] ;; bbWeight=1 PerfScore 2.00 G_M53121_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=3686307e) for method d__62`1:System.Collections.Generic.IEnumerator.get_Current():__Canon:this ; ============================================================ ; Assembly listing for method d__62`1:<>m__Finally1():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 loc0 [V01,T01] ( 3, 2.50) ref -> rax class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M48282_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M48282_IG02: mov dword ptr [rcx+40], -1 mov rdx, gword ptr [rcx+32] mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFINTERFACE test rax, rax je SHORT G_M48282_IG05 ;; bbWeight=1 PerfScore 5.50 G_M48282_IG03: mov rcx, rax mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=0.50 PerfScore 1.38 G_M48282_IG04: add rsp, 40 rex.jmp rax ;; bbWeight=0.50 PerfScore 1.13 G_M48282_IG05: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 73, prolog size 4, PerfScore 16.18, (MethodHash=e21a4365) for method d__62`1:<>m__Finally1():this ; ============================================================ ; Assembly listing for method d__62`1:System.IDisposable.Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> rcx this class-hnd ; V01 loc0 [V01,T01] ( 3, 2.50) int -> rax ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M17662_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M17662_IG02: mov eax, dword ptr [rcx+40] cmp eax, -3 je SHORT G_M17662_IG04 ;; bbWeight=1 PerfScore 3.25 G_M17662_IG03: cmp eax, 1 jne SHORT G_M17662_IG05 ;; bbWeight=0.50 PerfScore 0.63 G_M17662_IG04: call d__62`1:<>m__Finally1():this ;; bbWeight=0.50 PerfScore 0.50 G_M17662_IG05: nop ;; bbWeight=1 PerfScore 0.25 G_M17662_IG06: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 28, prolog size 4, PerfScore 8.93, (MethodHash=d9e3bb01) for method d__62`1:System.IDisposable.Dispose():this ; ============================================================ ; Assembly listing for method AssemblyExtensions:IsJitTrackingEnabled(DebuggableAttribute):Nullable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 3.50) ref -> rcx class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03 ] ( 3, 3 ) struct ( 8) [rsp+0x00] do-not-enreg[SB] "NewObj constructor temp" ; V04 tmp2 [V04,T01] ( 2, 2 ) bool -> rax "Inlining Arg" ;* V05 tmp3 [V05 ] ( 0, 0 ) bool -> zero-ref do-not-enreg[] V01.hasValue(offs=0x00) P-DEP "field V01.hasValue (fldOffset=0x0)" ;* V06 tmp4 [V06 ] ( 0, 0 ) bool -> zero-ref do-not-enreg[] V01.value(offs=0x01) P-DEP "field V01.value (fldOffset=0x1)" ; V07 tmp5 [V07,T02] ( 2, 1.50) bool -> [rsp+0x00] do-not-enreg[] V03.hasValue(offs=0x00) P-DEP "field V03.hasValue (fldOffset=0x0)" ; V08 tmp6 [V08,T03] ( 2, 1.50) bool -> [rsp+0x01] do-not-enreg[] V03.value(offs=0x01) P-DEP "field V03.value (fldOffset=0x1)" ; ; Lcl frame size = 8 G_M57480_IG01: push rax ;; bbWeight=1 PerfScore 1.00 G_M57480_IG02: test rcx, rcx jne SHORT G_M57480_IG05 ;; bbWeight=1 PerfScore 1.25 G_M57480_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M57480_IG04: add rsp, 8 ret ;; bbWeight=0.50 PerfScore 0.63 G_M57480_IG05: test byte ptr [rcx+8], 1 setne al movzx rax, al mov byte ptr [rsp+01H], al mov byte ptr [rsp], 1 mov eax, dword ptr [rsp] ;; bbWeight=0.50 PerfScore 3.13 G_M57480_IG06: add rsp, 8 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 39, prolog size 1, PerfScore 10.65, (MethodHash=8d481f77) for method AssemblyExtensions:IsJitTrackingEnabled(DebuggableAttribute):Nullable`1 ; ============================================================ ; Assembly listing for method RuntimeInformation:HasRyuJit():bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 2, 2 ) ref -> rcx class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02,T01] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; ; Lcl frame size = 40 G_M5494_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M5494_IG02: call RuntimeInformation:get_IsNetCore():bool test eax, eax je SHORT G_M5494_IG05 ;; bbWeight=1 PerfScore 2.25 G_M5494_IG03: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M5494_IG04: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M5494_IG05: call RuntimeInformation:GetConfiguration():String mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call String:Equals(String,String):bool test eax, eax jne SHORT G_M5494_IG07 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rcx, rax mov edx, 1 call JitHelper:IsMsX64(int):bool:this test eax, eax sete al movzx rax, al ;; bbWeight=0.50 PerfScore 5.00 G_M5494_IG06: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M5494_IG07: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M5494_IG08: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 101, prolog size 4, PerfScore 19.73, (MethodHash=2531ea89) for method RuntimeInformation:HasRyuJit():bool ; ============================================================ ; Assembly listing for method RuntimeInformation:GetJitInfo():String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 5, 6 ) ref -> rax "Single return block return value" ; ; Lcl frame size = 40 G_M29009_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M29009_IG02: call RuntimeInformation:get_IsCoreRT():bool test eax, eax jne SHORT G_M29009_IG04 ;; bbWeight=1 PerfScore 2.25 G_M29009_IG03: call RuntimeInformation:get_IsNetNative():bool test eax, eax je SHORT G_M29009_IG05 ;; bbWeight=0.50 PerfScore 1.13 G_M29009_IG04: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] jmp SHORT G_M29009_IG09 ;; bbWeight=0.50 PerfScore 2.13 G_M29009_IG05: call RuntimeInformation:get_IsNetCore():bool test eax, eax jne SHORT G_M29009_IG06 call RuntimeInformation:HasRyuJit():bool test eax, eax je SHORT G_M29009_IG07 ;; bbWeight=0.50 PerfScore 2.25 G_M29009_IG06: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] jmp SHORT G_M29009_IG09 ;; bbWeight=0.50 PerfScore 2.13 G_M29009_IG07: call RuntimeInformation:get_IsFullFramework():bool test eax, eax je SHORT G_M29009_IG08 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] jmp SHORT G_M29009_IG09 ;; bbWeight=0.50 PerfScore 3.25 G_M29009_IG08: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M29009_IG09: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 112, prolog size 4, PerfScore 26.95, (MethodHash=2a968eae) for method RuntimeInformation:GetJitInfo():String ; ============================================================ ; Assembly listing for method RuntimeInformation:get_IsCoreRT():bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" ; V02 tmp2 [V02,T03] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V03 tmp3 [V03,T05] ( 3, 1.50) bool -> rax "Inline return value spill temp" ; V04 tmp4 [V04,T02] ( 3, 2.50) ref -> rax class-hnd "Inlining Arg" ; V05 tmp5 [V05,T04] ( 2, 2 ) ref -> rcx "argument with side effect" ; V06 rat0 [V06,T01] ( 3, 3 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 40 G_M57739_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M57739_IG02: call Environment:get_Version():Version cmp dword ptr [rax+8], 5 jge SHORT G_M57739_IG04 ;; bbWeight=1 PerfScore 4.00 G_M57739_IG03: call RuntimeInformation:get_FrameworkDescription():String mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, 5 cmp dword ptr [rcx], ecx call String:StartsWith(String,int):bool:this test eax, eax je SHORT G_M57739_IG09 ;; bbWeight=0.50 PerfScore 4.00 G_M57739_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax call RuntimeTypeHandle:GetAssembly(RuntimeType):RuntimeAssembly mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+48]Assembly:get_Location():String:this test rax, rax je SHORT G_M57739_IG07 ;; bbWeight=0.50 PerfScore 5.50 G_M57739_IG05: cmp dword ptr [rax+8], 0 jbe SHORT G_M57739_IG07 ;; bbWeight=0.25 PerfScore 0.75 G_M57739_IG06: xor eax, eax jmp SHORT G_M57739_IG08 ;; bbWeight=0.50 PerfScore 1.13 G_M57739_IG07: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M57739_IG08: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M57739_IG09: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M57739_IG10: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 121, prolog size 4, PerfScore 29.23, (MethodHash=051c1e74) for method RuntimeInformation:get_IsCoreRT():bool ; ============================================================ ; Assembly listing for method RuntimeInformation:get_IsNetNative():bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 2, 4 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 40 G_M3944_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M3944_IG02: call RuntimeInformation:get_FrameworkDescription():String mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, 5 cmp dword ptr [rcx], ecx ;; bbWeight=1 PerfScore 5.75 G_M3944_IG03: add rsp, 40 jmp String:StartsWith(String,int):bool:this ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 42, prolog size 4, PerfScore 12.45, (MethodHash=0e32f097) for method RuntimeInformation:get_IsNetNative():bool ; ============================================================ ; Assembly listing for method CompareInfo:EqualsOrdinalIgnoreCase(byref,byref,int):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T07] ( 6, 7.50) byref -> rcx ; V01 arg1 [V01,T08] ( 6, 7.50) byref -> rdx ; V02 arg2 [V02,T02] ( 11, 17.50) int -> r8 ; V03 loc0 [V03,T00] ( 13, 21 ) long -> r9 ; V04 loc1 [V04,T01] ( 5, 20 ) long -> rax ; V05 loc2 [V05,T04] ( 3, 12 ) long -> r10 ; V06 loc3 [V06,T05] ( 3, 12 ) long -> r11 ; V07 loc4 [V07,T12] ( 5, 2.50) int -> rax ; V08 loc5 [V08,T17] ( 3, 1.50) int -> r10 ; V09 loc6 [V09,T11] ( 7, 3.50) int -> rax ; V10 loc7 [V10,T13] ( 4, 2 ) int -> r10 ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V12 tmp1 [V12,T14] ( 2, 2 ) byref -> rcx "impAppendStmt" ;* V13 tmp2 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V16 tmp5 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V18 tmp7 [V18,T09] ( 2, 8 ) long -> r11 "Inline stloc first use temp" ; V19 tmp8 [V19,T10] ( 2, 8 ) long -> rsi "Inline stloc first use temp" ; V20 tmp9 [V20,T06] ( 3, 12 ) long -> r11 "Inline stloc first use temp" ;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V23 tmp12 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V24 tmp13 [V24 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V25 tmp14 [V25,T03] ( 2, 16 ) long -> r9 "Inlining Arg" ;* V26 tmp15 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V27 tmp16 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V28 tmp17 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V29 tmp18 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V30 tmp19 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V31 tmp20 [V31,T18] ( 2, 1 ) int -> r10 "Inline stloc first use temp" ; V32 tmp21 [V32,T19] ( 2, 1 ) int -> r11 "Inline stloc first use temp" ; V33 tmp22 [V33,T20] ( 2, 1 ) int -> rax "Inline stloc first use temp" ; V34 tmp23 [V34,T21] ( 2, 1 ) int -> rax "Inline stloc first use temp" ;* V35 tmp24 [V35 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V36 tmp25 [V36 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V37 tmp26 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V38 tmp27 [V38 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V39 tmp28 [V39,T15] ( 2, 2 ) long -> r9 "Inlining Arg" ; V40 tmp29 [V40,T16] ( 2, 2 ) int -> rax "Single return block return value" ; ; Lcl frame size = 40 G_M46191_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M46191_IG02: xor r9, r9 cmp r8d, 4 jb G_M46191_IG05 ;; bbWeight=1 PerfScore 1.50 G_M46191_IG03: mov rax, qword ptr [rcx+r9] mov r10, qword ptr [rdx+r9] mov r11, rax or r11, r10 mov rsi, r11 shr rsi, 32 or esi, r11d test esi, 0xD1FFAB1E jne G_M46191_IG14 mov r11, 0xD1FFAB1E add r11, rax mov rsi, 0xD1FFAB1E or rsi, rax mov rdi, 0xD1FFAB1E add rsi, rdi mov rdi, 0xD1FFAB1E and r11, rdi and r11, rsi shr r11, 2 or rax, r11 or r10, r11 cmp rax, r10 jne G_M46191_IG10 ;; bbWeight=4 PerfScore 57.00 G_M46191_IG04: add r9, 8 add r8d, -4 cmp r8d, 4 jae SHORT G_M46191_IG03 ;; bbWeight=4 PerfScore 7.00 G_M46191_IG05: cmp r8d, 2 jb SHORT G_M46191_IG07 mov eax, dword ptr [rcx+r9] mov r10d, dword ptr [rdx+r9] mov r11d, eax or r11d, r10d test r11d, 0xD1FFAB1E jne SHORT G_M46191_IG14 xor r10d, eax lea r11d, [rax+D1FFAB1EH] or eax, 0xD1FFAB1E add eax, 0xD1FFAB1E or eax, r11d shr eax, 2 or eax, 0xD1FFAB1E test eax, r10d jne SHORT G_M46191_IG10 ;; bbWeight=0.50 PerfScore 6.00 G_M46191_IG06: add r9, 4 add r8d, -2 ;; bbWeight=0.50 PerfScore 0.25 G_M46191_IG07: test r8d, r8d je SHORT G_M46191_IG12 movzx rax, word ptr [rcx+r9] movzx r10, word ptr [rdx+r9] mov r11d, eax or r11d, r10d cmp r11d, 127 ja SHORT G_M46191_IG14 cmp eax, r10d je SHORT G_M46191_IG12 ;; bbWeight=0.50 PerfScore 4.13 G_M46191_IG08: or eax, 32 lea ecx, [rax-97] cmp ecx, 25 ja SHORT G_M46191_IG10 ;; bbWeight=0.50 PerfScore 1.00 G_M46191_IG09: or r10d, 32 cmp eax, r10d je SHORT G_M46191_IG12 ;; bbWeight=0.50 PerfScore 0.75 G_M46191_IG10: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M46191_IG11: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M46191_IG12: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M46191_IG13: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M46191_IG14: add rcx, r9 add rdx, r9 call CompareInfo:EqualsOrdinalIgnoreCaseNonAscii(byref,byref,int):bool ;; bbWeight=0.50 PerfScore 0.75 G_M46191_IG15: movzx rax, al ;; bbWeight=0.50 PerfScore 0.13 G_M46191_IG16: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 310, prolog size 6, PerfScore 115.38, (MethodHash=91394b90) for method CompareInfo:EqualsOrdinalIgnoreCase(byref,byref,int):bool ; ============================================================ ; Assembly listing for method GcStats:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) struct (64) [rbp-0x40] do-not-enreg[XSB] addr-exposed "NewObj constructor temp" ; ; Lcl frame size = 112 G_M56803_IG01: push rbp sub rsp, 112 vzeroupper lea rbp, [rsp+70H] ;; bbWeight=1 PerfScore 2.75 G_M56803_IG02: call GcStats:CalculateAllocationQuantumSize():long mov rdx, 0xD1FFAB1E mov qword ptr [rdx], rax call GcStats:CreateGetAllocatedBytesForCurrentThreadDelegate():Func`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF call GcStats:CreateGetTotalAllocatedBytesDelegate():Func`2 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-40H], xmm0 vmovdqu xmmword ptr [rbp-30H], xmm0 vmovdqu xmmword ptr [rbp-20H], xmm0 vmovdqu xmmword ptr [rbp-10H], xmm0 xor ecx, ecx movsxd rcx, ecx mov qword ptr [rsp+20H], rcx xor ecx, ecx movsxd rcx, ecx mov qword ptr [rsp+28H], rcx lea rcx, bword ptr [rbp-40H] xor edx, edx xor r8d, r8d xor r9d, r9d call GcStats:.ctor(int,int,int,long,long):this mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] vmovdqu xmm0, xmmword ptr [rbp-40H] vmovdqu xmmword ptr [rax+8], xmm0 vmovdqu xmm0, xmmword ptr [rbp-30H] vmovdqu xmmword ptr [rax+24], xmm0 ;; bbWeight=1 PerfScore 23.08 G_M56803_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 177, prolog size 13, PerfScore 46.43, (MethodHash=01e2221c) for method GcStats:.cctor() ; ============================================================ ; Assembly listing for method GcStats:CalculateAllocationQuantumSize():long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T03] ( 6, 17.50) long -> rbx ; V01 loc1 [V01,T02] ( 4, 25 ) int -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 32 ) int -> rdi "dup spill" ; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V05 tmp3 [V05,T05] ( 2, 4 ) long -> rbx "Single return block return value" ; V06 FramesRoot [V06,T00] ( 14, 50 ) long -> rsi "Pinvoke FrameListRoot" ; V07 PInvokeFrame [V07 ] ( 16, 52 ) blk (72) [rbp-0x80] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 104 G_M19042_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 104 lea rbp, [rsp+A0H] ;; bbWeight=1 PerfScore 8.75 G_M19042_IG02: lea rcx, [rbp-78H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rsi, rax mov rcx, rsp mov qword ptr [rbp-58H], rcx mov rcx, rbp mov qword ptr [rbp-48H], rcx xor edi, edi ;; bbWeight=1 PerfScore 4.75 G_M19042_IG03: inc edi cmp edi, 10 jg G_M19042_IG18 ;; bbWeight=8 PerfScore 12.00 G_M19042_IG04: mov ecx, -1 mov edx, 2 mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M19042_IG07 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [rsi+16], rax mov byte ptr [rsi+12], 0 ;; bbWeight=4 PerfScore 25.00 G_M19042_IG05: mov rax, 0xD1FFAB1E ;; bbWeight=4 PerfScore 1.00 G_M19042_IG06: call qword ptr [rax]GC:_Collect(int,int) ;; bbWeight=4 PerfScore 12.00 G_M19042_IG07: mov byte ptr [rsi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M19042_IG08 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=4 PerfScore 30.00 G_M19042_IG08: mov rax, bword ptr [rbp-70H] mov qword ptr [rsi+16], rax mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M19042_IG11 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [rsi+16], rax mov byte ptr [rsi+12], 0 ;; bbWeight=4 PerfScore 31.00 G_M19042_IG09: mov rax, 0xD1FFAB1E ;; bbWeight=4 PerfScore 1.00 G_M19042_IG10: call qword ptr [rax]GC:_WaitForPendingFinalizers() ;; bbWeight=4 PerfScore 12.00 G_M19042_IG11: mov byte ptr [rsi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M19042_IG12 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=4 PerfScore 30.00 G_M19042_IG12: mov rcx, bword ptr [rbp-70H] mov qword ptr [rsi+16], rcx mov ecx, -1 mov edx, 2 mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M19042_IG15 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [rsi+16], rax mov byte ptr [rsi+12], 0 ;; bbWeight=4 PerfScore 33.00 G_M19042_IG13: mov rax, 0xD1FFAB1E ;; bbWeight=4 PerfScore 1.00 G_M19042_IG14: call qword ptr [rax]GC:_Collect(int,int) ;; bbWeight=4 PerfScore 12.00 G_M19042_IG15: mov byte ptr [rsi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M19042_IG16 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=4 PerfScore 30.00 G_M19042_IG16: mov rcx, bword ptr [rbp-70H] mov qword ptr [rsi+16], rcx xor ecx, ecx call GC:GetTotalMemory(bool):long mov rbx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax xor ecx, ecx call GC:GetTotalMemory(bool):long sub rax, rbx mov rbx, rax test rbx, rbx jle G_M19042_IG03 ;; bbWeight=4 PerfScore 32.00 G_M19042_IG17: jmp SHORT G_M19042_IG19 ;; bbWeight=0.50 PerfScore 1.00 G_M19042_IG18: mov ebx, 0x2000 ;; bbWeight=0.50 PerfScore 0.13 G_M19042_IG19: mov rax, rbx ;; bbWeight=1 PerfScore 0.25 G_M19042_IG20: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 427, prolog size 24, PerfScore 325.08, (MethodHash=b7b5b59d) for method GcStats:CalculateAllocationQuantumSize():long ; ============================================================ ; Assembly listing for method GC:GetTotalMemory(bool):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T05] ( 3, 3 ) bool -> rsi ; V01 loc0 [V01,T02] ( 6, 14 ) long -> rbx ; V02 loc1 [V02,T04] ( 3, 8.50) int -> registers ; V03 loc2 [V03,T03] ( 5, 13 ) long -> registers ; V04 loc3 [V04,T07] ( 3, 8.50) float -> mm0 ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T01] ( 3, 24 ) int -> rsi "impSpillLclRefs" ; V07 tmp2 [V07,T06] ( 3, 4 ) long -> registers "Single return block return value" ; V08 FramesRoot [V08,T00] ( 18, 54 ) long -> rdi "Pinvoke FrameListRoot" ; V09 PInvokeFrame [V09 ] ( 20, 56 ) blk (72) [rbp-0x80] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 104 G_M61550_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 104 vzeroupper lea rbp, [rsp+A0H] mov esi, ecx ;; bbWeight=1 PerfScore 10.00 G_M61550_IG02: lea rcx, [rbp-78H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rax, rsp mov qword ptr [rbp-58H], rax mov rax, rbp mov qword ptr [rbp-48H], rax mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M61550_IG05 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=1 PerfScore 10.25 G_M61550_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M61550_IG04: call qword ptr [rax]GC:GetTotalMemory():long ;; bbWeight=1 PerfScore 3.00 G_M61550_IG05: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M61550_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M61550_IG06: mov rdx, bword ptr [rbp-70H] mov qword ptr [rdi+16], rdx mov rbx, rax test sil, sil jne SHORT G_M61550_IG08 ;; bbWeight=1 PerfScore 3.50 G_M61550_IG07: mov rax, rbx jmp G_M61550_IG25 ;; bbWeight=0.50 PerfScore 1.13 G_M61550_IG08: mov esi, 20 ;; bbWeight=0.50 PerfScore 0.13 G_M61550_IG09: mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M61550_IG12 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=4 PerfScore 23.00 G_M61550_IG10: mov rax, 0xD1FFAB1E ;; bbWeight=4 PerfScore 1.00 G_M61550_IG11: call qword ptr [rax]GC:_WaitForPendingFinalizers() ;; bbWeight=4 PerfScore 12.00 G_M61550_IG12: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M61550_IG13 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=4 PerfScore 30.00 G_M61550_IG13: mov rcx, bword ptr [rbp-70H] mov qword ptr [rdi+16], rcx mov ecx, -1 mov edx, 2 mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M61550_IG16 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=4 PerfScore 33.00 G_M61550_IG14: mov rax, 0xD1FFAB1E ;; bbWeight=4 PerfScore 1.00 G_M61550_IG15: call qword ptr [rax]GC:_Collect(int,int) ;; bbWeight=4 PerfScore 12.00 G_M61550_IG16: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M61550_IG17 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=4 PerfScore 30.00 G_M61550_IG17: mov rax, bword ptr [rbp-70H] mov qword ptr [rdi+16], rax mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M61550_IG20 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=4 PerfScore 31.00 G_M61550_IG18: mov rax, 0xD1FFAB1E ;; bbWeight=4 PerfScore 1.00 G_M61550_IG19: call qword ptr [rax]GC:GetTotalMemory():long ;; bbWeight=4 PerfScore 12.00 G_M61550_IG20: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M61550_IG21 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=4 PerfScore 30.00 G_M61550_IG21: mov rdx, bword ptr [rbp-70H] mov qword ptr [rdi+16], rdx mov r14, rax mov rax, r14 sub rax, rbx vxorps xmm0, xmm0 vcvtsi2ss xmm0, rax vxorps xmm1, xmm1 vcvtsi2ss xmm1, rbx vdivss xmm0, xmm0, xmm1 lea eax, [rsi-1] mov ebx, eax test esi, esi jle SHORT G_M61550_IG24 vcvtss2sd xmm1, xmm0 vucomisd xmm1, qword ptr [reloc @RWD08] mov esi, ebx mov rbx, r14 jbe G_M61550_IG09 ;; bbWeight=4 PerfScore 127.67 G_M61550_IG22: vcvtss2sd xmm0, xmm0 vmovsd xmm1, qword ptr [reloc @RWD24] vucomisd xmm1, xmm0 jbe G_M61550_IG09 ;; bbWeight=0.50 PerfScore 4.00 G_M61550_IG23: mov r14, rbx ;; bbWeight=0.25 PerfScore 0.06 G_M61550_IG24: mov rbx, r14 mov rax, rbx ;; bbWeight=0.50 PerfScore 0.25 G_M61550_IG25: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 RWD00 dq 0000000000000000h RWD08 dq BFA999999999999Ah RWD16 dq 0000000000000000h RWD24 dq 3FA999999999999Ah ; Total bytes of code 552, prolog size 27, PerfScore 445.23, (MethodHash=fde30f91) for method GC:GetTotalMemory(bool):long ; ============================================================ ; Assembly listing for method GcStats:CreateGetAllocatedBytesForCurrentThreadDelegate():Func`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T01] ( 4, 3 ) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02,T04] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V03 tmp2 [V03,T00] ( 2, 4 ) ref -> rcx "argument with side effect" ; V04 tmp3 [V04,T02] ( 2, 2 ) ref -> rdx "argument with side effect" ; V05 tmp4 [V05,T03] ( 2, 2 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M28096_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M28096_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax call IntrospectionExtensions:GetTypeInfo(Type):TypeInfo mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, 24 mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]Type:GetMethod(String,int):MethodInfo:this mov rsi, rax test rsi, rsi jne SHORT G_M28096_IG05 ;; bbWeight=1 PerfScore 12.00 G_M28096_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M28096_IG04: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M28096_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+104] call gword ptr [rax+16]MethodInfo:CreateDelegate(Type):Delegate:this mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTANY nop ;; bbWeight=0.50 PerfScore 5.25 G_M28096_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 136, prolog size 5, PerfScore 33.98, (MethodHash=194a923f) for method GcStats:CreateGetAllocatedBytesForCurrentThreadDelegate():Func`1 ; ============================================================ ; Assembly listing for method ASCIIUtility:NarrowUtf16ToAscii_Sse2(long,long,long):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 6, 11.50) long -> rcx ; V01 arg1 [V01,T02] ( 8, 8.50) long -> rdx ; V02 arg2 [V02,T03] ( 3, 2.50) long -> r8 ;* V03 loc0 [V03,T05] ( 0, 0 ) int -> zero-ref ;* V04 loc1 [V04,T06] ( 0, 0 ) long -> zero-ref ; V05 loc2 [V05,T11] ( 5, 7 ) simd16 -> mm0 ;* V06 loc3 [V06 ] ( 0, 0 ) simd16 -> zero-ref ; V07 loc4 [V07,T07] ( 14, 18.50) simd16 -> mm1 ; V08 loc5 [V08,T09] ( 8, 11 ) simd16 -> mm2 ; V09 loc6 [V09,T00] ( 12, 27 ) long -> rax ; V10 loc7 [V10,T04] ( 2, 4.50) long -> r8 ; V11 loc8 [V11,T08] ( 3, 12 ) simd16 -> mm2 ; V12 loc9 [V12,T10] ( 2, 8 ) simd16 -> mm3 ;# V13 OutArgs [V13 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; ; Lcl frame size = 0 G_M48767_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M48767_IG02: vmovupd xmm0, xmmword ptr [reloc @RWD16] vmovdqu xmm1, xmmword ptr [rcx] vptest xmm1, xmm0 je SHORT G_M48767_IG05 ;; bbWeight=1 PerfScore 9.00 G_M48767_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M48767_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M48767_IG05: vpackuswb xmm2, xmm1, xmm1 vmovq xmmword ptr [rdx], xmm2 mov eax, 8 test dl, 8 jne SHORT G_M48767_IG07 vmovdqu xmm1, xmmword ptr [rcx+16] vptest xmm1, xmm0 jne SHORT G_M48767_IG10 ;; bbWeight=0.50 PerfScore 4.75 G_M48767_IG06: vpackuswb xmm2, xmm1, xmm1 vmovq xmmword ptr [rdx+8], xmm2 ;; bbWeight=0.50 PerfScore 1.00 G_M48767_IG07: mov rax, rdx and rax, 15 mov r9d, 16 sub r9, rax mov rax, r9 sub r8, 16 ;; bbWeight=0.50 PerfScore 0.75 G_M48767_IG08: vmovdqu xmm1, xmmword ptr [rcx+2*rax] vmovdqu xmm2, xmmword ptr [rcx+2*rax+16] vpor xmm3, xmm1, xmm2 vptest xmm3, xmm0 jne SHORT G_M48767_IG11 ;; bbWeight=4 PerfScore 33.33 G_M48767_IG09: vpackuswb xmm2, xmm1, xmm2 vmovdqa xmmword ptr [rdx+rax], xmm2 add rax, 16 cmp rax, r8 jbe SHORT G_M48767_IG08 ;; bbWeight=4 PerfScore 14.00 G_M48767_IG10: ret ;; bbWeight=0.50 PerfScore 0.50 G_M48767_IG11: vptest xmm1, xmm0 jne SHORT G_M48767_IG10 ;; bbWeight=0.50 PerfScore 2.00 G_M48767_IG12: vpackuswb xmm2, xmm1, xmm1 vmovq xmmword ptr [rdx+rax], xmm2 add rax, 8 jmp SHORT G_M48767_IG10 ;; bbWeight=0.50 PerfScore 2.13 RWD00 db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h RWD16 db 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh, 080h, 0FFh ; Total bytes of code 150, prolog size 3, PerfScore 85.88, (MethodHash=7e304180) for method ASCIIUtility:NarrowUtf16ToAscii_Sse2(long,long,long):long ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:CreateDelegate(Type):Delegate:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M40982_IG01: ;; bbWeight=1 PerfScore 0.00 G_M40982_IG02: xor r8, r8 mov r9d, 68 ;; bbWeight=1 PerfScore 0.50 G_M40982_IG03: jmp RuntimeMethodInfo:CreateDelegateInternal(Type,Object,int):Delegate:this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 14, prolog size 0, PerfScore 3.90, (MethodHash=479a5fe9) for method RuntimeMethodInfo:CreateDelegate(Type):Delegate:this ; ============================================================ ; Assembly listing for method RuntimeMethodInfo:CreateDelegateInternal(Type,Object,int):Delegate:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rdi class-hnd ; V03 arg3 [V03,T04] ( 3, 3 ) int -> rbx ; V04 loc0 [V04,T05] ( 4, 4 ) ref -> rbp class-hnd ; V05 loc1 [V05,T06] ( 3, 3 ) ref -> rax class-hnd ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T00] ( 4, 6.24) ref -> rbp class-hnd "spilling QMark2" ; V08 tmp2 [V08,T07] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp3 [V09,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp4 [V10,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V11 tmp5 [V11,T10] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V12 tmp6 [V12,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; V13 tmp7 [V13,T12] ( 2, 0 ) ref -> rcx "argument with side effect" ; V14 tmp8 [V14,T13] ( 2, 0 ) ref -> rdi "argument with side effect" ; V15 tmp9 [V15,T14] ( 2, 0 ) ref -> r8 "argument with side effect" ; V16 tmp10 [V16,T15] ( 2, 0 ) ref -> rcx "argument with side effect" ; V17 tmp11 [V17,T16] ( 2, 0 ) ref -> rdi "argument with side effect" ; V18 tmp12 [V18,T17] ( 2, 0 ) ref -> r8 "argument with side effect" ; V19 tmp13 [V19,T18] ( 2, 0 ) ref -> rcx "argument with side effect" ; V20 tmp14 [V20,T19] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M39543_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, r8 mov ebx, r9d ;; bbWeight=1 PerfScore 5.00 G_M39543_IG02: test rdx, rdx je SHORT G_M39543_IG09 ;; bbWeight=1 PerfScore 1.25 G_M39543_IG03: mov rbp, rdx mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx je SHORT G_M39543_IG05 ;; bbWeight=1 PerfScore 3.50 G_M39543_IG04: xor rbp, rbp ;; bbWeight=0.12 PerfScore 0.03 G_M39543_IG05: test rbp, rbp je SHORT G_M39543_IG10 ;; bbWeight=1 PerfScore 1.25 G_M39543_IG06: mov rcx, rbp call RuntimeType:IsDelegate():bool:this test eax, eax je G_M39543_IG11 ;; bbWeight=1 PerfScore 2.50 G_M39543_IG07: mov rcx, rbp mov rdx, rsi mov r8, rdi mov r9d, ebx call Delegate:CreateDelegateInternal(RuntimeType,RuntimeMethodInfo,Object,int):Delegate test rax, rax je G_M39543_IG12 ;; bbWeight=1 PerfScore 3.25 G_M39543_IG08: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M39543_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1C34C mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M39543_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x7EEB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1C34C mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M39543_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x494F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1C34C mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M39543_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x3B89 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 410, prolog size 8, PerfScore 61.03, (MethodHash=27be6588) for method RuntimeMethodInfo:CreateDelegateInternal(Type,Object,int):Delegate:this ; ============================================================ ; Assembly listing for method RuntimeType:IsDelegate():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M28584_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M28584_IG02: call RuntimeType:GetBaseType():RuntimeType:this mov rsi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rsi, rax sete al movzx rax, al ;; bbWeight=1 PerfScore 4.00 G_M28584_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 43, prolog size 5, PerfScore 11.30, (MethodHash=0eb49057) for method RuntimeType:IsDelegate():bool:this ; ============================================================ ; Assembly listing for method Delegate:CreateDelegateInternal(RuntimeType,RuntimeMethodInfo,Object,int):Delegate ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rdi class-hnd ; V03 arg3 [V03,T03] ( 3, 3 ) int -> rbx ; V04 loc0 [V04,T04] ( 3, 2.50) ref -> rbp class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M3076_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rdx mov rdi, r8 mov ebx, r9d ;; bbWeight=1 PerfScore 5.00 G_M3076_IG02: call Delegate:InternalAlloc(RuntimeType):MulticastDelegate mov rbp, rax mov dword ptr [rsp+20H], ebx mov r9, gword ptr [rsi+56] mov rcx, rbp mov rdx, rdi mov r8, rsi cmp dword ptr [rcx], ecx call Delegate:BindToMethodInfo(Object,IRuntimeMethodInfo,RuntimeType,int):bool:this test eax, eax je SHORT G_M3076_IG05 ;; bbWeight=1 PerfScore 9.25 G_M3076_IG03: mov rax, rbp ;; bbWeight=0.50 PerfScore 0.13 G_M3076_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M3076_IG05: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M3076_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 76, prolog size 8, PerfScore 25.35, (MethodHash=fe06f3fb) for method Delegate:CreateDelegateInternal(RuntimeType,RuntimeMethodInfo,Object,int):Delegate ; ============================================================ ; Assembly listing for method GcStats:CreateGetTotalAllocatedBytesDelegate():Func`2 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T01] ( 4, 3 ) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02,T04] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V03 tmp2 [V03,T00] ( 2, 4 ) ref -> rcx "argument with side effect" ; V04 tmp3 [V04,T02] ( 2, 2 ) ref -> rdx "argument with side effect" ; V05 tmp4 [V05,T03] ( 2, 2 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M43389_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M43389_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax call IntrospectionExtensions:GetTypeInfo(Type):TypeInfo mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8d, 24 mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]Type:GetMethod(String,int):MethodInfo:this mov rsi, rax test rsi, rsi jne SHORT G_M43389_IG05 ;; bbWeight=1 PerfScore 12.00 G_M43389_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M43389_IG04: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M43389_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+104] call gword ptr [rax+16]MethodInfo:CreateDelegate(Type):Delegate:this mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTANY nop ;; bbWeight=0.50 PerfScore 5.25 G_M43389_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 136, prolog size 5, PerfScore 33.98, (MethodHash=1cf25682) for method GcStats:CreateGetTotalAllocatedBytesDelegate():Func`2 ; ============================================================ ; Assembly listing for method GcStats:.ctor(int,int,int,long,long):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) byref -> rcx this ; V01 arg1 [V01,T01] ( 3, 3 ) int -> rdx ; V02 arg2 [V02,T02] ( 3, 3 ) int -> r8 ; V03 arg3 [V03,T03] ( 3, 3 ) int -> r9 ; V04 arg4 [V04,T04] ( 1, 1 ) long -> [rsp+0x28] ; V05 arg5 [V05,T05] ( 1, 1 ) long -> [rsp+0x30] ;# V06 OutArgs [V06 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M51407_IG01: ;; bbWeight=1 PerfScore 0.00 G_M51407_IG02: mov dword ptr [rcx], edx mov dword ptr [rcx+4], r8d mov dword ptr [rcx+8], r9d mov rax, qword ptr [rsp+28H] mov qword ptr [rcx+16], rax mov rax, qword ptr [rsp+30H] mov qword ptr [rcx+24], rax ;; bbWeight=1 PerfScore 7.00 G_M51407_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 29, prolog size 0, PerfScore 10.90, (MethodHash=26c13730) for method GcStats:.ctor(int,int,int,long,long):this ; ============================================================ ; Assembly listing for method RuntimeInformation:get_IsRunningInContainer():bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 2, 4 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 40 G_M25681_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M25681_IG02: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] call Environment:GetEnvironmentVariable(String):String mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] ;; bbWeight=1 PerfScore 5.75 G_M25681_IG03: add rsp, 40 jmp String:Equals(String,String):bool ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 47, prolog size 4, PerfScore 12.95, (MethodHash=8f489bae) for method RuntimeInformation:get_IsRunningInContainer():bool ; ============================================================ ; Assembly listing for method BenchmarkEnvironmentInfo:ToFormattedString():IEnumerable`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 5, 10 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V04 tmp3 [V04,T03] ( 4, 3.25) ref -> rcx ; ; Lcl frame size = 40 G_M31877_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M31877_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov dword ptr [rdi+24], -2 mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M31877_IG04 ;; bbWeight=1 PerfScore 7.25 G_M31877_IG03: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M31877_IG04: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rdi+28], eax lea rcx, bword ptr [rdi+16] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=1 PerfScore 6.00 G_M31877_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 103, prolog size 6, PerfScore 28.61, (MethodHash=faba837a) for method BenchmarkEnvironmentInfo:ToFormattedString():IEnumerable`1:this ; ============================================================ ; Assembly listing for method d__44:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T02] ( 4, 2.50) ref -> registers class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 4, 4 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T05] ( 2, 2 ) int -> rdi "impAppendStmt" ; V05 tmp3 [V05,T03] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V06 tmp4 [V06,T06] ( 4, 1.75) ref -> rcx ; V07 tmp5 [V07,T04] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V08 tmp6 [V08,T07] ( 4, 1.75) ref -> rcx ; ; Lcl frame size = 40 G_M1181_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M1181_IG02: cmp dword ptr [rsi+24], -2 jne SHORT G_M1181_IG06 ;; bbWeight=1 PerfScore 3.00 G_M1181_IG03: mov edi, dword ptr [rsi+28] mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M1181_IG05 ;; bbWeight=0.50 PerfScore 3.38 G_M1181_IG04: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M1181_IG05: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this cmp eax, edi jne SHORT G_M1181_IG06 xor ecx, ecx mov dword ptr [rsi+24], ecx jmp SHORT G_M1181_IG09 ;; bbWeight=0.50 PerfScore 3.75 G_M1181_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax xor ecx, ecx mov dword ptr [rdi+24], ecx mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M1181_IG08 ;; bbWeight=0.50 PerfScore 3.75 G_M1181_IG07: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M1181_IG08: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rdi+28], eax mov rdx, gword ptr [rsi+16] lea rcx, bword ptr [rdi+16] call CORINFO_HELP_ASSIGN_REF mov rsi, rdi ;; bbWeight=0.50 PerfScore 3.88 G_M1181_IG09: mov rax, rsi ;; bbWeight=1 PerfScore 0.25 G_M1181_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 169, prolog size 6, PerfScore 40.28, (MethodHash=7780fb62) for method d__44:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method d__44:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 14, 9 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T01] ( 3, 3 ) int -> rdx ; V02 loc1 [V02,T02] ( 4, 2.50) ref -> rdi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 2 ) ref -> rbx class-hnd "impAppendStmt" ; V05 tmp2 [V05,T04] ( 2, 2 ) ref -> rdx "argument with side effect" ; V06 tmp3 [V06,T05] ( 2, 2 ) ref -> rbx "argument with side effect" ; V07 tmp4 [V07,T06] ( 2, 2 ) ref -> r9 "argument with side effect" ; V08 tmp5 [V08,T07] ( 2, 2 ) ref -> r14 "argument with side effect" ; V09 tmp6 [V09,T08] ( 2, 2 ) ref -> rbp "argument with side effect" ; ; Lcl frame size = 32 G_M52769_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 5.50 G_M52769_IG02: mov edx, dword ptr [rsi+24] mov rdi, gword ptr [rsi+16] cmp edx, 3 ja G_M52769_IG09 mov edx, edx lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rax, G_M52769_IG02 add rcx, rax jmp rcx ;; bbWeight=1 PerfScore 11.25 G_M52769_IG03: mov dword ptr [rsi+24], -1 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+24], 1 jmp G_M52769_IG06 ;; bbWeight=0.50 PerfScore 3.88 G_M52769_IG04: mov dword ptr [rsi+24], -1 mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] mov rcx, rdi call BenchmarkEnvironmentInfo:GetRuntimeInfo():String:this mov rdx, rax mov rcx, rbx call String:Concat(String,String):String lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+24], 2 jmp SHORT G_M52769_IG06 ;; bbWeight=0.50 PerfScore 5.38 G_M52769_IG05: mov dword ptr [rsi+24], -1 mov rcx, rdi call BenchmarkEnvironmentInfo:GetGcConcurrentFlag():String:this mov rbx, rax mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r14, gword ptr [rcx] mov rcx, rdi call BenchmarkEnvironmentInfo:GetGcServerFlag():String:this mov r9, rax mov r8, r14 mov rcx, rbp mov rdx, rbx call String:Concat(String,String,String,String):String lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+24], 3 ;; bbWeight=0.50 PerfScore 6.50 G_M52769_IG06: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M52769_IG07: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M52769_IG08: mov dword ptr [rsi+24], -1 ;; bbWeight=0.50 PerfScore 0.50 G_M52769_IG09: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M52769_IG10: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 RWD00 dd G_M52769_IG03 - G_M52769_IG02 dd G_M52769_IG04 - G_M52769_IG02 dd G_M52769_IG05 - G_M52769_IG02 dd G_M52769_IG08 - G_M52769_IG02 ; Total bytes of code 278, prolog size 10, PerfScore 64.80, (MethodHash=23fd31de) for method d__44:MoveNext():bool:this ; ============================================================ ; Assembly listing for method d__44:System.Collections.Generic.IEnumerator.get_Current():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M26084_IG01: ;; bbWeight=1 PerfScore 0.00 G_M26084_IG02: mov rax, gword ptr [rcx+8] ;; bbWeight=1 PerfScore 2.00 G_M26084_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=a87f9a1b) for method d__44:System.Collections.Generic.IEnumerator.get_Current():String:this ; ============================================================ ; Assembly listing for method ConsoleHost:WriteLine(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 rat0 [V03,T00] ( 3, 6 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 0 G_M27148_IG01: ;; bbWeight=1 PerfScore 0.00 G_M27148_IG02: mov rcx, gword ptr [rcx+8] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+104] mov rax, qword ptr [rax+48] ;; bbWeight=1 PerfScore 8.00 G_M27148_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 18, prolog size 0, PerfScore 11.80, (MethodHash=d3ed95f3) for method ConsoleHost:WriteLine(String):this ; ============================================================ // Benchmark Process Environment Information: ; Assembly listing for method BenchmarkEnvironmentInfo:GetRuntimeInfo():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 7, 7 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T13] ( 2, 2 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 5, 10 ) ref -> rdi class-hnd exact "dup spill" ; V04 tmp2 [V04,T04] ( 2, 4 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" ; V05 tmp3 [V05,T05] ( 2, 4 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" ; V06 tmp4 [V06,T06] ( 2, 4 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" ; V07 tmp5 [V07,T07] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V08 tmp6 [V08,T14] ( 2, 2 ) ref -> rbx ; V09 tmp7 [V09,T15] ( 2, 2 ) ref -> rdi ; V10 tmp8 [V10,T11] ( 4, 3.50) ref -> r8 ; V11 tmp9 [V11,T00] ( 7, 14 ) ref -> rbx class-hnd exact "dup spill" ; V12 tmp10 [V12,T08] ( 2, 4 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" ; V13 tmp11 [V13,T09] ( 2, 4 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" ; V14 tmp12 [V14,T03] ( 5, 5 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V15 tmp13 [V15,T12] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V16 tmp14 [V16 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V17 tmp15 [V17,T10] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V18 cse0 [V18,T16] ( 0, 0 ) long -> zero-ref "CSE - moderate" ; ; Lcl frame size = 40 G_M25402_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 4.50 G_M25402_IG02: mov rcx, 0xD1FFAB1E mov edx, 3 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax mov rdx, gword ptr [rsi+32] lea rcx, bword ptr [rdi+16] call CORINFO_HELP_ASSIGN_REF mov rcx, rsi call BenchmarkEnvironmentInfo:GetConfigurationFlag():String:this lea rcx, bword ptr [rdi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rsi call BenchmarkEnvironmentInfo:GetDebuggerFlag():String:this lea rcx, bword ptr [rdi+32] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 940 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] test r8, r8 jne SHORT G_M25402_IG05 ;; bbWeight=1 PerfScore 18.50 G_M25402_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M25402_IG07 ;; bbWeight=0.50 PerfScore 2.50 G_M25402_IG04: lea rcx, bword ptr [rbp+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbp+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbp call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbp ;; bbWeight=0.50 PerfScore 2.25 G_M25402_IG05: mov rdx, rdi mov rcx, 0xD1FFAB1E call Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 mov rdx, rax mov rcx, rbx call String:Join(String,IEnumerable`1):String mov rdi, rax mov rcx, 0xD1FFAB1E mov edx, 5 call CORINFO_HELP_NEWARR_1_OBJ mov rbx, rax mov rdx, gword ptr [rsi+24] lea rcx, bword ptr [rbx+16] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+24] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsi+8] lea rcx, bword ptr [rbx+32] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+40] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+48] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, rbx ;; bbWeight=1 PerfScore 21.50 G_M25402_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp String:Concat(ref):String ;; bbWeight=1 PerfScore 4.25 G_M25402_IG07: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 381, prolog size 8, PerfScore 91.60, (MethodHash=a4529cc5) for method BenchmarkEnvironmentInfo:GetRuntimeInfo():String:this ; ============================================================ ; Assembly listing for method BenchmarkEnvironmentInfo:GetConfigurationFlag():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V03 tmp2 [V03,T02] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; ; Lcl frame size = 32 G_M53396_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M53396_IG02: mov rcx, gword ptr [rsi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call String:Equals(String,String):bool test eax, eax jne SHORT G_M53396_IG05 ;; bbWeight=1 PerfScore 6.50 G_M53396_IG03: mov rcx, gword ptr [rsi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call String:Equals(String,String):bool test eax, eax jne SHORT G_M53396_IG05 mov rax, gword ptr [rsi+16] ;; bbWeight=0.50 PerfScore 4.25 G_M53396_IG04: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M53396_IG05: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M53396_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 89, prolog size 5, PerfScore 24.03, (MethodHash=bf5e2f6b) for method BenchmarkEnvironmentInfo:GetConfigurationFlag():String:this ; ============================================================ ; Assembly listing for method BenchmarkEnvironmentInfo:GetDebuggerFlag():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M60197_IG01: ;; bbWeight=1 PerfScore 0.00 G_M60197_IG02: cmp byte ptr [rcx+48], 0 jne SHORT G_M60197_IG05 ;; bbWeight=1 PerfScore 3.00 G_M60197_IG03: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M60197_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M60197_IG05: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M60197_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 34, prolog size 0, PerfScore 9.65, (MethodHash=22bb14da) for method BenchmarkEnvironmentInfo:GetDebuggerFlag():String:this ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T01] ( 11, 5.30) long -> rdi ; V01 arg0 [V01,T00] ( 7, 5.50) ref -> rsi class-hnd ; V02 arg1 [V02,T02] ( 7, 5 ) ref -> rbx class-hnd ; V03 loc0 [V03,T08] ( 4, 3 ) ref -> rax class-hnd ; V04 loc1 [V04,T13] ( 4, 2 ) ref -> r14 class-hnd ; V05 loc2 [V05,T26] ( 3, 1.50) ref -> r15 class-hnd ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T09] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ; V09 tmp2 [V09,T14] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V10 tmp3 [V10,T15] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V11 tmp4 [V11,T04] ( 5, 5 ) ref -> r15 class-hnd exact "NewObj constructor temp" ; V12 tmp5 [V12,T16] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V13 tmp6 [V13,T05] ( 5, 5 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V14 tmp7 [V14,T10] ( 3, 2.80) long -> rcx "impRuntimeLookup indirectOffset" ; V15 tmp8 [V15,T17] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V16 tmp9 [V16,T11] ( 3, 2.80) long -> rcx "impRuntimeLookup indirectOffset" ; V17 tmp10 [V17,T18] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V18 tmp11 [V18,T06] ( 5, 5 ) ref -> r15 class-hnd exact "NewObj constructor temp" ; V19 tmp12 [V19,T12] ( 3, 2.80) long -> rbp "impRuntimeLookup indirectOffset" ; V20 tmp13 [V20,T19] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V21 tmp14 [V21,T20] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V22 tmp15 [V22,T23] ( 4, 1.75) ref -> rcx ; V23 tmp16 [V23,T21] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V24 tmp17 [V24,T24] ( 4, 1.75) ref -> rcx ; V25 tmp18 [V25,T22] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V26 tmp19 [V26,T25] ( 4, 1.75) ref -> rcx ; V27 tmp20 [V27,T07] ( 4, 4 ) ref -> r15 "Single return block return value" ; V28 cse0 [V28,T27] ( 3, 1.25) long -> rcx "CSE - moderate" ; V29 cse1 [V29,T28] ( 3, 1.25) long -> rcx "CSE - moderate" ; V30 cse2 [V30,T29] ( 3, 1.25) long -> rcx "CSE - moderate" ; V31 cse3 [V31,T03] ( 9, 5.25) long -> rbp "CSE - aggressive" ; V32 cse4 [V32,T30] ( 3, 1.20) long -> rcx "CSE - moderate" ; V33 cse5 [V33,T31] ( 3, 1.20) long -> rcx "CSE - moderate" ; V34 cse6 [V34,T32] ( 3, 1.20) long -> rcx "CSE - moderate" ; ; Lcl frame size = 40 G_M48024_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rdi, rcx mov rsi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 8.00 G_M48024_IG02: test rsi, rsi je G_M48024_IG40 ;; bbWeight=1 PerfScore 1.25 G_M48024_IG03: test rbx, rbx je G_M48024_IG41 ;; bbWeight=1 PerfScore 1.25 G_M48024_IG04: mov rbp, qword ptr [rdi+16] cmp qword ptr [rbp+16], 0 je SHORT G_M48024_IG06 ;; bbWeight=1 PerfScore 5.00 G_M48024_IG05: mov rcx, qword ptr [rbp+16] jmp SHORT G_M48024_IG07 ;; bbWeight=0.25 PerfScore 1.00 G_M48024_IG06: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M48024_IG07: mov rdx, rsi call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax je SHORT G_M48024_IG10 ;; bbWeight=1 PerfScore 2.50 G_M48024_IG08: mov rcx, rax mov rdx, rbx mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] mov rax, qword ptr [rax+16] ;; bbWeight=0.50 PerfScore 3.25 G_M48024_IG09: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 rex.jmp rax ;; bbWeight=0.50 PerfScore 2.63 G_M48024_IG10: mov rcx, qword ptr [rbp+24] test rcx, rcx je SHORT G_M48024_IG12 ;; bbWeight=0.50 PerfScore 1.63 G_M48024_IG11: jmp SHORT G_M48024_IG13 ;; bbWeight=0.25 PerfScore 0.50 G_M48024_IG12: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M48024_IG13: mov rdx, rsi call CORINFO_HELP_ISINSTANCEOFARRAY mov r14, rax test r14, r14 je G_M48024_IG23 cmp dword ptr [r14+8], 0 je G_M48024_IG19 cmp qword ptr [rbp+8], 64 jle SHORT G_M48024_IG15 ;; bbWeight=0.50 PerfScore 4.38 G_M48024_IG14: mov rcx, qword ptr [rbp+64] test rcx, rcx je SHORT G_M48024_IG15 jmp SHORT G_M48024_IG16 ;; bbWeight=0.40 PerfScore 2.10 G_M48024_IG15: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.10 PerfScore 0.18 G_M48024_IG16: call CORINFO_HELP_NEWSFAST mov r15, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M48024_IG18 ;; bbWeight=0.50 PerfScore 3.00 G_M48024_IG17: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M48024_IG18: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [r15+16], eax lea rcx, bword ptr [r15+24] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r15+32] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF jmp G_M48024_IG38 ;; bbWeight=0.50 PerfScore 4.75 G_M48024_IG19: mov rcx, rbp cmp qword ptr [rcx+8], 56 jle SHORT G_M48024_IG21 ;; bbWeight=0.50 PerfScore 1.63 G_M48024_IG20: mov rcx, qword ptr [rcx+56] test rcx, rcx je SHORT G_M48024_IG21 jmp SHORT G_M48024_IG22 ;; bbWeight=0.40 PerfScore 2.10 G_M48024_IG21: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.10 PerfScore 0.18 G_M48024_IG22: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 jmp Enumerable:Empty():IEnumerable`1 ;; bbWeight=0.50 PerfScore 2.63 G_M48024_IG23: mov rcx, qword ptr [rbp+32] test rcx, rcx je SHORT G_M48024_IG25 ;; bbWeight=0.50 PerfScore 1.63 G_M48024_IG24: jmp SHORT G_M48024_IG26 ;; bbWeight=0.25 PerfScore 0.50 G_M48024_IG25: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M48024_IG26: mov rdx, rsi call CORINFO_HELP_ISINSTANCEOFCLASS mov r15, rax test r15, r15 je G_M48024_IG32 mov rcx, rbp cmp qword ptr [rcx+8], 48 jle SHORT G_M48024_IG28 ;; bbWeight=0.50 PerfScore 3.00 G_M48024_IG27: mov rcx, qword ptr [rcx+48] test rcx, rcx je SHORT G_M48024_IG28 jmp SHORT G_M48024_IG29 ;; bbWeight=0.40 PerfScore 2.10 G_M48024_IG28: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.10 PerfScore 0.18 G_M48024_IG29: call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M48024_IG31 ;; bbWeight=0.50 PerfScore 3.00 G_M48024_IG30: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M48024_IG31: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbp+16], eax lea rcx, bword ptr [rbp+24] mov rdx, r15 call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbp+32] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov r15, rbp jmp SHORT G_M48024_IG38 ;; bbWeight=0.50 PerfScore 4.88 G_M48024_IG32: mov rcx, qword ptr [rbp+40] test rcx, rcx je SHORT G_M48024_IG34 ;; bbWeight=0.50 PerfScore 1.63 G_M48024_IG33: jmp SHORT G_M48024_IG35 ;; bbWeight=0.25 PerfScore 0.50 G_M48024_IG34: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M48024_IG35: call CORINFO_HELP_NEWSFAST mov r15, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M48024_IG37 ;; bbWeight=0.50 PerfScore 3.00 G_M48024_IG36: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M48024_IG37: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [r15+16], eax lea rcx, bword ptr [r15+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r15+32] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 3.75 G_M48024_IG38: mov rax, r15 ;; bbWeight=0.50 PerfScore 0.13 G_M48024_IG39: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M48024_IG40: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M48024_IG41: mov ecx, 12 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 701, prolog size 26, PerfScore 147.11, (MethodHash=4df54467) for method Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 ; ============================================================ ; Assembly listing for method String:Join(String,IEnumerable`1):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 6, 11 ) ref -> rsi class-hnd ; V01 arg1 [V01,T07] ( 4, 4 ) ref -> rdx class-hnd ; V02 loc0 [V02,T02] ( 9, 12 ) ref -> [rbp+0x18] EH do-not-enreg[] class-hnd EH-live ; V03 loc1 [V03,T12] ( 6, 2.75) ref -> rdi class-hnd ; V04 loc2 [V04 ] ( 19, 20 ) struct (32) [rbp+0x20] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ; V05 loc3 [V05,T13] ( 4, 2.50) ref -> rdi class-hnd ;* V06 loc4 [V06 ] ( 0, 0 ) struct (16) zero-ref ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V09 tmp2 [V09,T15] ( 4, 2 ) ref -> rdi ; V10 tmp3 [V10,T26] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V11 tmp4 [V11,T17] ( 2, 2 ) long -> rcx "Inlining Arg" ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V14 tmp7 [V14,T14] ( 5, 2 ) int -> rcx "Inline stloc first use temp" ; V15 tmp8 [V15,T10] ( 3, 3 ) byref -> rax "Span.get_Item ptrToSpan" ; V16 tmp9 [V16,T05] ( 5, 8 ) int -> rcx "Inline stloc first use temp" ; V17 tmp10 [V17,T03] ( 3, 12 ) byref -> rax "Span.get_Item ptrToSpan" ; V18 tmp11 [V18,T00] ( 5, 26 ) ref -> rax class-hnd "Inlining Arg" ; V19 tmp12 [V19,T06] ( 5, 8 ) int -> rcx "Inline stloc first use temp" ; V20 tmp13 [V20,T04] ( 3, 12 ) byref -> r8 "Span.get_Item ptrToSpan" ; V21 tmp14 [V21,T19] ( 2, 1 ) byref -> rcx V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ;* V22 tmp15 [V22,T23] ( 0, 0 ) int -> zero-ref V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V23 tmp16 [V23,T20] ( 2, 1 ) byref -> rcx V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ;* V24 tmp17 [V24,T24] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ; V25 tmp18 [V25,T21] ( 2, 1 ) byref -> rcx V12._value(offs=0x00) P-INDEP "field V12._value (fldOffset=0x0)" ; V26 tmp19 [V26,T22] ( 2, 1 ) byref -> rcx V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ;* V27 tmp20 [V27,T25] ( 0, 0 ) int -> zero-ref V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V28 tmp21 [V28,T27] ( 2, 0 ) ref -> rdx "argument with side effect" ; V29 tmp22 [V29,T11] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V30 GsCookie [V30 ] ( 1, 1 ) long -> [rbp+0x10] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V31 PSPSym [V31 ] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[X] addr-exposed "PSPSym" ; V32 tmp25 [V32,T16] ( 2, 2 ) ref -> rax "optAddCopies" ; V33 cse0 [V33,T08] ( 3, 4 ) int -> rdx "CSE - aggressive" ; V34 cse1 [V34,T09] ( 3, 4 ) int -> rdx "CSE - aggressive" ; V35 cse2 [V35,T18] ( 3, 1 ) int -> rdx "CSE - moderate" ; ; Lcl frame size = 96 G_M18454_IG01: push rbp push rdi push rsi sub rsp, 96 lea rbp, [rsp+20H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp+20H], xmm4 vmovdqa xmmword ptr [rbp+30H], xmm4 mov qword ptr [rbp], rsp mov rax, 0xD1FFAB1E mov qword ptr [rbp+10H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 8.58 G_M18454_IG02: test rdx, rdx je G_M18454_IG26 ;; bbWeight=1 PerfScore 1.25 G_M18454_IG03: mov rcx, rdx mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp+18H], rax ;; bbWeight=1 PerfScore 4.75 G_M18454_IG04: mov rcx, gword ptr [rbp+18H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M18454_IG06 ;; bbWeight=1 PerfScore 5.75 G_M18454_IG05: mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] jmp G_M18454_IG23 ;; bbWeight=0.50 PerfScore 2.13 G_M18454_IG06: mov rcx, gword ptr [rbp+18H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerator`1:get_Current():__Canon:this mov rdi, rax mov rcx, gword ptr [rbp+18H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M18454_IG08 test rdi, rdi jne SHORT G_M18454_IG07 mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] ;; bbWeight=0.50 PerfScore 7.00 G_M18454_IG07: jmp G_M18454_IG23 ;; bbWeight=0.50 PerfScore 1.00 G_M18454_IG08: add rsp, 32 test dword ptr [rsp], esp sub rsp, 512 sub rsp, 32 lea rcx, [rsp+20H] xor rdx, rdx mov gword ptr [rbp+20H], rdx lea rdx, bword ptr [rbp+30H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], 256 xor ecx, ecx mov dword ptr [rbp+28H], ecx test rdi, rdi je SHORT G_M18454_IG13 ;; bbWeight=0.50 PerfScore 4.75 G_M18454_IG09: mov ecx, dword ptr [rbp+28H] mov edx, dword ptr [rdi+8] cmp edx, 1 jne SHORT G_M18454_IG12 cmp ecx, dword ptr [rbp+38H] jae SHORT G_M18454_IG12 ;; bbWeight=0.25 PerfScore 1.56 G_M18454_IG10: lea rax, bword ptr [rbp+30H] cmp ecx, dword ptr [rax+8] jae SHORT G_M18454_IG11 mov rax, bword ptr [rax] movsxd r8, ecx cmp edx, 0 jbe SHORT G_M18454_IG11 movzx rdx, word ptr [rdi+12] mov word ptr [rax+2*r8], dx inc ecx mov dword ptr [rbp+28H], ecx jmp SHORT G_M18454_IG13 ;; bbWeight=0.50 PerfScore 6.63 G_M18454_IG11: call CORINFO_HELP_RNGCHKFAIL ;; bbWeight=0 PerfScore 0.00 G_M18454_IG12: lea rcx, bword ptr [rbp+20H] mov rdx, rdi call ValueStringBuilder:AppendSlow(String):this ;; bbWeight=0.50 PerfScore 0.88 G_M18454_IG13: test rsi, rsi je SHORT G_M18454_IG17 ;; bbWeight=4 PerfScore 5.00 G_M18454_IG14: mov ecx, dword ptr [rbp+28H] mov edx, dword ptr [rsi+8] cmp edx, 1 jne SHORT G_M18454_IG16 cmp ecx, dword ptr [rbp+38H] jae SHORT G_M18454_IG16 ;; bbWeight=1 PerfScore 6.25 G_M18454_IG15: lea rax, bword ptr [rbp+30H] cmp ecx, dword ptr [rax+8] jae SHORT G_M18454_IG11 mov rax, bword ptr [rax] movsxd r8, ecx cmp edx, 0 jbe SHORT G_M18454_IG11 movzx rdx, word ptr [rsi+12] mov word ptr [rax+2*r8], dx inc ecx mov dword ptr [rbp+28H], ecx jmp SHORT G_M18454_IG17 ;; bbWeight=2 PerfScore 26.50 G_M18454_IG16: lea rcx, bword ptr [rbp+20H] mov rdx, rsi call ValueStringBuilder:AppendSlow(String):this ;; bbWeight=2 PerfScore 3.50 G_M18454_IG17: mov rcx, gword ptr [rbp+18H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerator`1:get_Current():__Canon:this test rax, rax je SHORT G_M18454_IG21 ;; bbWeight=4 PerfScore 23.00 G_M18454_IG18: mov ecx, dword ptr [rbp+28H] mov edx, dword ptr [rax+8] cmp edx, 1 jne SHORT G_M18454_IG20 cmp ecx, dword ptr [rbp+38H] jae SHORT G_M18454_IG20 ;; bbWeight=1 PerfScore 6.25 G_M18454_IG19: lea r8, bword ptr [rbp+30H] cmp ecx, dword ptr [r8+8] jae G_M18454_IG11 mov r8, bword ptr [r8] movsxd r9, ecx cmp edx, 0 jbe G_M18454_IG11 movzx rax, word ptr [rax+12] mov word ptr [r8+2*r9], ax inc ecx mov dword ptr [rbp+28H], ecx jmp SHORT G_M18454_IG21 ;; bbWeight=2 PerfScore 26.50 G_M18454_IG20: lea rcx, bword ptr [rbp+20H] mov rdx, rax call ValueStringBuilder:AppendSlow(String):this ;; bbWeight=2 PerfScore 3.50 G_M18454_IG21: mov rcx, gword ptr [rbp+18H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne G_M18454_IG13 ;; bbWeight=4 PerfScore 23.00 G_M18454_IG22: lea rcx, bword ptr [rbp+20H] call ValueStringBuilder:ToString():String:this mov rdi, rax ;; bbWeight=0.50 PerfScore 0.88 G_M18454_IG23: mov rcx, gword ptr [rbp+18H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this mov rax, rdi mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+10H], rcx je SHORT G_M18454_IG24 call CORINFO_HELP_FAIL_FAST ;; bbWeight=1 PerfScore 8.00 G_M18454_IG24: nop ;; bbWeight=1 PerfScore 0.25 G_M18454_IG25: lea rsp, [rbp+40H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 G_M18454_IG26: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1998 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M18454_IG27: push rbp push rdi push rsi sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+20H] ;; bbWeight=0 PerfScore 0.00 G_M18454_IG28: cmp gword ptr [rbp+18H], 0 je SHORT G_M18454_IG29 mov rcx, gword ptr [rbp+18H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M18454_IG29: nop ;; bbWeight=0 PerfScore 0.00 G_M18454_IG30: add rsp, 48 pop rsi pop rdi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 735, prolog size 47, PerfScore 253.70, (MethodHash=b010b7e9) for method String:Join(String,IEnumerable`1):String ; ============================================================ ; Assembly listing for method Iterator`1:GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 4, 3 ) ref -> rax ; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rdi "impAppendStmt" ; V05 tmp3 [V05,T02] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V06 tmp4 [V06,T04] ( 4, 1.75) ref -> rcx ; ; Lcl frame size = 40 G_M54682_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M54682_IG02: cmp dword ptr [rsi+20], 0 jne SHORT G_M54682_IG06 ;; bbWeight=1 PerfScore 3.00 G_M54682_IG03: mov edi, dword ptr [rsi+16] mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M54682_IG05 ;; bbWeight=0.50 PerfScore 3.38 G_M54682_IG04: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M54682_IG05: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this cmp eax, edi je SHORT G_M54682_IG07 ;; bbWeight=0.50 PerfScore 2.13 G_M54682_IG06: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+40]Iterator`1:Clone():Iterator`1:this jmp SHORT G_M54682_IG08 ;; bbWeight=0.50 PerfScore 4.63 G_M54682_IG07: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M54682_IG08: mov dword ptr [rax+20], 1 ;; bbWeight=1 PerfScore 1.00 G_M54682_IG09: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 98, prolog size 6, PerfScore 29.11, (MethodHash=f7f42a65) for method Iterator`1:GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method WhereArrayIterator`1:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 10, 17.50) ref -> rsi this class-hnd ; V01 loc0 [V01,T02] ( 6, 18 ) int -> rdi ; V02 loc1 [V02,T06] ( 3, 6 ) ref -> rbx class-hnd ; V03 loc2 [V03,T05] ( 3, 8.50) ref -> r14 class-hnd ; V04 loc3 [V04,T03] ( 3, 12 ) int -> rdi ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 cse0 [V06,T04] ( 4, 10 ) int -> rbp "CSE - aggressive" ; V07 rat0 [V07,T00] ( 3, 24 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 32 G_M52760_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 5.50 G_M52760_IG02: mov edi, dword ptr [rsi+20] dec edi mov rbx, gword ptr [rsi+24] mov ebp, dword ptr [rbx+8] cmp ebp, edi jbe SHORT G_M52760_IG05 ;; bbWeight=1 PerfScore 7.50 G_M52760_IG03: cmp edi, ebp jae SHORT G_M52760_IG09 movsxd rcx, edi mov r14, gword ptr [rbx+8*rcx+16] mov edi, dword ptr [rsi+20] lea ecx, [rdi+1] mov dword ptr [rsi+20], ecx mov rax, gword ptr [rsi+32] mov rcx, gword ptr [rax+8] mov rdx, r14 call qword ptr [rax+24]Func`2:Invoke(__Canon):bool:this test eax, eax jne SHORT G_M52760_IG07 ;; bbWeight=4 PerfScore 62.00 G_M52760_IG04: cmp ebp, edi ja SHORT G_M52760_IG03 ;; bbWeight=4 PerfScore 5.00 G_M52760_IG05: xor eax, eax mov qword ptr [rsi+8], rax mov dword ptr [rsi+20], -1 ;; bbWeight=0.50 PerfScore 1.13 G_M52760_IG06: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M52760_IG07: lea rcx, bword ptr [rsi+8] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov eax, 1 ;; bbWeight=0.50 PerfScore 1.00 G_M52760_IG08: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M52760_IG09: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 130, prolog size 10, PerfScore 98.88, (MethodHash=631731e7) for method WhereArrayIterator`1:MoveNext():bool:this ; ============================================================ ; Assembly listing for method <>c:b__49_0(String):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rcx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M35739_IG01: sub rsp, 40 mov rcx, rdx ;; bbWeight=1 PerfScore 0.50 G_M35739_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call String:Equals(String,String):bool test eax, eax sete al movzx rax, al ;; bbWeight=1 PerfScore 4.75 G_M35739_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 38, prolog size 4, PerfScore 10.30, (MethodHash=98987464) for method <>c:b__49_0(String):bool:this ; ============================================================ ; Assembly listing for method Iterator`1:get_Current():__Canon:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M4025_IG01: ;; bbWeight=1 PerfScore 0.00 G_M4025_IG02: mov rax, gword ptr [rcx+8] ;; bbWeight=1 PerfScore 2.00 G_M4025_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=f96af046) for method Iterator`1:get_Current():__Canon:this ; ============================================================ ; Assembly listing for method Iterator`1:Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M26937_IG01: ;; bbWeight=1 PerfScore 0.00 G_M26937_IG02: xor eax, eax mov qword ptr [rcx+8], rax mov dword ptr [rcx+20], -1 ;; bbWeight=1 PerfScore 2.25 G_M26937_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 14, prolog size 0, PerfScore 4.65, (MethodHash=df8496c6) for method Iterator`1:Dispose():this ; ============================================================ // Runtime=.NET Core 5.0 (CoreCLR 42.42.42.42424, CoreFX 42.42.42.42424), X64 RyuJIT ; Assembly listing for method BenchmarkEnvironmentInfo:GetGcConcurrentFlag():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M46827_IG01: ;; bbWeight=1 PerfScore 0.00 G_M46827_IG02: cmp byte ptr [rcx+51], 0 jne SHORT G_M46827_IG05 ;; bbWeight=1 PerfScore 3.00 G_M46827_IG03: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M46827_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M46827_IG05: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M46827_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 34, prolog size 0, PerfScore 9.65, (MethodHash=428c4914) for method BenchmarkEnvironmentInfo:GetGcConcurrentFlag():String:this ; ============================================================ ; Assembly listing for method BenchmarkEnvironmentInfo:GetGcServerFlag():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M21157_IG01: ;; bbWeight=1 PerfScore 0.00 G_M21157_IG02: cmp byte ptr [rcx+50], 0 jne SHORT G_M21157_IG05 ;; bbWeight=1 PerfScore 3.00 G_M21157_IG03: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M21157_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M21157_IG05: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M21157_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 34, prolog size 0, PerfScore 9.65, (MethodHash=e7d2ad5a) for method BenchmarkEnvironmentInfo:GetGcServerFlag():String:this ; ============================================================ ; Assembly listing for method String:Concat(String,String,String,String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 10, 6.25) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 9, 5.25) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 9, 5.25) ref -> rbx class-hnd ; V03 arg3 [V03,T03] ( 9, 5.25) ref -> rbp class-hnd ; V04 loc0 [V04,T08] ( 2, 1 ) int -> rcx ; V05 loc1 [V05,T04] ( 6, 3 ) ref -> r12 class-hnd ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V07 tmp1 [V07,T09] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V08 tmp2 [V08,T10] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V09 tmp3 [V09,T11] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V10 tmp4 [V10,T12] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V11 tmp5 [V11,T05] ( 2, 2 ) ref -> rax "Single return block return value" ; V12 cse0 [V12,T06] ( 3, 1.50) int -> r15 "CSE - moderate" ; V13 cse1 [V13,T07] ( 3, 1.50) int -> r14 "CSE - moderate" ; ; Lcl frame size = 32 G_M1923_IG01: push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 ;; bbWeight=1 PerfScore 8.25 G_M1923_IG02: test rsi, rsi je SHORT G_M1923_IG04 ;; bbWeight=1 PerfScore 1.25 G_M1923_IG03: cmp dword ptr [rsi+8], 0 ja SHORT G_M1923_IG06 ;; bbWeight=0.25 PerfScore 0.75 G_M1923_IG04: mov rcx, rdi mov rdx, rbx mov r8, rbp ;; bbWeight=0.50 PerfScore 0.38 G_M1923_IG05: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 jmp String:Concat(String,String,String):String ;; bbWeight=0.50 PerfScore 2.88 G_M1923_IG06: test rdi, rdi je SHORT G_M1923_IG08 ;; bbWeight=0.50 PerfScore 0.63 G_M1923_IG07: cmp dword ptr [rdi+8], 0 ja SHORT G_M1923_IG10 ;; bbWeight=0.25 PerfScore 0.75 G_M1923_IG08: mov rcx, rsi mov rdx, rbx mov r8, rbp ;; bbWeight=0.50 PerfScore 0.38 G_M1923_IG09: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 jmp String:Concat(String,String,String):String ;; bbWeight=0.50 PerfScore 2.88 G_M1923_IG10: test rbx, rbx je SHORT G_M1923_IG12 ;; bbWeight=0.50 PerfScore 0.63 G_M1923_IG11: cmp dword ptr [rbx+8], 0 ja SHORT G_M1923_IG14 ;; bbWeight=0.25 PerfScore 0.75 G_M1923_IG12: mov rcx, rsi mov rdx, rdi mov r8, rbp ;; bbWeight=0.50 PerfScore 0.38 G_M1923_IG13: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 jmp String:Concat(String,String,String):String ;; bbWeight=0.50 PerfScore 2.88 G_M1923_IG14: test rbp, rbp je SHORT G_M1923_IG16 ;; bbWeight=0.50 PerfScore 0.63 G_M1923_IG15: cmp dword ptr [rbp+8], 0 ja SHORT G_M1923_IG18 ;; bbWeight=0.25 PerfScore 0.75 G_M1923_IG16: mov rcx, rsi mov rdx, rdi mov r8, rbx ;; bbWeight=0.50 PerfScore 0.38 G_M1923_IG17: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 jmp String:Concat(String,String,String):String ;; bbWeight=0.50 PerfScore 2.88 G_M1923_IG18: mov r14d, dword ptr [rsi+8] add r14d, dword ptr [rdi+8] mov r15d, r14d add r15d, dword ptr [rbx+8] mov ecx, r15d add ecx, dword ptr [rbp+8] call String:FastAllocateString(int):String mov r12, rax mov rcx, r12 mov r8, rsi xor edx, edx call String:FillStringChecked(String,int,String) mov edx, dword ptr [rsi+8] mov rcx, r12 mov r8, rdi call String:FillStringChecked(String,int,String) mov edx, r14d mov rcx, r12 mov r8, rbx call String:FillStringChecked(String,int,String) mov edx, r15d mov rcx, r12 mov r8, rbp call String:FillStringChecked(String,int,String) mov rax, r12 ;; bbWeight=0.50 PerfScore 9.38 G_M1923_IG19: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.38 ; Total bytes of code 284, prolog size 26, PerfScore 67.53, (MethodHash=02fcf87c) for method String:Concat(String,String,String,String):String ; ============================================================ // GC=Concurrent Workstation ; Assembly listing for method d__44:System.IDisposable.Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M10592_IG01: ;; bbWeight=1 PerfScore 0.00 G_M10592_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=2caed69f) for method d__44:System.IDisposable.Dispose():this ; ============================================================ ; Assembly listing for method Job:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 11, 10 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T11] ( 5, 3.75) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rbx class-hnd "impAppendStmt" ; V05 tmp3 [V05,T03] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp4 [V06,T04] ( 3, 6 ) ref -> rbx class-hnd "impAppendStmt" ; V07 tmp5 [V07,T05] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V08 tmp6 [V08,T06] ( 3, 6 ) ref -> rbx class-hnd "impAppendStmt" ; V09 tmp7 [V09,T07] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V10 tmp8 [V10,T08] ( 3, 6 ) ref -> rbx class-hnd "impAppendStmt" ; V11 tmp9 [V11,T09] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V12 tmp10 [V12,T10] ( 3, 6 ) ref -> rbx class-hnd "impAppendStmt" ;* V13 tmp11 [V13,T13] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V14 tmp12 [V14,T12] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V15 tmp13 [V15 ] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" ;* V17 cse0 [V17,T14] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 32 G_M8011_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M8011_IG02: mov rcx, rsi call CharacteristicObject:.ctor():this test rdi, rdi je SHORT G_M8011_IG05 ;; bbWeight=1 PerfScore 2.50 G_M8011_IG03: cmp dword ptr [rdi+8], 0 jbe SHORT G_M8011_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M8011_IG04: mov rcx, 0xD1FFAB1E mov edx, 520 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rcx] cmp dword ptr [rdx], edx cmp dword ptr [rsi], esi mov rcx, rsi mov r8, rdi call CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=0.50 PerfScore 4.63 G_M8011_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, 0xD1FFAB1E mov edx, 273 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] mov rcx, rdi xor rdx, rdx call EnvironmentMode:.ctor(String):this cmp dword ptr [rbx], ebx cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rbx mov r8, rdi call CharacteristicObject:SetValue(Characteristic,Object):this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] mov rcx, rdi call CharacteristicObject:.ctor():this cmp dword ptr [rbx], ebx mov rcx, rsi mov rdx, rbx mov r8, rdi call CharacteristicObject:SetValue(Characteristic,Object):this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] mov rcx, rdi call CharacteristicObject:.ctor():this cmp dword ptr [rbx], ebx mov rcx, rsi mov rdx, rbx mov r8, rdi call CharacteristicObject:SetValue(Characteristic,Object):this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] mov rcx, rdi call CharacteristicObject:.ctor():this cmp dword ptr [rbx], ebx mov rcx, rsi mov rdx, rbx mov r8, rdi call CharacteristicObject:SetValue(Characteristic,Object):this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] mov rcx, rdi call CharacteristicObject:.ctor():this cmp dword ptr [rbx], ebx mov rcx, rsi mov rdx, rbx mov r8, rdi ;; bbWeight=1 PerfScore 46.50 G_M8011_IG06: add rsp, 32 pop rbx pop rsi pop rdi jmp CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 386, prolog size 7, PerfScore 100.48, (MethodHash=85bce0b4) for method Job:.ctor(String):this ; ============================================================ ; Assembly listing for method CharacteristicObject:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 40 G_M27601_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M27601_IG02: xor rcx, rcx mov gword ptr [rsi+16], rcx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi xor edx, edx xor r8, r8 call Dictionary`2:.ctor(int,IEqualityComparer`1):this lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.50 G_M27601_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 66, prolog size 6, PerfScore 17.85, (MethodHash=033d942e) for method CharacteristicObject:.ctor():this ; ============================================================ ; Assembly listing for method Job:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd exact "NewObj constructor temp" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init class-hnd exact "NewObj constructor temp" ; V05 tmp5 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] must-init class-hnd exact "NewObj constructor temp" ; V06 tmp6 [V06 ] ( 1, 1 ) ref -> [rbp-0x30] must-init class-hnd exact "NewObj constructor temp" ; V07 tmp7 [V07 ] ( 1, 1 ) ref -> [rbp-0x38] must-init class-hnd exact "NewObj constructor temp" ; V08 tmp8 [V08 ] ( 1, 1 ) ref -> [rbp-0x40] must-init class-hnd exact "NewObj constructor temp" ; V09 tmp9 [V09 ] ( 1, 1 ) ref -> [rbp-0x48] must-init class-hnd exact "NewObj constructor temp" ; V10 tmp10 [V10 ] ( 1, 1 ) ref -> [rbp-0x50] must-init class-hnd exact "NewObj constructor temp" ; V11 tmp11 [V11 ] ( 1, 1 ) ref -> [rbp-0x58] must-init class-hnd exact "NewObj constructor temp" ; V12 tmp12 [V12 ] ( 1, 1 ) ref -> [rbp-0x60] must-init "argument with side effect" ; V13 tmp13 [V13 ] ( 1, 1 ) ref -> [rbp-0x68] must-init "argument with side effect" ; V14 tmp14 [V14 ] ( 1, 1 ) ref -> [rbp-0x70] must-init "argument with side effect" ; V15 tmp15 [V15 ] ( 1, 1 ) ref -> [rbp-0x78] must-init "argument with side effect" ; V16 tmp16 [V16 ] ( 1, 1 ) ref -> [rbp-0x80] must-init "argument with side effect" ; V17 tmp17 [V17 ] ( 1, 1 ) ref -> [rbp-0x88] must-init "argument with side effect" ; V18 tmp18 [V18 ] ( 1, 1 ) ref -> [rbp-0x90] must-init "argument with side effect" ; V19 tmp19 [V19 ] ( 1, 1 ) ref -> [rbp-0x98] must-init "argument with side effect" ; V20 tmp20 [V20 ] ( 1, 1 ) ref -> [rbp-0xA0] must-init "argument with side effect" ; V21 tmp21 [V21 ] ( 1, 1 ) ref -> [rbp-0xA8] must-init "argument with side effect" ; V22 tmp22 [V22 ] ( 1, 1 ) ref -> [rbp-0xB0] must-init "argument with side effect" ; V23 tmp23 [V23 ] ( 1, 1 ) ref -> [rbp-0xB8] must-init "argument with side effect" ; V24 tmp24 [V24 ] ( 1, 1 ) ref -> [rbp-0xC0] must-init "argument with side effect" ; V25 tmp25 [V25 ] ( 1, 1 ) ref -> [rbp-0xC8] must-init "argument with side effect" ; V26 tmp26 [V26 ] ( 1, 1 ) ref -> [rbp-0xD0] must-init "argument with side effect" ; V27 tmp27 [V27 ] ( 1, 1 ) ref -> [rbp-0xD8] must-init "argument with side effect" ; V28 tmp28 [V28 ] ( 1, 1 ) ref -> [rbp-0xE0] must-init "argument with side effect" ; V29 tmp29 [V29 ] ( 1, 1 ) ref -> [rbp-0xE8] must-init "argument with side effect" ; V30 tmp30 [V30 ] ( 1, 1 ) ref -> [rbp-0xF0] must-init "argument with side effect" ; V31 tmp31 [V31 ] ( 1, 1 ) ref -> [rbp-0xF8] must-init "argument with side effect" ; V32 tmp32 [V32 ] ( 1, 1 ) ref -> [rbp-0x100] must-init "argument with side effect" ; V33 tmp33 [V33 ] ( 1, 1 ) ref -> [rbp-0x108] must-init "argument with side effect" ; ; Lcl frame size = 304 G_M17601_IG01: push rbp sub rsp, 304 lea rbp, [rsp+130H] xor rax, rax mov qword ptr [rbp-108H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-100H], xmm4 mov rax, -240 vmovdqa xmmword ptr [rax+rbp], xmm4 vmovdqa xmmword ptr [rbp+rax+10H], xmm4 vmovdqa xmmword ptr [rbp+rax+20H], xmm4 add rax, 48 jne SHORT -5 instr ;; bbWeight=1 PerfScore 8.83 G_M17601_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-68H], rcx mov rcx, 0xD1FFAB1E mov edx, 268 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-60H], r8 mov r8, gword ptr [rbp-60H] mov rdx, gword ptr [rbp-68H] mov rcx, gword ptr [rbp-08H] call Job:.ctor(String,CharacteristicObject):this mov rcx, gword ptr [rbp-08H] call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 41.50 G_M17601_IG03: mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-78H], rcx mov rcx, 0xD1FFAB1E mov edx, 268 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-70H], r8 mov r8, gword ptr [rbp-70H] mov rdx, gword ptr [rbp-78H] mov rcx, gword ptr [rbp-10H] call Job:.ctor(String,CharacteristicObject):this mov rcx, gword ptr [rbp-10H] call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-18H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-88H], rcx mov rcx, 0xD1FFAB1E mov edx, 268 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-80H], r8 mov r8, gword ptr [rbp-80H] mov rdx, gword ptr [rbp-88H] mov rcx, gword ptr [rbp-18H] call Job:.ctor(String,CharacteristicObject):this mov rcx, gword ptr [rbp-18H] call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-20H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-98H], rcx mov rcx, 0xD1FFAB1E mov edx, 268 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-90H], r8 ;; bbWeight=1 PerfScore 47.00 G_M17601_IG04: mov r8, gword ptr [rbp-90H] mov rdx, gword ptr [rbp-98H] mov rcx, gword ptr [rbp-20H] call Job:.ctor(String,CharacteristicObject):this mov rcx, gword ptr [rbp-20H] call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-28H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-A8H], rcx mov rcx, 0xD1FFAB1E mov edx, 281 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-A0H], r8 mov r8, gword ptr [rbp-A0H] mov rdx, gword ptr [rbp-A8H] mov rcx, gword ptr [rbp-28H] call Job:.ctor(String,CharacteristicObject):this mov rcx, gword ptr [rbp-28H] call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-30H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-B8H], rcx mov rcx, 0xD1FFAB1E mov edx, 281 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-B0H], r8 mov r8, gword ptr [rbp-B0H] mov rdx, gword ptr [rbp-B8H] mov rcx, gword ptr [rbp-30H] call Job:.ctor(String,CharacteristicObject):this mov rcx, gword ptr [rbp-30H] call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-38H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] ;; bbWeight=1 PerfScore 47.50 G_M17601_IG05: mov gword ptr [rbp-C8H], rcx mov rcx, 0xD1FFAB1E mov edx, 281 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-C0H], r8 mov r8, gword ptr [rbp-C0H] mov rdx, gword ptr [rbp-C8H] mov rcx, gword ptr [rbp-38H] call Job:.ctor(String,CharacteristicObject):this mov rcx, gword ptr [rbp-38H] call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-40H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-D8H], rcx mov rcx, 0xD1FFAB1E mov edx, 281 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-D0H], r8 mov r8, gword ptr [rbp-D0H] mov rdx, gword ptr [rbp-D8H] mov rcx, gword ptr [rbp-40H] call Job:.ctor(String,CharacteristicObject):this mov rcx, gword ptr [rbp-40H] call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-48H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-E8H], rcx mov rcx, 0xD1FFAB1E mov edx, 281 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-E0H], r8 mov r8, gword ptr [rbp-E0H] mov rdx, gword ptr [rbp-E8H] mov rcx, gword ptr [rbp-48H] call Job:.ctor(String,CharacteristicObject):this mov rcx, gword ptr [rbp-48H] call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 47.50 G_M17601_IG06: mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-50H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-F8H], rcx mov rcx, 0xD1FFAB1E mov edx, 272 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-F0H], r8 mov r8, gword ptr [rbp-F0H] mov rdx, gword ptr [rbp-F8H] mov rcx, gword ptr [rbp-50H] call Job:.ctor(String,CharacteristicObject):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-50H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-58H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-108H], rcx mov rcx, 0xD1FFAB1E mov edx, 272 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-100H], r8 mov r8, gword ptr [rbp-100H] mov rdx, gword ptr [rbp-108H] mov rcx, gword ptr [rbp-58H] call Job:.ctor(String,CharacteristicObject):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-58H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 34.50 G_M17601_IG07: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 1680, prolog size 70, PerfScore 397.33, (MethodHash=810ebb3e) for method Job:.cctor() ; ============================================================ ; Assembly listing for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V04 cse0 [V04,T03] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M16290_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M16290_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M16290_IG04 ;; bbWeight=1 PerfScore 5.25 G_M16290_IG03: jmp SHORT G_M16290_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M16290_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M16290_IG05: mov rcx, rdx mov rdx, rsi ;; bbWeight=1 PerfScore 0.50 G_M16290_IG06: add rsp, 48 pop rsi jmp Characteristic:Create(String):Characteristic`1 ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 62, prolog size 13, PerfScore 18.08, (MethodHash=2b1ec05d) for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic:Create(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rsi ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rbp class-hnd "impAppendStmt" ; V05 tmp2 [V05,T01] ( 3, 6 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V07 tmp4 [V07,T04] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ; V08 cse0 [V08,T06] ( 3, 2.25) long -> rcx "CSE - aggressive" ; V09 cse1 [V09,T05] ( 3, 3 ) long -> rbx "CSE - aggressive" ; ; Lcl frame size = 72 G_M31099_IG01: push rdi push rsi push rbp push rbx sub rsp, 72 mov qword ptr [rsp+40H], rcx mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 5.75 G_M31099_IG02: mov rbx, qword ptr [rsi+16] mov rcx, qword ptr [rbx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rbp, rax mov rcx, qword ptr [rbx+24] test rcx, rcx je SHORT G_M31099_IG04 ;; bbWeight=1 PerfScore 8.50 G_M31099_IG03: jmp SHORT G_M31099_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M31099_IG04: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M31099_IG05: call CORINFO_HELP_NEWSFAST mov rsi, rax xor rcx, rcx mov gword ptr [rsp+20H], rcx mov dword ptr [rsp+28H], ecx mov dword ptr [rsp+30H], ecx mov rcx, rsi mov rdx, rdi mov r8, rbp xor r9, r9 call Characteristic`1:.ctor(String,Type,Func`3,__Canon,bool,bool):this mov rax, rsi ;; bbWeight=1 PerfScore 6.75 G_M31099_IG06: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 118, prolog size 13, PerfScore 36.99, (MethodHash=6cd58684) for method Characteristic:Create(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic`1:.ctor(String,Type,Func`3,__Canon,bool,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T03] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T05] ( 2, 2 ) ref -> r14 class-hnd ; V05 arg5 [V05,T06] ( 1, 1 ) bool -> [rsp+0xA8] ; V06 arg6 [V06,T07] ( 1, 1 ) bool -> [rsp+0xB0] ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T04] ( 2, 4 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 72 G_M34868_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 72 mov qword ptr [rsp+40H], rcx mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 mov r14, gword ptr [rsp+A0H] ;; bbWeight=1 PerfScore 9.25 G_M34868_IG02: mov rcx, qword ptr [rsi] mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov gword ptr [rsp+20H], r14 mov r15d, dword ptr [rsp+A8H] movzx rdx, r15b mov dword ptr [rsp+28H], edx mov r15d, dword ptr [rsp+B0H] movzx rdx, r15b mov dword ptr [rsp+30H], edx mov rdx, rdi mov rcx, rsi mov r9, rbx call Characteristic:.ctor(String,Type,Type,Object,bool,bool):this lea rcx, bword ptr [rsi+48] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+56] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 20.25 G_M34868_IG03: add rsp, 72 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 147, prolog size 17, PerfScore 48.45, (MethodHash=49d177cb) for method Characteristic`1:.ctor(String,Type,Func`3,__Canon,bool,bool):this ; ============================================================ ; Assembly listing for method Characteristic:.ctor(String,Type,Type,Object,bool,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 8 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 5, 4.25) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 4, 4 ) ref -> rdi class-hnd ; V03 arg3 [V03,T03] ( 4, 4 ) ref -> rbx class-hnd ; V04 arg4 [V04,T05] ( 1, 1 ) ref -> [rsp+0x60] class-hnd ; V05 arg5 [V05,T06] ( 1, 1 ) bool -> [rsp+0x68] ; V06 arg6 [V06,T07] ( 1, 1 ) bool -> [rsp+0x70] ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp2 [V09,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp3 [V10,T10] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V11 tmp4 [V11,T04] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V12 tmp5 [V12,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; V13 tmp6 [V13,T12] ( 2, 0 ) ref -> rdx "argument with side effect" ; V14 tmp7 [V14,T13] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M61800_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, r8 mov rbx, r9 ;; bbWeight=1 PerfScore 4.00 G_M61800_IG02: test rdx, rdx je SHORT G_M61800_IG08 ;; bbWeight=1 PerfScore 1.25 G_M61800_IG03: cmp dword ptr [rdx+8], 0 jbe SHORT G_M61800_IG08 ;; bbWeight=0.25 PerfScore 0.75 G_M61800_IG04: test rdi, rdi je G_M61800_IG09 ;; bbWeight=1 PerfScore 1.25 G_M61800_IG05: test rbx, rbx je G_M61800_IG10 ;; bbWeight=1 PerfScore 1.25 G_M61800_IG06: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+32] mov rdx, gword ptr [rsp+60H] call CORINFO_HELP_ASSIGN_REF mov edi, dword ptr [rsp+68H] mov byte ptr [rsi+40], dil mov edi, dword ptr [rsp+70H] mov byte ptr [rsi+41], dil ;; bbWeight=1 PerfScore 11.50 G_M61800_IG07: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M61800_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1362B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M61800_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x13631 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M61800_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x13657 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 288, prolog size 7, PerfScore 51.55, (MethodHash=497c0e97) for method Characteristic:.ctor(String,Type,Type,Object,bool,bool):this ; ============================================================ ; Assembly listing for method EnvironmentMode:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd exact "NewObj constructor temp" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 64 G_M8624_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 4.08 G_M8624_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rdx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 37.50 G_M8624_IG03: mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp-08H] mov r8d, 1 mov r9d, 1 call EnvironmentMode:.ctor(String,int,int):this mov rcx, gword ptr [rbp-08H] call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp-10H] mov r8d, 1 mov r9d, 2 call EnvironmentMode:.ctor(String,int,int):this mov rcx, gword ptr [rbp-10H] call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-18H], rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp-18H] mov r8d, 2 mov r9d, 2 call EnvironmentMode:.ctor(String,int,int):this mov rcx, gword ptr [rbp-18H] call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-20H], rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp-20H] mov r8d, 2 mov r9d, 1 call EnvironmentMode:.ctor(String,int,int):this mov rcx, gword ptr [rbp-20H] call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 39.75 G_M8624_IG04: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 673, prolog size 24, PerfScore 150.93, (MethodHash=7476de4f) for method EnvironmentMode:.cctor() ; ============================================================ ; Assembly listing for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V04 cse0 [V04,T03] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M16290_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M16290_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M16290_IG04 ;; bbWeight=1 PerfScore 5.25 G_M16290_IG03: jmp SHORT G_M16290_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M16290_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M16290_IG05: mov rcx, rdx mov rdx, rsi ;; bbWeight=1 PerfScore 0.50 G_M16290_IG06: add rsp, 48 pop rsi jmp Characteristic:Create(String):Characteristic`1 ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 62, prolog size 13, PerfScore 18.08, (MethodHash=2b1ec05d) for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic:Create(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T01] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 64 G_M31099_IG01: push rdi push rsi push rbx sub rsp, 64 mov qword ptr [rsp+38H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 4.50 G_M31099_IG02: mov rcx, qword ptr [rcx+16] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax xor ecx, ecx mov dword ptr [rsp+20H], ecx mov dword ptr [rsp+28H], ecx mov dword ptr [rsp+30H], ecx mov rcx, rbx mov rdx, rsi mov r8, rdi xor r9, r9 call Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this mov rax, rbx ;; bbWeight=1 PerfScore 12.25 G_M31099_IG03: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 90, prolog size 12, PerfScore 28.50, (MethodHash=6cd58684) for method Characteristic:Create(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T04] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T06] ( 2, 2 ) int -> r14 ; V05 arg5 [V05,T07] ( 1, 1 ) bool -> [rsp+0x98] ; V06 arg6 [V06,T08] ( 1, 1 ) bool -> [rsp+0xA0] ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 3, 6 ) ref -> r15 class-hnd exact "Single-def Box Helper" ; V09 tmp2 [V09,T05] ( 2, 4 ) ref -> r8 class-hnd "impImportAndPushBox" ; ; Lcl frame size = 56 G_M33194_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 mov r14d, dword ptr [rsp+90H] ;; bbWeight=1 PerfScore 8.25 G_M33194_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov dword ptr [r15+8], r14d mov gword ptr [rsp+20H], r15 mov r15d, dword ptr [rsp+98H] movzx rcx, r15b mov dword ptr [rsp+28H], ecx mov r15d, dword ptr [rsp+A0H] movzx rcx, r15b mov dword ptr [rsp+30H], ecx mov rcx, rsi mov rdx, rdi mov r9, rbx call Characteristic:.ctor(String,Type,Type,Object,bool,bool):this lea rcx, bword ptr [rsi+48] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+56], r14d ;; bbWeight=1 PerfScore 14.00 G_M33194_IG03: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 152, prolog size 12, PerfScore 41.70, (MethodHash=14b87e55) for method Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this ; ============================================================ ; Assembly listing for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V04 cse0 [V04,T03] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M16290_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M16290_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M16290_IG04 ;; bbWeight=1 PerfScore 5.25 G_M16290_IG03: jmp SHORT G_M16290_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M16290_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M16290_IG05: mov rcx, rdx mov rdx, rsi ;; bbWeight=1 PerfScore 0.50 G_M16290_IG06: add rsp, 48 pop rsi jmp Characteristic:Create(String):Characteristic`1 ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 62, prolog size 13, PerfScore 18.08, (MethodHash=2b1ec05d) for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic:Create(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T01] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 64 G_M31099_IG01: push rdi push rsi push rbx sub rsp, 64 mov qword ptr [rsp+38H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 4.50 G_M31099_IG02: mov rcx, qword ptr [rcx+16] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax xor ecx, ecx mov dword ptr [rsp+20H], ecx mov dword ptr [rsp+28H], ecx mov dword ptr [rsp+30H], ecx mov rcx, rbx mov rdx, rsi mov r8, rdi xor r9, r9 call Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this mov rax, rbx ;; bbWeight=1 PerfScore 12.25 G_M31099_IG03: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 90, prolog size 12, PerfScore 28.50, (MethodHash=6cd58684) for method Characteristic:Create(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T04] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T06] ( 2, 2 ) int -> r14 ; V05 arg5 [V05,T07] ( 1, 1 ) bool -> [rsp+0x98] ; V06 arg6 [V06,T08] ( 1, 1 ) bool -> [rsp+0xA0] ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 3, 6 ) ref -> r15 class-hnd exact "Single-def Box Helper" ; V09 tmp2 [V09,T05] ( 2, 4 ) ref -> r8 class-hnd "impImportAndPushBox" ; ; Lcl frame size = 56 G_M33194_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 mov r14d, dword ptr [rsp+90H] ;; bbWeight=1 PerfScore 8.25 G_M33194_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov dword ptr [r15+8], r14d mov gword ptr [rsp+20H], r15 mov r15d, dword ptr [rsp+98H] movzx rcx, r15b mov dword ptr [rsp+28H], ecx mov r15d, dword ptr [rsp+A0H] movzx rcx, r15b mov dword ptr [rsp+30H], ecx mov rcx, rsi mov rdx, rdi mov r9, rbx call Characteristic:.ctor(String,Type,Type,Object,bool,bool):this lea rcx, bword ptr [rsi+48] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+56], r14d ;; bbWeight=1 PerfScore 14.00 G_M33194_IG03: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 152, prolog size 12, PerfScore 41.70, (MethodHash=14b87e55) for method Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this ; ============================================================ ; Assembly listing for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V04 cse0 [V04,T03] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M16290_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M16290_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M16290_IG04 ;; bbWeight=1 PerfScore 5.25 G_M16290_IG03: jmp SHORT G_M16290_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M16290_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M16290_IG05: mov rcx, rdx mov rdx, rsi ;; bbWeight=1 PerfScore 0.50 G_M16290_IG06: add rsp, 48 pop rsi jmp Characteristic:Create(String):Characteristic`1 ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 62, prolog size 13, PerfScore 18.08, (MethodHash=2b1ec05d) for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic:Create(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) long -> zero-ref ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T01] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 64 G_M31099_IG01: push rdi push rsi push rbx sub rsp, 64 mov qword ptr [rsp+38H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 4.50 G_M31099_IG02: mov rcx, qword ptr [rcx+16] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax xor rcx, rcx mov qword ptr [rsp+20H], rcx mov dword ptr [rsp+28H], ecx mov dword ptr [rsp+30H], ecx mov rcx, rbx mov rdx, rsi mov r8, rdi xor r9, r9 call Characteristic`1:.ctor(String,Type,Func`3,long,bool,bool):this mov rax, rbx ;; bbWeight=1 PerfScore 12.25 G_M31099_IG03: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 91, prolog size 12, PerfScore 28.60, (MethodHash=6cd58684) for method Characteristic:Create(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic`1:.ctor(String,Type,Func`3,long,bool,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T04] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T06] ( 2, 2 ) long -> r14 ; V05 arg5 [V05,T07] ( 1, 1 ) bool -> [rsp+0x98] ; V06 arg6 [V06,T08] ( 1, 1 ) bool -> [rsp+0xA0] ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 3, 6 ) ref -> r15 class-hnd exact "Single-def Box Helper" ; V09 tmp2 [V09,T05] ( 2, 4 ) ref -> r8 class-hnd "impImportAndPushBox" ; ; Lcl frame size = 56 G_M60211_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 mov r14, qword ptr [rsp+90H] ;; bbWeight=1 PerfScore 8.25 G_M60211_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov qword ptr [r15+8], r14 mov gword ptr [rsp+20H], r15 mov r15d, dword ptr [rsp+98H] movzx rcx, r15b mov dword ptr [rsp+28H], ecx mov r15d, dword ptr [rsp+A0H] movzx rcx, r15b mov dword ptr [rsp+30H], ecx mov rcx, rsi mov rdx, rdi mov r9, rbx call Characteristic:.ctor(String,Type,Type,Object,bool,bool):this lea rcx, bword ptr [rsi+48] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov qword ptr [rsi+56], r14 ;; bbWeight=1 PerfScore 14.00 G_M60211_IG03: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 152, prolog size 12, PerfScore 41.70, (MethodHash=40c314cc) for method Characteristic`1:.ctor(String,Type,Func`3,long,bool,bool):this ; ============================================================ ; Assembly listing for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V04 cse0 [V04,T03] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M16290_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M16290_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M16290_IG04 ;; bbWeight=1 PerfScore 5.25 G_M16290_IG03: jmp SHORT G_M16290_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M16290_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M16290_IG05: mov rcx, rdx mov rdx, rsi ;; bbWeight=1 PerfScore 0.50 G_M16290_IG06: add rsp, 48 pop rsi jmp Characteristic:Create(String):Characteristic`1 ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 62, prolog size 13, PerfScore 18.08, (MethodHash=2b1ec05d) for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic:Create(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T01] ( 4, 4 ) long -> rsi ; V01 arg0 [V01,T03] ( 3, 3 ) ref -> rdi class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SB] ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 5, 10 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> rsi class-hnd "Inlining Arg" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SB] "Inlining Arg" ; V07 tmp4 [V07,T02] ( 3, 6 ) ref -> rbp class-hnd exact "Single-def Box Helper" ; V08 tmp5 [V08,T05] ( 2, 4 ) ref -> r8 class-hnd "impImportAndPushBox" ; ; Lcl frame size = 72 G_M31099_IG01: push rdi push rsi push rbp push rbx sub rsp, 72 vzeroupper mov qword ptr [rsp+40H], rcx mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 6.75 G_M31099_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, qword ptr [rsi+16] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rsi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp+8], xmm0 mov gword ptr [rsp+20H], rbp xor ecx, ecx mov dword ptr [rsp+28H], ecx mov dword ptr [rsp+30H], ecx mov rcx, rbx mov rdx, rdi mov r9, rsi call Characteristic:.ctor(String,Type,Type,Object,bool,bool):this xor rax, rax mov gword ptr [rbx+48], rax vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbx+56], xmm0 mov rax, rbx ;; bbWeight=1 PerfScore 18.92 G_M31099_IG03: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 156, prolog size 16, PerfScore 44.92, (MethodHash=6cd58684) for method Characteristic:Create(String):Characteristic`1 ; ============================================================ ; Assembly listing for method EnvironmentMode:.ctor(String,int,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T05] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T06] ( 3, 3 ) int -> rdi ; V03 arg3 [V03,T07] ( 3, 3 ) int -> rbx ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T01] ( 3, 6 ) ref -> rbp class-hnd "Inlining Arg" ; V06 tmp2 [V06,T02] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V07 tmp3 [V07,T03] ( 3, 6 ) ref -> rdi class-hnd "Inlining Arg" ; V08 tmp4 [V08,T04] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ;* V09 cse0 [V09,T08] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 40 G_M17274_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov edi, r8d mov ebx, r9d ;; bbWeight=1 PerfScore 5.00 G_M17274_IG02: mov rcx, rsi call EnvironmentMode:.ctor(String):this mov rcx, 0xD1FFAB1E mov edx, 268 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] cmp dword ptr [rbp], ebp cmp dword ptr [rsi], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], edi mov r8, rax mov rcx, rsi mov rdx, rbp call CharacteristicObject:SetValue(Characteristic,Object):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] cmp dword ptr [rdi], edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], ebx mov r8, rax mov rcx, rsi mov rdx, rdi ;; bbWeight=1 PerfScore 20.25 G_M17274_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 150, prolog size 8, PerfScore 44.50, (MethodHash=919fbc85) for method EnvironmentMode:.ctor(String,int,int):this ; ============================================================ ; Assembly listing for method EnvironmentMode:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 5, 3.75) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rbx class-hnd "impAppendStmt" ;* V05 tmp3 [V05,T05] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V06 tmp4 [V06,T04] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ; ; Lcl frame size = 32 G_M35450_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M35450_IG02: mov rcx, rsi call CharacteristicObject:.ctor():this test rdi, rdi je SHORT G_M35450_IG05 ;; bbWeight=1 PerfScore 2.50 G_M35450_IG03: cmp dword ptr [rdi+8], 0 jbe SHORT G_M35450_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M35450_IG04: mov rcx, 0xD1FFAB1E mov edx, 520 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rcx] cmp dword ptr [rdx], edx cmp dword ptr [rsi], esi mov rcx, rsi mov r8, rdi call CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=0.50 PerfScore 4.63 G_M35450_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, 0xD1FFAB1E mov edx, 268 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] mov rcx, rdi call CharacteristicObject:.ctor():this cmp dword ptr [rbx], ebx cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rbx mov r8, rdi ;; bbWeight=1 PerfScore 11.25 G_M35450_IG06: add rsp, 32 pop rbx pop rsi pop rdi jmp CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 164, prolog size 7, PerfScore 43.03, (MethodHash=f6ce7585) for method EnvironmentMode:.ctor(String):this ; ============================================================ ; Assembly listing for method CharacteristicObject:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M57934_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M57934_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov r8, 0xD1FFAB1E mov rcx, gword ptr [rbp-08H] xor rdx, rdx mov r9, 0xD1FFAB1E call MulticastDelegate:CtorOpened(Object,long,long):this mov dword ptr [rsp+20H], 1 mov r9, 0xD1FFAB1E mov r9, gword ptr [r9] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8, gword ptr [rbp-08H] mov rcx, 0xD1FFAB1E call Characteristic:Create(String,Func`3,__Canon,bool):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 14.50 G_M57934_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 144, prolog size 16, PerfScore 33.90, (MethodHash=82051db1) for method CharacteristicObject:.cctor() ; ============================================================ ; Assembly listing for method Characteristic:Create(String,Func`3,__Canon,bool):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rsi ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg1 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg2 [V03,T04] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg3 [V04,T09] ( 1, 1 ) bool -> [rsp+0xA0] ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T01] ( 3, 6 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T05] ( 2, 4 ) ref -> r15 class-hnd "bubbling QMark1" ; V08 tmp3 [V08,T06] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ; V09 cse0 [V09,T08] ( 3, 2.25) long -> rcx "CSE - aggressive" ; V10 cse1 [V10,T07] ( 3, 3 ) long -> r14 "CSE - aggressive" ; ; Lcl frame size = 72 G_M8569_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 72 mov qword ptr [rsp+40H], rcx mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 ;; bbWeight=1 PerfScore 8.25 G_M8569_IG02: mov r14, qword ptr [rsi+16] mov rcx, qword ptr [r14] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r15, rax mov rcx, qword ptr [r14+24] test rcx, rcx je SHORT G_M8569_IG04 ;; bbWeight=1 PerfScore 8.50 G_M8569_IG03: jmp SHORT G_M8569_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M8569_IG04: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M8569_IG05: call CORINFO_HELP_NEWSFAST mov rsi, rax mov gword ptr [rsp+20H], rbp mov ebp, dword ptr [rsp+A0H] movzx rcx, bpl mov dword ptr [rsp+28H], ecx xor ecx, ecx mov dword ptr [rsp+30H], ecx mov rcx, rsi mov rdx, rdi mov r8, r15 mov r9, rbx call Characteristic`1:.ctor(String,Type,Func`3,__Canon,bool,bool):this mov rax, rsi ;; bbWeight=1 PerfScore 8.00 G_M8569_IG06: add rsp, 72 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 143, prolog size 17, PerfScore 44.24, (MethodHash=0e2ade86) for method Characteristic:Create(String,Func`3,__Canon,bool):Characteristic`1 ; ============================================================ ; Assembly listing for method CharacteristicObject:SetValue(Characteristic,Object):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 8, 5.25) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 10, 6.50) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 5, 3.50) ref -> rbx class-hnd ; V03 loc0 [V03,T07] ( 4, 2 ) ref -> rbp class-hnd ; V04 loc1 [V04,T08] ( 4, 2 ) ref -> rbx class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T05] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V07 tmp2 [V07,T11] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V08 tmp3 [V08,T03] ( 5, 3.74) ref -> rbp class-hnd "spilling QMark2" ; V09 tmp4 [V09,T06] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V10 tmp5 [V10,T12] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V11 tmp6 [V11,T04] ( 5, 3.74) ref -> rbx class-hnd "spilling QMark2" ; V12 tmp7 [V12,T09] ( 2, 2 ) ref -> rdx class-hnd "dup spill" ; V13 tmp8 [V13,T10] ( 4, 1.75) ref -> rdx ; ; Lcl frame size = 40 G_M7672_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rdi, rcx mov rsi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M7672_IG02: mov rcx, rdi call CharacteristicObject:AssertNotFrozen():this mov rcx, gword ptr [rsi+16] call CharacteristicHelper:IsCharacteristicObjectSubclass(Type):bool test al, al je G_M7672_IG14 ;; bbWeight=1 PerfScore 5.50 G_M7672_IG03: mov rcx, rsi mov rdx, rbx call CharacteristicObject:AssertIsAssignable(Characteristic,Object) mov rcx, rdi mov rdx, rsi call CharacteristicObject:GetValue(Characteristic):Object:this mov rbp, rax test rbp, rbp je SHORT G_M7672_IG06 ;; bbWeight=0.50 PerfScore 2.25 G_M7672_IG04: mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx je SHORT G_M7672_IG06 ;; bbWeight=0.25 PerfScore 0.81 G_M7672_IG05: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rbp, rax ;; bbWeight=0.12 PerfScore 0.18 G_M7672_IG06: mov rcx, rsi mov rdx, rdi mov r8, rbx mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+32]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rbx, rax test rbx, rbx je SHORT G_M7672_IG09 ;; bbWeight=0.50 PerfScore 4.63 G_M7672_IG07: mov rcx, 0xD1FFAB1E cmp qword ptr [rbx], rcx je SHORT G_M7672_IG09 ;; bbWeight=0.25 PerfScore 0.81 G_M7672_IG08: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rbx, rax ;; bbWeight=0.12 PerfScore 0.18 G_M7672_IG09: cmp rbp, rbx je SHORT G_M7672_IG16 test rbp, rbp je SHORT G_M7672_IG10 mov rcx, rbp mov rdx, rsi call CharacteristicObject:DetachFromOwner(Characteristic):this ;; bbWeight=0.50 PerfScore 2.00 G_M7672_IG10: test rbx, rbx je SHORT G_M7672_IG16 mov rdx, gword ptr [rdi+16] test rdx, rdx jne SHORT G_M7672_IG12 ;; bbWeight=0.50 PerfScore 2.25 G_M7672_IG11: mov rdx, rdi ;; bbWeight=0.25 PerfScore 0.06 G_M7672_IG12: mov rcx, rbx mov r8, rsi ;; bbWeight=0.50 PerfScore 0.25 G_M7672_IG13: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp CharacteristicObject:AttachToOwner(CharacteristicObject,Characteristic):this ;; bbWeight=0.50 PerfScore 2.13 G_M7672_IG14: mov rcx, rdi mov rdx, rsi mov r8, rbx ;; bbWeight=0.50 PerfScore 0.38 G_M7672_IG15: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp CharacteristicObject:SetValueCore(Characteristic,Object):this ;; bbWeight=0.50 PerfScore 2.13 G_M7672_IG16: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 240, prolog size 8, PerfScore 54.17, (MethodHash=2a65e207) for method CharacteristicObject:SetValue(Characteristic,Object):this ; ============================================================ ; Assembly listing for method CharacteristicObject:AssertNotFrozen():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 3.50) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T04] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T03] ( 3, 2 ) bool -> rdi "Inline return value spill temp" ; V04 tmp3 [V04,T01] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V05 tmp4 [V05,T02] ( 3, 2.50) ref -> rcx ; V06 tmp5 [V06,T05] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp6 [V07,T06] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M57320_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M57320_IG02: mov rcx, gword ptr [rsi+16] test rcx, rcx jne SHORT G_M57320_IG04 ;; bbWeight=1 PerfScore 3.25 G_M57320_IG03: movzx rdi, byte ptr [rsi+24] jmp SHORT G_M57320_IG05 ;; bbWeight=0.50 PerfScore 2.00 G_M57320_IG04: call CharacteristicObject:get_Frozen():bool:this movzx rdi, al ;; bbWeight=0.50 PerfScore 0.63 G_M57320_IG05: test edi, edi jne SHORT G_M57320_IG07 ;; bbWeight=1 PerfScore 1.25 G_M57320_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M57320_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x136BD mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax mov rdx, rsi call String:Format(String,Object):String mov rdx, rax mov rcx, rdi call InvalidOperationException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 114, prolog size 6, PerfScore 23.28, (MethodHash=806e2017) for method CharacteristicObject:AssertNotFrozen():this ; ============================================================ ; Assembly listing for method CharacteristicHelper:IsCharacteristicObjectSubclass(Type):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rcx class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> rsi "argument with side effect" ; V03 tmp2 [V03,T02] ( 2, 4 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M10574_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M10574_IG02: call IntrospectionExtensions:GetTypeInfo(Type):TypeInfo mov rsi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+168] mov rax, qword ptr [rax+24] ;; bbWeight=1 PerfScore 9.00 G_M10574_IG03: add rsp, 32 pop rsi rex.jmp rax ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 56, prolog size 5, PerfScore 18.60, (MethodHash=0130d6b1) for method CharacteristicHelper:IsCharacteristicObjectSubclass(Type):bool ; ============================================================ ; Assembly listing for method CharacteristicObject:SetValueCore(Characteristic,Object):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 10, 5.25) ref -> rbx this class-hnd ; V01 arg1 [V01,T00] ( 11, 6.50) ref -> rsi class-hnd ; V02 arg2 [V02,T01] ( 7, 5.50) ref -> rdi class-hnd ; V03 loc0 [V03,T11] ( 3, 1.50) ref -> rdi class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T07] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V06 tmp2 [V06,T12] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V07 tmp3 [V07,T03] ( 5, 3.74) ref -> rdi class-hnd "spilling QMark2" ; V08 tmp4 [V08,T13] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V09 tmp5 [V09,T04] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ; V10 tmp6 [V10,T08] ( 2, 2 ) byref -> rax "Inlining Arg" ; V11 tmp7 [V11,T09] ( 2, 2 ) ref -> rdx class-hnd "dup spill" ; V12 tmp8 [V12,T10] ( 4, 1.75) ref -> rdx ; V13 tmp9 [V13,T05] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ;* V14 tmp10 [V14 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; V15 tmp11 [V15,T06] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ;* V16 tmp12 [V16 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; V17 tmp13 [V17,T14] ( 2, 0 ) ref -> rcx "argument with side effect" ; V18 tmp14 [V18,T15] ( 2, 0 ) ref -> rsi "argument with side effect" ; V19 tmp15 [V19,T16] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 32 G_M19619_IG01: push rdi push rsi push rbx sub rsp, 32 mov rbx, rcx mov rsi, rdx mov rdi, r8 ;; bbWeight=1 PerfScore 4.00 G_M19619_IG02: mov rcx, rsi mov rdx, rdi call CharacteristicObject:AssertIsAssignable(Characteristic,Object) mov rcx, 0xD1FFAB1E mov edx, 518 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E cmp rdi, gword ptr [rcx] je SHORT G_M19619_IG04 ;; bbWeight=1 PerfScore 6.25 G_M19619_IG03: test rdi, rdi jne SHORT G_M19619_IG06 ;; bbWeight=0.50 PerfScore 0.63 G_M19619_IG04: mov rcx, gword ptr [rbx+8] mov rdx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:Remove(__Canon):bool:this nop ;; bbWeight=0.50 PerfScore 3.88 G_M19619_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M19619_IG06: mov rcx, gword ptr [rsi+16] call CharacteristicHelper:IsCharacteristicObjectSubclass(Type):bool test al, al je G_M19619_IG14 mov rcx, gword ptr [rbx+8] cmp dword ptr [rcx], ecx mov rdx, rsi call Dictionary`2:FindValue(__Canon):byref:this test rax, rax jne G_M19619_IG16 ;; bbWeight=0.50 PerfScore 5.38 G_M19619_IG07: mov rcx, rsi mov rdx, rbx mov r8, rdi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+32]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rdi, rax test rdi, rdi je SHORT G_M19619_IG10 ;; bbWeight=0.50 PerfScore 4.63 G_M19619_IG08: mov rcx, 0xD1FFAB1E cmp qword ptr [rdi], rcx je SHORT G_M19619_IG10 ;; bbWeight=0.25 PerfScore 0.81 G_M19619_IG09: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdi, rax ;; bbWeight=0.12 PerfScore 0.18 G_M19619_IG10: mov rdx, gword ptr [rbx+16] test rdx, rdx jne SHORT G_M19619_IG12 ;; bbWeight=0.50 PerfScore 1.63 G_M19619_IG11: mov rdx, rbx ;; bbWeight=0.25 PerfScore 0.06 G_M19619_IG12: mov rcx, rdi cmp dword ptr [rcx], ecx call CharacteristicObject:SetOwnerCore(CharacteristicObject):this mov rcx, gword ptr [rbx+8] cmp dword ptr [rcx], ecx mov rdx, rsi mov r8, rdi mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=0.50 PerfScore 4.63 G_M19619_IG13: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M19619_IG14: mov rcx, gword ptr [rbx+8] cmp dword ptr [rcx], ecx mov rdx, rsi mov r8, rdi mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=0.50 PerfScore 3.00 G_M19619_IG15: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M19619_IG16: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x13865 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax mov rdx, rbx mov r8, rsi call String:Format(String,Object,Object):String mov rsi, rax mov ecx, 0x138C5 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rsi mov rcx, rdi call ArgumentException:.ctor(String,String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 374, prolog size 7, PerfScore 76.58, (MethodHash=84b3b35c) for method CharacteristicObject:SetValueCore(Characteristic,Object):this ; ============================================================ ; Assembly listing for method CharacteristicObject:AssertIsAssignable(Characteristic,Object) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 7, 3 ) ref -> rdi class-hnd ; V01 arg1 [V01,T00] ( 6, 4 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T05] ( 2, 0 ) ref -> rsi class-hnd "impAppendStmt" ; V05 tmp3 [V05,T04] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V06 tmp4 [V06,T02] ( 3, 3 ) ref -> rax "argument with side effect" ; V07 tmp5 [V07,T06] ( 2, 0 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 32 G_M5246_IG01: push rdi push rsi push rbx sub rsp, 32 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 3.75 G_M5246_IG02: mov rcx, 0xD1FFAB1E mov edx, 518 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E cmp rsi, gword ptr [rcx] je SHORT G_M5246_IG04 ;; bbWeight=1 PerfScore 4.75 G_M5246_IG03: test rsi, rsi jne SHORT G_M5246_IG06 ;; bbWeight=0.50 PerfScore 0.63 G_M5246_IG04: mov rcx, gword ptr [rdi+16] call CharacteristicHelper:IsCharacteristicObjectSubclass(Type):bool test al, al jne SHORT G_M5246_IG08 ;; bbWeight=0.50 PerfScore 2.13 G_M5246_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M5246_IG06: mov rcx, gword ptr [rdi+16] call IntrospectionExtensions:GetTypeInfo(Type):TypeInfo mov rcx, rax mov rdx, rsi mov rax, qword ptr [rax] mov rax, qword ptr [rax+152] call qword ptr [rax+16]Type:IsInstanceOfType(Object):bool:this test eax, eax je SHORT G_M5246_IG09 ;; bbWeight=0.50 PerfScore 5.88 G_M5246_IG07: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M5246_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rdx, gword ptr [rdi+8] mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M5246_IG09: mov ecx, 0x13803 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax mov rdx, rsi mov r8, rdi call String:Format(String,Object,Object):String mov rsi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov r8, gword ptr [rdi+8] mov rcx, rbx mov rdx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rbx call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 231, prolog size 7, PerfScore 42.98, (MethodHash=03a0eb81) for method CharacteristicObject:AssertIsAssignable(Characteristic,Object) ; ============================================================ ; Assembly listing for method Characteristic:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M24731_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M24731_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call Object:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M24731_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=5f9d9f64) for method Characteristic:.cctor() ; ============================================================ ; Assembly listing for method RuntimeType:IsInstanceOfType(Object):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M20154_IG01: ;; bbWeight=1 PerfScore 0.00 G_M20154_IG02: jmp RuntimeTypeHandle:IsInstanceOfType(RuntimeType,Object):bool ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 5, prolog size 0, PerfScore 2.50, (MethodHash=27afb145) for method RuntimeType:IsInstanceOfType(Object):bool:this ; ============================================================ ; Assembly listing for method Object:GetHashCode():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M25064_IG01: ;; bbWeight=1 PerfScore 0.00 G_M25064_IG02: jmp RuntimeHelpers:GetHashCode(Object):int ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 5, prolog size 0, PerfScore 2.50, (MethodHash=f7969e17) for method Object:GetHashCode():int:this ; ============================================================ ; Assembly listing for method CharacteristicObject:GetValue(Characteristic):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rsi class-hnd ; V02 loc0 [V02 ] ( 3, 2.50) ref -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> r8 class-hnd "Inlining Arg" ; ; Lcl frame size = 40 G_M43386_IG01: push rdi push rsi sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 4.00 G_M43386_IG02: mov rcx, gword ptr [rdi+8] lea r8, [rsp+20H] mov rdx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:TryGetValue(__Canon,byref):bool:this test eax, eax jne SHORT G_M43386_IG04 ;; bbWeight=1 PerfScore 9.25 G_M43386_IG03: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rsp+20H], rcx ;; bbWeight=0.50 PerfScore 1.63 G_M43386_IG04: mov r8, gword ptr [rsp+20H] mov rcx, rsi mov rdx, rdi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+32]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this nop ;; bbWeight=1 PerfScore 8.75 G_M43386_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 96, prolog size 13, PerfScore 35.48, (MethodHash=3ab35685) for method CharacteristicObject:GetValue(Characteristic):Object:this ; ============================================================ ; Assembly listing for method Characteristic`1:ResolveValueCore(CharacteristicObject,Object):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 5, 3.50) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 4, 3 ) ref -> r8 class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T05] ( 2, 2 ) ref -> rbx class-hnd "impAppendStmt" ; V05 tmp2 [V05,T06] ( 2, 2 ) ref -> rdx "argument with side effect" ; V06 tmp3 [V06,T09] ( 2, 2 ) long -> rbx "argument with side effect" ; V07 tmp4 [V07,T07] ( 2, 2 ) ref -> rdx "argument with side effect" ; V08 tmp5 [V08,T10] ( 2, 2 ) long -> rbp "argument with side effect" ; V09 tmp6 [V09,T08] ( 2, 2 ) ref -> r8 "argument with side effect" ; V10 cse0 [V10,T04] ( 3, 2.50) ref -> rbx "CSE - aggressive" ; V11 rat0 [V11,T03] ( 3, 3 ) ref -> rbx "delegate invoke call" ; ; Lcl frame size = 40 G_M41771_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 5.75 G_M41771_IG02: mov rbx, gword ptr [rsi+48] test rbx, rbx jne SHORT G_M41771_IG05 ;; bbWeight=1 PerfScore 3.25 G_M41771_IG03: mov rcx, qword ptr [rsi] mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rbx, qword ptr [rcx] mov rcx, rsi mov rdx, rdi mov rax, 0xD1FFAB1E call gword ptr [rax]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rdx, rax mov rcx, rbx call CORINFO_HELP_CHKCASTANY nop ;; bbWeight=0.50 PerfScore 6.75 G_M41771_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M41771_IG05: mov rcx, qword ptr [rsi] mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rbp, qword ptr [rcx] mov rcx, rsi mov rdx, rdi mov rax, 0xD1FFAB1E call gword ptr [rax]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rdx, rax mov rcx, rbp call CORINFO_HELP_CHKCASTANY mov r8, rax mov rdx, rdi mov rcx, gword ptr [rbx+8] call gword ptr [rbx+24]Func`3:Invoke(__Canon,__Canon):__Canon:this nop ;; bbWeight=0.50 PerfScore 9.50 G_M41771_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 145, prolog size 13, PerfScore 43.00, (MethodHash=f6005cd4) for method Characteristic`1:ResolveValueCore(CharacteristicObject,Object):Object:this ; ============================================================ ; Assembly listing for method Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> rcx this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 arg2 [V02,T00] ( 4, 3.50) ref -> r8 class-hnd ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M57338_IG01: ;; bbWeight=1 PerfScore 0.00 G_M57338_IG02: mov rax, 0xD1FFAB1E cmp r8, gword ptr [rax] je SHORT G_M57338_IG05 ;; bbWeight=1 PerfScore 3.25 G_M57338_IG03: mov rax, r8 ;; bbWeight=0.50 PerfScore 0.13 G_M57338_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M57338_IG05: mov rax, gword ptr [rcx+32] ;; bbWeight=0.50 PerfScore 1.00 G_M57338_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 24, prolog size 0, PerfScore 7.78, (MethodHash=c10d2005) for method Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this ; ============================================================ ; Assembly listing for method CharacteristicObject:AttachToOwner(CharacteristicObject,Characteristic):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 9, 8 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T01] ( 7, 10 ) ref -> rsi class-hnd ; V02 arg2 [V02,T07] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03 ] ( 4, 10 ) struct (40) [rsp+0x50] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ;* V04 loc1 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 3, 6 ) ref -> rbp class-hnd "impAppendStmt" ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V08 tmp3 [V08,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp4 [V09,T09] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V10 tmp5 [V10,T02] ( 6, 12 ) struct (40) [rsp+0x28] do-not-enreg[SFB] must-init "NewObj constructor temp" ; V11 tmp6 [V11,T04] ( 2, 8 ) ref -> rdx V04.key(offs=0x00) P-INDEP "field V04.key (fldOffset=0x0)" ; V12 tmp7 [V12,T05] ( 2, 8 ) ref -> r8 V04.value(offs=0x08) P-INDEP "field V04.value (fldOffset=0x8)" ; V13 tmp8 [V13,T10] ( 2, 0 ) ref -> rdx "argument with side effect" ; V14 tmp9 [V14,T11] ( 2, 0 ) ref -> rcx "argument with side effect" ; V15 tmp10 [V15,T12] ( 2, 0 ) ref -> rdx "argument with side effect" ; V16 tmp11 [V16,T00] ( 3, 24 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 120 G_M50397_IG01: push rdi push rsi push rbp push rbx sub rsp, 120 vzeroupper xor rax, rax mov qword ptr [rsp+28H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 vmovdqa xmmword ptr [rsp+50H], xmm4 vmovdqa xmmword ptr [rsp+60H], xmm4 mov qword ptr [rsp+70H], rax mov rdi, rcx mov rsi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 12.58 G_M50397_IG02: test rsi, rsi je G_M50397_IG09 ;; bbWeight=1 PerfScore 1.25 G_M50397_IG03: mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+64] call qword ptr [rax+32]CharacteristicObject:get_IsPropertyBag():bool:this test eax, eax jne G_M50397_IG10 ;; bbWeight=1 PerfScore 8.50 G_M50397_IG04: mov rcx, rdi call CharacteristicObject:AssertNotFrozen():this mov rcx, rdi call CharacteristicObject:AssertIsRoot():this mov rcx, rsi call CharacteristicObject:AssertNotFrozen():this mov rcx, rsi call CharacteristicObject:AssertIsRoot():this mov rbp, gword ptr [rdi+8] mov rcx, rsi mov rdx, rbx mov r8, rdi call CharacteristicObject:SetValueOnAttach(Characteristic,Object):this mov gword ptr [rsp+28H], rbp mov ecx, dword ptr [rbp+68] mov dword ptr [rsp+30H], ecx xor ecx, ecx mov dword ptr [rsp+34H], ecx mov dword ptr [rsp+38H], 2 vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+40H], xmm0 ;; bbWeight=1 PerfScore 16.33 G_M50397_IG05: vmovdqu xmm0, xmmword ptr [rsp+28H] vmovdqu xmmword ptr [rsp+50H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+38H] vmovdqu xmmword ptr [rsp+60H], xmm0 mov rcx, qword ptr [rsp+48H] mov qword ptr [rsp+70H], rcx ;; bbWeight=1 PerfScore 6.00 G_M50397_IG06: lea rcx, bword ptr [rsp+50H] mov rdx, 0xD1FFAB1E call Enumerator:MoveNext():bool:this test eax, eax je SHORT G_M50397_IG08 ;; bbWeight=1 PerfScore 3.00 G_M50397_IG07: lea rcx, bword ptr [rsp+68H] mov rdx, gword ptr [rcx] mov r8, gword ptr [rcx+8] mov rcx, rsi call CharacteristicObject:SetValueOnAttach(Characteristic,Object):this lea rcx, bword ptr [rsp+50H] mov rdx, 0xD1FFAB1E call Enumerator:MoveNext():bool:this test eax, eax jne SHORT G_M50397_IG07 ;; bbWeight=4 PerfScore 35.00 G_M50397_IG08: add rsp, 120 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M50397_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x138E3 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rdi call ArgumentNullException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M50397_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x13933 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax mov rdx, rdi call String:Format(String,Object):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 413, prolog size 51, PerfScore 128.32, (MethodHash=72733b22) for method CharacteristicObject:AttachToOwner(CharacteristicObject,Characteristic):this ; ============================================================ ; Assembly listing for method CharacteristicObject:get_IsPropertyBag():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M50033_IG01: ;; bbWeight=1 PerfScore 0.00 G_M50033_IG02: xor eax, eax ;; bbWeight=1 PerfScore 0.25 G_M50033_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 3, prolog size 0, PerfScore 1.55, (MethodHash=8d0c3c8e) for method CharacteristicObject:get_IsPropertyBag():bool:this ; ============================================================ ; Assembly listing for method CharacteristicObject:AssertIsRoot():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 3 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 0 ) ref -> rcx "argument with side effect" ; V04 tmp3 [V04,T03] ( 2, 0 ) ref -> rbx "argument with side effect" ; V05 tmp4 [V05,T04] ( 2, 0 ) ref -> rdx "argument with side effect" ; V06 tmp5 [V06,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M3883_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M3883_IG02: cmp gword ptr [rsi+16], 0 jne SHORT G_M3883_IG04 ;; bbWeight=1 PerfScore 3.00 G_M3883_IG03: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M3883_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x13733 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov ecx, 0x1379B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax mov r8, gword ptr [rsi+16] mov rdx, rsi call String:Format(String,Object,Object):String mov rdx, rax mov rcx, rbx call String:Concat(String,String):String mov rdx, rax mov rcx, rdi call InvalidOperationException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 132, prolog size 7, PerfScore 22.45, (MethodHash=bc2af0d4) for method CharacteristicObject:AssertIsRoot():this ; ============================================================ ; Assembly listing for method CharacteristicObject:SetValueOnAttach(Characteristic,Object):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 3.50) ref -> rbx this class-hnd ; V01 arg1 [V01,T00] ( 7, 6 ) ref -> rsi class-hnd ; V02 arg2 [V02,T01] ( 4, 4 ) ref -> rdi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V05 tmp2 [V05,T06] ( 3, 1.24) long -> rdx "fgInsertCommaFormTemp is creating a new local variable" ; V06 tmp3 [V06,T03] ( 5, 3.74) ref -> rcx class-hnd "spilling QMark2" ; V07 tmp4 [V07,T05] ( 3, 1.50) ref -> rcx ; ; Lcl frame size = 32 G_M38482_IG01: push rdi push rsi push rbx sub rsp, 32 mov rbx, rcx mov rsi, rdx mov rdi, r8 ;; bbWeight=1 PerfScore 4.00 G_M38482_IG02: mov rcx, rsi mov rdx, rdi call CharacteristicObject:AssertIsAssignable(Characteristic,Object) mov rcx, gword ptr [rsi+16] call CharacteristicHelper:IsCharacteristicObjectSubclass(Type):bool test al, al je SHORT G_M38482_IG08 ;; bbWeight=1 PerfScore 5.75 G_M38482_IG03: mov rcx, rbx mov rdx, rsi call CharacteristicObject:GetValue(Characteristic):Object:this mov rcx, rax test rcx, rcx je SHORT G_M38482_IG06 ;; bbWeight=0.50 PerfScore 1.50 G_M38482_IG04: mov rdx, 0xD1FFAB1E cmp qword ptr [rcx], rdx je SHORT G_M38482_IG06 ;; bbWeight=0.25 PerfScore 0.81 G_M38482_IG05: mov rcx, rdx mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rcx, rax ;; bbWeight=0.12 PerfScore 0.21 G_M38482_IG06: test rcx, rcx je SHORT G_M38482_IG08 ;; bbWeight=0.50 PerfScore 0.63 G_M38482_IG07: mov rdx, rsi call CharacteristicObject:DetachFromOwner(Characteristic):this ;; bbWeight=0.50 PerfScore 0.63 G_M38482_IG08: mov rcx, rbx mov rdx, rsi mov r8, rdi ;; bbWeight=1 PerfScore 0.75 G_M38482_IG09: add rsp, 32 pop rbx pop rsi pop rdi jmp CharacteristicObject:SetValueCore(Characteristic,Object):this ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 122, prolog size 7, PerfScore 30.22, (MethodHash=d0fe69ad) for method CharacteristicObject:SetValueOnAttach(Characteristic,Object):this ; ============================================================ ; Assembly listing for method CharacteristicObject:SetOwnerCore(CharacteristicObject):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 6 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 7, 7 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M44037_IG01: push rdi push rsi sub rsp, 40 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.75 G_M44037_IG02: test rsi, rsi je SHORT G_M44037_IG05 ;; bbWeight=1 PerfScore 1.25 G_M44037_IG03: mov rcx, rdi call CharacteristicObject:AssertNotFrozen():this mov rcx, rsi call CharacteristicObject:AssertNotFrozen():this mov rcx, rsi call CharacteristicObject:AssertIsRoot():this lea rcx, bword ptr [rdi+16] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsi+8] lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov byte ptr [rdi+24], 0 ;; bbWeight=1 PerfScore 10.00 G_M44037_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M44037_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x138E3 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 135, prolog size 6, PerfScore 29.75, (MethodHash=52e053fa) for method CharacteristicObject:SetOwnerCore(CharacteristicObject):this ; ============================================================ ; Assembly listing for method Enumerator:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 25.50) byref -> rcx this ; V01 TypeCtx [V01,T06] ( 4, 3.50) long -> rdx ; V02 loc0 [V02,T05] ( 4, 9 ) byref -> rax ; V03 loc1 [V03,T04] ( 4, 16 ) int -> rax ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T01] ( 3, 24 ) ref -> r8 class-hnd "impAppendStmt" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V07 tmp3 [V07,T08] ( 2, 2 ) ref -> r9 class-hnd "bubbling QMark1" ; V08 tmp4 [V08,T09] ( 2, 2 ) ref -> rsi class-hnd "bubbling QMark1" ;* V09 tmp5 [V09 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V10 tmp6 [V10,T10] ( 2, 1 ) ref -> rdx V06.key(offs=0x00) P-INDEP "field V06.key (fldOffset=0x0)" ; V11 tmp7 [V11,T11] ( 2, 1 ) ref -> rsi V06.value(offs=0x08) P-INDEP "field V06.value (fldOffset=0x8)" ; V12 tmp8 [V12,T07] ( 3, 3 ) byref -> rdi "BlockOp address local" ; V13 cse0 [V13,T03] ( 3, 20 ) int -> rax "CSE - aggressive" ; V14 cse1 [V14,T02] ( 4, 20.50) ref -> r8 "CSE - aggressive" ; ; Lcl frame size = 40 G_M65171_IG01: push rdi push rsi sub rsp, 40 vzeroupper mov qword ptr [rsp+20H], rdx ;; bbWeight=1 PerfScore 4.25 G_M65171_IG02: mov eax, dword ptr [rcx+8] mov r8, gword ptr [rcx] cmp eax, dword ptr [r8+68] jne G_M65171_IG11 ;; bbWeight=1 PerfScore 7.00 G_M65171_IG03: mov eax, dword ptr [rcx+12] mov r8, gword ptr [rcx] cmp eax, dword ptr [r8+56] jae SHORT G_M65171_IG07 ;; bbWeight=8 PerfScore 56.00 G_M65171_IG04: mov r8, gword ptr [r8+16] lea r9d, [rax+1] mov dword ptr [rcx+12], r9d cmp eax, dword ptr [r8+8] jae SHORT G_M65171_IG12 movsxd rax, eax lea rax, [rax+2*rax] lea rax, bword ptr [r8+8*rax+16] cmp dword ptr [rax+20], -1 jl SHORT G_M65171_IG03 ;; bbWeight=4 PerfScore 45.00 G_M65171_IG05: mov r9, gword ptr [rax] mov rsi, gword ptr [rax+8] mov rax, qword ptr [rdx+48] mov rax, qword ptr [rax] cmp qword ptr [rax+24], 0 je SHORT G_M65171_IG09 ;; bbWeight=0.50 PerfScore 5.50 G_M65171_IG06: jmp SHORT G_M65171_IG09 ;; bbWeight=0.25 PerfScore 0.50 G_M65171_IG07: mov eax, dword ptr [r8+56] inc eax mov dword ptr [rcx+12], eax vxorps xmm0, xmm0 vmovdqu xmmword ptr [rcx+24], xmm0 xor eax, eax ;; bbWeight=0.50 PerfScore 2.42 G_M65171_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M65171_IG09: mov rdx, r9 lea rdi, bword ptr [rcx+24] mov rcx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov eax, 1 ;; bbWeight=0.50 PerfScore 2.00 G_M65171_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M65171_IG11: call ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() int3 ;; bbWeight=0 PerfScore 0.00 G_M65171_IG12: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 179, prolog size 14, PerfScore 143.02, (MethodHash=94cf016c) for method Enumerator:MoveNext():bool:this ; ============================================================ ; Assembly listing for method Dictionary`2:Resize(int,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 10, 12 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T14] ( 5, 5 ) int -> rdi ; V02 arg2 [V02,T19] ( 3, 3 ) bool -> rbx ; V03 loc0 [V03,T02] ( 8, 14.50) ref -> rbp class-hnd exact ; V04 loc1 [V04,T06] ( 6, 11.50) int -> r14 ; V05 loc2 [V05,T01] ( 6, 20.50) int -> rbx ; V06 loc3 [V06,T00] ( 7, 23 ) int -> r15 ;* V07 loc4 [V07 ] ( 0, 0 ) byref -> zero-ref ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T20] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V10 tmp2 [V10,T21] ( 3, 3 ) long -> [rsp+0x20] "spilling Runtime Lookup tree" ; V11 tmp3 [V11,T10] ( 2, 8 ) byref -> r15 "non-inline candidate call" ; V12 tmp4 [V12,T15] ( 3, 6 ) byref -> rdx "Inline return value spill temp" ; V13 tmp5 [V13,T16] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V14 tmp6 [V14,T11] ( 2, 8 ) int -> rdx "Inlining Arg" ; V15 tmp7 [V15,T12] ( 2, 8 ) long -> r10 "Inlining Arg" ; V16 tmp8 [V16,T13] ( 2, 8 ) int -> r9 "Inlining Arg" ; V17 tmp9 [V17,T17] ( 3, 6 ) int -> rdx "Inline stloc first use temp" ; V18 cse0 [V18,T04] ( 4, 12 ) byref -> rax "CSE - aggressive" ; V19 cse1 [V19,T07] ( 3, 10 ) byref -> r15 "CSE - aggressive" ; V20 cse2 [V20,T22] ( 3, 2.25) long -> rdx "CSE - moderate" ; V21 cse3 [V21,T08] ( 3, 10 ) long -> rcx "CSE - aggressive" ; V22 cse4 [V22,T09] ( 4, 9.50) int -> r12 "CSE - aggressive" ; V23 cse5 [V23,T18] ( 3, 6 ) int -> r8 "CSE - moderate" ; V24 rat0 [V24,T05] ( 3, 12 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 48 G_M42708_IG01: push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx mov edi, edx mov ebx, r8d ;; bbWeight=1 PerfScore 9.00 G_M42708_IG02: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+40] test rdx, rdx je SHORT G_M42708_IG04 ;; bbWeight=1 PerfScore 9.25 G_M42708_IG03: mov qword ptr [rsp+20H], rdx jmp SHORT G_M42708_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M42708_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+20H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M42708_IG05: movsxd rdx, edi mov rcx, qword ptr [rsp+20H] call CORINFO_HELP_NEWARR_1_VC mov rbp, rax mov r14d, dword ptr [rsi+56] mov rcx, gword ptr [rsi+16] mov rdx, rbp mov r8d, r14d call Array:Copy(Array,Array,int) movzx rdx, bl test dl, 1 je SHORT G_M42708_IG10 ;; bbWeight=1 PerfScore 9.50 G_M42708_IG06: xor ebx, ebx test r14d, r14d jle SHORT G_M42708_IG10 mov r12d, dword ptr [rbp+8] ;; bbWeight=0.50 PerfScore 1.75 G_M42708_IG07: cmp ebx, r12d jae G_M42708_IG16 movsxd rcx, ebx lea rcx, [rcx+2*rcx] lea r15, bword ptr [rbp+8*rcx+16] cmp dword ptr [r15+20], -1 jl SHORT G_M42708_IG09 ;; bbWeight=4 PerfScore 28.00 G_M42708_IG08: mov rcx, gword ptr [rbp+8*rcx+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+24]Object:GetHashCode():int:this mov dword ptr [r15+16], eax ;; bbWeight=2 PerfScore 20.00 G_M42708_IG09: inc ebx cmp ebx, r14d jl SHORT G_M42708_IG07 ;; bbWeight=4 PerfScore 6.00 G_M42708_IG10: movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rax, -1 mov ecx, edi xor rdx, rdx div rdx:rax, rcx inc rax mov qword ptr [rsi+48], rax xor r15d, r15d test r14d, r14d jle SHORT G_M42708_IG14 mov r12d, dword ptr [rbp+8] ;; bbWeight=1 PerfScore 69.75 G_M42708_IG11: cmp r15d, r12d jae SHORT G_M42708_IG16 movsxd rax, r15d lea rax, [rax+2*rax] lea rax, bword ptr [rbp+8*rax+16] cmp dword ptr [rax+20], -1 jl SHORT G_M42708_IG13 ;; bbWeight=4 PerfScore 28.00 G_M42708_IG12: mov edx, dword ptr [rax+16] mov rcx, gword ptr [rsi+8] mov r8d, dword ptr [rcx+8] mov r9d, r8d mov r10, qword ptr [rsi+48] mov edx, edx imul rdx, r10 shr rdx, 32 inc rdx mov r9d, r9d imul rdx, r9 shr rdx, 32 cmp edx, r8d jae SHORT G_M42708_IG16 movsxd rdx, edx lea rdx, bword ptr [rcx+4*rdx+16] mov ecx, dword ptr [rdx] dec ecx mov dword ptr [rax+20], ecx lea eax, [r15+1] mov dword ptr [rdx], eax ;; bbWeight=2 PerfScore 48.50 G_M42708_IG13: inc r15d cmp r15d, r14d jl SHORT G_M42708_IG11 ;; bbWeight=4 PerfScore 6.00 G_M42708_IG14: lea rcx, bword ptr [rsi+16] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 2.00 G_M42708_IG15: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.75 G_M42708_IG16: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 380, prolog size 27, PerfScore 281.81, (MethodHash=e780592b) for method Dictionary`2:Resize(int,bool):this ; ============================================================ ; Assembly listing for method CharacteristicObject`1:Freeze():__Canon:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 6.25) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 48 G_M39384_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M39384_IG02: mov rcx, rsi call CharacteristicObject:AssertIsRoot():this cmp byte ptr [rsi+24], 0 jne SHORT G_M39384_IG04 ;; bbWeight=1 PerfScore 4.25 G_M39384_IG03: mov byte ptr [rsi+24], 1 ;; bbWeight=0.25 PerfScore 0.25 G_M39384_IG04: mov rcx, qword ptr [rsi] mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx] mov rdx, rsi call CORINFO_HELP_CHKCASTANY nop ;; bbWeight=1 PerfScore 9.50 G_M39384_IG05: add rsp, 48 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 59, prolog size 10, PerfScore 24.15, (MethodHash=db116627) for method CharacteristicObject`1:Freeze():__Canon:this ; ============================================================ ; Assembly listing for method Job:.ctor(String,CharacteristicObject):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T01] ( 4, 4 ) ref -> rdi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 4, 4.74) ref -> rax "CASTCLASS eval op1" ; V05 tmp2 [V05,T05] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" ; V07 tmp4 [V07,T04] ( 2, 4 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M20911_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov rdi, r8 ;; bbWeight=1 PerfScore 2.75 G_M20911_IG02: mov rcx, rsi call Job:.ctor(String):this mov rcx, rsi mov rdx, rdi call CharacteristicObject:GetCharacteristicsToApply(CharacteristicObject):IEnumerable`1:this mov r8, rax mov rdx, rdi mov rcx, rsi call CharacteristicObject:ApplyCore(CharacteristicObject,IEnumerable`1):CharacteristicObject:this test rax, rax je SHORT G_M20911_IG05 ;; bbWeight=1 PerfScore 5.75 G_M20911_IG03: mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx je SHORT G_M20911_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M20911_IG04: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL ;; bbWeight=0.12 PerfScore 0.15 G_M20911_IG05: nop ;; bbWeight=1 PerfScore 0.25 G_M20911_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 81, prolog size 6, PerfScore 20.06, (MethodHash=0146ae50) for method Job:.ctor(String,CharacteristicObject):this ; ============================================================ ; Assembly listing for method CharacteristicObject:get_Frozen():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 15 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 2, 32 ) ref -> rax class-hnd "dup spill" ; V03 tmp2 [V03,T01] ( 3, 20 ) ref -> rax ; ; Lcl frame size = 0 G_M38434_IG01: ;; bbWeight=1 PerfScore 0.00 G_M38434_IG02: mov rax, gword ptr [rcx+16] test rax, rax je SHORT G_M38434_IG04 ;; bbWeight=8 PerfScore 26.00 G_M38434_IG03: mov rcx, rax jmp SHORT G_M38434_IG02 ;; bbWeight=4 PerfScore 9.00 G_M38434_IG04: movzx rax, byte ptr [rcx+24] ;; bbWeight=1 PerfScore 2.00 G_M38434_IG05: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 19, prolog size 0, PerfScore 39.90, (MethodHash=67dc69dd) for method CharacteristicObject:get_Frozen():bool:this ; ============================================================ ; Assembly listing for method CharacteristicObject:GetCharacteristicsToApply(CharacteristicObject):IEnumerable`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdi class-hnd ; V02 loc0 [V02,T02] ( 4, 3 ) ref -> rbx class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 2 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 32 G_M13766_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M13766_IG02: mov rcx, rdi cmp dword ptr [rcx], ecx call CharacteristicObject:GetCharacteristicsToApply():IEnumerable`1:this mov rbx, rax mov rcx, qword ptr [rsi] cmp rcx, qword ptr [rdi] je SHORT G_M13766_IG04 ;; bbWeight=1 PerfScore 8.50 G_M13766_IG03: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+32]CharacteristicObject:get_IsPropertyBag():bool:this test eax, eax jne SHORT G_M13766_IG04 mov rcx, rsi call Object:GetType():Type:this mov rcx, rax call CharacteristicHelper:GetAllCharacteristics(Type):IReadOnlyList`1 mov r8, rax mov rdx, rbx mov rcx, 0xD1FFAB1E call Enumerable:Intersect(IEnumerable`1,IEnumerable`1):IEnumerable`1 mov rbx, rax ;; bbWeight=0.50 PerfScore 6.50 G_M13766_IG04: mov rax, rbx ;; bbWeight=1 PerfScore 0.25 G_M13766_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 102, prolog size 7, PerfScore 31.95, (MethodHash=f690ca39) for method CharacteristicObject:GetCharacteristicsToApply(CharacteristicObject):IEnumerable`1:this ; ============================================================ ; Assembly listing for method CharacteristicObject:GetCharacteristicsToApply():IEnumerable`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T11] ( 2, 2 ) ref -> r8 class-hnd "dup spill" ; V04 tmp2 [V04,T12] ( 2, 2 ) ref -> rsi class-hnd "impAppendStmt" ; V05 tmp3 [V05,T17] ( 2, 1 ) ref -> rsi ; V06 tmp4 [V06,T08] ( 4, 2 ) ref -> r8 ; V07 tmp5 [V07,T13] ( 2, 2 ) ref -> rdi class-hnd "dup spill" ; V08 tmp6 [V08,T14] ( 2, 2 ) ref -> rsi class-hnd "impAppendStmt" ; V09 tmp7 [V09,T18] ( 2, 1 ) ref -> rsi ; V10 tmp8 [V10,T09] ( 4, 2 ) ref -> rdi ; V11 tmp9 [V11,T01] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V12 tmp10 [V12,T02] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V13 tmp11 [V13,T15] ( 2, 2 ) ref -> r8 class-hnd "dup spill" ; V14 tmp12 [V14,T16] ( 2, 2 ) ref -> rsi class-hnd "impAppendStmt" ; V15 tmp13 [V15,T19] ( 2, 1 ) ref -> rsi ; V16 tmp14 [V16,T10] ( 4, 2 ) ref -> r8 ; V17 tmp15 [V17,T03] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V18 tmp16 [V18,T04] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V19 tmp17 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V20 tmp18 [V20,T05] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V21 tmp19 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V22 tmp20 [V22,T06] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V23 tmp21 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V24 tmp22 [V24,T07] ( 3, 3 ) ref -> rbx class-hnd exact "NewObj constructor temp" ;* V25 cse0 [V25,T20] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 48 G_M52846_IG01: push rdi push rsi push rbx sub rsp, 48 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M52846_IG02: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+32]CharacteristicObject:get_IsPropertyBag():bool:this test eax, eax jne G_M52846_IG07 ;; bbWeight=1 PerfScore 8.50 G_M52846_IG03: mov rcx, rsi call Object:GetType():Type:this mov rcx, rax call CharacteristicHelper:GetAllCharacteristics(Type):IReadOnlyList`1 mov rsi, rax mov rcx, 0xD1FFAB1E mov edx, 0x432 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M52846_IG05 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M52846_IG13 ;; bbWeight=0.50 PerfScore 6.38 G_M52846_IG04: lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rdi ;; bbWeight=0.50 PerfScore 2.25 G_M52846_IG05: mov rdx, rsi mov rcx, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.25 G_M52846_IG06: add rsp, 48 pop rbx pop rsi pop rdi jmp Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 ;; bbWeight=0.50 PerfScore 1.88 G_M52846_IG07: mov rcx, gword ptr [rsi+8] cmp dword ptr [rcx], ecx call Dictionary`2:get_Keys():KeyCollection:this mov rsi, rax mov rcx, 0xD1FFAB1E mov edx, 0x432 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M52846_IG09 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M52846_IG13 ;; bbWeight=0.50 PerfScore 7.63 G_M52846_IG08: lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rdi ;; bbWeight=0.50 PerfScore 2.25 G_M52846_IG09: mov rdx, rsi mov rcx, 0xD1FFAB1E call Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 mov rsi, rax mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] test rdi, rdi jne SHORT G_M52846_IG11 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je SHORT G_M52846_IG13 ;; bbWeight=0.50 PerfScore 5.13 G_M52846_IG10: lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 2.13 G_M52846_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax xor ecx, ecx mov dword ptr [rsp+20H], ecx mov gword ptr [rsp+28H], rcx mov rcx, rbx mov rdx, rsi mov r8, rdi xor r9, r9 call OrderedEnumerable`2:.ctor(IEnumerable`1,Func`2,IComparer`1,bool,OrderedEnumerable`1):this mov rax, rbx ;; bbWeight=0.50 PerfScore 3.00 G_M52846_IG12: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M52846_IG13: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 512, prolog size 7, PerfScore 95.45, (MethodHash=39053191) for method CharacteristicObject:GetCharacteristicsToApply():IEnumerable`1:this ; ============================================================ ; Assembly listing for method CharacteristicHelper:GetAllCharacteristics(Type):IReadOnlyList`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 6, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 2 ) ref -> rbx class-hnd "impAppendStmt" ;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 32 G_M34205_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M34205_IG02: mov rcx, rsi call CharacteristicHelper:IsCharacteristicObjectSubclass(Type):bool test eax, eax jne SHORT G_M34205_IG05 ;; bbWeight=1 PerfScore 2.50 G_M34205_IG03: mov rcx, 0xD1FFAB1E mov edx, 519 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.88 G_M34205_IG04: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M34205_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, 0xD1FFAB1E mov edx, 519 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rbx, gword ptr [rdx] lea rcx, bword ptr [rdi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, 0xD1FFAB1E mov qword ptr [rdi+32], rcx mov rcx, rbx mov rdx, rsi mov r8, rdi cmp dword ptr [rcx], ecx ;; bbWeight=0.50 PerfScore 6.13 G_M34205_IG06: add rsp, 32 pop rbx pop rsi pop rdi jmp ConcurrentDictionary`2:GetOrAdd(__Canon,Func`2):__Canon:this ;; bbWeight=0.50 PerfScore 1.88 ; Total bytes of code 177, prolog size 7, PerfScore 34.95, (MethodHash=e1557a62) for method CharacteristicHelper:GetAllCharacteristics(Type):IReadOnlyList`1 ; ============================================================ ; Assembly listing for method CharacteristicHelper:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M49693_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax mov qword ptr [rbp-10H], rax ;; bbWeight=1 PerfScore 4.00 G_M49693_IG02: mov rcx, 0xD1FFAB1E call Array:Empty():ref mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call ConcurrentDictionary`2:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] call ConcurrentDictionary`2:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 16.00 G_M49693_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 154, prolog size 20, PerfScore 37.40, (MethodHash=a81d3de2) for method CharacteristicHelper:.cctor() ; ============================================================ ; Assembly listing for method ConcurrentDictionary`2:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02,T01] ( 0, 0 ) long -> zero-ref "impRuntimeLookup slot" ;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; ; Lcl frame size = 48 G_M2712_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M2712_IG02: mov rcx, qword ptr [rsi] xor rcx, rcx mov gword ptr [rsp+20H], rcx mov rcx, rsi mov edx, 12 mov r8d, 31 mov r9d, 1 call ConcurrentDictionary`2:.ctor(int,int,bool,IEqualityComparer`1):this nop ;; bbWeight=1 PerfScore 5.50 G_M2712_IG03: add rsp, 48 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 55, prolog size 10, PerfScore 15.25, (MethodHash=448bf567) for method ConcurrentDictionary`2:.ctor():this ; ============================================================ ; Assembly listing for method ConcurrentDictionary`2:.ctor(int,int,bool,IEqualityComparer`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 9, 8 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T05] ( 6, 5.50) int -> rdx ; V02 arg2 [V02,T06] ( 6, 5.50) int -> rdi ; V03 arg3 [V03,T08] ( 3, 3 ) bool -> rbx ; V04 arg4 [V04,T16] ( 4, 2.50) ref -> rbp class-hnd ; V05 loc0 [V05,T03] ( 6, 9 ) ref -> r14 class-hnd exact ; V06 loc1 [V06,T22] ( 2, 2 ) ref -> r12 class-hnd exact ; V07 loc2 [V07,T12] ( 3, 3 ) ref -> rdi class-hnd exact ; V08 loc3 [V08,T00] ( 5, 17 ) int -> r12 ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T01] ( 2, 16 ) ref -> rax class-hnd exact "NewObj constructor temp" ; V11 tmp2 [V11,T09] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V12 tmp3 [V12,T13] ( 3, 3 ) long -> [rsp+0x38] "spilling Runtime Lookup tree" ; V13 tmp4 [V13,T07] ( 3, 6 ) ref -> [rsp+0x28] class-hnd exact "NewObj constructor temp" ; V14 tmp5 [V14,T17] ( 2, 2.50) long -> rcx "impRuntimeLookup slot" ; V15 tmp6 [V15,T14] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V16 tmp7 [V16,T18] ( 2, 2.50) long -> rcx "impRuntimeLookup slot" ; V17 tmp8 [V17,T15] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V18 tmp9 [V18,T23] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V19 tmp10 [V19,T24] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V20 tmp11 [V20,T25] ( 2, 0 ) ref -> rcx "argument with side effect" ; V21 tmp12 [V21,T26] ( 2, 0 ) ref -> rbx "argument with side effect" ; V22 tmp13 [V22,T27] ( 2, 0 ) ref -> r8 "argument with side effect" ; V23 tmp14 [V23,T28] ( 2, 0 ) ref -> rcx "argument with side effect" ; V24 tmp15 [V24,T29] ( 2, 0 ) ref -> rbx "argument with side effect" ; V25 tmp16 [V25,T30] ( 2, 0 ) ref -> r8 "argument with side effect" ; V26 cse0 [V26,T19] ( 3, 2.25) long -> rdx "CSE - moderate" ; V27 cse1 [V27,T20] ( 3, 2.25) long -> rdx "CSE - moderate" ; V28 cse2 [V28,T21] ( 3, 2.25) long -> rdx "CSE - moderate" ; V29 cse3 [V29,T10] ( 4, 4 ) long -> [rsp+0x30] "CSE - aggressive" ; V30 cse4 [V30,T04] ( 6, 9 ) int -> r15 "CSE - aggressive" ; V31 cse5 [V31,T11] ( 4, 4 ) long -> r13 "CSE - moderate" ; ; Lcl frame size = 72 G_M20127_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 72 mov qword ptr [rsp+40H], rcx mov rsi, rcx mov edi, r8d mov ebx, r9d mov rbp, gword ptr [rsp+B0H] ;; bbWeight=1 PerfScore 11.00 G_M20127_IG02: test edx, edx jle G_M20127_IG21 ;; bbWeight=1 PerfScore 1.25 G_M20127_IG03: test edi, edi jl G_M20127_IG22 ;; bbWeight=1 PerfScore 1.25 G_M20127_IG04: cmp edi, edx jge SHORT G_M20127_IG06 ;; bbWeight=1 PerfScore 1.25 G_M20127_IG05: mov edi, edx ;; bbWeight=0.50 PerfScore 0.13 G_M20127_IG06: movsxd rdx, edx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_OBJ mov r14, rax mov r15d, dword ptr [r14+8] cmp r15d, 0 jbe G_M20127_IG23 lea rcx, bword ptr [r14+16] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov r12d, 1 cmp r15d, 1 jle SHORT G_M20127_IG08 ;; bbWeight=1 PerfScore 8.25 G_M20127_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST movsxd rdx, r12d lea rcx, bword ptr [r14+8*rdx+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF inc r12d cmp r15d, r12d jg SHORT G_M20127_IG07 ;; bbWeight=4 PerfScore 21.00 G_M20127_IG08: movsxd rdx, r15d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov r12, rax mov r13, qword ptr [rsi] mov rcx, r13 mov rdx, qword ptr [rcx+48] mov rax, qword ptr [rdx] mov qword ptr [rsp+30H], rax mov rdx, qword ptr [rax+32] test rdx, rdx je SHORT G_M20127_IG10 ;; bbWeight=1 PerfScore 12.25 G_M20127_IG09: mov qword ptr [rsp+38H], rdx jmp SHORT G_M20127_IG11 ;; bbWeight=0.25 PerfScore 0.75 G_M20127_IG10: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+38H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M20127_IG11: movsxd rdx, edi mov rcx, qword ptr [rsp+38H] call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax mov rcx, r13 mov rax, qword ptr [rsp+30H] mov rdx, qword ptr [rax+40] test rdx, rdx je SHORT G_M20127_IG13 ;; bbWeight=1 PerfScore 7.00 G_M20127_IG12: jmp SHORT G_M20127_IG14 ;; bbWeight=0.25 PerfScore 0.50 G_M20127_IG13: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M20127_IG14: mov rcx, rdx call CORINFO_HELP_NEWSFAST mov gword ptr [rsp+28H], rax mov rcx, rax mov rdx, rdi mov r8, r14 mov r9, r12 call Tables:.ctor(ref,ref,ref):this lea rcx, bword ptr [rsi+8] mov rdx, gword ptr [rsp+28H] call CORINFO_HELP_ASSIGN_REF mov rcx, r13 mov r14, qword ptr [rsp+30H] mov rdx, qword ptr [r14+48] test rdx, rdx je SHORT G_M20127_IG16 ;; bbWeight=1 PerfScore 11.25 G_M20127_IG15: jmp SHORT G_M20127_IG17 ;; bbWeight=0.25 PerfScore 0.50 G_M20127_IG16: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M20127_IG17: mov rcx, rdx call EqualityComparer`1:get_Default():EqualityComparer`1 lea rcx, bword ptr [rsi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF test rbp, rbp je SHORT G_M20127_IG19 ;; bbWeight=1 PerfScore 4.25 G_M20127_IG18: cmp rbp, gword ptr [rsi+24] je SHORT G_M20127_IG19 mov rcx, 0xD1FFAB1E mov edx, 399 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E cmp rbp, gword ptr [rdx] je SHORT G_M20127_IG19 lea rcx, bword ptr [rsi+16] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 4.75 G_M20127_IG19: mov byte ptr [rsi+36], bl mov eax, dword ptr [rdi+8] cdq idiv edx:eax, r15d mov dword ptr [rsi+32], eax ;; bbWeight=1 PerfScore 31.00 G_M20127_IG20: add rsp, 72 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M20127_IG21: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0xECE mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov ecx, 0x833 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rbx mov rcx, rdi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M20127_IG22: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0xEF0 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov ecx, 0x89B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rbx mov rcx, rdi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M20127_IG23: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 668, prolog size 38, PerfScore 189.74, (MethodHash=b8c3b160) for method ConcurrentDictionary`2:.ctor(int,int,bool,IEqualityComparer`1):this ; ============================================================ ; Assembly listing for method Tables:.ctor(ref,ref,ref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T03] ( 3, 3 ) ref -> rbp class-hnd ;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 4 ) int -> [rsp+0x04] "Inlining Arg" ; ; Lcl frame size = 8 G_M29189_IG01: push rdi push rsi push rbp push rbx push rax mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 ;; bbWeight=1 PerfScore 6.00 G_M29189_IG02: lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+24] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov eax, dword ptr [rdi+8] mov dword ptr [rsp+04H], eax mov rax, -1 mov edx, dword ptr [rsp+04H] mov ecx, edx xor rdx, rdx div rdx:rax, rcx inc rax mov qword ptr [rsi+32], rax ;; bbWeight=1 PerfScore 72.25 G_M29189_IG03: add rsp, 8 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 97, prolog size 5, PerfScore 91.20, (MethodHash=645b8dfa) for method Tables:.ctor(ref,ref,ref):this ; ============================================================ ; Assembly listing for method ConcurrentDictionary`2:GetOrAdd(__Canon,Func`2):__Canon:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 5 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 9, 6.50) ref -> rsi ld-addr-op class-hnd ; V02 arg2 [V02,T02] ( 4, 3.50) ref -> rbx class-hnd ; V03 loc0 [V03,T06] ( 3, 2.50) ref -> rbp class-hnd ; V04 loc1 [V04,T07] ( 3, 2.50) int -> rbp ; V05 loc2 [V05 ] ( 3, 2.50) ref -> [rsp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T09] ( 3, 2 ) int -> rbp ;* V08 tmp2 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V09 tmp3 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V10 tmp4 [V10,T08] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V12 tmp6 [V12,T03] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V13 tmp7 [V13 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V14 tmp8 [V14,T13] ( 2, 1 ) bool -> rcx V08.hasValue(offs=0x00) P-INDEP "field V08.hasValue (fldOffset=0x0)" ; V15 tmp9 [V15,T14] ( 2, 1 ) int -> rbp V08.value(offs=0x04) P-INDEP "field V08.value (fldOffset=0x4)" ; V16 tmp10 [V16 ] ( 2, 2 ) struct ( 8) [rsp+0x38] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V17 tmp11 [V17,T04] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V18 tmp12 [V18,T10] ( 2, 2 ) ref -> r9 "argument with side effect" ; V19 tmp13 [V19,T11] ( 2, 2 ) ref -> r14 "argument with side effect" ;* V20 tmp14 [V20,T15] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V21 cse0 [V21,T12] ( 3, 1.25) long -> r11 "CSE - moderate" ; V22 rat0 [V22,T05] ( 3, 3 ) ref -> rbx "delegate invoke call" ; ; Lcl frame size = 80 G_M24396_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 80 xor rax, rax mov qword ptr [rsp+40H], rax mov qword ptr [rsp+48H], rcx mov rdi, rcx mov rsi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 8.25 G_M24396_IG02: test rsi, rsi je G_M24396_IG14 ;; bbWeight=1 PerfScore 1.25 G_M24396_IG03: test rbx, rbx je G_M24396_IG15 ;; bbWeight=1 PerfScore 1.25 G_M24396_IG04: mov rbp, gword ptr [rdi+16] test rbp, rbp je SHORT G_M24396_IG09 ;; bbWeight=1 PerfScore 3.25 G_M24396_IG05: mov rcx, qword ptr [rdi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov r11, qword ptr [rdx+56] test r11, r11 je SHORT G_M24396_IG07 ;; bbWeight=0.50 PerfScore 4.63 G_M24396_IG06: jmp SHORT G_M24396_IG08 ;; bbWeight=0.25 PerfScore 0.50 G_M24396_IG07: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M24396_IG08: mov rcx, rbp mov rdx, rsi call qword ptr [r11] mov ebp, eax jmp SHORT G_M24396_IG10 ;; bbWeight=0.50 PerfScore 2.88 G_M24396_IG09: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+24]Object:GetHashCode():int:this mov ebp, eax ;; bbWeight=0.50 PerfScore 3.75 G_M24396_IG10: lea r9, [rsp+40H] mov rcx, rdi mov rdx, rsi mov r8d, ebp call ConcurrentDictionary`2:TryGetValueInternal(__Canon,int,byref):bool:this test eax, eax jne SHORT G_M24396_IG12 ;; bbWeight=1 PerfScore 3.50 G_M24396_IG11: mov ecx, 1 mov r14, rsi lea rdx, bword ptr [rsp+38H] mov byte ptr [rdx], cl mov dword ptr [rdx+4], ebp mov rcx, gword ptr [rbx+8] mov rdx, rsi call gword ptr [rbx+24]Func`2:Invoke(__Canon):__Canon:this mov r9, rax xor edx, edx mov dword ptr [rsp+20H], edx mov dword ptr [rsp+28H], 1 lea rdx, [rsp+40H] mov qword ptr [rsp+30H], rdx mov rdx, r14 mov r8, qword ptr [rsp+38H] mov rcx, rdi call ConcurrentDictionary`2:TryAddInternal(__Canon,Nullable`1,__Canon,bool,bool,byref):bool:this ;; bbWeight=0.50 PerfScore 7.38 G_M24396_IG12: mov rax, gword ptr [rsp+40H] ;; bbWeight=1 PerfScore 1.00 G_M24396_IG13: add rsp, 80 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M24396_IG14: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] call ThrowHelper:ThrowArgumentNullException(String) int3 ;; bbWeight=0 PerfScore 0.00 G_M24396_IG15: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] call ThrowHelper:ThrowArgumentNullException(String) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 273, prolog size 22, PerfScore 69.05, (MethodHash=7a7da0b3) for method ConcurrentDictionary`2:GetOrAdd(__Canon,Func`2):__Canon:this ; ============================================================ ; Assembly listing for method ConcurrentDictionary`2:TryGetValueInternal(__Canon,int,byref):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T05] ( 6, 6.50) ref -> rdi this class-hnd ; V01 arg1 [V01,T06] ( 4, 6 ) ref -> rbx class-hnd ; V02 arg2 [V02,T02] ( 6, 11 ) int -> rsi ; V03 arg3 [V03,T09] ( 5, 3.50) byref -> rbp ; V04 loc0 [V04,T14] ( 3, 2 ) ref -> rcx class-hnd ; V05 loc1 [V05,T13] ( 3, 4 ) ref -> r14 class-hnd ;* V06 loc2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V07 loc3 [V07,T00] ( 8, 19.50) ref -> r14 class-hnd ; V08 loc4 [V08,T01] ( 8, 19.50) ref -> r13 class-hnd ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T17] ( 2, 2 ) long -> rcx "impRuntimeLookup slot" ; V11 tmp2 [V11,T15] ( 2, 2 ) byref -> rax "impAppendStmt" ;* V12 tmp3 [V12 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V13 tmp4 [V13,T08] ( 2, 6 ) long -> rcx "impRuntimeLookup slot" ; V14 tmp5 [V14,T07] ( 2, 8 ) ref -> [rsp+0x28] class-hnd "impAppendStmt" ; V15 tmp6 [V15,T03] ( 4, 12 ) long -> r11 "spilling Runtime Lookup tree" ;* V16 tmp7 [V16 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ;* V17 tmp8 [V17,T18] ( 0, 0 ) long -> zero-ref "impRuntimeLookup slot" ; V18 tmp9 [V18,T16] ( 2, 2 ) byref -> rax "impAppendStmt" ;* V19 tmp10 [V19 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V20 cse0 [V20,T10] ( 3, 5 ) long -> r11 "CSE - aggressive" ; V21 cse1 [V21,T11] ( 2, 2.50) long -> r12 "CSE - aggressive" ; V22 cse2 [V22,T12] ( 3, 3 ) long -> r15 "CSE - aggressive" ; V23 rat0 [V23,T04] ( 3, 12 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 56 G_M51097_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rdi, rcx mov rbx, rdx mov esi, r8d mov rbp, r9 ;; bbWeight=1 PerfScore 10.25 G_M51097_IG02: mov rcx, gword ptr [rdi+8] mov r14, gword ptr [rdi+16] test r14, r14 jne SHORT G_M51097_IG10 ;; bbWeight=1 PerfScore 5.25 G_M51097_IG03: mov edx, esi cmp dword ptr [rcx], ecx call Tables:GetBucket(int):byref:this mov r14, gword ptr [rax] test r14, r14 je G_M51097_IG17 ;; bbWeight=0.50 PerfScore 3.25 G_M51097_IG04: cmp esi, dword ptr [r14+32] jne SHORT G_M51097_IG06 ;; bbWeight=4 PerfScore 12.00 G_M51097_IG05: mov rcx, gword ptr [rdi+24] mov rdx, gword ptr [r14+8] mov r8, rbx mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+48]EqualityComparer`1:Equals(__Canon,__Canon):bool:this test eax, eax jne SHORT G_M51097_IG08 ;; bbWeight=2 PerfScore 25.00 G_M51097_IG06: mov r14, gword ptr [r14+24] test r14, r14 jne SHORT G_M51097_IG04 ;; bbWeight=4 PerfScore 13.00 G_M51097_IG07: jmp G_M51097_IG17 ;; bbWeight=0.50 PerfScore 1.00 G_M51097_IG08: mov rdx, gword ptr [r14+16] mov rcx, rbp call CORINFO_HELP_CHECKED_ASSIGN_REF mov eax, 1 ;; bbWeight=0.50 PerfScore 1.75 G_M51097_IG09: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M51097_IG10: mov edx, esi cmp dword ptr [rcx], ecx call Tables:GetBucket(int):byref:this mov r15, qword ptr [rdi] mov rcx, r15 mov rcx, qword ptr [rcx+48] mov r12, qword ptr [rcx] mov r13, gword ptr [rax] test r13, r13 je SHORT G_M51097_IG17 ;; bbWeight=0.50 PerfScore 6.38 G_M51097_IG11: cmp esi, dword ptr [r13+32] jne SHORT G_M51097_IG16 ;; bbWeight=4 PerfScore 12.00 G_M51097_IG12: mov rax, gword ptr [r13+8] mov gword ptr [rsp+28H], rax mov rcx, r15 mov r11, qword ptr [r12+72] test r11, r11 je SHORT G_M51097_IG14 ;; bbWeight=2 PerfScore 13.00 G_M51097_IG13: mov rax, gword ptr [rsp+28H] jmp SHORT G_M51097_IG15 ;; bbWeight=1 PerfScore 3.00 G_M51097_IG14: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax mov rax, gword ptr [rsp+28H] ;; bbWeight=1 PerfScore 2.50 G_M51097_IG15: mov rcx, r14 mov rdx, rax mov r8, rbx call qword ptr [r11] test eax, eax jne SHORT G_M51097_IG19 ;; bbWeight=2 PerfScore 10.00 G_M51097_IG16: mov r13, gword ptr [r13+24] test r13, r13 jne SHORT G_M51097_IG11 ;; bbWeight=4 PerfScore 13.00 G_M51097_IG17: xor eax, eax mov qword ptr [rbp], rax ;; bbWeight=0.50 PerfScore 0.63 G_M51097_IG18: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M51097_IG19: mov rdx, gword ptr [r13+16] mov rcx, rbp call CORINFO_HELP_CHECKED_ASSIGN_REF mov eax, 1 ;; bbWeight=0.50 PerfScore 1.75 G_M51097_IG20: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 ; Total bytes of code 316, prolog size 33, PerfScore 173.23, (MethodHash=d7d93866) for method ConcurrentDictionary`2:TryGetValueInternal(__Canon,int,byref):bool:this ; ============================================================ ; Assembly listing for method Tables:GetBucket(int):byref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) int -> rdx ; V02 loc0 [V02,T05] ( 3, 3 ) ref -> rdi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "impRuntimeLookup slot" ;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V07 tmp4 [V07,T02] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V09 tmp6 [V09,T06] ( 3, 3 ) long -> r8 "spilling Runtime Lookup tree" ; V10 tmp7 [V10,T03] ( 2, 4 ) long -> rax "Inlining Arg" ; V11 tmp8 [V11,T04] ( 2, 4 ) int -> rcx "Inlining Arg" ; V12 tmp9 [V12,T08] ( 2, 2 ) int -> rbx "Inline stloc first use temp" ; V13 cse0 [V13,T07] ( 3, 2.25) long -> r8 "CSE - aggressive" ; ; Lcl frame size = 48 G_M11979_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 4.50 G_M11979_IG02: mov rdi, gword ptr [rsi+8] mov ecx, dword ptr [rdi+8] mov rax, qword ptr [rsi+32] mov edx, edx imul rdx, rax shr rdx, 32 inc rdx mov ecx, ecx imul rcx, rdx shr rcx, 32 mov ebx, ecx mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov r8, qword ptr [rdx+24] test r8, r8 je SHORT G_M11979_IG04 ;; bbWeight=1 PerfScore 24.25 G_M11979_IG03: jmp SHORT G_M11979_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M11979_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r8, rax ;; bbWeight=0.25 PerfScore 0.38 G_M11979_IG05: mov rcx, rdi mov edx, ebx call CORINFO_HELP_LDELEMA_REF nop ;; bbWeight=1 PerfScore 1.75 G_M11979_IG06: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 109, prolog size 12, PerfScore 45.03, (MethodHash=ed86d134) for method Tables:GetBucket(int):byref:this ; ============================================================ ; Assembly listing for method CharacteristicHelper:GetAllCharacteristicsCore(Type):IReadOnlyList`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 3 ) ref -> rsi class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T01] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 32 G_M9158_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M9158_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, 0xD1FFAB1E mov edx, 26 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, rbx xor rdx, rdx call HashSet`1:.ctor(IEqualityComparer`1):this mov rcx, rsi mov rdx, rdi mov r8, rbx call CharacteristicHelper:FillAllCharacteristicsCore(Type,List`1,HashSet`1) mov rcx, rdi ;; bbWeight=1 PerfScore 11.75 G_M9158_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp List`1:ToArray():ref:this ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 127, prolog size 7, PerfScore 31.70, (MethodHash=bd9ddc39) for method CharacteristicHelper:GetAllCharacteristicsCore(Type):IReadOnlyList`1 ; ============================================================ ; Assembly listing for method HashSet`1:.ctor(IEqualityComparer`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 5.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T07] ( 2, 1.50) long -> rcx "impRuntimeLookup slot" ; V04 tmp2 [V04,T06] ( 2, 2 ) ref -> rdi class-hnd exact "impAppendStmt" ; V05 tmp3 [V05,T04] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V06 tmp4 [V06,T03] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V07 tmp5 [V07,T05] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V08 cse0 [V08,T08] ( 3, 1.25) long -> rdx "CSE - moderate" ; V09 cse1 [V09,T09] ( 3, 1.25) long -> rdx "CSE - moderate" ; V10 cse2 [V10,T02] ( 5, 3.50) long -> rbx "CSE - aggressive" ; ; Lcl frame size = 48 G_M38813_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 4.75 G_M38813_IG02: test rdi, rdi je SHORT G_M38813_IG07 ;; bbWeight=1 PerfScore 1.25 G_M38813_IG03: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rbx, qword ptr [rdx] mov rdx, qword ptr [rbx+24] test rdx, rdx je SHORT G_M38813_IG05 ;; bbWeight=0.50 PerfScore 4.63 G_M38813_IG04: jmp SHORT G_M38813_IG06 ;; bbWeight=0.25 PerfScore 0.50 G_M38813_IG05: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M38813_IG06: mov rcx, rdx call EqualityComparer`1:get_Default():EqualityComparer`1 cmp rax, rdi je SHORT G_M38813_IG07 lea rcx, bword ptr [rsi+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 2.13 G_M38813_IG07: mov rcx, qword ptr [rsi] mov rcx, qword ptr [rcx+48] mov rbx, qword ptr [rcx] mov rcx, 0xD1FFAB1E cmp qword ptr [rbx], rcx jne SHORT G_M38813_IG12 ;; bbWeight=1 PerfScore 9.25 G_M38813_IG08: cmp gword ptr [rsi+24], 0 jne SHORT G_M38813_IG12 mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rbx+16] test rdx, rdx je SHORT G_M38813_IG10 ;; bbWeight=0.50 PerfScore 5.25 G_M38813_IG09: jmp SHORT G_M38813_IG11 ;; bbWeight=0.25 PerfScore 0.50 G_M38813_IG10: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M38813_IG11: mov rcx, rdx mov rdx, rdi call CORINFO_HELP_CHKCASTANY lea rcx, bword ptr [rsi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 1.63 G_M38813_IG12: nop ;; bbWeight=1 PerfScore 0.25 G_M38813_IG13: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 196, prolog size 12, PerfScore 53.23, (MethodHash=501a6862) for method HashSet`1:.ctor(IEqualityComparer`1):this ; ============================================================ ; Assembly listing for method CharacteristicHelper:FillAllCharacteristicsCore(Type,List`1,HashSet`1) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T11] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T00] ( 15, 28 ) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 7, 20 ) ref -> rdi class-hnd ; V03 loc0 [V03,T12] ( 3, 3 ) ref -> rbx class-hnd ; V04 loc1 [V04,T01] ( 14, 22 ) ref -> [rbp-0x38] EH do-not-enreg[] class-hnd EH-live ; V05 loc2 [V05,T04] ( 4, 12 ) ref -> r14 class-hnd ; V06 loc3 [V06,T03] ( 5, 14 ) ref -> rbx class-hnd ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T13] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ;* V09 tmp2 [V09,T22] ( 0, 0 ) ref -> zero-ref ; V10 tmp3 [V10,T17] ( 4, 3.50) ref -> r8 ; V11 tmp4 [V11,T14] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V12 tmp5 [V12,T21] ( 2, 2 ) ref -> rbx ; V13 tmp6 [V13,T18] ( 4, 3.50) ref -> r8 ; V14 tmp7 [V14,T09] ( 5, 5 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V15 tmp8 [V15,T10] ( 5, 5 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V16 tmp9 [V16,T19] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V17 tmp10 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V18 tmp11 [V18 ] ( 1, 4 ) int -> [rbp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V19 tmp12 [V19,T07] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V20 tmp13 [V20,T05] ( 4, 8 ) int -> rdx "Inline stloc first use temp" ; V21 tmp14 [V21,T20] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V22 tmp15 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V23 tmp16 [V23 ] ( 1, 4 ) int -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V24 tmp17 [V24,T08] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V25 tmp18 [V25,T06] ( 4, 8 ) int -> rdx "Inline stloc first use temp" ; V26 tmp19 [V26,T15] ( 2, 4 ) ref -> rcx "argument with side effect" ; V27 tmp20 [V27,T16] ( 2, 4 ) ref -> rcx "argument with side effect" ; V28 PSPSym [V28 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ;* V29 cse0 [V29,T23] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 64 G_M39659_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 lea rbp, [rsp+60H] xor rax, rax mov qword ptr [rbp-28H], rax mov qword ptr [rbp-30H], rax mov qword ptr [rbp-40H], rsp mov rsi, rdx mov rdi, r8 ;; bbWeight=1 PerfScore 9.50 G_M39659_IG02: call CharacteristicHelper:GetThisTypeCharacteristics(Type):IReadOnlyList`1 mov rbx, rax mov rcx, 0xD1FFAB1E mov edx, 0x430 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M39659_IG05 ;; bbWeight=1 PerfScore 6.25 G_M39659_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M39659_IG23 ;; bbWeight=0.50 PerfScore 2.50 G_M39659_IG04: lea rcx, bword ptr [r14+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [r14+24], rdx mov rcx, 0xD1FFAB1E mov rdx, r14 call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, r14 ;; bbWeight=0.50 PerfScore 2.25 G_M39659_IG05: mov rdx, rbx mov rcx, 0xD1FFAB1E call Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 mov rcx, rax mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-38H], rax ;; bbWeight=1 PerfScore 6.25 G_M39659_IG06: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M39659_IG11 ;; bbWeight=1 PerfScore 5.75 G_M39659_IG07: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerator`1:get_Current():__Canon:this mov r14, rax cmp dword ptr [rdi], edi lea r8, [rbp-28H] mov rcx, rdi mov rdx, r14 call HashSet`1:AddIfNotPresent(__Canon,byref):bool:this test eax, eax je SHORT G_M39659_IG10 ;; bbWeight=4 PerfScore 40.00 G_M39659_IG08: inc dword ptr [rsi+20] mov rcx, gword ptr [rsi+8] mov edx, dword ptr [rsi+16] cmp dword ptr [rcx+8], edx jbe SHORT G_M39659_IG09 lea r8d, [rdx+1] mov dword ptr [rsi+16], r8d mov r8, r14 call CORINFO_HELP_ARRADDR_ST jmp SHORT G_M39659_IG10 ;; bbWeight=2 PerfScore 33.50 G_M39659_IG09: mov rcx, rsi mov rdx, r14 call List`1:AddWithResize(__Canon):this ;; bbWeight=2 PerfScore 3.00 G_M39659_IG10: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M39659_IG07 ;; bbWeight=4 PerfScore 23.00 G_M39659_IG11: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M39659_IG14 ;; bbWeight=1 PerfScore 8.00 G_M39659_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M39659_IG23 ;; bbWeight=0.50 PerfScore 2.50 G_M39659_IG13: lea rcx, bword ptr [r14+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [r14+24], rdx mov rcx, 0xD1FFAB1E mov rdx, r14 call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, r14 ;; bbWeight=0.50 PerfScore 2.25 G_M39659_IG14: mov rdx, rbx mov rcx, 0xD1FFAB1E call Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 mov rcx, rax mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-38H], rax ;; bbWeight=1 PerfScore 6.25 G_M39659_IG15: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M39659_IG21 ;; bbWeight=1 PerfScore 5.75 G_M39659_IG16: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerator`1:get_Current():__Canon:this mov rbx, rax cmp dword ptr [rdi], edi lea r8, [rbp-30H] mov rcx, rdi mov rdx, rbx call HashSet`1:AddIfNotPresent(__Canon,byref):bool:this test eax, eax je SHORT G_M39659_IG20 ;; bbWeight=4 PerfScore 40.00 G_M39659_IG17: inc dword ptr [rsi+20] mov rcx, gword ptr [rsi+8] mov edx, dword ptr [rsi+16] cmp dword ptr [rcx+8], edx jbe SHORT G_M39659_IG18 lea r8d, [rdx+1] mov dword ptr [rsi+16], r8d mov r8, rbx call CORINFO_HELP_ARRADDR_ST jmp SHORT G_M39659_IG19 ;; bbWeight=2 PerfScore 33.50 G_M39659_IG18: mov rcx, rsi mov rdx, rbx call List`1:AddWithResize(__Canon):this ;; bbWeight=2 PerfScore 3.00 G_M39659_IG19: mov rcx, gword ptr [rbx+16] mov rdx, rsi mov r8, rdi call CharacteristicHelper:FillAllCharacteristicsCore(Type,List`1,HashSet`1) ;; bbWeight=2 PerfScore 7.00 G_M39659_IG20: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne G_M39659_IG16 ;; bbWeight=4 PerfScore 23.00 G_M39659_IG21: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this nop ;; bbWeight=1 PerfScore 4.75 G_M39659_IG22: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M39659_IG23: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 G_M39659_IG24: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=0 PerfScore 0.00 G_M39659_IG25: cmp gword ptr [rbp-38H], 0 je SHORT G_M39659_IG26 mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M39659_IG26: nop ;; bbWeight=0 PerfScore 0.00 G_M39659_IG27: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M39659_IG28: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=0 PerfScore 0.00 G_M39659_IG29: cmp gword ptr [rbp-38H], 0 je SHORT G_M39659_IG30 mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M39659_IG30: nop ;; bbWeight=0 PerfScore 0.00 G_M39659_IG31: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 902, prolog size 35, PerfScore 362.20, (MethodHash=f5526514) for method CharacteristicHelper:FillAllCharacteristicsCore(Type,List`1,HashSet`1) ; ============================================================ ; Assembly listing for method CharacteristicHelper:GetThisTypeCharacteristics(Type):IReadOnlyList`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 6, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 2 ) ref -> rbx class-hnd exact "impAppendStmt" ;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 32 G_M36418_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M36418_IG02: mov rcx, rsi call CharacteristicHelper:IsCharacteristicObjectSubclass(Type):bool test eax, eax jne SHORT G_M36418_IG05 ;; bbWeight=1 PerfScore 2.50 G_M36418_IG03: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M36418_IG04: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M36418_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rbx, gword ptr [rdx] lea rcx, bword ptr [rdi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, 0xD1FFAB1E mov qword ptr [rdi+32], rcx mov rcx, rbx mov rdx, rsi mov r8, rdi cmp dword ptr [rcx], ecx ;; bbWeight=0.50 PerfScore 5.38 G_M36418_IG06: add rsp, 32 pop rbx pop rsi pop rdi jmp ConcurrentDictionary`2:GetOrAdd(__Canon,Func`2):__Canon:this ;; bbWeight=0.50 PerfScore 1.88 ; Total bytes of code 137, prolog size 7, PerfScore 29.45, (MethodHash=6df571bd) for method CharacteristicHelper:GetThisTypeCharacteristics(Type):IReadOnlyList`1 ; ============================================================ ; Assembly listing for method CharacteristicHelper:GetThisTypeCharacteristicsCore(Type):IReadOnlyList`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rsi class-hnd ; V01 loc0 [V01,T36] ( 2, 2 ) ref -> r8 class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T10] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V04 tmp2 [V04,T11] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp3 [V05,T37] ( 2, 2 ) ref -> rdi ; V06 tmp4 [V06,T24] ( 4, 3.50) ref -> r8 ; V07 tmp5 [V07,T12] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V08 tmp6 [V08,T13] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V09 tmp7 [V09,T38] ( 2, 2 ) ref -> rdi ; V10 tmp8 [V10,T25] ( 4, 3.50) ref -> r8 ; V11 tmp9 [V11,T14] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V12 tmp10 [V12,T15] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V13 tmp11 [V13,T16] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ; V14 tmp12 [V14,T39] ( 2, 2 ) ref -> rdi ; V15 tmp13 [V15,T40] ( 2, 2 ) ref -> rsi ; V16 tmp14 [V16,T26] ( 4, 3.50) ref -> r8 ; V17 tmp15 [V17,T17] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V18 tmp16 [V18,T18] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ; V19 tmp17 [V19,T41] ( 2, 2 ) ref -> rdi ; V20 tmp18 [V20,T42] ( 2, 2 ) ref -> rsi ; V21 tmp19 [V21,T27] ( 4, 3.50) ref -> r8 ; V22 tmp20 [V22,T19] ( 2, 4 ) ref -> rdi class-hnd "dup spill" ; V23 tmp21 [V23,T20] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ; V24 tmp22 [V24,T43] ( 2, 2 ) ref -> rsi ; V25 tmp23 [V25,T28] ( 4, 3.50) ref -> rdi ; V26 tmp24 [V26,T21] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ;* V27 tmp25 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" ; V28 tmp26 [V28,T44] ( 2, 2 ) ref -> rbx ; V29 tmp27 [V29,T29] ( 4, 3.50) ref -> r8 ; V30 tmp28 [V30,T04] ( 5, 5 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V31 tmp29 [V31,T05] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V32 tmp30 [V32,T06] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V33 tmp31 [V33,T07] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V34 tmp32 [V34,T08] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V35 tmp33 [V35,T09] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V36 tmp34 [V36,T30] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V37 tmp35 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V38 tmp36 [V38,T31] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V39 tmp37 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V40 tmp38 [V40,T32] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V41 tmp39 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V42 tmp40 [V42,T33] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V43 tmp41 [V43 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V44 tmp42 [V44,T22] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ; V45 tmp43 [V45,T34] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V46 tmp44 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V47 tmp45 [V47,T01] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V48 tmp46 [V48,T35] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V49 tmp47 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V50 tmp48 [V50,T02] ( 3, 6 ) ref -> rax "argument with side effect" ; V51 tmp49 [V51,T03] ( 3, 6 ) ref -> rax "argument with side effect" ; V52 tmp50 [V52,T23] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V53 cse0 [V53,T45] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 48 G_M10265_IG01: push rdi push rsi push rbx sub rsp, 48 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M10265_IG02: mov rcx, rsi call IntrospectionExtensions:GetTypeInfo(Type):TypeInfo mov rcx, rax mov edx, 120 mov rax, qword ptr [rax] mov rax, qword ptr [rax+128] call gword ptr [rax+16]Type:GetFields(int):ref:this mov rdi, rax mov rcx, 0xD1FFAB1E mov edx, 0x430 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M10265_IG05 ;; bbWeight=1 PerfScore 14.00 G_M10265_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M10265_IG22 ;; bbWeight=0.50 PerfScore 2.50 G_M10265_IG04: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M10265_IG05: mov rdx, rdi mov rcx, 0xD1FFAB1E call Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 mov rdi, rax mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M10265_IG08 ;; bbWeight=1 PerfScore 5.25 G_M10265_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M10265_IG22 ;; bbWeight=0.50 PerfScore 2.50 G_M10265_IG07: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M10265_IG08: mov rdx, rdi mov rcx, 0xD1FFAB1E call Enumerable:Select(IEnumerable`1,Func`2):IEnumerable`1 mov rdi, rax mov rcx, rsi call IntrospectionExtensions:GetTypeInfo(Type):TypeInfo mov rcx, rax mov edx, 120 mov rax, qword ptr [rax] mov rax, qword ptr [rax+144] call gword ptr [rax]Type:GetProperties(int):ref:this mov rsi, rax mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M10265_IG11 ;; bbWeight=1 PerfScore 14.25 G_M10265_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M10265_IG22 ;; bbWeight=0.50 PerfScore 2.50 G_M10265_IG10: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M10265_IG11: mov rdx, rsi mov rcx, 0xD1FFAB1E call Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 mov rsi, rax mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M10265_IG14 ;; bbWeight=1 PerfScore 5.25 G_M10265_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M10265_IG22 ;; bbWeight=0.50 PerfScore 2.50 G_M10265_IG13: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M10265_IG14: mov rdx, rsi mov rcx, 0xD1FFAB1E call Enumerable:Select(IEnumerable`1,Func`2):IEnumerable`1 mov r8, rax mov rdx, rdi mov rcx, 0xD1FFAB1E call Enumerable:Concat(IEnumerable`1,IEnumerable`1):IEnumerable`1 mov rdx, rax mov rcx, 0xD1FFAB1E xor r8, r8 call Enumerable:Distinct(IEnumerable`1,IEqualityComparer`1):IEnumerable`1 mov rsi, rax mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] test rdi, rdi jne SHORT G_M10265_IG17 ;; bbWeight=1 PerfScore 8.75 G_M10265_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M10265_IG22 ;; bbWeight=0.50 PerfScore 2.50 G_M10265_IG16: lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 2.13 G_M10265_IG17: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax xor ecx, ecx mov dword ptr [rsp+20H], ecx mov gword ptr [rsp+28H], rcx mov rcx, rbx mov rdx, rsi mov r8, rdi xor r9, r9 call OrderedEnumerable`2:.ctor(IEnumerable`1,Func`2,IComparer`1,bool,OrderedEnumerable`1):this mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M10265_IG20 ;; bbWeight=1 PerfScore 9.25 G_M10265_IG18: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je SHORT G_M10265_IG22 ;; bbWeight=0.50 PerfScore 2.50 G_M10265_IG19: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rsi+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rsi ;; bbWeight=0.50 PerfScore 2.25 G_M10265_IG20: mov rdx, rbx mov rcx, 0xD1FFAB1E call Enumerable:ThenBy(IOrderedEnumerable`1,Func`2):IOrderedEnumerable`1 mov rdx, rax mov rcx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 2.00 G_M10265_IG21: add rsp, 48 pop rbx pop rsi pop rdi jmp Enumerable:ToArray(IEnumerable`1):ref ;; bbWeight=1 PerfScore 3.75 G_M10265_IG22: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 919, prolog size 7, PerfScore 186.28, (MethodHash=fc62d7e6) for method CharacteristicHelper:GetThisTypeCharacteristicsCore(Type):IReadOnlyList`1 ; ============================================================ ; Assembly listing for method RuntimeType:GetFields(int):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) int -> r9 ; V02 loc0 [V02 ] ( 2, 2 ) struct (24) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 72 G_M39206_IG01: sub rsp, 72 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 xor rax, rax mov qword ptr [rsp+40H], rax mov r9d, edx ;; bbWeight=1 PerfScore 3.08 G_M39206_IG02: xor edx, edx mov dword ptr [rsp+20H], edx lea rdx, [rsp+30H] xor r8, r8 call RuntimeType:GetFieldCandidates(String,int,bool):ListBuilder`1:this lea rcx, bword ptr [rsp+30H] mov rdx, 0xD1FFAB1E call ListBuilder`1:ToArray():ref:this nop ;; bbWeight=1 PerfScore 5.00 G_M39206_IG03: add rsp, 72 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 69, prolog size 21, PerfScore 16.43, (MethodHash=f97a66d9) for method RuntimeType:GetFields(int):ref:this ; ============================================================ ; Assembly listing for method RuntimeType:GetFieldCandidates(String,int,bool):ListBuilder`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T08] ( 5, 3.75) ref -> rbx this class-hnd ; V01 RetBuf [V01,T05] ( 7, 7 ) byref -> rdi ; V02 arg1 [V02 ] ( 5, 6 ) ref -> [rsp+0xB0] do-not-enreg[X] addr-exposed ld-addr-op class-hnd ; V03 arg2 [V03,T04] ( 6, 9 ) int -> rsi ; V04 arg3 [V04,T20] ( 1, 1 ) bool -> [rsp+0xC0] ; V05 loc0 [V05 ] ( 2, 3 ) bool -> [rsp+0x60] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc1 [V06 ] ( 2, 3 ) bool -> [rsp+0x58] do-not-enreg[X] addr-exposed ld-addr-op ; V07 loc2 [V07 ] ( 2, 2 ) int -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V08 loc3 [V08,T07] ( 3, 6 ) ref -> rbx class-hnd ; V09 loc4 [V09 ] ( 9, 10 ) struct (24) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V10 loc5 [V10,T00] ( 5, 17 ) int -> r14 ; V11 loc6 [V11,T02] ( 4, 12 ) ref -> r15 class-hnd ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V13 tmp1 [V13,T01] ( 2, 16 ) int -> rcx "impAppendStmt" ; V14 tmp2 [V14,T09] ( 5, 4 ) ref -> rcx class-hnd "Inline return value spill temp" ; V15 tmp3 [V15,T17] ( 3, 1 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V16 tmp4 [V16,T12] ( 2, 4 ) long -> rcx ld-addr-op "Inlining Arg" ;* V17 tmp5 [V17 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V18 tmp6 [V18,T19] ( 2, 1 ) long -> rcx "Inlining Arg" ;* V19 tmp7 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V20 tmp8 [V20,T18] ( 2, 1 ) byref -> rcx "Inlining Arg" ; V21 tmp9 [V21,T13] ( 2, 4 ) int -> rbx "Inlining Arg" ; V22 tmp10 [V22,T10] ( 2, 4 ) ref -> rbp class-hnd "Inlining Arg" ; V23 tmp11 [V23,T15] ( 2, 2 ) ref -> rbx class-hnd "Inline return value spill temp" ; V24 tmp12 [V24,T11] ( 2, 4 ) byref -> r8 "Inlining Arg" ; V25 tmp13 [V25,T16] ( 2, 2 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V26 tmp14 [V26,T14] ( 2, 4 ) int -> r8 "Inlining Arg" ; V27 tmp15 [V27 ] ( 3, 4 ) ref -> [rsp+0x38] do-not-enreg[X] addr-exposed V09._items(offs=0x00) P-DEP "field V09._items (fldOffset=0x0)" ; V28 tmp16 [V28 ] ( 3, 4 ) ref -> [rsp+0x40] do-not-enreg[X] addr-exposed V09._item(offs=0x08) P-DEP "field V09._item (fldOffset=0x8)" ; V29 tmp17 [V29 ] ( 3, 4 ) int -> [rsp+0x48] do-not-enreg[X] addr-exposed V09._count(offs=0x10) P-DEP "field V09._count (fldOffset=0x10)" ; V30 tmp18 [V30 ] ( 3, 4 ) int -> [rsp+0x4C] do-not-enreg[X] addr-exposed V09._capacity(offs=0x14) P-DEP "field V09._capacity (fldOffset=0x14)" ; V31 cse0 [V31,T03] ( 3, 12 ) int -> r8 "CSE - aggressive" ; V32 cse1 [V32,T06] ( 4, 7 ) int -> rbp "CSE - aggressive" ; ; Lcl frame size = 104 G_M41867_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 104 vxorps xmm4, xmm4 vmovdqu xmmword ptr [rsp+38H], xmm4 xor rax, rax mov qword ptr [rsp+48H], rax mov gword ptr [rsp+B0H], r8 mov rbx, rcx mov rdi, rdx mov esi, r9d ;; bbWeight=1 PerfScore 10.58 G_M41867_IG02: lea r8, [rsp+58H] mov qword ptr [rsp+20H], r8 lea r8, [rsp+50H] mov qword ptr [rsp+28H], r8 mov r8d, dword ptr [rsp+C0H] movzx r8, r8b lea rdx, [rsp+B0H] lea r9, [rsp+60H] mov ecx, esi call RuntimeType:FilterHelper(int,byref,bool,byref,byref,byref) mov rcx, qword ptr [rbx+16] test rcx, rcx je SHORT G_M41867_IG05 ;; bbWeight=1 PerfScore 9.75 G_M41867_IG03: mov rcx, qword ptr [rbx+16] mov rcx, gword ptr [rcx] test rcx, rcx je SHORT G_M41867_IG05 ;; bbWeight=0.25 PerfScore 1.31 G_M41867_IG04: jmp SHORT G_M41867_IG06 ;; bbWeight=0.50 PerfScore 1.00 G_M41867_IG05: mov rcx, rbx call RuntimeType:InitializeCache():RuntimeTypeCache:this mov rcx, rax ;; bbWeight=0.50 PerfScore 0.75 G_M41867_IG06: mov ebx, dword ptr [rsp+50H] mov rbp, gword ptr [rsp+B0H] cmp dword ptr [rcx], ecx lea r8, bword ptr [rcx+72] mov rdx, 0xD1FFAB1E call RuntimeTypeCache:GetMemberCache(byref):MemberInfoCache`1:this mov rcx, rax mov edx, ebx mov r8, rbp mov r9d, 2 cmp dword ptr [rcx], ecx call MemberInfoCache`1:GetMemberList(int,String,int):ref:this mov rbx, rax xor esi, 2 mov ebp, dword ptr [rbx+8] mov r8d, ebp xor rcx, rcx mov gword ptr [rsp+38H], rcx mov gword ptr [rsp+40H], rcx mov dword ptr [rsp+48H], ecx mov dword ptr [rsp+4CH], r8d xor r14d, r14d test ebp, ebp jle SHORT G_M41867_IG11 ;; bbWeight=1 PerfScore 18.25 G_M41867_IG07: movsxd r8, r14d mov r15, gword ptr [rbx+8*r8+16] mov r8d, dword ptr [r15+24] mov ecx, esi and ecx, r8d cmp ecx, r8d jne SHORT G_M41867_IG10 ;; bbWeight=4 PerfScore 24.00 G_M41867_IG08: cmp byte ptr [rsp+60H], 0 je SHORT G_M41867_IG09 mov r8d, dword ptr [rsp+58H] movzx r8, r8b mov rcx, r15 mov rdx, gword ptr [rsp+B0H] call RuntimeType:FilterApplyPrefixLookup(MemberInfo,String,bool):bool test eax, eax je SHORT G_M41867_IG10 ;; bbWeight=2 PerfScore 13.50 G_M41867_IG09: lea rcx, bword ptr [rsp+38H] mov r8, r15 mov rdx, 0xD1FFAB1E call ListBuilder`1:Add(__Canon):this ;; bbWeight=2 PerfScore 4.00 G_M41867_IG10: inc r14d cmp ebp, r14d jg SHORT G_M41867_IG07 ;; bbWeight=4 PerfScore 6.00 G_M41867_IG11: mov rdx, gword ptr [rsp+38H] mov rcx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF lea rcx, bword ptr [rdi+8] mov rdx, gword ptr [rsp+40H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov eax, dword ptr [rsp+48H] mov dword ptr [rdi+16], eax mov eax, dword ptr [rsp+4CH] mov dword ptr [rdi+20], eax mov rax, rdi ;; bbWeight=1 PerfScore 9.00 G_M41867_IG12: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 372, prolog size 46, PerfScore 139.80, (MethodHash=1fac5c74) for method RuntimeType:GetFieldCandidates(String,int,bool):ListBuilder`1:this ; ============================================================ ; Assembly listing for method MemberInfoCache`1:PopulateFields(Filter):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 12, 29 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 8, 52 ) byref -> rdi ; V02 loc0 [V02 ] ( 7, 25 ) struct (24) [rsp+0x38] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V03 loc1 [V03,T02] ( 11, 35 ) ref -> rbx class-hnd ; V04 loc2 [V04,T14] ( 4, 9 ) ref -> rbx class-hnd ; V05 loc3 [V05,T07] ( 6, 20.50) int -> rbp ; V06 loc4 [V06,T13] ( 5, 9.50) ref -> rbx class-hnd ; V07 loc5 [V07,T08] ( 6, 20.50) int -> rbp ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T09] ( 3, 16.96) ref -> rdx "CASTCLASS eval op1" ; V10 tmp2 [V10,T24] ( 3, 4.96) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V11 tmp3 [V11,T03] ( 5, 26.96) ref -> r8 class-hnd "spilling QMark2" ; V12 tmp4 [V12,T10] ( 3, 16.96) ref -> rdx "CASTCLASS eval op1" ; V13 tmp5 [V13,T25] ( 3, 4.96) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V14 tmp6 [V14,T04] ( 5, 26.96) ref -> r8 class-hnd "spilling QMark2" ; V15 tmp7 [V15,T11] ( 3, 16.96) ref -> rdx "CASTCLASS eval op1" ; V16 tmp8 [V16,T26] ( 3, 4.96) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V17 tmp9 [V17,T05] ( 5, 26.96) ref -> r8 class-hnd "spilling QMark2" ; V18 tmp10 [V18,T12] ( 3, 16.96) ref -> rdx "CASTCLASS eval op1" ; V19 tmp11 [V19,T27] ( 3, 4.96) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V20 tmp12 [V20,T06] ( 5, 26.96) ref -> r8 class-hnd "spilling QMark2" ; V21 tmp13 [V21,T28] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V22 tmp14 [V22,T29] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V23 tmp15 [V23,T21] ( 3, 6 ) ref -> rcx class-hnd "Inlining Arg" ; V24 tmp16 [V24,T31] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V25 tmp17 [V25,T30] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ; V26 tmp18 [V26,T32] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V27 tmp19 [V27 ] ( 12, 96 ) struct (24) [rsp+0x20] do-not-enreg[XSB] addr-exposed "by-value struct argument" ;* V28 tmp20 [V28,T15] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V29 tmp21 [V29,T16] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V30 tmp22 [V30,T17] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V31 tmp23 [V31,T18] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V32 tmp24 [V32,T19] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V33 tmp25 [V33,T20] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V34 cse0 [V34,T22] ( 3, 5 ) int -> r14 "CSE - moderate" ; V35 cse1 [V35,T23] ( 3, 5 ) int -> r14 "CSE - moderate" ; ; Lcl frame size = 80 G_M57314_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 80 vzeroupper vxorps xmm4, xmm4 vmovdqu xmmword ptr [rsp+38H], xmm4 xor rax, rax mov qword ptr [rsp+48H], rax mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 9.33 G_M57314_IG02: mov rcx, gword ptr [rsi+16] mov rbx, gword ptr [rcx+8] mov rcx, rbx call RuntimeTypeHandle:IsGenericVariable(RuntimeType):bool test eax, eax je SHORT G_M57314_IG04 ;; bbWeight=1 PerfScore 6.50 G_M57314_IG03: mov rcx, rbx cmp dword ptr [rcx], ecx call RuntimeType:GetBaseType():RuntimeType:this mov rbx, rax mov rcx, rbx call RuntimeTypeHandle:IsGenericVariable(RuntimeType):bool test eax, eax jne SHORT G_M57314_IG03 ;; bbWeight=4 PerfScore 24.00 G_M57314_IG04: test rbx, rbx je SHORT G_M57314_IG06 ;; bbWeight=1 PerfScore 1.25 G_M57314_IG05: vmovdqu xmm0, xmmword ptr [rdi] vmovdqu xmmword ptr [rsp+20H], xmm0 mov rcx, qword ptr [rdi+16] mov qword ptr [rsp+30H], rcx mov rcx, rsi lea rdx, bword ptr [rsp+20H] lea r9, [rsp+38H] mov r8, rbx call MemberInfoCache`1:PopulateRtFields(Filter,RuntimeType,byref):this vmovdqu xmm0, xmmword ptr [rdi] vmovdqu xmmword ptr [rsp+20H], xmm0 mov rcx, qword ptr [rdi+16] mov qword ptr [rsp+30H], rcx mov rcx, rsi lea rdx, bword ptr [rsp+20H] lea r9, [rsp+38H] mov r8, rbx call MemberInfoCache`1:PopulateLiteralFields(Filter,RuntimeType,byref):this mov rcx, rbx call RuntimeTypeHandle:GetBaseType(RuntimeType):RuntimeType mov rbx, rax test rbx, rbx jne SHORT G_M57314_IG05 ;; bbWeight=4 PerfScore 79.00 G_M57314_IG06: mov rcx, gword ptr [rsi+16] mov rcx, gword ptr [rcx+8] cmp dword ptr [rcx], ecx call RuntimeTypeHandle:IsGenericVariable(RuntimeType):bool test eax, eax je G_M57314_IG16 ;; bbWeight=1 PerfScore 8.25 G_M57314_IG07: mov rcx, gword ptr [rsi+16] mov rcx, gword ptr [rcx+8] cmp dword ptr [rcx], ecx call RuntimeType:GetBaseType():RuntimeType:this mov rcx, rax mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]RuntimeType:GetInterfaces():ref:this mov rbx, rax xor ebp, ebp mov r14d, dword ptr [rbx+8] test r14d, r14d jle G_M57314_IG24 ;; bbWeight=0.50 PerfScore 8.13 G_M57314_IG08: movsxd rcx, ebp mov rdx, gword ptr [rbx+8*rcx+16] mov r8, rdx test r8, r8 je SHORT G_M57314_IG11 ;; bbWeight=4 PerfScore 15.00 G_M57314_IG09: mov rcx, 0xD1FFAB1E cmp qword ptr [r8], rcx je SHORT G_M57314_IG11 ;; bbWeight=1 PerfScore 3.25 G_M57314_IG10: call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov r8, rax ;; bbWeight=0.48 PerfScore 0.60 G_M57314_IG11: vmovdqu xmm0, xmmword ptr [rdi] vmovdqu xmmword ptr [rsp+20H], xmm0 mov rcx, qword ptr [rdi+16] mov qword ptr [rsp+30H], rcx mov rcx, rsi lea rdx, bword ptr [rsp+20H] lea r9, [rsp+38H] call MemberInfoCache`1:PopulateLiteralFields(Filter,RuntimeType,byref):this movsxd rcx, ebp mov rdx, gword ptr [rbx+8*rcx+16] mov r8, rdx test r8, r8 je SHORT G_M57314_IG14 ;; bbWeight=4 PerfScore 48.00 G_M57314_IG12: mov rcx, 0xD1FFAB1E cmp qword ptr [r8], rcx je SHORT G_M57314_IG14 ;; bbWeight=1 PerfScore 3.25 G_M57314_IG13: call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov r8, rax ;; bbWeight=0.48 PerfScore 0.60 G_M57314_IG14: vmovdqu xmm0, xmmword ptr [rdi] vmovdqu xmmword ptr [rsp+20H], xmm0 mov rcx, qword ptr [rdi+16] mov qword ptr [rsp+30H], rcx mov rcx, rsi lea rdx, bword ptr [rsp+20H] lea r9, [rsp+38H] call MemberInfoCache`1:PopulateRtFields(Filter,RuntimeType,byref):this inc ebp cmp r14d, ebp jg G_M57314_IG08 ;; bbWeight=4 PerfScore 39.00 G_M57314_IG15: jmp G_M57314_IG24 ;; bbWeight=0.50 PerfScore 1.00 G_M57314_IG16: mov rcx, gword ptr [rsi+16] mov rcx, gword ptr [rcx+8] call RuntimeTypeHandle:GetInterfaces(RuntimeType):ref mov rbx, rax test rbx, rbx je G_M57314_IG24 xor ebp, ebp mov r14d, dword ptr [rbx+8] test r14d, r14d jle G_M57314_IG24 ;; bbWeight=0.50 PerfScore 5.00 G_M57314_IG17: movsxd rcx, ebp mov rdx, gword ptr [rbx+8*rcx+16] mov r8, rdx test r8, r8 je SHORT G_M57314_IG20 ;; bbWeight=4 PerfScore 15.00 G_M57314_IG18: mov rcx, 0xD1FFAB1E cmp qword ptr [r8], rcx je SHORT G_M57314_IG20 ;; bbWeight=1 PerfScore 3.25 G_M57314_IG19: call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov r8, rax ;; bbWeight=0.48 PerfScore 0.60 G_M57314_IG20: vmovdqu xmm0, xmmword ptr [rdi] vmovdqu xmmword ptr [rsp+20H], xmm0 mov rcx, qword ptr [rdi+16] mov qword ptr [rsp+30H], rcx mov rcx, rsi lea rdx, bword ptr [rsp+20H] lea r9, [rsp+38H] call MemberInfoCache`1:PopulateLiteralFields(Filter,RuntimeType,byref):this movsxd rcx, ebp mov rdx, gword ptr [rbx+8*rcx+16] mov r8, rdx test r8, r8 je SHORT G_M57314_IG23 ;; bbWeight=4 PerfScore 48.00 G_M57314_IG21: mov rcx, 0xD1FFAB1E cmp qword ptr [r8], rcx je SHORT G_M57314_IG23 ;; bbWeight=1 PerfScore 3.25 G_M57314_IG22: call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov r8, rax ;; bbWeight=0.48 PerfScore 0.60 G_M57314_IG23: vmovdqu xmm0, xmmword ptr [rdi] vmovdqu xmmword ptr [rsp+20H], xmm0 mov rcx, qword ptr [rdi+16] mov qword ptr [rsp+30H], rcx mov rcx, rsi lea rdx, bword ptr [rsp+20H] lea r9, [rsp+38H] call MemberInfoCache`1:PopulateRtFields(Filter,RuntimeType,byref):this inc ebp cmp r14d, ebp jg G_M57314_IG17 ;; bbWeight=4 PerfScore 39.00 G_M57314_IG24: lea rcx, bword ptr [rsp+38H] mov rdx, 0xD1FFAB1E call ListBuilder`1:ToArray():ref:this nop ;; bbWeight=1 PerfScore 2.00 G_M57314_IG25: add rsp, 80 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 658, prolog size 30, PerfScore 434.81, (MethodHash=db27201d) for method MemberInfoCache`1:PopulateFields(Filter):ref:this ; ============================================================ ; Assembly listing for method MemberInfoCache`1:PopulateRtFields(Filter,RuntimeType,byref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 3 ) ref -> rbx this class-hnd ; V01 arg1 [V01,T00] ( 4, 6 ) byref -> rsi ; V02 arg2 [V02,T01] ( 6, 4.50) ref -> rdi class-hnd ; V03 arg3 [V03,T03] ( 4, 3 ) byref -> r14 ; V04 loc0 [V04,T04] ( 3, 2.50) long -> r15 ; V05 loc1 [V05 ] ( 7, 4.50) int -> [rbp+0x30] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc2 [V06,T05] ( 4, 2 ) long -> r15 ; V07 loc3 [V07 ] ( 5, 2.50) ref -> [rbp+0x28] must-init pinned class-hnd ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T06] ( 2, 2 ) ref -> rax class-hnd exact "dup spill" ; V10 tmp2 [V10,T08] ( 2, 2 ) long -> r15 "Cast away GC" ; V11 tmp3 [V11 ] ( 4, 4 ) struct (24) [rbp+0x10] do-not-enreg[XSB] addr-exposed "by-value struct argument" ;* V12 tmp4 [V12,T09] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V13 tmp5 [V13,T07] ( 2, 2 ) ref -> rcx "argument with side effect" ; V14 GsCookie [V14 ] ( 1, 1 ) long -> [rbp+0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; ; Lcl frame size = 104 G_M13953_IG01: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 104 vzeroupper lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp+28H], rax mov rax, 0xD1FFAB1E mov qword ptr [rbp+08H], rax mov rbx, rcx mov rsi, rdx mov rdi, r8 mov r14, r9 ;; bbWeight=1 PerfScore 11.25 G_M13953_IG02: add rsp, 48 test dword ptr [rsp], esp sub rsp, 512 sub rsp, 48 lea r15, [rsp+30H] mov dword ptr [rbp+30H], 64 lea r8, [rbp+30H] mov rcx, rdi mov rdx, r15 call RuntimeTypeHandle:GetFields(RuntimeType,long,long):bool test eax, eax jne G_M13953_IG09 ;; bbWeight=1 PerfScore 7.50 G_M13953_IG03: mov edx, dword ptr [rbp+30H] movsxd rdx, edx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rbp+28H], rax mov r8, gword ptr [rbp+28H] cmp dword ptr [r8+8], 0 jne SHORT G_M13953_IG05 ;; bbWeight=0.50 PerfScore 3.75 G_M13953_IG04: xor r15, r15 jmp SHORT G_M13953_IG06 ;; bbWeight=0.50 PerfScore 1.13 G_M13953_IG05: mov r8, gword ptr [rbp+28H] cmp dword ptr [r8+8], 0 jbe G_M13953_IG13 mov r15, gword ptr [rbp+28H] add r15, 16 ;; bbWeight=0.50 PerfScore 2.63 G_M13953_IG06: lea r8, [rbp+30H] mov rcx, rdi mov rdx, r15 call RuntimeTypeHandle:GetFields(RuntimeType,long,long):bool vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rbp+10H], xmm0 mov rcx, qword ptr [rsi+16] mov qword ptr [rbp+20H], rcx mov gword ptr [rsp+20H], rdi mov bword ptr [rsp+28H], r14 mov rcx, rbx lea rdx, bword ptr [rbp+10H] mov r8, r15 mov r9d, dword ptr [rbp+30H] call MemberInfoCache`1:PopulateRtFields(Filter,long,int,RuntimeType,byref):this xor rcx, rcx mov gword ptr [rbp+28H], rcx mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+08H], rcx je SHORT G_M13953_IG07 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 8.75 G_M13953_IG07: nop ;; bbWeight=0.50 PerfScore 0.13 G_M13953_IG08: lea rsp, [rbp+38H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.25 G_M13953_IG09: cmp dword ptr [rbp+30H], 0 jle SHORT G_M13953_IG10 mov rcx, rbx vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rbp+10H], xmm0 mov rdx, qword ptr [rsi+16] mov qword ptr [rbp+20H], rdx mov gword ptr [rsp+20H], rdi mov bword ptr [rsp+28H], r14 lea rdx, bword ptr [rbp+10H] mov r8, r15 mov r9d, dword ptr [rbp+30H] call MemberInfoCache`1:PopulateRtFields(Filter,long,int,RuntimeType,byref):this ;; bbWeight=0.50 PerfScore 6.50 G_M13953_IG10: mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+08H], rcx je SHORT G_M13953_IG11 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.63 G_M13953_IG11: nop ;; bbWeight=0.50 PerfScore 0.13 G_M13953_IG12: lea rsp, [rbp+38H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.25 G_M13953_IG13: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 364, prolog size 40, PerfScore 84.68, (MethodHash=f07dc97e) for method MemberInfoCache`1:PopulateRtFields(Filter,RuntimeType,byref):this ; ============================================================ ; Assembly listing for method MemberInfoCache`1:PopulateRtFields(Filter,long,int,RuntimeType,byref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T10] ( 4, 5 ) ref -> rbp this class-hnd ; V01 arg1 [V01,T00] ( 10, 30 ) byref -> rsi ld-addr-op ; V02 arg2 [V02,T07] ( 3, 6 ) long -> rbx ; V03 arg3 [V03,T06] ( 4, 7 ) int -> rdi ; V04 arg4 [V04,T12] ( 5, 6.50) ref -> r14 class-hnd ; V05 arg5 [V05,T37] ( 1, 2 ) byref -> r15 ; V06 loc0 [V06,T33] ( 2, 3 ) bool -> r12 ; V07 loc1 [V07,T20] ( 3, 5 ) bool -> r13 ; V08 loc2 [V08,T03] ( 5, 17 ) int -> [rsp+0x54] ;* V09 loc3 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ; V10 loc4 [V10,T15] ( 3, 6 ) int -> rax ; V11 loc5 [V11,T16] ( 3, 6 ) int -> rcx ; V12 loc6 [V12,T26] ( 2, 4 ) bool -> rcx ; V13 loc7 [V13,T17] ( 3, 6 ) bool -> [rsp+0x50] ; V14 loc8 [V14,T27] ( 2, 4 ) int -> [rsp+0x4C] ;* V15 loc9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V16 OutArgs [V16 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V17 tmp1 [V17,T34] ( 3, 2 ) int -> rdx ; V18 tmp2 [V18,T01] ( 7, 28 ) ref -> [rsp+0x28] class-hnd exact "NewObj constructor temp" ;* V19 tmp3 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V20 tmp4 [V20 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V21 tmp5 [V21,T25] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ; V22 tmp6 [V22,T04] ( 2, 16 ) long -> r8 "Inlining Arg" ; V23 tmp7 [V23,T18] ( 2, 4 ) bool -> rdx "Inline return value spill temp" ;* V24 tmp8 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ;* V25 tmp9 [V25 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V26 tmp10 [V26,T09] ( 2, 8 ) long -> rax "Inlining Arg" ; V27 tmp11 [V27,T11] ( 4, 7 ) long -> [rsp+0x40] "Inline stloc first use temp" ; V28 tmp12 [V28,T31] ( 3, 3 ) int -> rax "Inline stloc first use temp" ; V29 tmp13 [V29,T14] ( 4, 6 ) bool -> r9 "Inline stloc first use temp" ;* V30 tmp14 [V30 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V31 tmp15 [V31,T32] ( 3, 3 ) bool -> r9 "Inline return value spill temp" ;* V32 tmp16 [V32 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V33 tmp17 [V33,T21] ( 4, 4 ) bool -> r9 "Inline return value spill temp" ;* V34 tmp18 [V34 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V35 tmp19 [V35,T08] ( 2, 8 ) ref -> [rsp+0x20] class-hnd "Inlining Arg" ;* V36 tmp20 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ; V37 tmp21 [V37,T02] ( 7, 16 ) long -> [rsp+0x38] V09.m_handle(offs=0x00) P-INDEP "field V09.m_handle (fldOffset=0x0)" ;* V38 tmp22 [V38,T38] ( 0, 0 ) long -> zero-ref V19.m_handle(offs=0x00) P-INDEP "field V19.m_handle (fldOffset=0x0)" ; V39 tmp23 [V39,T28] ( 2, 4 ) long -> rcx V20.m_pStringHeap(offs=0x00) P-INDEP "field V20.m_pStringHeap (fldOffset=0x0)" ; V40 tmp24 [V40,T29] ( 2, 4 ) int -> rax V20.m_StringHeapByteLength(offs=0x08) P-INDEP "field V20.m_StringHeapByteLength (fldOffset=0x8)" ;* V41 tmp25 [V41,T39] ( 0, 0 ) long -> zero-ref V24.m_handle(offs=0x00) P-INDEP "field V24.m_handle (fldOffset=0x0)" ; V42 tmp26 [V42,T30] ( 2, 4 ) long -> rcx V25.m_pStringHeap(offs=0x00) P-INDEP "field V25.m_pStringHeap (fldOffset=0x0)" ; V43 tmp27 [V43,T22] ( 3, 4 ) int -> rax V25.m_StringHeapByteLength(offs=0x08) P-INDEP "field V25.m_StringHeapByteLength (fldOffset=0x8)" ; V44 tmp28 [V44,T23] ( 3, 4 ) long -> rcx V30.m_pStringHeap(offs=0x00) P-INDEP "field V30.m_pStringHeap (fldOffset=0x0)" ; V45 tmp29 [V45,T24] ( 3, 4 ) int -> rax V30.m_StringHeapByteLength(offs=0x08) P-INDEP "field V30.m_StringHeapByteLength (fldOffset=0x8)" ; V46 tmp30 [V46,T35] ( 2, 2 ) long -> rcx V32.m_pStringHeap(offs=0x00) P-INDEP "field V32.m_pStringHeap (fldOffset=0x0)" ;* V47 tmp31 [V47 ] ( 0, 0 ) int -> zero-ref V32.m_StringHeapByteLength(offs=0x08) P-INDEP "field V32.m_StringHeapByteLength (fldOffset=0x8)" ; V48 tmp32 [V48,T36] ( 2, 2 ) long -> rcx V34.m_pStringHeap(offs=0x00) P-INDEP "field V34.m_pStringHeap (fldOffset=0x0)" ;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref V34.m_StringHeapByteLength(offs=0x08) P-INDEP "field V34.m_StringHeapByteLength (fldOffset=0x8)" ; V50 tmp34 [V50,T19] ( 3, 6 ) long -> [rsp+0x30] V36.m_handle(offs=0x00) P-INDEP "field V36.m_handle (fldOffset=0x0)" ; V51 cse0 [V51,T13] ( 7, 6.48) int -> r8 "CSE - moderate" ; V52 cse1 [V52,T05] ( 3, 10 ) int -> rdx "CSE - aggressive" ; ; Lcl frame size = 88 G_M12120_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 88 mov rbp, rcx mov rsi, rdx mov rbx, r8 mov edi, r9d mov r14, gword ptr [rsp+C0H] mov r15, bword ptr [rsp+C8H] ;; bbWeight=1 PerfScore 11.25 G_M12120_IG02: mov rcx, r14 call RuntimeTypeHandle:HasInstantiation(RuntimeType):bool test eax, eax je SHORT G_M12120_IG04 ;; bbWeight=1 PerfScore 2.50 G_M12120_IG03: mov rcx, r14 call RuntimeTypeHandle:ContainsGenericVariables(RuntimeType):bool test eax, eax sete dl movzx rdx, dl jmp SHORT G_M12120_IG05 ;; bbWeight=0.50 PerfScore 2.38 G_M12120_IG04: xor edx, edx ;; bbWeight=0.50 PerfScore 0.13 G_M12120_IG05: movzx r12, dl mov rdx, gword ptr [rbp+16] cmp r14, gword ptr [rdx+8] setne r13b movzx r13, r13b xor eax, eax test edi, edi jle G_M12120_IG25 ;; bbWeight=1 PerfScore 7.00 G_M12120_IG06: mov dword ptr [rsp+54H], eax movsxd rdx, eax mov r8, qword ptr [rbx+8*rdx] mov edx, dword ptr [rsi+16] cmp edx, 1 je SHORT G_M12120_IG08 ;; bbWeight=4 PerfScore 26.00 G_M12120_IG07: cmp edx, 2 sete dl movzx rdx, dl test edx, edx je G_M12120_IG21 ;; bbWeight=2 PerfScore 5.50 G_M12120_IG08: mov edx, dword ptr [rsi+20] mov qword ptr [rsp+38H], r8 mov rcx, r8 call RuntimeFieldHandle:MatchesNameHash(RuntimeFieldHandleInternal,int):bool test eax, eax je G_M12120_IG24 mov rcx, qword ptr [rsp+38H] call RuntimeFieldHandle:_GetUtf8Name(RuntimeFieldHandleInternal):long mov rcx, rax test rcx, rcx je SHORT G_M12120_IG11 ;; bbWeight=2 PerfScore 18.00 G_M12120_IG09: mov qword ptr [rsp+40H], rcx xor edx, edx mov r8d, 0xD1FFAB1E call SpanHelpers:IndexOf(byref,ubyte,int):int test eax, eax jl G_M12120_IG26 ;; bbWeight=1 PerfScore 3.75 G_M12120_IG10: jmp SHORT G_M12120_IG12 ;; bbWeight=1 PerfScore 2.00 G_M12120_IG11: xor eax, eax mov qword ptr [rsp+40H], rcx ;; bbWeight=1 PerfScore 1.25 G_M12120_IG12: mov rcx, qword ptr [rsp+40H] mov r9d, 1 cmp dword ptr [rsi+16], 1 jne SHORT G_M12120_IG16 ;; bbWeight=2 PerfScore 8.50 G_M12120_IG13: mov r8d, dword ptr [rsi+8] cmp eax, r8d je SHORT G_M12120_IG14 xor r9d, r9d jmp SHORT G_M12120_IG15 ;; bbWeight=1 PerfScore 5.50 G_M12120_IG14: mov r8d, r8d mov rdx, qword ptr [rsi] call SpanHelpers:SequenceEqual(byref,byref,long):bool mov r9d, eax ;; bbWeight=1 PerfScore 3.50 G_M12120_IG15: jmp SHORT G_M12120_IG20 ;; bbWeight=1 PerfScore 2.00 G_M12120_IG16: cmp dword ptr [rsi+16], 2 jne SHORT G_M12120_IG20 mov r8d, dword ptr [rsi+8] cmp eax, r8d je SHORT G_M12120_IG17 xor r9d, r9d jmp SHORT G_M12120_IG20 ;; bbWeight=1 PerfScore 8.50 G_M12120_IG17: test r8d, r8d je SHORT G_M12120_IG19 ;; bbWeight=0.48 PerfScore 0.60 G_M12120_IG18: mov rdx, qword ptr [rsi] call MdUtf8String:EqualsCaseInsensitive(long,long,int):bool mov r9d, eax jmp SHORT G_M12120_IG20 ;; bbWeight=1 PerfScore 5.25 G_M12120_IG19: mov r9d, 1 ;; bbWeight=1 PerfScore 0.25 G_M12120_IG20: test r9d, r9d mov r8, qword ptr [rsp+38H] je G_M12120_IG24 ;; bbWeight=2 PerfScore 4.50 G_M12120_IG21: mov qword ptr [rsp+38H], r8 mov rcx, r8 call RuntimeFieldHandle:GetAttributes(RuntimeFieldHandleInternal):int mov ecx, eax and ecx, 7 test r13d, r13d je SHORT G_M12120_IG22 cmp ecx, 1 je G_M12120_IG24 ;; bbWeight=2 PerfScore 10.50 G_M12120_IG22: cmp ecx, 6 sete cl movzx rcx, cl test al, 16 setne al movzx rax, al mov edx, r13d mov dword ptr [rsp+50H], eax mov r8d, eax call RuntimeType:FilterPreCalculate(bool,bool,bool):int mov dword ptr [rsp+4CH], eax mov ecx, dword ptr [rsp+50H] test r12d, ecx je SHORT G_M12120_IG23 mov rcx, qword ptr [rsp+38H] mov rdx, r14 call RuntimeFieldHandle:GetStaticFieldForGenericType(RuntimeFieldHandleInternal,RuntimeType):RuntimeFieldHandleInternal mov qword ptr [rsp+38H], rax ;; bbWeight=2 PerfScore 24.00 G_M12120_IG23: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r8, qword ptr [rsp+38H] mov qword ptr [rsp+30H], r8 mov r9, gword ptr [rbp+16] mov gword ptr [rsp+20H], r9 mov edx, dword ptr [rsp+4CH] mov dword ptr [rax+24], edx mov gword ptr [rsp+28H], rax lea rcx, bword ptr [rax+16] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+28H] lea rcx, bword ptr [rax+8] mov rdx, gword ptr [rsp+20H] call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+28H] mov rcx, qword ptr [rsp+30H] mov qword ptr [rax+48], rcx call RuntimeFieldHandle:GetAttributes(RuntimeFieldHandleInternal):int mov r8, gword ptr [rsp+28H] mov dword ptr [r8+28], eax mov rcx, r15 mov rdx, 0xD1FFAB1E call ListBuilder`1:Add(__Canon):this ;; bbWeight=2 PerfScore 44.00 G_M12120_IG24: mov eax, dword ptr [rsp+54H] inc eax cmp eax, edi jl G_M12120_IG06 ;; bbWeight=4 PerfScore 10.00 G_M12120_IG25: add rsp, 88 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M12120_IG26: call String:ThrowMustBeNullTerminatedString() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 579, prolog size 44, PerfScore 270.00, (MethodHash=75a9d0a7) for method MemberInfoCache`1:PopulateRtFields(Filter,long,int,RuntimeType,byref):this ; ============================================================ ; Assembly listing for method MemberInfoCache`1:PopulateLiteralFields(Filter,RuntimeType,byref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T21] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T07] ( 3, 6 ) byref -> rdx ld-addr-op ; V02 arg2 [V02,T22] ( 3, 3 ) ref -> r8 class-hnd ; V03 arg3 [V03,T23] ( 3, 3 ) byref -> r9 ; V04 loc0 [V04,T40] ( 3, 2.50) int -> r14 ;* V05 loc1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V06 loc2 [V06 ] ( 6, 13 ) struct (80) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ptr unsafe-buffer ; V07 loc3 [V07,T01] ( 7, 18.50) int -> r14 ; V08 loc4 [V08,T03] ( 4, 12 ) int -> r12 ; V09 loc5 [V09,T02] ( 5, 16 ) int -> r13 ld-addr-op ; V10 loc6 [V10,T08] ( 3, 8 ) int -> [rsp+0xAC] ; V11 loc7 [V11,T18] ( 3, 6 ) bool -> [rsp+0xA8] ptr ; V12 loc8 [V12,T29] ( 2, 4 ) bool -> rcx ; V13 loc9 [V13,T30] ( 2, 4 ) bool -> r8 ; V14 loc10 [V14,T31] ( 2, 4 ) int -> [rsp+0xA4] ;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ptr ; V16 loc12 [V16,T32] ( 2, 4 ) bool -> r8 ;* V17 loc13 [V17 ] ( 0, 0 ) struct (16) zero-ref ; V18 tmp0 [V18 ] ( 1, 1 ) int -> [rsp+0xA0] do-not-enreg[X] addr-exposed "GSCookie dummy" ; V19 OutArgs [V19 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V20 tmp2 [V20 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V21 tmp3 [V21,T00] ( 8, 32 ) ref -> [rsp+0x78] class-hnd exact ptr "NewObj constructor temp" ;* V22 tmp4 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ;* V23 tmp5 [V23 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V24 tmp6 [V24,T36] ( 2, 2 ) long -> r15 "Inlining Arg" ; V25 tmp7 [V25,T09] ( 3, 8 ) int -> r12 "Inline return value spill temp" ; V26 tmp8 [V26 ] ( 3, 8 ) byref -> [rsp+0x98] must-init pinned ptr "Inline stloc first use temp" ;* V27 tmp9 [V27 ] ( 0, 0 ) long -> zero-ref ptr "Inline stloc first use temp" ; V28 tmp10 [V28 ] ( 2, 8 ) int -> [rsp+0x90] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V29 tmp11 [V29,T10] ( 2, 8 ) ref -> r8 class-hnd "Inlining Arg" ; V30 tmp12 [V30,T19] ( 2, 4 ) bool -> r8 "Inline return value spill temp" ; V31 tmp13 [V31 ] ( 2, 4 ) long -> [rsp+0x88] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V32 tmp14 [V32 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V33 tmp15 [V33,T12] ( 2, 8 ) long -> rax "Inlining Arg" ; V34 tmp16 [V34,T14] ( 4, 7 ) long -> [rsp+0x80] "Inline stloc first use temp" ; V35 tmp17 [V35,T37] ( 3, 3 ) int -> rax "Inline stloc first use temp" ; V36 tmp18 [V36,T17] ( 4, 6 ) bool -> r9 "Inline stloc first use temp" ;* V37 tmp19 [V37 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V38 tmp20 [V38,T38] ( 3, 3 ) bool -> r9 "Inline return value spill temp" ;* V39 tmp21 [V39 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V40 tmp22 [V40,T25] ( 4, 4 ) bool -> r9 "Inline return value spill temp" ;* V41 tmp23 [V41 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V42 tmp24 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V43 tmp25 [V43,T11] ( 2, 8 ) ref -> [rsp+0x70] class-hnd ptr "Inlining Arg" ;* V44 tmp26 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ;* V45 tmp27 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr "Inlining Arg" ;* V46 tmp28 [V46 ] ( 0, 0 ) ref -> zero-ref ptr V05.m_keepalive(offs=0x00) P-INDEP "field V05.m_keepalive (fldOffset=0x0)" ; V47 tmp29 [V47,T15] ( 4, 7 ) long -> r15 V05.m_metadataImport2(offs=0x08) P-INDEP "field V05.m_metadataImport2 (fldOffset=0x8)" ; V48 tmp30 [V48,T33] ( 2, 4 ) long -> rcx V17.m_pStringHeap(offs=0x00) P-INDEP "field V17.m_pStringHeap (fldOffset=0x0)" ; V49 tmp31 [V49,T34] ( 2, 4 ) int -> rax V17.m_StringHeapByteLength(offs=0x08) P-INDEP "field V17.m_StringHeapByteLength (fldOffset=0x8)" ;* V50 tmp32 [V50 ] ( 0, 0 ) ref -> zero-ref ptr V22.m_type(offs=0x00) P-INDEP "field V22.m_type (fldOffset=0x0)" ;* V51 tmp33 [V51 ] ( 0, 0 ) ref -> zero-ref ptr V23.m_keepalive(offs=0x00) P-INDEP "field V23.m_keepalive (fldOffset=0x0)" ;* V52 tmp34 [V52,T43] ( 0, 0 ) long -> zero-ref V23.m_metadataImport2(offs=0x08) P-INDEP "field V23.m_metadataImport2 (fldOffset=0x8)" ; V53 tmp35 [V53,T35] ( 2, 4 ) long -> rcx V32.m_pStringHeap(offs=0x00) P-INDEP "field V32.m_pStringHeap (fldOffset=0x0)" ; V54 tmp36 [V54,T26] ( 3, 4 ) int -> rax V32.m_StringHeapByteLength(offs=0x08) P-INDEP "field V32.m_StringHeapByteLength (fldOffset=0x8)" ; V55 tmp37 [V55,T27] ( 3, 4 ) long -> rcx V37.m_pStringHeap(offs=0x00) P-INDEP "field V37.m_pStringHeap (fldOffset=0x0)" ; V56 tmp38 [V56,T28] ( 3, 4 ) int -> rax V37.m_StringHeapByteLength(offs=0x08) P-INDEP "field V37.m_StringHeapByteLength (fldOffset=0x8)" ; V57 tmp39 [V57,T41] ( 2, 2 ) long -> rcx V39.m_pStringHeap(offs=0x00) P-INDEP "field V39.m_pStringHeap (fldOffset=0x0)" ;* V58 tmp40 [V58 ] ( 0, 0 ) int -> zero-ref V39.m_StringHeapByteLength(offs=0x08) P-INDEP "field V39.m_StringHeapByteLength (fldOffset=0x8)" ; V59 tmp41 [V59,T42] ( 2, 2 ) long -> rcx V41.m_pStringHeap(offs=0x00) P-INDEP "field V41.m_pStringHeap (fldOffset=0x0)" ;* V60 tmp42 [V60 ] ( 0, 0 ) int -> zero-ref V41.m_StringHeapByteLength(offs=0x08) P-INDEP "field V41.m_StringHeapByteLength (fldOffset=0x8)" ;* V61 tmp43 [V61 ] ( 0, 0 ) ref -> zero-ref ptr V42.m_type(offs=0x00) P-INDEP "field V42.m_type (fldOffset=0x0)" ;* V62 tmp44 [V62 ] ( 0, 0 ) ref -> zero-ref ptr V44.m_type(offs=0x00) P-INDEP "field V44.m_type (fldOffset=0x0)" ; V63 tmp45 [V63,T04] ( 3, 12 ) ref -> r8 "arr expr" ; V64 tmp46 [V64,T13] ( 2, 8 ) long -> r8 "Cast away GC" ; V65 GsCookie [V65 ] ( 1, 1 ) long -> [rsp+0xB0] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V66 tmp48 [V66,T24] ( 3, 5 ) ref -> rbp this "shadowVar" ; V67 tmp49 [V67,T05] ( 8, 10 ) byref -> rbx "shadowVar" ; V68 tmp50 [V68,T06] ( 6, 8.50) ref -> rdi "shadowVar" ; V69 tmp51 [V69,T39] ( 2, 3 ) byref -> rsi "shadowVar" ; V70 cse0 [V70,T16] ( 7, 6.48) int -> r8 "CSE - moderate" ; V71 cse1 [V71,T20] ( 3, 6 ) int -> r8 "CSE - moderate" ; ; Lcl frame size = 184 G_M38892_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 184 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 mov rax, -96 vmovdqa xmmword ptr [rsp+rax+A0H], xmm4 vmovdqa xmmword ptr [rsp+rax+B0H], xmm4 vmovdqa xmmword ptr [rsp+rax+C0H], xmm4 add rax, 48 jne SHORT -5 instr mov rax, 0xD1FFAB1E mov qword ptr [rsp+B0H], rax ;; bbWeight=1 PerfScore 16.33 G_M38892_IG02: mov rsi, r9 mov rdi, r8 mov rbx, rdx mov rbp, rcx ;; bbWeight=1 PerfScore 1.00 G_M38892_IG03: mov rcx, rdi call RuntimeTypeHandle:GetToken(RuntimeType):int mov r14d, eax test r14d, 0xD1FFAB1E jne SHORT G_M38892_IG07 ;; bbWeight=1 PerfScore 2.75 G_M38892_IG04: mov rcx, 0xD1FFAB1E cmp qword ptr [rsp+B0H], rcx je SHORT G_M38892_IG05 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.63 G_M38892_IG05: nop ;; bbWeight=0.50 PerfScore 0.13 G_M38892_IG06: add rsp, 184 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M38892_IG07: mov rcx, rdi call RuntimeTypeHandle:_GetMetadataImport(RuntimeType):long mov r15, rax lea r9, [rsp+20H] mov rcx, r15 mov r8d, r14d mov edx, 0xD1FFAB1E call MetadataImport:_Enum(long,int,int,byref) xor r14d, r14d cmp dword ptr [rsp+28H], 0 jle G_M38892_IG31 ;; bbWeight=0.50 PerfScore 3.00 G_M38892_IG08: cmp gword ptr [rsp+20H], 0 je SHORT G_M38892_IG10 ;; bbWeight=4 PerfScore 8.00 G_M38892_IG09: mov r8, gword ptr [rsp+20H] cmp r14d, dword ptr [r8+8] jae G_M38892_IG35 movsxd rcx, r14d mov r12d, dword ptr [r8+4*rcx+16] jmp SHORT G_M38892_IG11 ;; bbWeight=2 PerfScore 16.50 G_M38892_IG10: lea r8, bword ptr [rsp+30H] mov bword ptr [rsp+98H], r8 mov r8, bword ptr [rsp+98H] movsxd rcx, r14d mov r12d, dword ptr [r8+4*rcx] ;; bbWeight=2 PerfScore 9.50 G_M38892_IG11: xor r8, r8 mov bword ptr [rsp+98H], r8 lea r8, [rsp+90H] mov rcx, r15 mov edx, r12d call MetadataImport:_GetFieldDefProps(long,int,byref) mov r13d, dword ptr [rsp+90H] mov eax, r13d and eax, 7 test r13b, 64 je G_M38892_IG30 ;; bbWeight=4 PerfScore 24.00 G_M38892_IG12: mov r8, gword ptr [rbp+16] cmp rdi, gword ptr [r8+8] setne r9b movzx r9, r9b mov dword ptr [rsp+A8H], r9d test r9d, r9d mov r9d, dword ptr [rsp+A8H] je SHORT G_M38892_IG13 mov dword ptr [rsp+ACH], eax cmp eax, 1 sete r8b movzx r8, r8b test r8d, r8d mov eax, dword ptr [rsp+ACH] jne G_M38892_IG30 ;; bbWeight=2 PerfScore 26.50 G_M38892_IG13: mov r8d, dword ptr [rbx+16] cmp r8d, 1 je SHORT G_M38892_IG18 cmp r8d, 2 sete r8b movzx r8, r8b test r8d, r8d je G_M38892_IG29 ;; bbWeight=2 PerfScore 12.00 G_M38892_IG14: mov dword ptr [rsp+ACH], eax mov dword ptr [rsp+A8H], r9d ;; bbWeight=1 PerfScore 2.00 G_M38892_IG15: lea r8, [rsp+88H] mov rcx, r15 mov edx, r12d call MetadataImport:_GetName(long,int,long) mov rax, qword ptr [rsp+88H] mov rcx, rax test rcx, rcx je SHORT G_M38892_IG19 ;; bbWeight=2 PerfScore 9.00 G_M38892_IG16: mov qword ptr [rsp+80H], rcx xor edx, edx mov r8d, 0xD1FFAB1E call SpanHelpers:IndexOf(byref,ubyte,int):int test eax, eax jl G_M38892_IG34 ;; bbWeight=1 PerfScore 3.75 G_M38892_IG17: jmp SHORT G_M38892_IG20 ;; bbWeight=1 PerfScore 2.00 G_M38892_IG18: mov dword ptr [rsp+ACH], eax mov dword ptr [rsp+A8H], r9d jmp SHORT G_M38892_IG15 ;; bbWeight=1 PerfScore 4.00 G_M38892_IG19: xor eax, eax mov qword ptr [rsp+80H], rcx ;; bbWeight=1 PerfScore 1.25 G_M38892_IG20: mov rcx, qword ptr [rsp+80H] mov r9d, 1 cmp dword ptr [rbx+16], 1 jne SHORT G_M38892_IG24 ;; bbWeight=2 PerfScore 8.50 G_M38892_IG21: mov r8d, dword ptr [rbx+8] cmp eax, r8d je SHORT G_M38892_IG22 xor r9d, r9d jmp SHORT G_M38892_IG23 ;; bbWeight=1 PerfScore 5.50 G_M38892_IG22: mov r8d, r8d mov rdx, qword ptr [rbx] call SpanHelpers:SequenceEqual(byref,byref,long):bool mov r9d, eax ;; bbWeight=1 PerfScore 3.50 G_M38892_IG23: jmp SHORT G_M38892_IG28 ;; bbWeight=1 PerfScore 2.00 G_M38892_IG24: cmp dword ptr [rbx+16], 2 jne SHORT G_M38892_IG28 mov r8d, dword ptr [rbx+8] cmp eax, r8d je SHORT G_M38892_IG25 xor r9d, r9d jmp SHORT G_M38892_IG28 ;; bbWeight=1 PerfScore 8.50 G_M38892_IG25: test r8d, r8d je SHORT G_M38892_IG27 ;; bbWeight=0.48 PerfScore 0.60 G_M38892_IG26: mov rdx, qword ptr [rbx] call MdUtf8String:EqualsCaseInsensitive(long,long,int):bool mov r9d, eax jmp SHORT G_M38892_IG28 ;; bbWeight=1 PerfScore 5.25 G_M38892_IG27: mov r9d, 1 ;; bbWeight=1 PerfScore 0.25 G_M38892_IG28: test r9d, r9d mov eax, dword ptr [rsp+ACH] mov r9d, dword ptr [rsp+A8H] je G_M38892_IG30 ;; bbWeight=2 PerfScore 6.50 G_M38892_IG29: cmp eax, 6 sete cl movzx rcx, cl test r13b, 16 setne r8b movzx r8, r8b mov edx, r9d call RuntimeType:FilterPreCalculate(bool,bool,bool):int mov dword ptr [rsp+A4H], eax cmp dword ptr [rdi], edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r8, gword ptr [rbp+16] mov gword ptr [rsp+70H], r8 mov edx, dword ptr [rsp+A4H] mov dword ptr [rax+24], edx mov gword ptr [rsp+78H], rax lea rcx, bword ptr [rax+16] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+78H] lea rcx, bword ptr [rax+8] mov rdx, gword ptr [rsp+70H] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsp+78H] mov dword ptr [rdx+28], r12d xor rcx, rcx mov gword ptr [rdx+32], rcx mov dword ptr [rdx+48], r13d mov rcx, rsi mov r8, rdx mov rdx, 0xD1FFAB1E call ListBuilder`1:Add(__Canon):this ;; bbWeight=2 PerfScore 51.50 G_M38892_IG30: inc r14d cmp r14d, dword ptr [rsp+28H] jl G_M38892_IG08 ;; bbWeight=4 PerfScore 9.00 G_M38892_IG31: mov rcx, 0xD1FFAB1E cmp qword ptr [rsp+B0H], rcx je SHORT G_M38892_IG32 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.63 G_M38892_IG32: nop ;; bbWeight=0.50 PerfScore 0.13 G_M38892_IG33: add rsp, 184 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M38892_IG34: call String:ThrowMustBeNullTerminatedString() int3 ;; bbWeight=0 PerfScore 0.00 G_M38892_IG35: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 883, prolog size 96, PerfScore 340.33, (MethodHash=a60c6813) for method MemberInfoCache`1:PopulateLiteralFields(Filter,RuntimeType,byref):this ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method Enumerable:Select(IEnumerable`1,Func`2):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T02] ( 17, 6.05) long -> rdi ; V01 arg0 [V01,T01] ( 9, 6.50) ref -> rsi class-hnd ; V02 arg1 [V02,T03] ( 9, 6 ) ref -> rbx class-hnd ; V03 loc0 [V03,T11] ( 4, 3 ) ref -> r15 class-hnd ; V04 loc1 [V04,T43] ( 3, 1.50) ref -> r14 class-hnd ; V05 loc2 [V05,T44] ( 3, 1.50) ref -> r14 class-hnd ; V06 loc3 [V06,T16] ( 4, 2 ) ref -> r15 class-hnd ; V07 loc4 [V07,T45] ( 3, 1.50) ref -> rsi class-hnd ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V09 loc6 [V09 ] ( 4, 2 ) ref -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T12] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ; V12 tmp2 [V12,T17] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V13 tmp3 [V13,T18] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V14 tmp4 [V14,T05] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V15 tmp5 [V15,T19] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V16 tmp6 [V16,T13] ( 3, 2.80) long -> rcx "impRuntimeLookup indirectOffset" ; V17 tmp7 [V17,T20] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V18 tmp8 [V18,T14] ( 3, 2.80) long -> rcx "impRuntimeLookup indirectOffset" ; V19 tmp9 [V19,T21] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V20 tmp10 [V20,T34] ( 2, 1.80) long -> rcx "impRuntimeLookup indirectOffset" ; V21 tmp11 [V21,T22] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V22 tmp12 [V22,T06] ( 5, 5 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V23 tmp13 [V23,T35] ( 2, 1.80) long -> rcx "impRuntimeLookup indirectOffset" ; V24 tmp14 [V24,T23] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V25 tmp15 [V25,T07] ( 5, 5 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V26 tmp16 [V26,T36] ( 2, 1.80) long -> rcx "impRuntimeLookup indirectOffset" ; V27 tmp17 [V27,T24] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V28 tmp18 [V28,T37] ( 2, 1.80) long -> rcx "impRuntimeLookup indirectOffset" ; V29 tmp19 [V29,T25] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V30 tmp20 [V30,T08] ( 5, 5 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V31 tmp21 [V31,T38] ( 2, 1.80) long -> rcx "impRuntimeLookup indirectOffset" ; V32 tmp22 [V32,T26] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V33 tmp23 [V33,T27] ( 3, 2 ) long -> r14 "spilling Runtime Lookup tree" ; V34 tmp24 [V34,T15] ( 3, 2.80) long -> rbp "impRuntimeLookup indirectOffset" ; V35 tmp25 [V35,T28] ( 3, 2 ) long -> r8 "spilling Runtime Lookup tree" ; V36 tmp26 [V36,T33] ( 2, 2 ) long -> rax "VirtualCall through function pointer" ; V37 tmp27 [V37,T29] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V38 tmp28 [V38,T39] ( 4, 1.75) ref -> rcx ; V39 tmp29 [V39,T30] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V40 tmp30 [V40,T40] ( 4, 1.75) ref -> rcx ; V41 tmp31 [V41,T31] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V42 tmp32 [V42,T41] ( 4, 1.75) ref -> rcx ; V43 tmp33 [V43,T32] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V44 tmp34 [V44,T42] ( 4, 1.75) ref -> rcx ; V45 tmp35 [V45,T00] ( 8, 9 ) ref -> rax "Single return block return value" ; V46 cse0 [V46,T10] ( 5, 3 ) long -> r14 "CSE - moderate" ; V47 cse1 [V47,T46] ( 3, 1.25) long -> rcx "CSE - conservative" ; V48 cse2 [V48,T47] ( 3, 1.25) long -> rcx "CSE - conservative" ; V49 cse3 [V49,T48] ( 3, 1.25) long -> rcx "CSE - conservative" ; V50 cse4 [V50,T04] ( 13, 7.50) long -> rbp "CSE - aggressive" ; V51 cse5 [V51,T09] ( 9, 4.50) long -> r12 "CSE - moderate" ; V52 cse6 [V52,T49] ( 3, 1.20) long -> r8 "CSE - conservative" ; V53 cse7 [V53,T50] ( 3, 1.20) long -> rcx "CSE - conservative" ; V54 cse8 [V54,T51] ( 3, 1.20) long -> rcx "CSE - conservative" ; V55 cse9 [V55,T52] ( 3, 1.20) long -> rcx "CSE - conservative" ; V56 cse10 [V56,T53] ( 3, 1.20) long -> rcx "CSE - conservative" ; V57 cse11 [V57,T54] ( 3, 1.20) long -> rcx "CSE - conservative" ; V58 cse12 [V58,T55] ( 3, 1.20) long -> rcx "CSE - conservative" ; V59 cse13 [V59,T56] ( 3, 1.20) long -> rcx "CSE - conservative" ; ; Lcl frame size = 48 G_M22429_IG01: push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+20H], rax mov qword ptr [rsp+28H], rcx mov rdi, rcx mov rsi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 10.25 G_M22429_IG02: test rsi, rsi je G_M22429_IG60 ;; bbWeight=1 PerfScore 1.25 G_M22429_IG03: test rbx, rbx je G_M22429_IG61 ;; bbWeight=1 PerfScore 1.25 G_M22429_IG04: mov rbp, qword ptr [rdi+16] mov r14, qword ptr [rbp+24] test r14, r14 je SHORT G_M22429_IG06 ;; bbWeight=1 PerfScore 5.25 G_M22429_IG05: mov rcx, r14 jmp SHORT G_M22429_IG07 ;; bbWeight=0.25 PerfScore 0.56 G_M22429_IG06: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M22429_IG07: mov rdx, rsi call CORINFO_HELP_ISINSTANCEOFCLASS mov r15, rax test r15, r15 je SHORT G_M22429_IG15 ;; bbWeight=1 PerfScore 2.75 G_M22429_IG08: test r14, r14 je SHORT G_M22429_IG10 ;; bbWeight=0.50 PerfScore 0.63 G_M22429_IG09: jmp SHORT G_M22429_IG11 ;; bbWeight=0.25 PerfScore 0.50 G_M22429_IG10: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r14, rax ;; bbWeight=0.25 PerfScore 0.44 G_M22429_IG11: mov r12, qword ptr [rbp+16] cmp r12, 112 jle SHORT G_M22429_IG13 ;; bbWeight=0.50 PerfScore 1.63 G_M22429_IG12: mov r8, qword ptr [rbp+112] test r8, r8 je SHORT G_M22429_IG13 jmp SHORT G_M22429_IG14 ;; bbWeight=0.40 PerfScore 2.10 G_M22429_IG13: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r8, rax ;; bbWeight=0.10 PerfScore 0.18 G_M22429_IG14: mov rcx, r15 mov rdx, r14 call CORINFO_HELP_VIRTUAL_FUNC_PTR mov rcx, r15 mov rdx, rbx call rax jmp G_M22429_IG59 ;; bbWeight=0.50 PerfScore 3.50 G_M22429_IG15: mov rcx, qword ptr [rbp+32] test rcx, rcx je SHORT G_M22429_IG17 ;; bbWeight=0.50 PerfScore 1.63 G_M22429_IG16: jmp SHORT G_M22429_IG18 ;; bbWeight=0.25 PerfScore 0.50 G_M22429_IG17: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M22429_IG18: mov rdx, rsi call CORINFO_HELP_ISINSTANCEOFINTERFACE mov r14, rax test r14, r14 je G_M22429_IG46 mov rcx, rbp mov r12, qword ptr [rcx+16] cmp r12, 64 jle SHORT G_M22429_IG20 ;; bbWeight=0.50 PerfScore 3.13 G_M22429_IG19: mov rcx, qword ptr [rcx+64] test rcx, rcx je SHORT G_M22429_IG20 jmp SHORT G_M22429_IG21 ;; bbWeight=0.40 PerfScore 2.10 G_M22429_IG20: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.10 PerfScore 0.18 G_M22429_IG21: mov rdx, rsi call CORINFO_HELP_ISINSTANCEOFARRAY mov r15, rax test r15, r15 je G_M22429_IG31 cmp dword ptr [r15+8], 0 je G_M22429_IG27 mov rcx, rbp cmp r12, 104 jle SHORT G_M22429_IG23 ;; bbWeight=0.50 PerfScore 3.63 G_M22429_IG22: mov rcx, qword ptr [rcx+104] test rcx, rcx je SHORT G_M22429_IG23 jmp SHORT G_M22429_IG24 ;; bbWeight=0.40 PerfScore 2.10 G_M22429_IG23: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.10 PerfScore 0.18 G_M22429_IG24: call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M22429_IG26 ;; bbWeight=0.50 PerfScore 3.00 G_M22429_IG25: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M22429_IG26: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbp+16], eax lea rcx, bword ptr [rbp+24] mov rdx, r15 call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbp+32] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, rbp jmp G_M22429_IG59 ;; bbWeight=0.50 PerfScore 4.88 G_M22429_IG27: mov rcx, rbp cmp r12, 96 jle SHORT G_M22429_IG29 ;; bbWeight=0.50 PerfScore 0.75 G_M22429_IG28: mov rcx, qword ptr [rcx+96] test rcx, rcx je SHORT G_M22429_IG29 jmp SHORT G_M22429_IG30 ;; bbWeight=0.40 PerfScore 2.10 G_M22429_IG29: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.10 PerfScore 0.18 G_M22429_IG30: call Enumerable:Empty():IEnumerable`1 jmp G_M22429_IG59 ;; bbWeight=0.50 PerfScore 1.50 G_M22429_IG31: mov rcx, rbp cmp r12, 72 jle SHORT G_M22429_IG33 ;; bbWeight=0.50 PerfScore 0.75 G_M22429_IG32: mov rcx, qword ptr [rcx+72] test rcx, rcx je SHORT G_M22429_IG33 jmp SHORT G_M22429_IG34 ;; bbWeight=0.40 PerfScore 2.10 G_M22429_IG33: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.10 PerfScore 0.18 G_M22429_IG34: mov rdx, rsi call CORINFO_HELP_ISINSTANCEOFCLASS mov rsi, rax test rsi, rsi je G_M22429_IG40 mov rcx, rbp cmp r12, 88 jle SHORT G_M22429_IG36 ;; bbWeight=0.50 PerfScore 2.13 G_M22429_IG35: mov rcx, qword ptr [rcx+88] test rcx, rcx je SHORT G_M22429_IG36 jmp SHORT G_M22429_IG37 ;; bbWeight=0.40 PerfScore 2.10 G_M22429_IG36: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.10 PerfScore 0.18 G_M22429_IG37: call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M22429_IG39 ;; bbWeight=0.50 PerfScore 3.00 G_M22429_IG38: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M22429_IG39: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbp+16], eax lea rcx, bword ptr [rbp+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbp+32] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, rbp jmp G_M22429_IG59 ;; bbWeight=0.50 PerfScore 4.88 G_M22429_IG40: mov rcx, rbp cmp r12, 80 jle SHORT G_M22429_IG42 ;; bbWeight=0.50 PerfScore 0.75 G_M22429_IG41: mov rcx, qword ptr [rcx+80] test rcx, rcx je SHORT G_M22429_IG42 jmp SHORT G_M22429_IG43 ;; bbWeight=0.40 PerfScore 2.10 G_M22429_IG42: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.10 PerfScore 0.18 G_M22429_IG43: call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M22429_IG45 ;; bbWeight=0.50 PerfScore 3.00 G_M22429_IG44: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M22429_IG45: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbp+16], eax lea rcx, bword ptr [rbp+24] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbp+32] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, rbp jmp G_M22429_IG59 ;; bbWeight=0.50 PerfScore 4.88 G_M22429_IG46: mov rcx, qword ptr [rbp+40] test rcx, rcx je SHORT G_M22429_IG48 ;; bbWeight=0.50 PerfScore 1.63 G_M22429_IG47: jmp SHORT G_M22429_IG49 ;; bbWeight=0.25 PerfScore 0.50 G_M22429_IG48: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M22429_IG49: mov rdx, rsi call CORINFO_HELP_ISINSTANCEOFINTERFACE mov r14, rax test r14, r14 je SHORT G_M22429_IG53 xor rcx, rcx mov gword ptr [rsp+20H], rcx mov rcx, rbp cmp qword ptr [rcx+16], 56 jle SHORT G_M22429_IG51 ;; bbWeight=0.50 PerfScore 3.63 G_M22429_IG50: mov rcx, qword ptr [rcx+56] test rcx, rcx je SHORT G_M22429_IG51 jmp SHORT G_M22429_IG52 ;; bbWeight=0.40 PerfScore 2.10 G_M22429_IG51: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.10 PerfScore 0.18 G_M22429_IG52: lea r9, [rsp+20H] mov rdx, rbx mov r8, r14 call Enumerable:CreateSelectIPartitionIterator(Func`2,IPartition`1,byref) cmp gword ptr [rsp+20H], 0 je SHORT G_M22429_IG53 mov rax, gword ptr [rsp+20H] jmp SHORT G_M22429_IG59 ;; bbWeight=0.50 PerfScore 3.50 G_M22429_IG53: mov rcx, qword ptr [rbp+48] test rcx, rcx je SHORT G_M22429_IG55 ;; bbWeight=0.50 PerfScore 1.63 G_M22429_IG54: jmp SHORT G_M22429_IG56 ;; bbWeight=0.25 PerfScore 0.50 G_M22429_IG55: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M22429_IG56: call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M22429_IG58 ;; bbWeight=0.50 PerfScore 3.00 G_M22429_IG57: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M22429_IG58: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rdi+16], eax lea rcx, bword ptr [rdi+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+32] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 3.88 G_M22429_IG59: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.75 G_M22429_IG60: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M22429_IG61: mov ecx, 15 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1105, prolog size 26, PerfScore 221.08, (MethodHash=bdaba862) for method Enumerable:Select(IEnumerable`1,Func`2):IEnumerable`1 ; ============================================================ ; Assembly listing for method WhereArrayIterator`1:Select(Func`2):IEnumerable`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> rcx this class-hnd ; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rdx ; V02 arg1 [V02,T03] ( 3, 3 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 6, 12 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> rdi class-hnd "bubbling QMark1" ; V06 tmp3 [V06,T05] ( 2, 4 ) ref -> rbx class-hnd "bubbling QMark1" ; V07 tmp4 [V07,T08] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ; V08 tmp5 [V08,T06] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V09 tmp6 [V09,T07] ( 4, 3.25) ref -> rcx ; V10 cse0 [V10,T09] ( 3, 2.25) long -> rcx "CSE - aggressive" ; ; Lcl frame size = 40 G_M40978_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rdx mov rsi, r8 ;; bbWeight=1 PerfScore 5.50 G_M40978_IG02: mov rdi, gword ptr [rcx+24] mov rbx, gword ptr [rcx+32] mov rcx, qword ptr [rdx+16] mov rcx, qword ptr [rcx+16] test rcx, rcx je SHORT G_M40978_IG04 ;; bbWeight=1 PerfScore 9.25 G_M40978_IG03: jmp SHORT G_M40978_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M40978_IG04: mov rcx, rdx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M40978_IG05: call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M40978_IG07 ;; bbWeight=1 PerfScore 6.00 G_M40978_IG06: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M40978_IG07: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbp+16], eax lea rcx, bword ptr [rbp+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbp+32] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbp+40] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rax, rbp ;; bbWeight=1 PerfScore 9.50 G_M40978_IG08: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 163, prolog size 13, PerfScore 51.05, (MethodHash=c2f25fed) for method WhereArrayIterator`1:Select(Func`2):IEnumerable`1:this ; ============================================================ ; Assembly listing for method RuntimeType:GetProperties(int):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) int -> r9 ; V02 loc0 [V02 ] ( 2, 2 ) struct (24) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 72 G_M39478_IG01: sub rsp, 72 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 xor rax, rax mov qword ptr [rsp+40H], rax mov r9d, edx ;; bbWeight=1 PerfScore 3.08 G_M39478_IG02: xor rdx, rdx mov gword ptr [rsp+20H], rdx mov dword ptr [rsp+28H], edx lea rdx, [rsp+30H] xor r8, r8 call RuntimeType:GetPropertyCandidates(String,int,ref,bool):ListBuilder`1:this lea rcx, bword ptr [rsp+30H] mov rdx, 0xD1FFAB1E call ListBuilder`1:ToArray():ref:this nop ;; bbWeight=1 PerfScore 6.00 G_M39478_IG03: add rsp, 72 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 74, prolog size 21, PerfScore 17.93, (MethodHash=875765c9) for method RuntimeType:GetProperties(int):ref:this ; ============================================================ ; Assembly listing for method RuntimePropertyInfo:get_Name():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ; V01 loc0 [V01 ] ( 3, 1.50) struct (16) [rsp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V05 tmp2 [V05,T02] ( 4, 3.50) ref -> rax ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V07 tmp4 [V07,T03] ( 3, 3 ) ref -> rdi class-hnd "dup spill" ; V08 tmp5 [V08,T04] ( 2, 2 ) long -> rdi "Inlining Arg" ; V09 tmp6 [V09,T05] ( 4, 1.75) long -> rdi "Inline stloc first use temp" ; V10 tmp7 [V10,T08] ( 3, 0.75) int -> rax "Inline stloc first use temp" ; V11 tmp8 [V11 ] ( 2, 1 ) long -> [rsp+0x28] do-not-enreg[X] addr-exposed V01.m_pStringHeap(offs=0x00) P-DEP "field V01.m_pStringHeap (fldOffset=0x0)" ; V12 tmp9 [V12 ] ( 2, 1 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed V01.m_StringHeapByteLength(offs=0x08) P-DEP "field V01.m_StringHeapByteLength (fldOffset=0x8)" ; V13 tmp10 [V13,T07] ( 2, 1 ) long -> rdi V06.m_pStringHeap(offs=0x00) P-INDEP "field V06.m_pStringHeap (fldOffset=0x0)" ; V14 tmp11 [V14,T06] ( 3, 1 ) int -> rax V06.m_StringHeapByteLength(offs=0x08) P-INDEP "field V06.m_StringHeapByteLength (fldOffset=0x8)" ; ; Lcl frame size = 56 G_M49481_IG01: push rdi push rsi sub rsp, 56 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M49481_IG02: mov rax, gword ptr [rsi+8] test rax, rax jne SHORT G_M49481_IG08 ;; bbWeight=1 PerfScore 3.25 G_M49481_IG03: mov rdi, qword ptr [rsi+72] test rdi, rdi je SHORT G_M49481_IG06 ;; bbWeight=0.50 PerfScore 1.63 G_M49481_IG04: mov rcx, rdi xor edx, edx mov r8d, 0xD1FFAB1E call SpanHelpers:IndexOf(byref,ubyte,int):int test eax, eax jl SHORT G_M49481_IG09 ;; bbWeight=0.25 PerfScore 0.75 G_M49481_IG05: jmp SHORT G_M49481_IG07 ;; bbWeight=0.25 PerfScore 0.50 G_M49481_IG06: xor eax, eax ;; bbWeight=0.25 PerfScore 0.06 G_M49481_IG07: mov qword ptr [rsp+28H], rdi mov dword ptr [rsp+30H], eax lea rcx, bword ptr [rsp+28H] call MdUtf8String:ToString():String:this mov rdi, rax lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 2.88 G_M49481_IG08: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M49481_IG09: call String:ThrowMustBeNullTerminatedString() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 101, prolog size 6, PerfScore 23.91, (MethodHash=7f393eb6) for method RuntimePropertyInfo:get_Name():String:this ; ============================================================ ; Assembly listing for method MdUtf8String:ToString():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) byref -> rcx this ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V03 tmp2 [V03,T03] ( 2, 4 ) ref -> rdx class-hnd exact "impAppendStmt" ; V04 tmp3 [V04,T02] ( 3, 6 ) int -> rcx "Inlining Arg" ; V05 tmp4 [V05,T05] ( 2, 4 ) long -> rax "Inlining Arg" ;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V07 tmp6 [V07,T06] ( 2, 2 ) byref -> rax V02._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ; V08 tmp7 [V08,T08] ( 2, 2 ) int -> rcx V02._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V09 tmp8 [V09,T07] ( 2, 2 ) byref -> rax V06._value(offs=0x00) P-INDEP "field V06._value (fldOffset=0x0)" ; V10 tmp9 [V10 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V11 tmp10 [V11,T01] ( 3, 6 ) byref -> r8 stack-byref "BlockOp address local" ; V12 tmp11 [V12,T04] ( 2, 4 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 56 G_M9791_IG01: sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax ;; bbWeight=1 PerfScore 1.50 G_M9791_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rax, qword ptr [rcx] mov ecx, dword ptr [rcx+8] test ecx, ecx jl SHORT G_M9791_IG05 ;; bbWeight=1 PerfScore 7.50 G_M9791_IG03: lea r8, bword ptr [rsp+28H] mov bword ptr [r8], rax mov dword ptr [r8+8], ecx mov rcx, rdx lea rdx, bword ptr [rsp+28H] cmp dword ptr [rcx], ecx call Encoding:GetString(ReadOnlySpan`1):String:this nop ;; bbWeight=1 PerfScore 6.50 G_M9791_IG04: add rsp, 56 ret ;; bbWeight=1 PerfScore 1.25 G_M9791_IG05: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 73, prolog size 11, PerfScore 24.05, (MethodHash=65dad9c0) for method MdUtf8String:ToString():String:this ; ============================================================ ; Assembly listing for method Encoding:GetString(ReadOnlySpan`1):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> r8 this class-hnd ; V01 arg1 [V01,T00] ( 4, 8 ) byref -> rdx ld-addr-op ;* V02 loc0 [V02 ] ( 0, 0 ) long -> zero-ref ; V03 loc1 [V03 ] ( 1, 1 ) byref -> [rsp+0x20] must-init pinned ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 4, 3 ) byref -> rax "Inline return value spill temp" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V08 tmp4 [V08 ] ( 0, 0 ) byref -> zero-ref V12._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref V12._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ; V10 tmp6 [V10,T06] ( 2, 1.50) byref -> rcx V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V11 tmp7 [V11,T05] ( 2, 2 ) int -> rax V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V13 tmp9 [V13,T02] ( 2, 4 ) long -> rcx "Cast away GC" ; V14 cse0 [V14,T04] ( 3, 3 ) int -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M15433_IG01: sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov r8, rcx ;; bbWeight=1 PerfScore 1.75 G_M15433_IG02: mov rcx, bword ptr [rdx] mov edx, dword ptr [rdx+8] mov eax, edx test eax, eax jne SHORT G_M15433_IG04 ;; bbWeight=1 PerfScore 5.50 G_M15433_IG03: mov eax, 1 jmp SHORT G_M15433_IG05 ;; bbWeight=0.50 PerfScore 1.13 G_M15433_IG04: mov rax, rcx ;; bbWeight=0.50 PerfScore 0.13 G_M15433_IG05: mov bword ptr [rsp+20H], rax mov rcx, rax call String:CreateStringFromEncoding(long,int,Encoding):String nop ;; bbWeight=1 PerfScore 2.50 G_M15433_IG06: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 55, prolog size 11, PerfScore 17.75, (MethodHash=da23c3b6) for method Encoding:GetString(ReadOnlySpan`1):String:this ; ============================================================ ; Assembly listing for method String:CreateStringFromEncoding(long,int,Encoding):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 3.50) long -> rdi ; V01 arg1 [V01,T02] ( 4, 3.50) int -> rbx ; V02 arg2 [V02,T00] ( 6, 5 ) ref -> rsi class-hnd ; V03 loc0 [V03,T03] ( 4, 3 ) int -> rbp ; V04 loc1 [V04,T04] ( 4, 2 ) ref -> r14 class-hnd ;* V05 loc2 [V05 ] ( 0, 0 ) long -> zero-ref ; V06 loc3 [V06 ] ( 3, 1.50) byref -> [rsp+0x28] must-init pinned ;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T05] ( 2, 2 ) long -> r9 "Cast away GC" ; ; Lcl frame size = 48 G_M45861_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov rdi, rcx mov ebx, edx mov rsi, r8 ;; bbWeight=1 PerfScore 7.25 G_M45861_IG02: mov rcx, rsi mov rdx, rdi mov r8d, ebx mov rax, qword ptr [rsi] mov rax, qword ptr [rax+96] call qword ptr [rax]Encoding:GetCharCount(long,int):int:this mov ebp, eax test ebp, ebp jne SHORT G_M45861_IG05 ;; bbWeight=1 PerfScore 9.25 G_M45861_IG03: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M45861_IG04: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M45861_IG05: mov ecx, ebp call String:FastAllocateString(int):String mov r14, rax cmp dword ptr [r14], r14d lea rcx, bword ptr [r14+12] mov bword ptr [rsp+28H], rcx mov r9, bword ptr [rsp+28H] mov dword ptr [rsp+20H], ebp mov rcx, rsi mov rdx, rdi mov r8d, ebx mov rax, qword ptr [rsi] mov rax, qword ptr [rax+96] call qword ptr [rax+40]Encoding:GetChars(long,int,long,int):int:this xor rax, rax mov bword ptr [rsp+28H], rax mov rax, r14 ;; bbWeight=0.50 PerfScore 8.13 G_M45861_IG06: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 ; Total bytes of code 144, prolog size 17, PerfScore 43.90, (MethodHash=ba934cda) for method String:CreateStringFromEncoding(long,int,Encoding):String ; ============================================================ ; Assembly listing for method UTF8Encoding:GetCharCount(long,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 3.25) ref -> rbx this class-hnd ; V01 arg1 [V01,T00] ( 6, 5.25) long -> rsi ; V02 arg2 [V02,T01] ( 6, 5.25) int -> rdi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 4, 3.25) int -> r9 ld-addr-op "Inline ldloca(s) first use temp" ; V05 tmp2 [V05,T04] ( 5, 2.75) int -> rbp "Inline stloc first use temp" ; V06 tmp3 [V06 ] ( 2, 2 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V07 tmp4 [V07 ] ( 1, 1 ) int -> [rsp+0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V08 tmp5 [V08,T05] ( 2, 2 ) long -> rax "Inline stloc first use temp" ; V09 tmp6 [V09,T06] ( 2, 2 ) int -> r9 "Inline stloc first use temp" ; ; Lcl frame size = 56 G_M21488_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 mov rbx, rcx mov rsi, rdx mov edi, r8d ;; bbWeight=1 PerfScore 5.00 G_M21488_IG02: test rsi, rsi je SHORT G_M21488_IG08 ;; bbWeight=1 PerfScore 1.25 G_M21488_IG03: test edi, edi jl SHORT G_M21488_IG09 ;; bbWeight=1 PerfScore 1.25 G_M21488_IG04: cmp dword ptr [rbx], ebx lea r8, [rsp+30H] lea r9, [rsp+28H] mov rcx, rsi mov edx, edi call Utf8Utility:GetPointerToFirstInvalidByte(long,int,byref,byref):long sub rax, rsi mov r9d, eax mov ebp, r9d add ebp, dword ptr [rsp+30H] cmp r9d, edi je SHORT G_M21488_IG06 ;; bbWeight=1 PerfScore 7.50 G_M21488_IG05: mov rcx, rbx mov rdx, rsi mov r8d, edi call Encoding:GetCharCountWithFallback(long,int,int):int:this add ebp, eax test ebp, ebp jl SHORT G_M21488_IG10 ;; bbWeight=0.25 PerfScore 0.81 G_M21488_IG06: mov eax, ebp ;; bbWeight=1 PerfScore 0.25 G_M21488_IG07: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M21488_IG08: mov ecx, 10 mov edx, 46 call ThrowHelper:ThrowArgumentNullException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 G_M21488_IG09: mov ecx, 27 mov edx, 11 call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 G_M21488_IG10: call Encoding:ThrowConversionOverflow() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 135, prolog size 8, PerfScore 32.81, (MethodHash=7cdbac0f) for method UTF8Encoding:GetCharCount(long,int):int:this ; ============================================================ ; Assembly listing for method Utf8Utility:GetPointerToFirstInvalidByte(long,int,byref,byref):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 66,27401.50) long -> rsi ; V01 arg1 [V01,T24] ( 9, 7.50) int -> rdi ; V02 arg2 [V02,T26] ( 4, 3 ) byref -> rbx ; V03 arg3 [V03,T27] ( 4, 3 ) byref -> rbp ; V04 loc0 [V04,T04] ( 18, 5265 ) int -> rax ; V05 loc1 [V05,T28] ( 4, 5 ) int -> rdx ; V06 loc2 [V06,T03] ( 12, 8821.50) long -> rcx ; V07 loc3 [V07,T17] ( 12, 21.50) long -> r8 ;* V08 loc4 [V08 ] ( 0, 0 ) long -> zero-ref ; V09 loc5 [V09,T02] ( 37,17128 ) int -> r8 ; V10 loc6 [V10,T11] ( 2, 72 ) long -> r8 ; V11 loc7 [V11,T18] ( 2, 16 ) long -> r8 ;* V12 loc8 [V12 ] ( 0, 0 ) simd16 -> zero-ref ;* V13 loc9 [V13 ] ( 0, 0 ) long -> zero-ref ; V14 loc10 [V14,T09] ( 3, 136 ) int -> r9 ;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref ; V16 loc12 [V16,T05] ( 2, 2048 ) long -> r8 ; V17 loc13 [V17,T00] ( 16,42784 ) long -> r9 ; V18 loc14 [V18,T25] ( 3, 6 ) int -> rcx ; V19 loc15 [V19,T23] ( 5, 10 ) int -> r9 ; V20 OutArgs [V20 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V21 tmp1 [V21 ] ( 0, 0 ) int -> zero-ref ;* V22 tmp2 [V22 ] ( 0, 0 ) int -> zero-ref ;* V23 tmp3 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp4 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 tmp5 [V25 ] ( 0, 0 ) int -> zero-ref ;* V26 tmp6 [V26 ] ( 0, 0 ) int -> zero-ref ;* V27 tmp7 [V27 ] ( 0, 0 ) int -> zero-ref ;* V28 tmp8 [V28 ] ( 0, 0 ) int -> zero-ref ;* V29 tmp9 [V29 ] ( 0, 0 ) int -> zero-ref ;* V30 tmp10 [V30 ] ( 0, 0 ) int -> zero-ref ;* V31 tmp11 [V31 ] ( 0, 0 ) int -> zero-ref ;* V32 tmp12 [V32 ] ( 0, 0 ) int -> zero-ref ;* V33 tmp13 [V33 ] ( 0, 0 ) simd16 -> zero-ref ; V34 tmp14 [V34,T29] ( 3, 3 ) long -> rax "Inline return value spill temp" ;* V35 tmp15 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V36 tmp16 [V36,T13] ( 2, 32 ) long -> r8 ld-addr-op "Inlining Arg" ;* V37 tmp17 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V38 tmp18 [V38 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V39 tmp19 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V40 tmp20 [V40,T14] ( 2, 32 ) long -> rsi "NewObj constructor temp" ;* V41 tmp21 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V42 tmp22 [V42,T15] ( 2, 32 ) long -> rsi ld-addr-op "Inlining Arg" ; V43 tmp23 [V43,T19] ( 2, 16 ) int -> r8 "Inline return value spill temp" ; V44 tmp24 [V44,T20] ( 2, 16 ) int -> r8 "Inline return value spill temp" ;* V45 tmp25 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V46 tmp26 [V46,T21] ( 2, 16 ) int -> r8 "Inline return value spill temp" ;* V47 tmp27 [V47 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V48 tmp28 [V48,T06] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V49 tmp29 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V50 tmp30 [V50,T07] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V51 tmp31 [V51 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V52 tmp32 [V52,T10] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V53 tmp33 [V53,T12] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V54 tmp34 [V54 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V55 tmp35 [V55,T08] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V56 tmp36 [V56,T16] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V57 tmp37 [V57,T30] ( 2, 2 ) long -> rcx ld-addr-op "Inlining Arg" ;* V58 tmp38 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V59 tmp39 [V59 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V60 tmp40 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V61 cse0 [V61,T22] ( 6, 12 ) int -> rcx "CSE - moderate" ; ; Lcl frame size = 40 G_M59852_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 vzeroupper mov rsi, rcx mov edi, edx mov rbx, r8 mov rbp, r9 ;; bbWeight=1 PerfScore 6.25 G_M59852_IG02: mov edx, edi mov rcx, rsi call ASCIIUtility:GetIndexOfFirstNonAsciiByte_Sse2(long,long):long add rsi, rax sub edi, eax jne SHORT G_M59852_IG05 ;; bbWeight=1 PerfScore 3.00 G_M59852_IG03: xor eax, eax mov dword ptr [rbx], eax mov dword ptr [rbp], eax mov rax, rsi ;; bbWeight=0.50 PerfScore 1.25 G_M59852_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M59852_IG05: xor eax, eax xor edx, edx cmp edi, 4 jl G_M59852_IG38 mov ecx, edi lea rcx, [rsi+rcx-4] cmp rsi, rcx ja G_M59852_IG39 ;; bbWeight=0.50 PerfScore 2.13 G_M59852_IG06: mov r8d, dword ptr [rsi] ;; bbWeight=4 PerfScore 8.00 G_M59852_IG07: test r8d, 0xD1FFAB1E jne SHORT G_M59852_IG13 ;; bbWeight=32 PerfScore 40.00 G_M59852_IG08: add rsi, 4 mov r8, rcx sub r8, rsi cmp r8, 16 jl G_M59852_IG36 mov r8d, dword ptr [rsi] test r8d, 0xD1FFAB1E jne SHORT G_M59852_IG13 add rsi, 4 and rsi, -4 lea r8, [rcx-12] ;; bbWeight=8 PerfScore 50.00 G_M59852_IG09: vmovdqu xmm0, xmmword ptr [rsi] vpmovmskb r9d, xmm0 test r9d, r9d jne SHORT G_M59852_IG12 ;; bbWeight=64 PerfScore 272.00 G_M59852_IG10: add rsi, 16 cmp rsi, r8 jbe SHORT G_M59852_IG09 ;; bbWeight=64 PerfScore 96.00 G_M59852_IG11: jmp G_M59852_IG36 ;; bbWeight=8 PerfScore 16.00 G_M59852_IG12: xor r8d, r8d tzcnt r8d, r9d movsxd r8, r8d add rsi, r8 cmp rsi, rcx ja G_M59852_IG39 mov r8d, dword ptr [rsi] jmp SHORT G_M59852_IG14 ;; bbWeight=8 PerfScore 64.00 G_M59852_IG13: and r8d, 0xD1FFAB1E tzcnt r8d, r8d shr r8d, 3 add rsi, r8 cmp rcx, rsi jb G_M59852_IG39 mov r8d, dword ptr [rsi] ;; bbWeight=8 PerfScore 62.00 G_M59852_IG14: add r8d, -0x80C0 test r8d, 0xC0E0 jne G_M59852_IG22 cmp r8b, 2 jb G_M59852_IG49 ;; bbWeight=128 PerfScore 352.00 G_M59852_IG15: mov r9d, r8d and r9d, 0xD1FFAB1E add r9d, 0xD1FFAB1E cmp r9d, 0xD1FFAB1E ja SHORT G_M59852_IG17 ;; bbWeight=1024 PerfScore 2048.00 G_M59852_IG16: add rsi, 4 add eax, -2 cmp rsi, rcx ja G_M59852_IG39 mov r8d, dword ptr [rsi] mov r9d, r8d and r9d, 0xC0FF add r9d, -0x80C2 cmp r9d, 29 jbe SHORT G_M59852_IG15 jmp G_M59852_IG07 ;; bbWeight=512 PerfScore 3968.00 G_M59852_IG17: dec eax test r8d, 0xD1FFAB1E jne SHORT G_M59852_IG21 ;; bbWeight=64 PerfScore 96.00 G_M59852_IG18: test r8d, r8d jl SHORT G_M59852_IG20 ;; bbWeight=64 PerfScore 80.00 G_M59852_IG19: add rsi, 4 jmp G_M59852_IG36 ;; bbWeight=32 PerfScore 72.00 G_M59852_IG20: add rsi, 3 cmp rsi, rcx ja G_M59852_IG36 mov r8d, dword ptr [rsi] jmp G_M59852_IG14 ;; bbWeight=64 PerfScore 352.00 G_M59852_IG21: add rsi, 2 jmp G_M59852_IG36 ;; bbWeight=8 PerfScore 18.00 G_M59852_IG22: add r8d, 0xD1FFAB1E test r8d, 0xD1FFAB1E jne G_M59852_IG34 ;; bbWeight=16 PerfScore 24.00 G_M59852_IG23: test r8d, 0x200F je G_M59852_IG49 lea r9d, [r8-200DH] test r9d, 0x200F je G_M59852_IG49 ;; bbWeight=128 PerfScore 384.00 G_M59852_IG24: sar r8d, 31 movsxd r8, r8d add rsi, 4 add rsi, r8 add eax, -2 ;; bbWeight=1024 PerfScore 3072.00 G_M59852_IG25: mov r8, rcx sub r8, rsi cmp r8, 5 jl G_M59852_IG32 mov r9, qword ptr [rsi] mov r8d, r9d mov r10, 0xD1FFAB1E and r10, r9 mov r11, 0xD1FFAB1E cmp r10, r11 jne SHORT G_M59852_IG28 ;; bbWeight=8192 PerfScore 49152.00 G_M59852_IG26: cmp byte ptr [rsi+8], -64 jge SHORT G_M59852_IG28 test r8d, 0x200F je G_M59852_IG49 lea r10d, [r8-200DH] test r10d, 0x200F je G_M59852_IG49 shr r9, 24 test r9d, 0x200F je SHORT G_M59852_IG24 lea r10d, [r9-200DH] test r10d, 0x200F je G_M59852_IG24 shr r9, 24 test r9d, 0x200F je G_M59852_IG24 add r9d, -0x200D test r9d, 0x200F je G_M59852_IG24 ;; bbWeight=2048 PerfScore 32256.00 G_M59852_IG27: add rsi, 9 add eax, -6 jmp G_M59852_IG25 ;; bbWeight=1024 PerfScore 2560.00 G_M59852_IG28: mov r10, 0xD1FFAB1E and r10, r9 mov r11, 0xD1FFAB1E cmp r10, r11 jne SHORT G_M59852_IG31 ;; bbWeight=1024 PerfScore 2048.00 G_M59852_IG29: test r8d, 0x200F je G_M59852_IG49 lea r10d, [r8-200DH] test r10d, 0x200F je G_M59852_IG49 shr r9, 24 test r9d, 0x200F je G_M59852_IG24 ;; bbWeight=256 PerfScore 1600.00 G_M59852_IG30: add r9d, -0x200D test r9d, 0x200F je G_M59852_IG24 jmp SHORT G_M59852_IG33 ;; bbWeight=32 PerfScore 112.00 G_M59852_IG31: lea r9d, [r8+D1FFAB1EH] test r9d, 0xD1FFAB1E je G_M59852_IG23 jmp G_M59852_IG07 ;; bbWeight=128 PerfScore 480.00 G_M59852_IG32: cmp rsi, rcx ja SHORT G_M59852_IG39 mov r8d, dword ptr [rsi] lea r9d, [r8+D1FFAB1EH] test r9d, 0xD1FFAB1E je G_M59852_IG23 jmp G_M59852_IG07 ;; bbWeight=16 PerfScore 112.00 G_M59852_IG33: add rsi, 6 add eax, -4 jmp SHORT G_M59852_IG36 ;; bbWeight=2 PerfScore 5.00 G_M59852_IG34: and r8d, 0xD1FFAB1E cmp r8d, 0xD1FFAB1E jg G_M59852_IG49 rol r8d, 24 add r8d, 0xD1FFAB1E cmp r8d, 0xD1FFAB1E ja G_M59852_IG49 ;; bbWeight=2 PerfScore 10.00 G_M59852_IG35: add rsi, 4 add eax, -2 dec edx ;; bbWeight=2 PerfScore 1.50 G_M59852_IG36: cmp rsi, rcx jbe G_M59852_IG06 ;; bbWeight=4 PerfScore 5.00 G_M59852_IG37: jmp SHORT G_M59852_IG39 ;; bbWeight=0.50 PerfScore 1.00 G_M59852_IG38: mov r8d, edi jmp G_M59852_IG48 ;; bbWeight=0.50 PerfScore 1.13 G_M59852_IG39: sub rcx, rsi lea r8, [rcx+4] test r8, r8 je G_M59852_IG49 ;; bbWeight=0.50 PerfScore 1.00 G_M59852_IG40: movzx rcx, byte ptr [rsi] cmp ecx, 128 jae SHORT G_M59852_IG41 inc rsi dec r8 jmp G_M59852_IG48 ;; bbWeight=2 PerfScore 11.50 G_M59852_IG41: cmp r8, 2 jb G_M59852_IG49 movzx r9, byte ptr [rsi+1] movzx rcx, cl cmp ecx, 224 jae SHORT G_M59852_IG42 cmp ecx, 194 jb SHORT G_M59852_IG49 add r9d, -128 movzx rcx, r9b cmp ecx, 63 ja SHORT G_M59852_IG49 add rsi, 2 dec eax add r8, -2 jmp SHORT G_M59852_IG48 ;; bbWeight=2 PerfScore 21.00 G_M59852_IG42: cmp r8, 3 jb SHORT G_M59852_IG49 cmp ecx, 240 jae SHORT G_M59852_IG49 cmp ecx, 224 jne SHORT G_M59852_IG44 lea ecx, [r9-160] cmp ecx, 31 jbe SHORT G_M59852_IG47 ;; bbWeight=2 PerfScore 11.00 G_M59852_IG43: jmp SHORT G_M59852_IG49 ;; bbWeight=0.50 PerfScore 1.00 G_M59852_IG44: cmp ecx, 237 jne SHORT G_M59852_IG46 add r9d, -128 cmp r9d, 31 jbe SHORT G_M59852_IG47 ;; bbWeight=2 PerfScore 5.50 G_M59852_IG45: jmp SHORT G_M59852_IG49 ;; bbWeight=0.50 PerfScore 1.00 G_M59852_IG46: lea ecx, [r9-128] movzx rcx, cl cmp ecx, 63 ja SHORT G_M59852_IG49 ;; bbWeight=2 PerfScore 4.00 G_M59852_IG47: cmp byte ptr [rsi+2], -64 jge SHORT G_M59852_IG49 add rsi, 3 add eax, -2 add r8, -3 ;; bbWeight=2 PerfScore 7.50 G_M59852_IG48: test r8, r8 jne G_M59852_IG40 ;; bbWeight=4 PerfScore 5.00 G_M59852_IG49: mov dword ptr [rbx], eax mov dword ptr [rbp], edx mov rax, rsi ;; bbWeight=0.50 PerfScore 1.13 G_M59852_IG50: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 1075, prolog size 22, PerfScore 99610.83, (MethodHash=51681633) for method Utf8Utility:GetPointerToFirstInvalidByte(long,int,byref,byref):long ; ============================================================ ; Assembly listing for method ASCIIUtility:GetIndexOfFirstNonAsciiByte_Sse2(long,long):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 39, 39 ) long -> rcx ; V01 arg1 [V01,T02] ( 14, 8.50) long -> rdx ;* V02 loc0 [V02,T17] ( 0, 0 ) int -> zero-ref ;* V03 loc1 [V03,T18] ( 0, 0 ) long -> zero-ref ; V04 loc2 [V04,T01] ( 11, 12.50) int -> r9 ; V05 loc3 [V05,T03] ( 3, 8.50) int -> r10 ; V06 loc4 [V06,T04] ( 8, 5 ) long -> r8 ; V07 loc5 [V07,T06] ( 5, 2.50) int -> rdx ; V08 loc6 [V08,T05] ( 2, 4.50) long -> rax ; V09 loc7 [V09,T19] ( 2, 8 ) simd16 -> mm0 ; V10 loc8 [V10,T20] ( 2, 8 ) simd16 -> mm1 ; V11 loc9 [V11,T08] ( 4, 2 ) long -> rcx ;# V12 OutArgs [V12 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V14 tmp2 [V14 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V15 tmp3 [V15,T09] ( 2, 2 ) long -> rcx ld-addr-op "Inlining Arg" ;* V16 tmp4 [V16 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V17 tmp5 [V17 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V18 tmp6 [V18 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V19 tmp7 [V19,T10] ( 2, 2 ) long -> rax ld-addr-op "Inlining Arg" ;* V20 tmp8 [V20 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V21 tmp9 [V21 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V22 tmp10 [V22,T13] ( 2, 1 ) int -> rdx "Inline return value spill temp" ; V23 tmp11 [V23,T14] ( 2, 1 ) int -> rax "Inline return value spill temp" ;* V24 tmp12 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V25 tmp13 [V25,T15] ( 2, 1 ) int -> rax "Inline return value spill temp" ;* V26 tmp14 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V27 tmp15 [V27,T16] ( 2, 1 ) int -> rax "Inline return value spill temp" ; V28 cse0 [V28,T11] ( 3, 1.50) long -> rcx "CSE - moderate" ; V29 cse1 [V29,T12] ( 3, 1.50) int -> rdx "CSE - moderate" ; V30 cse2 [V30,T07] ( 5, 2.50) int -> rax "CSE - moderate" ; ; Lcl frame size = 0 G_M715_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M715_IG02: mov r8, rcx cmp rdx, 16 jb G_M715_IG13 ;; bbWeight=1 PerfScore 1.50 G_M715_IG03: vmovdqu xmm0, xmmword ptr [r8] vpmovmskb r9d, xmm0 test r9d, r9d jne G_M715_IG11 cmp rdx, 32 jb SHORT G_M715_IG06 lea rcx, [r8+16] and rcx, -16 add rdx, r8 sub rdx, rcx cmp rdx, 32 jb SHORT G_M715_IG05 lea rax, [rcx+rdx] sub rax, 32 ;; bbWeight=0.50 PerfScore 4.38 G_M715_IG04: vmovdqa xmm0, xmmword ptr [rcx] vmovdqa xmm1, xmmword ptr [rcx+16] vpmovmskb r9d, xmm0 vpmovmskb r10d, xmm1 mov r11d, r9d or r11d, r10d jne SHORT G_M715_IG10 add rcx, 32 cmp rcx, rax jbe SHORT G_M715_IG04 ;; bbWeight=4 PerfScore 36.00 G_M715_IG05: mov r9d, edx test r9b, 16 je SHORT G_M715_IG07 vmovdqa xmm0, xmmword ptr [rcx] vpmovmskb r9d, xmm0 test r9d, r9d jne SHORT G_M715_IG11 ;; bbWeight=0.50 PerfScore 2.88 G_M715_IG06: add rcx, 16 ;; bbWeight=0.50 PerfScore 0.13 G_M715_IG07: movzx r9, dl mov eax, r9d test al, 15 je SHORT G_M715_IG08 mov rax, rdx and rax, 15 sub rax, 16 add rax, rcx mov rcx, rax vmovdqu xmm0, xmmword ptr [rcx] vpmovmskb r9d, xmm0 test r9d, r9d jne SHORT G_M715_IG11 add rcx, 16 ;; bbWeight=0.50 PerfScore 3.75 G_M715_IG08: mov rax, rcx sub rax, r8 ;; bbWeight=1 PerfScore 0.50 G_M715_IG09: ret ;; bbWeight=1 PerfScore 1.00 G_M715_IG10: test r9d, r9d jne SHORT G_M715_IG11 add rcx, 16 mov r9d, r10d ;; bbWeight=0.50 PerfScore 0.88 G_M715_IG11: xor edx, edx tzcnt edx, r9d mov eax, edx add rcx, rax jmp SHORT G_M715_IG08 ;; bbWeight=0.50 PerfScore 2.38 G_M715_IG12: xor eax, eax tzcnt eax, edx shr eax, 3 add rcx, rax jmp SHORT G_M715_IG08 ;; bbWeight=0.50 PerfScore 3.25 G_M715_IG13: mov eax, edx test al, 8 je SHORT G_M715_IG15 mov rcx, qword ptr [r8] mov rdx, 0xD1FFAB1E and rcx, rdx je SHORT G_M715_IG14 xor eax, eax tzcnt rax, rcx sar eax, 3 movsxd rcx, eax add rcx, r8 jmp SHORT G_M715_IG08 ;; bbWeight=0.50 PerfScore 5.88 G_M715_IG14: lea rcx, [r8+8] ;; bbWeight=0.50 PerfScore 0.25 G_M715_IG15: test al, 4 je SHORT G_M715_IG16 mov edx, dword ptr [rcx] and edx, 0xD1FFAB1E jne SHORT G_M715_IG12 add rcx, 4 ;; bbWeight=0.50 PerfScore 2.38 G_M715_IG16: test al, 2 je SHORT G_M715_IG18 movzx rdx, word ptr [rcx] test edx, 0xD1FFAB1E je SHORT G_M715_IG17 movsx rax, dl movsxd rax, eax sar rax, 7 lea rcx, [rcx+rax+1] jmp G_M715_IG08 ;; bbWeight=0.50 PerfScore 5.00 G_M715_IG17: add rcx, 2 ;; bbWeight=0.50 PerfScore 0.13 G_M715_IG18: test al, 1 je G_M715_IG08 cmp byte ptr [rcx], 0 jl G_M715_IG08 inc rcx jmp G_M715_IG08 ;; bbWeight=0.50 PerfScore 3.25 ; Total bytes of code 349, prolog size 3, PerfScore 110.30, (MethodHash=20c2fd34) for method ASCIIUtility:GetIndexOfFirstNonAsciiByte_Sse2(long,long):long ; ============================================================ ; Assembly listing for method UTF8Encoding:GetChars(long,int,long,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 4, 3.50) ref -> rbp this class-hnd ; V01 arg1 [V01,T00] ( 7, 5.50) long -> rsi ; V02 arg2 [V02,T01] ( 7, 5.50) int -> rdi ; V03 arg3 [V03,T02] ( 6, 5.50) long -> rbx ; V04 arg4 [V04,T05] ( 3, 2.50) int -> r14 ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T09] ( 3, 0 ) int -> rcx ; V07 tmp2 [V07,T10] ( 3, 0 ) int -> rcx ; V08 tmp3 [V08,T07] ( 3, 2 ) int -> rax "Inline return value spill temp" ; V09 tmp4 [V09,T06] ( 3, 2.50) int -> rcx ld-addr-op "Inline ldloca(s) first use temp" ; V10 tmp5 [V10,T08] ( 3, 2 ) int -> rax "Inline stloc first use temp" ; V11 tmp6 [V11 ] ( 2, 2 ) long -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V12 tmp7 [V12 ] ( 2, 2 ) long -> [rsp+0x40] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V13 rat0 [V13,T03] ( 3, 6 ) long -> rdx "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 80 G_M6521_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 80 mov rbp, rcx mov rsi, rdx mov edi, r8d mov rbx, r9 mov r14d, dword ptr [rsp+A0H] ;; bbWeight=1 PerfScore 7.25 G_M6521_IG02: test rsi, rsi je G_M6521_IG09 test rbx, rbx je G_M6521_IG09 ;; bbWeight=1 PerfScore 2.50 G_M6521_IG03: mov ecx, edi or ecx, r14d jl G_M6521_IG12 ;; bbWeight=1 PerfScore 1.50 G_M6521_IG04: cmp dword ptr [rbp], ebp lea rcx, [rsp+48H] mov qword ptr [rsp+20H], rcx lea rcx, [rsp+40H] mov qword ptr [rsp+28H], rcx mov rcx, rsi mov edx, edi mov r8, rbx mov r9d, r14d call Utf8Utility:TranscodeToUtf16(long,int,long,int,byref,byref):int mov rcx, qword ptr [rsp+48H] sub rcx, rsi mov rdx, qword ptr [rsp+40H] sub rdx, rbx mov r8, rdx shr r8, 63 add rdx, r8 sar rdx, 1 mov eax, edx cmp ecx, edi jne SHORT G_M6521_IG06 ;; bbWeight=1 PerfScore 14.00 G_M6521_IG05: jmp SHORT G_M6521_IG07 ;; bbWeight=0.50 PerfScore 1.00 G_M6521_IG06: mov dword ptr [rsp+20H], r14d mov dword ptr [rsp+28H], ecx mov dword ptr [rsp+30H], eax mov rcx, rbp mov rdx, rsi mov r8d, edi mov r9, rbx call Encoding:GetCharsWithFallback(long,int,long,int,int,int):int:this ;; bbWeight=0.50 PerfScore 2.50 G_M6521_IG07: nop ;; bbWeight=1 PerfScore 0.25 G_M6521_IG08: add rsp, 80 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M6521_IG09: test rsi, rsi je SHORT G_M6521_IG10 mov ecx, 14 jmp SHORT G_M6521_IG11 ;; bbWeight=0 PerfScore 0.00 G_M6521_IG10: mov ecx, 10 ;; bbWeight=0 PerfScore 0.00 G_M6521_IG11: mov edx, 46 call ThrowHelper:ThrowArgumentNullException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 G_M6521_IG12: test edi, edi jl SHORT G_M6521_IG13 mov ecx, 16 jmp SHORT G_M6521_IG14 ;; bbWeight=0 PerfScore 0.00 G_M6521_IG13: mov ecx, 12 ;; bbWeight=0 PerfScore 0.00 G_M6521_IG14: mov edx, 11 call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 232, prolog size 10, PerfScore 55.95, (MethodHash=8855e686) for method UTF8Encoding:GetChars(long,int,long,int):int:this ; ============================================================ ; Assembly listing for method Utf8Utility:TranscodeToUtf16(long,int,long,int,byref,byref):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 68,3313 ) long -> rsi ; V01 arg1 [V01,T34] ( 24, 29.50) int -> rbp ; V02 arg2 [V02,T02] ( 63,2702 ) long -> rdi ; V03 arg3 [V03,T03] ( 58,2412.50) int -> rbx ; V04 arg4 [V04,T60] ( 2, 1 ) byref -> [rsp+0x80] ; V05 arg5 [V05,T61] ( 2, 1 ) byref -> [rsp+0x88] ; V06 loc0 [V06,T06] ( 10, 765 ) long -> rbp ; V07 loc1 [V07,T52] ( 5, 2.50) int -> rax ; V08 loc2 [V08,T49] ( 6, 5 ) long -> rax ; V09 loc3 [V09,T00] ( 56,5250 ) int -> rax ; V10 loc4 [V10,T36] ( 3, 24 ) int -> rdx ; V11 loc5 [V11,T19] ( 3, 80 ) int -> rcx ; V12 loc6 [V12,T11] ( 4, 200 ) int -> r8 ; V13 loc7 [V13,T10] ( 6, 216 ) int -> rdx ; V14 loc8 [V14,T20] ( 9, 72 ) int -> rdx ; V15 loc9 [V15,T28] ( 6, 48 ) long -> rcx ; V16 loc10 [V16,T29] ( 6, 48 ) int -> rdx ; V17 loc11 [V17,T12] ( 4, 168 ) int -> rdx ; V18 loc12 [V18,T09] ( 7, 224 ) int -> rdx ; V19 loc13 [V19,T45] ( 4, 8 ) int -> rdx ; V20 loc14 [V20,T38] ( 12, 19.50) int -> rax ; V21 loc15 [V21,T46] ( 3, 6 ) int -> rdx ; V22 loc16 [V22,T50] ( 2, 4 ) int -> rax ; V23 loc17 [V23,T47] ( 3, 6 ) int -> rdx ; V24 loc18 [V24,T48] ( 3, 6 ) int -> rcx ; V25 loc19 [V25,T35] ( 12, 24 ) int -> rax ; V26 loc20 [V26,T57] ( 3, 1.50) int -> rdx ; V27 loc21 [V27,T58] ( 3, 1.50) int -> rax ; V28 loc22 [V28,T59] ( 3, 1.50) int -> rdx ; V29 loc23 [V29,T62] ( 2, 1 ) int -> rax ; V30 OutArgs [V30 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V31 tmp1 [V31,T14] ( 2, 128 ) long -> rdx ;* V32 tmp2 [V32 ] ( 0, 0 ) int -> zero-ref ;* V33 tmp3 [V33 ] ( 0, 0 ) long -> zero-ref ;* V34 tmp4 [V34 ] ( 0, 0 ) int -> zero-ref ;* V35 tmp5 [V35 ] ( 0, 0 ) int -> zero-ref ; V36 tmp6 [V36,T30] ( 3, 48 ) long -> rcx "impSpillLclRefs" ; V37 tmp7 [V37,T31] ( 3, 48 ) long -> rcx "impSpillLclRefs" ; V38 tmp8 [V38,T53] ( 3, 2 ) int -> r8 "Inline return value spill temp" ;* V39 tmp9 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V40 tmp10 [V40,T67] ( 2, 16 ) simd16 -> mm0 "Inline stloc first use temp" ; V41 tmp11 [V41,T68] ( 2, 16 ) simd16 -> mm0 "Inline stloc first use temp" ;* V42 tmp12 [V42 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V43 tmp13 [V43,T33] ( 2, 32 ) long -> rdx ld-addr-op "Inlining Arg" ; V44 tmp14 [V44,T37] ( 3, 24 ) int -> rcx "Inline return value spill temp" ;* V45 tmp15 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V46 tmp16 [V46 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V47 tmp17 [V47 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V48 tmp18 [V48,T63] ( 2, 128 ) simd16 -> mm0 "Inline stloc first use temp" ; V49 tmp19 [V49,T64] ( 2, 128 ) simd16 -> mm0 "Inline stloc first use temp" ;* V50 tmp20 [V50 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V51 tmp21 [V51 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V52 tmp22 [V52,T65] ( 2, 128 ) simd16 -> mm0 "Inline stloc first use temp" ; V53 tmp23 [V53,T66] ( 2, 128 ) simd16 -> mm0 "Inline stloc first use temp" ;* V54 tmp24 [V54 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V55 tmp25 [V55 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V56 tmp26 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V57 tmp27 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V58 tmp28 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V59 tmp29 [V59,T69] ( 2, 16 ) simd16 -> mm0 "Inline stloc first use temp" ; V60 tmp30 [V60,T70] ( 2, 16 ) simd16 -> mm0 "Inline stloc first use temp" ;* V61 tmp31 [V61 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V62 tmp32 [V62,T39] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V63 tmp33 [V63 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V64 tmp34 [V64,T40] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V65 tmp35 [V65,T41] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V66 tmp36 [V66 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V67 tmp37 [V67,T42] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V68 tmp38 [V68,T43] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V69 tmp39 [V69,T13] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V70 tmp40 [V70,T21] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V71 tmp41 [V71,T07] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V72 tmp42 [V72 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V73 tmp43 [V73,T04] ( 2,1024 ) int -> rax "Inline return value spill temp" ;* V74 tmp44 [V74,T05] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V75 tmp45 [V75 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V76 tmp46 [V76,T15] ( 2, 128 ) int -> rdx "Inline return value spill temp" ; V77 tmp47 [V77,T16] ( 2, 128 ) int -> rdx "Inline stloc first use temp" ;* V78 tmp48 [V78,T18] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V79 tmp49 [V79,T22] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V80 tmp50 [V80,T44] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V81 tmp51 [V81,T17] ( 2, 128 ) long -> rdx ld-addr-op "Inlining Arg" ;* V82 tmp52 [V82 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V83 tmp53 [V83 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V84 tmp54 [V84 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V85 tmp55 [V85,T23] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V86 tmp56 [V86,T24] ( 2, 64 ) int -> rcx "Inline return value spill temp" ; V87 tmp57 [V87,T25] ( 2, 64 ) int -> rdx "Inline return value spill temp" ; V88 tmp58 [V88,T26] ( 2, 64 ) int -> rdx "Inline return value spill temp" ;* V89 tmp59 [V89,T27] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V90 tmp60 [V90,T08] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V91 tmp61 [V91,T51] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V92 tmp62 [V92 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V93 tmp63 [V93,T32] ( 18, 36 ) int -> rdx "Inline stloc first use temp" ; V94 tmp64 [V94,T54] ( 2, 2 ) long -> rbp ld-addr-op "Inlining Arg" ; V95 tmp65 [V95,T55] ( 2, 2 ) int -> rax "Inlining Arg" ; V96 tmp66 [V96,T56] ( 2, 2 ) int -> rax "Inlining Arg" ; ; Lcl frame size = 40 G_M56823_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 vzeroupper mov rsi, rcx mov ebp, edx mov rdi, r8 mov ebx, r9d ;; bbWeight=1 PerfScore 8.25 G_M56823_IG02: cmp ebp, ebx jle SHORT G_M56823_IG04 ;; bbWeight=1 PerfScore 1.25 G_M56823_IG03: mov r8d, ebx jmp SHORT G_M56823_IG05 ;; bbWeight=0.50 PerfScore 1.13 G_M56823_IG04: mov r8d, ebp ;; bbWeight=0.50 PerfScore 0.13 G_M56823_IG05: mov r8d, r8d mov rcx, rsi mov rdx, rdi call ASCIIUtility:WidenAsciiToUtf16(long,long,long):long add rsi, rax lea rdi, [rdi+2*rax] cmp eax, ebp jne SHORT G_M56823_IG08 ;; bbWeight=1 PerfScore 3.75 G_M56823_IG06: mov r14, bword ptr [rsp+80H] mov qword ptr [r14], rsi mov r15, bword ptr [rsp+88H] mov qword ptr [r15], rdi xor eax, eax ;; bbWeight=0.50 PerfScore 2.13 G_M56823_IG07: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M56823_IG08: sub ebp, eax sub ebx, eax cmp ebp, 4 jl G_M56823_IG54 mov eax, ebp lea rbp, [rsi+rax-4] ;; bbWeight=0.50 PerfScore 1.50 G_M56823_IG09: mov eax, dword ptr [rsi] ;; bbWeight=4 PerfScore 8.00 G_M56823_IG10: test eax, 0xD1FFAB1E jne G_M56823_IG18 ;; bbWeight=32 PerfScore 40.00 G_M56823_IG11: cmp ebx, 4 jl G_M56823_IG48 vmovd xmm0, xrax vxorps xmm1, xmm1, xmm1 vpunpcklbw xmm0, xmm0, xmm1 vmovd rax, xmm0 mov qword ptr [rdi], rax add rsi, 4 add rdi, 8 add ebx, -4 mov rdx, rbp sub rdx, rsi add edx, 4 cmp edx, ebx jbe SHORT G_M56823_IG12 mov ecx, ebx jmp SHORT G_M56823_IG13 ;; bbWeight=8 PerfScore 84.67 G_M56823_IG12: mov ecx, edx ;; bbWeight=8 PerfScore 2.00 G_M56823_IG13: shr ecx, 3 xor edx, edx test ecx, ecx jbe SHORT G_M56823_IG15 ;; bbWeight=8 PerfScore 28.00 G_M56823_IG14: mov eax, dword ptr [rsi] mov r8d, dword ptr [rsi+4] mov r9d, eax or r9d, r8d test r9d, 0xD1FFAB1E jne SHORT G_M56823_IG16 add rsi, 8 vmovd xmm0, xrax vxorps xmm1, xmm1, xmm1 vpunpcklbw xmm0, xmm0, xmm1 vmovd rax, xmm0 mov qword ptr [rdi], rax vmovd xmm0, xr8 vxorps xmm1, xmm1, xmm1 vpunpcklbw xmm0, xmm0, xmm1 vmovd r8, xmm0 mov qword ptr [rdi+8], r8 add rdi, 16 inc edx cmp edx, ecx jb SHORT G_M56823_IG14 ;; bbWeight=64 PerfScore 1050.67 G_M56823_IG15: shl edx, 3 sub ebx, edx jmp G_M56823_IG47 ;; bbWeight=8 PerfScore 34.00 G_M56823_IG16: test eax, 0xD1FFAB1E jne SHORT G_M56823_IG17 vmovd xmm0, xrax vxorps xmm1, xmm1, xmm1 vpunpcklbw xmm0, xmm0, xmm1 vmovd rax, xmm0 mov qword ptr [rdi], rax mov eax, r8d add rsi, 4 add rdi, 8 add ebx, -4 ;; bbWeight=8 PerfScore 52.67 G_M56823_IG17: shl edx, 3 sub ebx, edx ;; bbWeight=8 PerfScore 18.00 G_M56823_IG18: test al, 128 jne G_M56823_IG26 ;; bbWeight=16 PerfScore 20.00 G_M56823_IG19: cmp ebx, 3 jl SHORT G_M56823_IG23 mov edx, eax mov ecx, 1 movzx r8, dl mov word ptr [rdi], r8w test edx, 0x8000 jne SHORT G_M56823_IG22 ;; bbWeight=8 PerfScore 34.00 G_M56823_IG20: mov ecx, 2 shr edx, 8 movzx r8, dl mov word ptr [rdi+2], r8w test eax, 0xD1FFAB1E jne SHORT G_M56823_IG22 ;; bbWeight=8 PerfScore 38.00 G_M56823_IG21: mov ecx, 3 shr edx, 8 movzx rax, dl mov word ptr [rdi+4], ax ;; bbWeight=8 PerfScore 28.00 G_M56823_IG22: add rsi, rcx lea rdi, [rdi+2*rcx] sub ebx, ecx jmp SHORT G_M56823_IG25 ;; bbWeight=8 PerfScore 24.00 G_M56823_IG23: test ebx, ebx je G_M56823_IG57 mov edx, eax inc rsi mov rcx, rdi lea rdi, [rcx+2] movzx r8, dl mov word ptr [rcx], r8w dec ebx test edx, 0x8000 jne SHORT G_M56823_IG25 ;; bbWeight=8 PerfScore 42.00 G_M56823_IG24: test ebx, ebx je G_M56823_IG57 inc rsi shr edx, 8 mov rcx, rdi lea rdi, [rcx+2] movzx rdx, dl mov word ptr [rcx], dx test eax, 0xD1FFAB1E je G_M56823_IG57 xor ebx, ebx ;; bbWeight=8 PerfScore 56.00 G_M56823_IG25: cmp rsi, rbp ja G_M56823_IG48 mov eax, dword ptr [rsi] ;; bbWeight=8 PerfScore 26.00 G_M56823_IG26: lea edx, [rax-80C0H] test edx, 0xC0E0 jne G_M56823_IG35 ;; bbWeight=128 PerfScore 224.00 G_M56823_IG27: cmp al, 194 jb G_M56823_IG58 ;; bbWeight=128 PerfScore 160.00 G_M56823_IG28: mov edx, eax and edx, 0xD1FFAB1E add edx, 0xD1FFAB1E cmp edx, 0xD1FFAB1E ja SHORT G_M56823_IG30 ;; bbWeight=1024 PerfScore 2048.00 G_M56823_IG29: cmp ebx, 2 jl G_M56823_IG48 mov edx, eax and edx, 0xD1FFAB1E shr edx, 8 and eax, 0xD1FFAB1E shl eax, 6 or eax, edx mov dword ptr [rdi], eax add rsi, 4 add rdi, 4 add ebx, -2 cmp rsi, rbp ja G_M56823_IG48 mov eax, dword ptr [rsi] mov edx, eax and edx, 0xC0FF add edx, -0x80C2 cmp edx, 29 jbe SHORT G_M56823_IG28 jmp G_M56823_IG10 ;; bbWeight=512 PerfScore 7808.00 G_M56823_IG30: movzx rdx, al shl edx, 6 mov ecx, eax shr ecx, 8 movzx rcx, cl lea edx, [rcx+rdx-3080H] test eax, 0xD1FFAB1E jne SHORT G_M56823_IG34 ;; bbWeight=64 PerfScore 448.00 G_M56823_IG31: test eax, eax jl SHORT G_M56823_IG33 ;; bbWeight=64 PerfScore 80.00 G_M56823_IG32: cmp ebx, 3 jl G_M56823_IG48 mov word ptr [rdi], dx shr eax, 16 movzx rdx, al mov word ptr [rdi+2], dx shr eax, 8 mov word ptr [rdi+4], ax add rsi, 4 add rdi, 6 add ebx, -3 jmp G_M56823_IG47 ;; bbWeight=32 PerfScore 360.00 G_M56823_IG33: cmp ebx, 2 jl G_M56823_IG48 mov word ptr [rdi], dx lea rdx, [rdi+2] shr eax, 16 movzx rax, al mov word ptr [rdx], ax add rsi, 3 add rdi, 4 add ebx, -2 cmp rbp, rsi jb G_M56823_IG48 mov eax, dword ptr [rsi] jmp G_M56823_IG26 ;; bbWeight=64 PerfScore 768.00 G_M56823_IG34: test ebx, ebx je G_M56823_IG48 mov word ptr [rdi], dx add rsi, 2 add rdi, 2 dec ebx cmp rbp, rsi jb G_M56823_IG48 mov eax, dword ptr [rsi] ;; bbWeight=8 PerfScore 50.00 G_M56823_IG35: lea edx, [rax+D1FFAB1EH] test edx, 0xD1FFAB1E jne G_M56823_IG44 ;; bbWeight=16 PerfScore 28.00 G_M56823_IG36: test eax, 0x200F je G_M56823_IG58 lea edx, [rax-200DH] test edx, 0x200F je G_M56823_IG58 ;; bbWeight=128 PerfScore 384.00 G_M56823_IG37: test ebx, ebx je G_M56823_IG57 lea edx, [rax+D1FFAB1EH] test edx, 0xD1FFAB1E jne G_M56823_IG40 ;; bbWeight=128 PerfScore 384.00 G_M56823_IG38: cmp ebx, 1 jle G_M56823_IG40 mov rdx, rbp sub rdx, rsi cmp rdx, 3 jl G_M56823_IG40 mov edx, dword ptr [rsi+3] lea ecx, [rdx+D1FFAB1EH] test ecx, 0xD1FFAB1E jne SHORT G_M56823_IG40 ;; bbWeight=32 PerfScore 216.00 G_M56823_IG39: test edx, 0x200F je SHORT G_M56823_IG40 lea ecx, [rdx-200DH] test ecx, 0x200F je SHORT G_M56823_IG40 mov ecx, eax and ecx, 0xD1FFAB1E shr ecx, 16 mov r8d, eax and r8d, 0x3F00 shr r8d, 2 or ecx, r8d mov r8d, eax and r8d, 15 shl r8d, 12 or ecx, r8d mov word ptr [rdi], cx mov ecx, edx and ecx, 0xD1FFAB1E shr ecx, 16 mov r8d, edx and r8d, 0x3F00 shr r8d, 2 or ecx, r8d and edx, 15 shl edx, 12 or edx, ecx mov word ptr [rdi+2], dx add rsi, 6 add rdi, 4 add ebx, -2 jmp SHORT G_M56823_IG41 ;; bbWeight=32 PerfScore 752.00 G_M56823_IG40: mov edx, eax and edx, 0xD1FFAB1E shr edx, 16 mov ecx, eax and ecx, 0x3F00 shr ecx, 2 or edx, ecx mov ecx, eax and ecx, 15 shl ecx, 12 or edx, ecx mov word ptr [rdi], dx add rsi, 3 add rdi, 2 dec ebx ;; bbWeight=32 PerfScore 312.00 G_M56823_IG41: test eax, eax jl SHORT G_M56823_IG43 ;; bbWeight=128 PerfScore 160.00 G_M56823_IG42: test ebx, ebx je G_M56823_IG57 shr eax, 24 mov word ptr [rdi], ax inc rsi add rdi, 2 dec ebx ;; bbWeight=32 PerfScore 160.00 G_M56823_IG43: cmp rsi, rbp ja G_M56823_IG48 mov eax, dword ptr [rsi] lea edx, [rax+D1FFAB1EH] test edx, 0xD1FFAB1E je G_M56823_IG36 jmp G_M56823_IG10 ;; bbWeight=128 PerfScore 896.00 G_M56823_IG44: lea edx, [rax+D1FFAB1EH] test edx, 0xD1FFAB1E jne G_M56823_IG58 ;; bbWeight=2 PerfScore 3.50 G_M56823_IG45: mov edx, eax and edx, 0xFFFF rol edx, 24 add edx, 0xD1FFAB1E cmp edx, 0xD1FFAB1E ja G_M56823_IG58 ;; bbWeight=2 PerfScore 8.00 G_M56823_IG46: cmp ebx, 2 jl G_M56823_IG57 movzx rdx, al shl edx, 8 mov ecx, eax and ecx, 0x3F00 shr ecx, 6 or edx, ecx mov ecx, eax and ecx, 0xD1FFAB1E shr ecx, 20 or edx, ecx mov ecx, eax and ecx, 0xD1FFAB1E shr ecx, 8 or edx, ecx and eax, 0xD1FFAB1E shl eax, 6 or edx, eax add edx, -64 add edx, -0x2000 add edx, 0x800 add edx, 0xD1FFAB1E mov dword ptr [rdi], edx add rsi, 4 add rdi, 4 add ebx, -2 ;; bbWeight=2 PerfScore 34.00 G_M56823_IG47: cmp rsi, rbp jbe G_M56823_IG09 ;; bbWeight=4 PerfScore 5.00 G_M56823_IG48: sub rbp, rsi add ebp, 4 test ebp, ebp jle G_M56823_IG55 ;; bbWeight=0.50 PerfScore 0.88 G_M56823_IG49: movzx rax, byte ptr [rsi] cmp eax, 127 ja SHORT G_M56823_IG50 test ebx, ebx je G_M56823_IG57 mov word ptr [rdi], ax inc rsi add rdi, 2 dec ebp dec ebx jmp G_M56823_IG54 ;; bbWeight=2 PerfScore 17.00 G_M56823_IG50: add eax, -194 cmp al, 29 ja SHORT G_M56823_IG51 cmp ebp, 2 jl G_M56823_IG56 movzx rdx, byte ptr [rsi+1] lea ecx, [rdx-128] movzx rcx, cl cmp ecx, 63 ja G_M56823_IG58 test ebx, ebx je G_M56823_IG57 shl eax, 6 add eax, edx mov word ptr [rdi], ax add rsi, 2 add rdi, 2 add ebp, -2 dec ebx jmp G_M56823_IG54 ;; bbWeight=2 PerfScore 28.50 G_M56823_IG51: cmp al, 45 ja G_M56823_IG53 cmp ebp, 3 jl SHORT G_M56823_IG52 movzx rdx, byte ptr [rsi+1] movzx rcx, byte ptr [rsi+2] lea r8d, [rdx-128] movzx r8, r8b cmp r8d, 63 ja G_M56823_IG58 lea r8d, [rcx-128] movzx r8, r8b cmp r8d, 63 ja G_M56823_IG58 shl eax, 12 shl edx, 6 add eax, edx cmp eax, 0x20800 jb G_M56823_IG58 add eax, -0x2D800 cmp eax, 0x800 jb G_M56823_IG58 test ebx, ebx je G_M56823_IG57 add eax, ecx add eax, 0xD800 add eax, -128 mov word ptr [rdi], ax add rsi, 3 add rdi, 2 add ebp, -3 dec ebx jmp G_M56823_IG54 ;; bbWeight=2 PerfScore 47.00 G_M56823_IG52: cmp ebp, 2 jl G_M56823_IG56 movzx rdx, byte ptr [rsi+1] lea ecx, [rdx-128] movzx rcx, cl cmp ecx, 63 ja G_M56823_IG58 shl eax, 6 add eax, edx cmp eax, 0x820 jb SHORT G_M56823_IG58 add eax, -0xB60 cmp eax, 31 ja SHORT G_M56823_IG56 jmp SHORT G_M56823_IG58 ;; bbWeight=0.50 PerfScore 6.13 G_M56823_IG53: cmp al, 50 ja SHORT G_M56823_IG58 cmp ebp, 2 jl SHORT G_M56823_IG56 movzx rdx, byte ptr [rsi+1] lea ecx, [rdx-128] movzx rcx, cl cmp ecx, 63 ja SHORT G_M56823_IG58 shl eax, 6 add eax, edx add eax, -0xC10 cmp eax, 255 ja SHORT G_M56823_IG58 cmp ebp, 3 jl SHORT G_M56823_IG56 movzx rax, byte ptr [rsi+2] add eax, -128 movzx rax, al cmp eax, 63 ja SHORT G_M56823_IG58 cmp ebp, 4 jl SHORT G_M56823_IG56 movzx rax, byte ptr [rsi+3] add eax, -128 movzx rax, al cmp eax, 63 jbe SHORT G_M56823_IG57 jmp SHORT G_M56823_IG58 ;; bbWeight=0.50 PerfScore 11.13 G_M56823_IG54: test ebp, ebp jg G_M56823_IG49 ;; bbWeight=4 PerfScore 5.00 G_M56823_IG55: xor eax, eax jmp SHORT G_M56823_IG59 ;; bbWeight=0.50 PerfScore 1.13 G_M56823_IG56: mov eax, 2 jmp SHORT G_M56823_IG59 ;; bbWeight=0.50 PerfScore 1.13 G_M56823_IG57: mov eax, 1 jmp SHORT G_M56823_IG59 ;; bbWeight=0.50 PerfScore 1.13 G_M56823_IG58: mov eax, 3 ;; bbWeight=0.50 PerfScore 0.13 G_M56823_IG59: mov r14, bword ptr [rsp+80H] mov qword ptr [r14], rsi mov r15, bword ptr [rsp+88H] mov qword ptr [r15], rdi ;; bbWeight=0.50 PerfScore 2.00 G_M56823_IG60: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 ; Total bytes of code 1745, prolog size 26, PerfScore 17193.60, (MethodHash=8ca02208) for method Utf8Utility:TranscodeToUtf16(long,int,long,int,byref,byref):int ; ============================================================ ; Assembly listing for method ASCIIUtility:WidenAsciiToUtf16(long,long,long):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 6, 7.50) long -> rdi ; V01 arg1 [V01,T02] ( 8, 10 ) long -> rsi ; V02 arg2 [V02,T04] ( 5, 4.50) long -> rbx ; V03 loc0 [V03,T00] ( 22, 34.50) long -> rax ; V04 loc1 [V04,T06] ( 5, 3.50) long -> rbx ; V05 loc2 [V05,T01] ( 14, 25.50) int -> rcx ;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref ;* V07 loc4 [V07 ] ( 0, 0 ) long -> zero-ref ;* V08 loc5 [V08 ] ( 0, 0 ) simd32 -> zero-ref ;* V09 loc6 [V09 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op ;* V10 loc7 [V10 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op ; V11 loc8 [V11,T05] ( 2, 4.50) long -> rdx ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V14 tmp2 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V15 tmp3 [V15,T07] ( 2, 8 ) simd16 -> mm0 "Inline stloc first use temp" ; V16 tmp4 [V16,T08] ( 2, 8 ) simd16 -> mm0 "Inline stloc first use temp" ;* V17 tmp5 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V18 tmp6 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V19 tmp7 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V20 tmp8 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp9 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 32 G_M47441_IG01: push rdi push rsi push rbx sub rsp, 32 vzeroupper mov rdi, rcx mov rsi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M47441_IG02: xor rax, rax cmp rbx, 32 jb SHORT G_M47441_IG04 ;; bbWeight=1 PerfScore 1.50 G_M47441_IG03: mov rcx, rdi mov rdx, rsi mov r8, rbx call ASCIIUtility:WidenAsciiToUtf16_Sse2(long,long,long):long ;; bbWeight=0.50 PerfScore 0.88 G_M47441_IG04: sub rbx, rax cmp rbx, 4 jb SHORT G_M47441_IG07 ;; bbWeight=1 PerfScore 1.50 G_M47441_IG05: lea rdx, [rax+rbx-4] ;; bbWeight=0.50 PerfScore 0.50 G_M47441_IG06: mov ecx, dword ptr [rdi+rax] test ecx, 0xD1FFAB1E jne SHORT G_M47441_IG11 vmovd xmm0, xrcx vxorps xmm1, xmm1, xmm1 vpunpcklbw xmm0, xmm0, xmm1 vmovd rcx, xmm0 mov qword ptr [rsi+2*rax], rcx add rax, 4 cmp rax, rdx jbe SHORT G_M47441_IG06 ;; bbWeight=4 PerfScore 36.33 G_M47441_IG07: test bl, 2 je SHORT G_M47441_IG08 movzx rcx, word ptr [rdi+rax] test ecx, 0xD1FFAB1E jne SHORT G_M47441_IG11 movzx rdx, cl mov word ptr [rsi+2*rax], dx shr ecx, 8 mov word ptr [rsi+2*rax+2], cx add rax, 2 ;; bbWeight=0.50 PerfScore 4.50 G_M47441_IG08: test bl, 1 je SHORT G_M47441_IG09 movzx rcx, byte ptr [rdi+rax] test cl, 128 jne SHORT G_M47441_IG09 mov word ptr [rsi+2*rax], cx inc rax ;; bbWeight=0.50 PerfScore 2.88 G_M47441_IG09: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M47441_IG10: movzx rdx, cl mov word ptr [rsi+2*rax], dx inc rax shr ecx, 8 ;; bbWeight=2 PerfScore 7.00 G_M47441_IG11: movzx rdx, cl test dl, 128 je SHORT G_M47441_IG10 ;; bbWeight=4 PerfScore 6.00 G_M47441_IG12: jmp SHORT G_M47441_IG09 ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 184, prolog size 19, PerfScore 88.53, (MethodHash=e66946ae) for method ASCIIUtility:WidenAsciiToUtf16(long,long,long):long ; ============================================================ ; Assembly listing for method RuntimeType:GetGenericTypeDefinition():Type:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 0 ) ref -> rcx "argument with side effect" ; V04 tmp3 [V04,T03] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M2129_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M2129_IG02: cmp dword ptr [rsi], esi mov rcx, rsi call RuntimeTypeHandle:HasInstantiation(RuntimeType):bool test eax, eax je SHORT G_M2129_IG05 ;; bbWeight=1 PerfScore 4.50 G_M2129_IG03: mov rcx, rsi ;; bbWeight=1 PerfScore 0.25 G_M2129_IG04: add rsp, 32 pop rsi jmp RuntimeTypeHandle:GetGenericTypeDefinition(RuntimeType):RuntimeType ;; bbWeight=1 PerfScore 2.75 G_M2129_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xD5C3 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 103, prolog size 8, PerfScore 19.30, (MethodHash=1430f7ae) for method RuntimeType:GetGenericTypeDefinition():Type:this ; ============================================================ ; Assembly listing for method RuntimeTypeHandle:GetGenericTypeDefinition(RuntimeType):RuntimeType ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rsi class-hnd ; V01 loc0 [V01 ] ( 6, 4.50) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V02 loc1 [V02 ] ( 3, 1.50) struct ( 8) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ; V06 tmp3 [V06,T03] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V09 tmp6 [V09,T02] ( 2, 4 ) ref -> rax "Single return block return value" ; V10 FramesRoot [V10,T01] ( 6, 4 ) long -> rdi "Pinvoke FrameListRoot" ; V11 PInvokeFrame [V11 ] ( 8, 6 ) blk (72) [rbp-0xA0] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V12 tmp9 [V12 ] ( 3, 1.50) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed V02.m_type(offs=0x00) P-DEP "field V02.m_type (fldOffset=0x0)" ; V13 tmp10 [V13,T06] ( 2, 1 ) long -> rsi V04._ptr(offs=0x00) P-INDEP "field V04._ptr (fldOffset=0x0)" ; V14 tmp11 [V14,T07] ( 2, 1 ) long -> rax V04._handle(offs=0x08) P-INDEP "field V04._handle (fldOffset=0x8)" ; V15 tmp12 [V15,T08] ( 2, 1 ) long -> rdx V05._ptr(offs=0x00) P-INDEP "field V05._ptr (fldOffset=0x0)" ; V16 tmp13 [V16,T05] ( 2, 1 ) ref -> rcx V07.m_type(offs=0x00) P-INDEP "field V07.m_type (fldOffset=0x0)" ; V17 tmp14 [V17,T09] ( 2, 1 ) long -> rdx V08._ptr(offs=0x00) P-INDEP "field V08._ptr (fldOffset=0x0)" ; V18 tmp15 [V18 ] ( 2, 2 ) struct (16) [rbp-0x58] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V19 tmp16 [V19,T04] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 136 G_M37375_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] xor rdx, rdx mov qword ptr [rbp-40H], rdx mov qword ptr [rbp-48H], rdx mov rsi, rcx ;; bbWeight=1 PerfScore 11.25 G_M37375_IG02: lea rcx, [rbp-98H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rcx, rsp mov qword ptr [rbp-78H], rcx mov rcx, rbp mov qword ptr [rbp-68H], rcx mov gword ptr [rbp-40H], rsi mov rcx, gword ptr [rbp-40H] call RuntimeTypeHandle:HasInstantiation(RuntimeType):bool test eax, eax je G_M37375_IG08 ;; bbWeight=1 PerfScore 8.75 G_M37375_IG03: mov rcx, gword ptr [rbp-40H] call RuntimeTypeHandle:IsGenericTypeDefinition(RuntimeType):bool test eax, eax jne G_M37375_IG08 mov rcx, gword ptr [rbp-40H] cmp dword ptr [rcx], ecx mov gword ptr [rbp-48H], rcx lea rsi, bword ptr [rbp-48H] lea rcx, bword ptr [rbp-48H] call RuntimeTypeHandle:get_Value():long:this lea rdx, [rbp-40H] lea rcx, bword ptr [rbp-58H] mov qword ptr [rcx], rsi mov qword ptr [rcx+8], rax lea rcx, bword ptr [rbp-58H] mov rax, 0xD1FFAB1E mov qword ptr [rbp-88H], rax lea rax, G_M37375_IG06 mov qword ptr [rbp-70H], rax lea rax, bword ptr [rbp-98H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=0.50 PerfScore 9.25 G_M37375_IG04: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M37375_IG05: call qword ptr [rax]RuntimeTypeHandle:GetGenericTypeDefinition(QCallTypeHandle,ObjectHandleOnStack) ;; bbWeight=0.50 PerfScore 1.50 G_M37375_IG06: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M37375_IG07 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M37375_IG07: mov rax, bword ptr [rbp-90H] mov qword ptr [rdi+16], rax ;; bbWeight=0.50 PerfScore 1.00 G_M37375_IG08: mov rax, gword ptr [rbp-40H] ;; bbWeight=1 PerfScore 1.00 G_M37375_IG09: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 270, prolog size 37, PerfScore 69.13, (MethodHash=95d86e00) for method RuntimeTypeHandle:GetGenericTypeDefinition(RuntimeType):RuntimeType ; ============================================================ ; Assembly listing for method Enumerable:Empty():IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V03 cse0 [V03,T02] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M9878_IG01: sub rsp, 40 mov qword ptr [rsp+20H], rcx ;; bbWeight=1 PerfScore 1.25 G_M9878_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M9878_IG04 ;; bbWeight=1 PerfScore 5.25 G_M9878_IG03: jmp SHORT G_M9878_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M9878_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M9878_IG05: mov rcx, rdx call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov rax, gword ptr [rax] ;; bbWeight=1 PerfScore 3.25 G_M9878_IG06: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 58, prolog size 9, PerfScore 17.68, (MethodHash=3e23d969) for method Enumerable:Empty():IEnumerable`1 ; ============================================================ ; Assembly listing for method EmptyPartition`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00 ] ( 1, 1 ) long -> [rbp+0x10] ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M49568_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-10H], rax mov qword ptr [rbp-08H], rcx mov qword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 5.00 G_M49568_IG02: mov rcx, qword ptr [rbp+10H] call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] call EmptyPartition`1:.ctor():this mov rcx, qword ptr [rbp+10H] call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov rdx, gword ptr [rbp-10H] mov rcx, rax call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 9.50 G_M49568_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 74, prolog size 20, PerfScore 23.90, (MethodHash=bbc63e5f) for method EmptyPartition`1:.cctor() ; ============================================================ ; Assembly listing for method EmptyPartition`1:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M15423_IG01: ;; bbWeight=1 PerfScore 0.00 G_M15423_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=3647c3c0) for method EmptyPartition`1:.ctor():this ; ============================================================ ; Assembly listing for method Enumerable:CreateSelectIPartitionIterator(Func`2,IPartition`1,byref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 7, 4.75) long -> rsi ; V01 arg0 [V01,T05] ( 3, 2.50) ref -> rbp class-hnd ; V02 arg1 [V02,T02] ( 4, 3.50) ref -> rdi class-hnd ; V03 arg2 [V03,T04] ( 3, 3 ) byref -> rbx ;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T14] ( 3, 1.50) long -> r15 "spilling Runtime Lookup tree" ; V07 tmp2 [V07,T01] ( 5, 6.74) ref -> rcx class-hnd "spilling QMark2" ; V08 tmp3 [V08,T07] ( 3, 2 ) byref -> rbx ; V09 tmp4 [V09,T10] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V10 tmp5 [V10,T08] ( 3, 2 ) byref -> rbx ; V11 tmp6 [V11,T09] ( 3, 2 ) ref -> r15 ; V12 tmp7 [V12,T03] ( 5, 5 ) ref -> r15 class-hnd exact "NewObj constructor temp" ; V13 tmp8 [V13,T11] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V14 tmp9 [V14,T12] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V15 tmp10 [V15,T13] ( 4, 1.75) ref -> rcx ; V16 cse0 [V16,T15] ( 3, 1.25) long -> rcx "CSE - moderate" ; V17 cse1 [V17,T16] ( 3, 1.25) long -> rcx "CSE - moderate" ; V18 cse2 [V18,T06] ( 5, 3.25) long -> r14 "CSE - aggressive" ; ; Lcl frame size = 40 G_M15670_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx mov rbp, rdx mov rdi, r8 mov rbx, r9 ;; bbWeight=1 PerfScore 8.25 G_M15670_IG02: mov r14, qword ptr [rsi+16] cmp qword ptr [r14+24], 0 je SHORT G_M15670_IG04 ;; bbWeight=1 PerfScore 5.00 G_M15670_IG03: mov r15, qword ptr [r14+24] jmp SHORT G_M15670_IG05 ;; bbWeight=0.25 PerfScore 1.00 G_M15670_IG04: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r15, rax ;; bbWeight=0.25 PerfScore 0.44 G_M15670_IG05: mov rcx, rdi test rcx, rcx je SHORT G_M15670_IG08 ;; bbWeight=1 PerfScore 1.50 G_M15670_IG06: cmp qword ptr [rcx], r15 je SHORT G_M15670_IG08 ;; bbWeight=0.25 PerfScore 0.75 G_M15670_IG07: xor rcx, rcx ;; bbWeight=0.12 PerfScore 0.03 G_M15670_IG08: test rcx, rcx jne SHORT G_M15670_IG15 ;; bbWeight=1 PerfScore 1.25 G_M15670_IG09: mov rcx, qword ptr [r14+40] test rcx, rcx je SHORT G_M15670_IG11 ;; bbWeight=0.50 PerfScore 1.63 G_M15670_IG10: jmp SHORT G_M15670_IG12 ;; bbWeight=0.25 PerfScore 0.50 G_M15670_IG11: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M15670_IG12: call CORINFO_HELP_NEWSFAST mov r15, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M15670_IG14 ;; bbWeight=0.50 PerfScore 3.00 G_M15670_IG13: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M15670_IG14: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [r15+16], eax lea rcx, bword ptr [r15+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r15+32] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF jmp SHORT G_M15670_IG19 ;; bbWeight=0.50 PerfScore 4.75 G_M15670_IG15: mov rcx, qword ptr [r14+32] test rcx, rcx je SHORT G_M15670_IG17 ;; bbWeight=0.50 PerfScore 1.63 G_M15670_IG16: jmp SHORT G_M15670_IG18 ;; bbWeight=0.25 PerfScore 0.50 G_M15670_IG17: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M15670_IG18: call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov r15, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.50 G_M15670_IG19: mov rcx, rbx mov rdx, r15 call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M15670_IG20: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 266, prolog size 17, PerfScore 65.51, (MethodHash=6dc4c2c9) for method Enumerable:CreateSelectIPartitionIterator(Func`2,IPartition`1,byref) ; ============================================================ ; Assembly listing for method Enumerable:Concat(IEnumerable`1,IEnumerable`1):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 6, 4.50) long -> rsi ; V01 arg0 [V01,T01] ( 5, 4.50) ref -> rdi class-hnd ; V02 arg1 [V02,T02] ( 5, 4 ) ref -> rbx class-hnd ; V03 loc0 [V03,T04] ( 4, 3 ) ref -> rax class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ; V06 tmp2 [V06,T03] ( 5, 5 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T08] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V08 tmp4 [V08,T09] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V09 tmp5 [V09,T10] ( 4, 1.75) ref -> rcx ; V10 cse0 [V10,T11] ( 3, 1.25) long -> rcx "CSE - moderate" ; V11 cse1 [V11,T07] ( 3, 2.25) long -> rcx "CSE - aggressive" ; V12 cse2 [V12,T06] ( 3, 2.50) long -> rbp "CSE - aggressive" ; ; Lcl frame size = 40 G_M60539_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 6.00 G_M60539_IG02: test rdi, rdi je G_M60539_IG17 ;; bbWeight=1 PerfScore 1.25 G_M60539_IG03: test rbx, rbx je G_M60539_IG18 ;; bbWeight=1 PerfScore 1.25 G_M60539_IG04: mov rbp, qword ptr [rsi+16] mov rcx, qword ptr [rbp+16] test rcx, rcx je SHORT G_M60539_IG06 ;; bbWeight=1 PerfScore 5.25 G_M60539_IG05: jmp SHORT G_M60539_IG07 ;; bbWeight=0.25 PerfScore 0.50 G_M60539_IG06: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M60539_IG07: mov rdx, rdi call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax jne SHORT G_M60539_IG15 ;; bbWeight=1 PerfScore 2.50 G_M60539_IG08: mov rcx, qword ptr [rbp+24] test rcx, rcx je SHORT G_M60539_IG10 ;; bbWeight=0.50 PerfScore 1.63 G_M60539_IG09: jmp SHORT G_M60539_IG11 ;; bbWeight=0.25 PerfScore 0.50 G_M60539_IG10: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M60539_IG11: call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M60539_IG13 ;; bbWeight=0.50 PerfScore 3.00 G_M60539_IG12: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M60539_IG13: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rsi+16], eax lea rcx, bword ptr [rsi+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+40] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, rsi ;; bbWeight=0.50 PerfScore 3.88 G_M60539_IG14: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M60539_IG15: mov rcx, rax mov rdx, rbx mov rax, qword ptr [rax] mov rax, qword ptr [rax+80] mov rax, qword ptr [rax+16] ;; bbWeight=0.50 PerfScore 3.25 G_M60539_IG16: add rsp, 40 pop rbx pop rbp pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 2.13 G_M60539_IG17: mov ecx, 4 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M60539_IG18: mov ecx, 14 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 262, prolog size 22, PerfScore 60.14, (MethodHash=b5221384) for method Enumerable:Concat(IEnumerable`1,IEnumerable`1):IEnumerable`1 ; ============================================================ ; Assembly listing for method Enumerable:Distinct(IEnumerable`1,IEqualityComparer`1):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T02] ( 4, 4 ) ref -> rsi class-hnd ; V02 arg1 [V02,T03] ( 3, 3 ) ref -> rdi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 5, 10 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T06] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V06 tmp3 [V06,T04] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V07 tmp4 [V07,T05] ( 4, 3.25) ref -> rcx ; V08 cse0 [V08,T07] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M49798_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx mov rdi, r8 ;; bbWeight=1 PerfScore 4.75 G_M49798_IG02: test rsi, rsi je G_M49798_IG10 ;; bbWeight=1 PerfScore 1.25 G_M49798_IG03: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M49798_IG05 ;; bbWeight=1 PerfScore 5.25 G_M49798_IG04: jmp SHORT G_M49798_IG06 ;; bbWeight=0.25 PerfScore 0.50 G_M49798_IG05: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M49798_IG06: mov rcx, rdx call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M49798_IG08 ;; bbWeight=1 PerfScore 6.25 G_M49798_IG07: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M49798_IG08: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbx+16], eax lea rcx, bword ptr [rbx+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rbx ;; bbWeight=1 PerfScore 7.75 G_M49798_IG09: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M49798_IG10: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 164, prolog size 12, PerfScore 45.59, (MethodHash=d2f83d79) for method Enumerable:Distinct(IEnumerable`1,IEqualityComparer`1):IEnumerable`1 ; ============================================================ ; Assembly listing for method OrderedEnumerable`2:.ctor(IEnumerable`1,Func`2,IComparer`1,bool,OrderedEnumerable`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 4, 4 ) ref -> rbx class-hnd ; V03 arg3 [V03,T03] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T07] ( 1, 1 ) bool -> [rsp+0x70] ; V05 arg5 [V05,T05] ( 1, 1 ) ref -> [rsp+0x78] class-hnd ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V07 tmp1 [V07,T06] ( 0, 0 ) ref -> zero-ref ; V08 tmp2 [V08,T04] ( 4, 3.50) ref -> rdx ; ; Lcl frame size = 40 G_M58371_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 ;; bbWeight=1 PerfScore 5.25 G_M58371_IG02: lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF test rdi, rdi je SHORT G_M58371_IG08 ;; bbWeight=1 PerfScore 3.00 G_M58371_IG03: test rbx, rbx je SHORT G_M58371_IG09 ;; bbWeight=1 PerfScore 1.25 G_M58371_IG04: lea rcx, bword ptr [rsi+16] mov rdx, gword ptr [rsp+78H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rdx, rbp test rdx, rdx jne SHORT G_M58371_IG06 ;; bbWeight=1 PerfScore 5.75 G_M58371_IG05: mov rcx, 0xD1FFAB1E mov edx, 28 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] ;; bbWeight=0.50 PerfScore 1.88 G_M58371_IG06: lea rcx, bword ptr [rsi+32] call CORINFO_HELP_ASSIGN_REF mov edi, dword ptr [rsp+70H] mov byte ptr [rsi+40], dil ;; bbWeight=1 PerfScore 3.50 G_M58371_IG07: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M58371_IG08: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M58371_IG09: mov ecx, 9 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 157, prolog size 8, PerfScore 39.58, (MethodHash=9e711bfc) for method OrderedEnumerable`2:.ctor(IEnumerable`1,Func`2,IComparer`1,bool,OrderedEnumerable`1):this ; ============================================================ ; Assembly listing for method Comparer`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) struct ( 8) [rbp-0x08] do-not-enreg[SB] must-init "struct address for call/obj" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init "argument with side effect" ; ; Lcl frame size = 48 G_M28930_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax mov qword ptr [rbp-10H], rax ;; bbWeight=1 PerfScore 4.00 G_M28930_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPEHANDLE mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call Type:GetTypeFromHandle(RuntimeTypeHandle):Type mov rcx, rax call ComparerHelpers:CreateDefaultComparer(Type):Object mov gword ptr [rbp-10H], rax mov rdx, gword ptr [rbp-10H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTCLASS mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 10.50 G_M28930_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 104, prolog size 20, PerfScore 26.90, (MethodHash=19ca8efd) for method Comparer`1:.cctor() ; ============================================================ ; Assembly listing for method ComparerHelpers:CreateDefaultComparer(Type):Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 4.12) ref -> rsi class-hnd ; V01 loc0 [V01,T06] ( 5, 3.50) ref -> rdi class-hnd ; V02 loc1 [V02,T00] ( 13, 8 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T10] ( 3, 1.24) long -> rdx "fgInsertCommaFormTemp is creating a new local variable" ; V05 tmp2 [V05,T04] ( 3, 4.50) ref -> rcx class-hnd "spilling QMark2" ; V06 tmp3 [V06,T02] ( 3, 6 ) ref -> rbp class-hnd exact "dup spill" ; V07 tmp4 [V07,T05] ( 2, 4 ) ref -> rbx class-hnd "impAppendStmt" ; V08 tmp5 [V08,T07] ( 3, 2.50) ref -> rax ; V09 tmp6 [V09,T03] ( 3, 6 ) ref -> rax "argument with side effect" ; V10 tmp7 [V10,T08] ( 2, 2 ) ref -> rcx "argument with side effect" ; V11 tmp8 [V11,T09] ( 2, 2 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 40 G_M13036_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 4.50 G_M13036_IG02: xor rdi, rdi mov rcx, rsi test rcx, rcx je SHORT G_M13036_IG05 ;; bbWeight=1 PerfScore 1.75 G_M13036_IG03: mov rdx, 0xD1FFAB1E cmp qword ptr [rcx], rdx je SHORT G_M13036_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M13036_IG04: mov rcx, rdx mov rdx, rsi call CORINFO_HELP_CHKCASTCLASS_SPECIAL ;; bbWeight=0.12 PerfScore 0.18 G_M13036_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rbx, rax mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rbp, rax mov rcx, rbp mov r8, rsi xor edx, edx call CORINFO_HELP_ARRADDR_ST mov rcx, rbx mov rdx, rbp mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]RuntimeType:MakeGenericType(ref):Type:this mov rcx, rax mov rdx, rsi mov rax, qword ptr [rax] mov rax, qword ptr [rax+168] call qword ptr [rax+32]Type:IsAssignableFrom(Type):bool:this test eax, eax je SHORT G_M13036_IG07 ;; bbWeight=1 PerfScore 19.50 G_M13036_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax mov rdx, rsi call RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(RuntimeType,RuntimeType):Object mov rdi, rax jmp SHORT G_M13036_IG09 ;; bbWeight=0.50 PerfScore 2.50 G_M13036_IG07: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+96] call qword ptr [rax+16]Type:get_IsGenericType():bool:this test eax, eax je SHORT G_M13036_IG08 mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+104] call gword ptr [rax+16]Type:GetGenericTypeDefinition():Type:this mov rbx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rbx, rax jne SHORT G_M13036_IG09 mov rcx, rsi call ComparerHelpers:TryCreateNullableComparer(RuntimeType):Object mov rdi, rax jmp SHORT G_M13036_IG09 ;; bbWeight=0.50 PerfScore 11.00 G_M13036_IG08: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+112] call qword ptr [rax+24]Type:get_IsEnum():bool:this test eax, eax je SHORT G_M13036_IG09 mov rcx, rsi call ComparerHelpers:TryCreateEnumComparer(RuntimeType):Object mov rdi, rax ;; bbWeight=0.50 PerfScore 5.00 G_M13036_IG09: mov rax, rdi test rax, rax jne SHORT G_M13036_IG12 ;; bbWeight=1 PerfScore 1.50 G_M13036_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax mov rdx, rsi ;; bbWeight=0.50 PerfScore 0.88 G_M13036_IG11: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(RuntimeType,RuntimeType):Object ;; bbWeight=0.50 PerfScore 2.13 G_M13036_IG12: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 320, prolog size 8, PerfScore 83.37, (MethodHash=da75cd13) for method ComparerHelpers:CreateDefaultComparer(Type):Object ; ============================================================ ; Assembly listing for method GenericComparer`1:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M2540_IG01: ;; bbWeight=1 PerfScore 0.00 G_M2540_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=e0a6f613) for method GenericComparer`1:.ctor():this ; ============================================================ ; Assembly listing for method Enumerable:ThenBy(IOrderedEnumerable`1,Func`2):IOrderedEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T01] ( 6, 4.50) long -> rdi ; V01 arg0 [V01,T00] ( 5, 5 ) ref -> rsi class-hnd ; V02 arg1 [V02,T02] ( 3, 3 ) ref -> rbx class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 3 ) long -> r14 "spilling Runtime Lookup tree" ; V05 tmp2 [V05,T05] ( 3, 3 ) long -> r8 "spilling Runtime Lookup tree" ; V06 tmp3 [V06,T03] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ; V07 cse0 [V07,T07] ( 3, 2.25) long -> r14 "CSE - aggressive" ; V08 cse1 [V08,T08] ( 3, 2.25) long -> r8 "CSE - aggressive" ; V09 cse2 [V09,T06] ( 3, 3 ) long -> rbp "CSE - aggressive" ; ; Lcl frame size = 48 G_M49113_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rdi, rcx mov rsi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 7.00 G_M49113_IG02: test rsi, rsi je SHORT G_M49113_IG11 ;; bbWeight=1 PerfScore 1.25 G_M49113_IG03: mov rbp, qword ptr [rdi+16] mov r14, qword ptr [rbp+24] test r14, r14 je SHORT G_M49113_IG05 ;; bbWeight=1 PerfScore 5.25 G_M49113_IG04: jmp SHORT G_M49113_IG06 ;; bbWeight=0.25 PerfScore 0.50 G_M49113_IG05: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r14, rax ;; bbWeight=0.25 PerfScore 0.44 G_M49113_IG06: mov r8, qword ptr [rbp+32] test r8, r8 je SHORT G_M49113_IG08 ;; bbWeight=1 PerfScore 3.25 G_M49113_IG07: jmp SHORT G_M49113_IG09 ;; bbWeight=0.25 PerfScore 0.50 G_M49113_IG08: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r8, rax ;; bbWeight=0.25 PerfScore 0.44 G_M49113_IG09: mov rcx, rsi mov rdx, r14 call CORINFO_HELP_VIRTUAL_FUNC_PTR mov rcx, rsi mov rdx, rbx xor r8, r8 xor r9d, r9d ;; bbWeight=1 PerfScore 2.50 G_M49113_IG10: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 rex.jmp rax ;; bbWeight=1 PerfScore 4.75 G_M49113_IG11: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 144, prolog size 24, PerfScore 40.28, (MethodHash=80544026) for method Enumerable:ThenBy(IOrderedEnumerable`1,Func`2):IOrderedEnumerable`1 ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_InstantiatingStub(Func`2,IComparer`1,bool):IOrderedEnumerable`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rax class-hnd ; V03 arg3 [V03,T03] ( 3, 3 ) bool -> r9 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "impImportIndirectCall" ; ; Lcl frame size = 40 G_M50984_IG01: sub rsp, 40 mov rax, r8 ;; bbWeight=1 PerfScore 0.50 G_M50984_IG02: movzx r8, r9b mov dword ptr [rsp+20H], r8d mov r8, rdx mov r9, rax mov rdx, 0xD1FFAB1E mov rax, 0xD1FFAB1E call rax nop ;; bbWeight=1 PerfScore 5.50 G_M50984_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 50, prolog size 4, PerfScore 12.25, (MethodHash=6e7a38d7) for method ILStubClass:IL_STUB_InstantiatingStub(Func`2,IComparer`1,bool):IOrderedEnumerable`1:this ; ============================================================ ; Assembly listing for method OrderedEnumerable`1:System.Linq.IOrderedEnumerable.CreateOrderedEnumerable(Func`2,IComparer`1,bool):IOrderedEnumerable`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) ref -> rsi this class-hnd ; V01 TypeCtx [V01,T00] ( 5, 4.25) long -> rdx ; V02 arg1 [V02,T03] ( 3, 3 ) ref -> rdi class-hnd ; V03 arg2 [V03,T04] ( 3, 3 ) ref -> rbx class-hnd ; V04 arg3 [V04,T08] ( 1, 1 ) bool -> [rsp+0x90] ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T02] ( 3, 6 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T05] ( 2, 4 ) ref -> rbp class-hnd "bubbling QMark1" ; V08 tmp3 [V08,T06] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ; V09 cse0 [V09,T07] ( 3, 2.25) long -> rcx "CSE - aggressive" ; ; Lcl frame size = 56 G_M33813_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rdx mov rsi, rcx mov rdi, r8 mov rbx, r9 ;; bbWeight=1 PerfScore 8.00 G_M33813_IG02: mov rbp, gword ptr [rsi+8] mov rcx, qword ptr [rdx+16] mov rcx, qword ptr [rcx+16] test rcx, rcx je SHORT G_M33813_IG04 ;; bbWeight=1 PerfScore 7.25 G_M33813_IG03: jmp SHORT G_M33813_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M33813_IG04: mov rcx, rdx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M33813_IG05: call CORINFO_HELP_NEWSFAST mov r14, rax mov r15d, dword ptr [rsp+90H] movzx rcx, r15b mov dword ptr [rsp+20H], ecx mov gword ptr [rsp+28H], rsi mov rcx, r14 mov rdx, rbp mov r8, rdi mov r9, rbx call OrderedEnumerable`2:.ctor(IEnumerable`1,Func`2,IComparer`1,bool,OrderedEnumerable`1):this mov rax, r14 ;; bbWeight=1 PerfScore 6.75 G_M33813_IG06: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 128, prolog size 17, PerfScore 39.99, (MethodHash=af957bea) for method OrderedEnumerable`1:System.Linq.IOrderedEnumerable.CreateOrderedEnumerable(Func`2,IComparer`1,bool):IOrderedEnumerable`1:this ; ============================================================ ; Assembly listing for method OrderedEnumerable`2:.ctor(IEnumerable`1,Func`2,IComparer`1,bool,OrderedEnumerable`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 8 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 4, 4 ) ref -> rbx class-hnd ; V03 arg3 [V03,T03] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T10] ( 1, 1 ) bool -> [rsp+0x70] ; V05 arg5 [V05,T09] ( 1, 1 ) ref -> [rsp+0x78] class-hnd ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T07] ( 2, 1.50) ref -> rcx ; V08 tmp2 [V08,T04] ( 4, 3.50) ref -> rdx ; V09 tmp3 [V09,T05] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V10 tmp4 [V10,T06] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V11 cse0 [V11,T08] ( 3, 1.25) long -> rdx "CSE - moderate" ; ; Lcl frame size = 40 G_M58371_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 ;; bbWeight=1 PerfScore 6.25 G_M58371_IG02: lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF test rdi, rdi je SHORT G_M58371_IG11 ;; bbWeight=1 PerfScore 3.00 G_M58371_IG03: test rbx, rbx je G_M58371_IG12 ;; bbWeight=1 PerfScore 1.25 G_M58371_IG04: lea rcx, bword ptr [rsi+16] mov rdx, gword ptr [rsp+78H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, rsi mov rdx, rbp test rdx, rdx jne SHORT G_M58371_IG09 ;; bbWeight=1 PerfScore 6.00 G_M58371_IG05: mov rcx, qword ptr [rcx] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx+8] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M58371_IG07 ;; bbWeight=0.50 PerfScore 4.63 G_M58371_IG06: jmp SHORT G_M58371_IG08 ;; bbWeight=0.25 PerfScore 0.50 G_M58371_IG07: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M58371_IG08: mov rcx, rdx call Comparer`1:get_Default():Comparer`1 mov rdx, rax ;; bbWeight=0.50 PerfScore 0.75 G_M58371_IG09: lea rcx, bword ptr [rsi+32] call CORINFO_HELP_ASSIGN_REF mov edi, dword ptr [rsp+70H] mov byte ptr [rsi+40], dil ;; bbWeight=1 PerfScore 3.50 G_M58371_IG10: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M58371_IG11: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M58371_IG12: mov ecx, 9 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 187, prolog size 13, PerfScore 48.20, (MethodHash=9e711bfc) for method OrderedEnumerable`2:.ctor(IEnumerable`1,Func`2,IComparer`1,bool,OrderedEnumerable`1):this ; ============================================================ ; Assembly listing for method Comparer`1:get_Default():Comparer`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M30681_IG01: sub rsp, 40 mov qword ptr [rsp+20H], rcx ;; bbWeight=1 PerfScore 1.25 G_M30681_IG02: call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov rax, gword ptr [rax] ;; bbWeight=1 PerfScore 3.00 G_M30681_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 22, prolog size 9, PerfScore 7.70, (MethodHash=b9f48826) for method Comparer`1:get_Default():Comparer`1 ; ============================================================ ; Assembly listing for method Comparer`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00 ] ( 1, 1 ) long -> [rbp+0x10] ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[SB] must-init "struct address for call/obj" ; V03 tmp2 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init "argument with side effect" ; TEMP_01 byref -> [rbp-0x20] ; ; Lcl frame size = 64 G_M28930_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 xor rax, rax mov qword ptr [rbp-10H], rax mov qword ptr [rbp-08H], rcx mov qword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 6.33 G_M28930_IG02: mov rcx, qword ptr [rbp+10H] mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPEHANDLE mov gword ptr [rbp-10H], rax mov rcx, qword ptr [rbp+10H] call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov bword ptr [rbp-20H], rax mov rcx, gword ptr [rbp-10H] call Type:GetTypeFromHandle(RuntimeTypeHandle):Type mov rcx, rax call ComparerHelpers:CreateDefaultComparer(Type):Object mov gword ptr [rbp-18H], rax mov rdx, gword ptr [rbp-18H] mov rcx, qword ptr [rbp+10H] call CORINFO_HELP_CHKCASTCLASS mov rcx, bword ptr [rbp-20H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 21.75 G_M28930_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 122, prolog size 29, PerfScore 42.48, (MethodHash=19ca8efd) for method Comparer`1:.cctor() ; ============================================================ ; Assembly listing for method GenericComparer`1:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M2540_IG01: ;; bbWeight=1 PerfScore 0.00 G_M2540_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=e0a6f613) for method GenericComparer`1:.ctor():this ; ============================================================ ; Assembly listing for method Enumerable:ToArray(IEnumerable`1):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 7, 4.75) long -> rsi ; V01 arg0 [V01,T01] ( 5, 4.50) ref -> rdi class-hnd ; V02 loc0 [V02,T05] ( 3, 2.50) ref -> rbp class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ; V05 tmp2 [V05,T02] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V07 tmp4 [V07,T07] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V08 cse0 [V08,T08] ( 3, 1.25) long -> rcx "CSE - moderate" ; V09 cse1 [V09,T09] ( 3, 1.25) long -> r11 "CSE - moderate" ; V10 cse2 [V10,T06] ( 3, 2.25) long -> rcx "CSE - aggressive" ; V11 cse3 [V11,T03] ( 4, 3 ) long -> rbx "CSE - aggressive" ; ; Lcl frame size = 40 G_M31344_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 5.75 G_M31344_IG02: test rdi, rdi je G_M31344_IG17 ;; bbWeight=1 PerfScore 1.25 G_M31344_IG03: mov rbx, qword ptr [rsi+16] mov rcx, qword ptr [rbx+16] test rcx, rcx je SHORT G_M31344_IG05 ;; bbWeight=1 PerfScore 5.25 G_M31344_IG04: jmp SHORT G_M31344_IG06 ;; bbWeight=0.25 PerfScore 0.50 G_M31344_IG05: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M31344_IG06: mov rdx, rdi call CORINFO_HELP_ISINSTANCEOFINTERFACE mov rbp, rax test rbp, rbp jne SHORT G_M31344_IG12 ;; bbWeight=1 PerfScore 2.75 G_M31344_IG07: mov rcx, qword ptr [rbx+32] test rcx, rcx je SHORT G_M31344_IG09 ;; bbWeight=0.50 PerfScore 1.63 G_M31344_IG08: jmp SHORT G_M31344_IG10 ;; bbWeight=0.25 PerfScore 0.50 G_M31344_IG09: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M31344_IG10: mov rdx, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M31344_IG11: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp EnumerableHelpers:ToArray(IEnumerable`1):ref ;; bbWeight=0.50 PerfScore 2.13 G_M31344_IG12: mov r11, qword ptr [rbx+24] test r11, r11 je SHORT G_M31344_IG14 ;; bbWeight=0.50 PerfScore 1.63 G_M31344_IG13: jmp SHORT G_M31344_IG15 ;; bbWeight=0.25 PerfScore 0.50 G_M31344_IG14: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=0.25 PerfScore 0.44 G_M31344_IG15: mov rcx, rbp mov rax, qword ptr [r11] ;; bbWeight=0.50 PerfScore 1.13 G_M31344_IG16: add rsp, 40 pop rbx pop rbp pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 2.13 G_M31344_IG17: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 188, prolog size 19, PerfScore 45.36, (MethodHash=1832858f) for method Enumerable:ToArray(IEnumerable`1):ref ; ============================================================ ; Assembly listing for method OrderedEnumerable`1:ToArray():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T06] ( 7, 5.50) ref -> rsi this class-hnd ; V01 loc0 [V01 ] ( 7, 11.50) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V02 loc1 [V02,T13] ( 3, 2.50) int -> rdi ; V03 loc2 [V03,T04] ( 4, 5.50) ref -> rdi class-hnd exact ; V04 loc3 [V04,T07] ( 3, 5 ) ref -> rbx class-hnd ; V05 loc4 [V05,T00] ( 7, 24.50) int -> rbp ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T09] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V08 tmp2 [V08,T11] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V09 tmp3 [V09,T12] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V10 tmp4 [V10,T18] ( 2, 1.50) long -> rcx "impRuntimeLookup slot" ; V11 tmp5 [V11,T16] ( 3, 2 ) long -> [rsp+0x28] "spilling Runtime Lookup tree" ;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V13 tmp7 [V13 ] ( 5, 10 ) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed V01._items(offs=0x00) P-DEP "field V01._items (fldOffset=0x0)" ; V14 tmp8 [V14 ] ( 3, 2.50) int -> [rsp+0x38] do-not-enreg[X] addr-exposed V01._count(offs=0x08) P-DEP "field V01._count (fldOffset=0x8)" ; V15 tmp9 [V15,T20] ( 2, 1 ) ref -> rbx V12._items(offs=0x00) P-INDEP "field V12._items (fldOffset=0x0)" ; V16 tmp10 [V16,T21] ( 2, 1 ) int -> rbp V12._count(offs=0x08) P-INDEP "field V12._count (fldOffset=0x8)" ; V17 tmp11 [V17,T17] ( 2, 2 ) ref -> rcx "argument with side effect" ; V18 tmp12 [V18,T01] ( 3, 24 ) int -> rcx "index expr" ;* V19 tmp13 [V19,T05] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V20 tmp14 [V20,T03] ( 2, 16 ) int -> rdx "argument with side effect" ; V21 tmp15 [V21,T02] ( 2, 16 ) ref -> r8 "argument with side effect" ; V22 cse0 [V22,T19] ( 3, 1.25) long -> rdx "CSE - moderate" ; V23 cse1 [V23,T15] ( 3, 2.25) long -> rdx "CSE - moderate" ; V24 cse2 [V24,T14] ( 3, 2.50) long -> rbx "CSE - moderate" ; V25 cse3 [V25,T10] ( 2, 4.50) int -> r15 "CSE - aggressive" ; V26 cse4 [V26,T08] ( 3, 5 ) int -> r14 "CSE - aggressive" ; ; Lcl frame size = 72 G_M58788_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 72 xor rax, rax mov qword ptr [rsp+30H], rax mov qword ptr [rsp+40H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 8.75 G_M58788_IG02: mov rdi, gword ptr [rsi+8] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rbx, qword ptr [rdx] mov rdx, qword ptr [rbx+16] test rdx, rdx je SHORT G_M58788_IG04 ;; bbWeight=1 PerfScore 11.25 G_M58788_IG03: jmp SHORT G_M58788_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M58788_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M58788_IG05: lea rcx, bword ptr [rsp+30H] mov r8, rdi call Buffer`1:.ctor(IEnumerable`1):this mov edi, dword ptr [rsp+38H] test edi, edi jne SHORT G_M58788_IG08 ;; bbWeight=1 PerfScore 4.00 G_M58788_IG06: mov rax, gword ptr [rsp+30H] ;; bbWeight=0.50 PerfScore 0.50 G_M58788_IG07: add rsp, 72 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M58788_IG08: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rbx+24] test rdx, rdx je SHORT G_M58788_IG10 ;; bbWeight=0.50 PerfScore 2.63 G_M58788_IG09: mov qword ptr [rsp+28H], rdx jmp SHORT G_M58788_IG11 ;; bbWeight=0.25 PerfScore 0.75 G_M58788_IG10: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+28H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M58788_IG11: movsxd rdx, edi mov rcx, qword ptr [rsp+28H] call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax mov rbx, gword ptr [rsp+30H] mov ebp, dword ptr [rsp+38H] mov rcx, rsi xor rdx, rdx mov rax, qword ptr [rsi] mov rax, qword ptr [rax+72] call gword ptr [rax+40]OrderedEnumerable`1:GetEnumerableSorter(EnumerableSorter`1):EnumerableSorter`1:this mov rcx, rax mov rdx, rbx mov r8d, ebp cmp dword ptr [rcx], ecx call EnumerableSorter`1:Sort(ref,int):ref:this mov rbx, rax xor ebp, ebp mov r14d, dword ptr [rdi+8] test r14d, r14d je SHORT G_M58788_IG13 mov r15d, dword ptr [rbx+8] ;; bbWeight=0.50 PerfScore 10.75 G_M58788_IG12: mov edx, ebp cmp ebp, r15d jae SHORT G_M58788_IG15 movsxd rcx, ebp mov ecx, dword ptr [rbx+4*rcx+16] mov r8, gword ptr [rsp+30H] cmp ecx, dword ptr [r8+8] jae SHORT G_M58788_IG15 mov r8, gword ptr [rsp+30H] movsxd rcx, ecx mov r8, gword ptr [r8+8*rcx+16] mov rcx, rdi call CORINFO_HELP_ARRADDR_ST inc ebp cmp r14d, ebp jne SHORT G_M58788_IG12 ;; bbWeight=4 PerfScore 55.00 G_M58788_IG13: mov rax, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M58788_IG14: add rsp, 72 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M58788_IG15: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 297, prolog size 27, PerfScore 129.14, (MethodHash=d5c11a5b) for method OrderedEnumerable`1:ToArray():ref:this ; ============================================================ ; Assembly listing for method Buffer`1:.ctor(IEnumerable`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 7, 4.50) byref -> rdi this ; V01 TypeCtx [V01,T00] ( 7, 4.60) long -> rsi ; V02 arg1 [V02,T02] ( 4, 3.50) ref -> rbx class-hnd ; V03 loc0 [V03,T07] ( 3, 2.50) ref -> r14 class-hnd ; V04 loc1 [V04,T11] ( 3, 1.50) ref -> rsi class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T05] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ; V07 tmp2 [V07,T10] ( 2, 2 ) byref -> r14 "bubbling QMark1" ; V08 tmp3 [V08,T09] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V09 tmp4 [V09,T06] ( 3, 2.80) long -> rbp "impRuntimeLookup indirectOffset" ; V10 tmp5 [V10,T03] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V12 cse0 [V12,T12] ( 3, 1.25) long -> rcx "CSE - moderate" ; V13 cse1 [V13,T08] ( 3, 2.25) long -> rcx "CSE - aggressive" ; V14 cse2 [V14,T04] ( 4, 3 ) long -> rbp "CSE - aggressive" ; V15 cse3 [V15,T13] ( 3, 1.20) long -> r11 "CSE - moderate" ; ; Lcl frame size = 48 G_M52350_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 mov qword ptr [rsp+28H], rdx mov rdi, rcx mov rsi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 7.00 G_M52350_IG02: mov rcx, qword ptr [rsi+48] mov rbp, qword ptr [rcx] mov rcx, qword ptr [rbp+16] test rcx, rcx je SHORT G_M52350_IG04 ;; bbWeight=1 PerfScore 7.25 G_M52350_IG03: jmp SHORT G_M52350_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M52350_IG04: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M52350_IG05: mov rdx, rbx call CORINFO_HELP_ISINSTANCEOFINTERFACE mov r14, rax test r14, r14 je SHORT G_M52350_IG11 ;; bbWeight=1 PerfScore 2.75 G_M52350_IG06: cmp qword ptr [rbp+8], 32 jle SHORT G_M52350_IG08 ;; bbWeight=0.50 PerfScore 1.50 G_M52350_IG07: mov r11, qword ptr [rbp+32] test r11, r11 je SHORT G_M52350_IG08 jmp SHORT G_M52350_IG09 ;; bbWeight=0.40 PerfScore 2.10 G_M52350_IG08: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.10 PerfScore 0.18 G_M52350_IG09: mov rcx, r14 call gword ptr [r11] mov rsi, rax mov rcx, rdi mov rdx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov ecx, dword ptr [rsi+8] mov dword ptr [rdi+8], ecx ;; bbWeight=0.50 PerfScore 4.00 G_M52350_IG10: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M52350_IG11: cmp dword ptr [rdi], edi lea r14, bword ptr [rdi+8] mov rcx, qword ptr [rbp+24] test rcx, rcx je SHORT G_M52350_IG13 ;; bbWeight=0.50 PerfScore 2.88 G_M52350_IG12: jmp SHORT G_M52350_IG14 ;; bbWeight=0.25 PerfScore 0.50 G_M52350_IG13: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M52350_IG14: mov rdx, rbx mov r8, r14 call EnumerableHelpers:ToArray(IEnumerable`1,byref):ref mov rdx, rax mov rcx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 1.63 G_M52350_IG15: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 ; Total bytes of code 227, prolog size 15, PerfScore 57.60, (MethodHash=d71a3381) for method Buffer`1:.ctor(IEnumerable`1):this ; ============================================================ ; Assembly listing for method DistinctIterator`1:ToArray():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M56189_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M56189_IG02: call DistinctIterator`1:FillSet():Set`1:this mov rcx, rax cmp dword ptr [rcx], ecx ;; bbWeight=1 PerfScore 3.25 G_M56189_IG03: add rsp, 40 jmp Set`1:ToArray():ref:this ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 23, prolog size 4, PerfScore 8.05, (MethodHash=a3772482) for method DistinctIterator`1:ToArray():ref:this ; ============================================================ ; Assembly listing for method DistinctIterator`1:FillSet():Set`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 5 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T02] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V05 tmp3 [V05,T03] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V06 tmp4 [V06,T04] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V07 cse0 [V07,T05] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M37488_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 4.50 G_M37488_IG02: mov rdi, gword ptr [rsi+32] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx+8] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M37488_IG04 ;; bbWeight=1 PerfScore 11.25 G_M37488_IG03: jmp SHORT G_M37488_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M37488_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M37488_IG05: mov rcx, rdx call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, rbx mov rdx, rdi call Set`1:.ctor(IEqualityComparer`1):this mov rdx, gword ptr [rsi+24] mov rcx, rbx call Set`1:UnionWith(IEnumerable`1):this mov rax, rbx ;; bbWeight=1 PerfScore 6.50 G_M37488_IG06: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 104, prolog size 12, PerfScore 36.28, (MethodHash=cc1d6d8f) for method DistinctIterator`1:FillSet():Set`1:this ; ============================================================ ; Assembly listing for method Set`1:.ctor(IEqualityComparer`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T08] ( 2, 1.50) ref -> rcx ; V04 tmp2 [V04,T03] ( 4, 3.50) ref -> rdx ; V05 tmp3 [V05,T02] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V06 tmp4 [V06,T04] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V07 tmp5 [V07,T05] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V08 tmp6 [V08,T07] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V09 cse0 [V09,T09] ( 3, 1.25) long -> rdx "CSE - moderate" ; V10 cse1 [V10,T06] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M207_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M207_IG02: mov rcx, rsi test rdx, rdx jne SHORT G_M207_IG07 ;; bbWeight=1 PerfScore 1.50 G_M207_IG03: mov rcx, qword ptr [rcx] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M207_IG05 ;; bbWeight=0.50 PerfScore 4.63 G_M207_IG04: jmp SHORT G_M207_IG06 ;; bbWeight=0.25 PerfScore 0.50 G_M207_IG05: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M207_IG06: mov rcx, rdx call EqualityComparer`1:get_Default():EqualityComparer`1 mov rdx, rax ;; bbWeight=0.50 PerfScore 0.75 G_M207_IG07: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 7 call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M207_IG09 ;; bbWeight=1 PerfScore 14.00 G_M207_IG08: jmp SHORT G_M207_IG10 ;; bbWeight=0.25 PerfScore 0.50 G_M207_IG09: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M207_IG10: mov rcx, rdx mov edx, 7 call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 3.50 G_M207_IG11: add rsp, 48 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 183, prolog size 10, PerfScore 48.68, (MethodHash=226dff30) for method Set`1:.ctor(IEqualityComparer`1):this ; ============================================================ ; Assembly listing for method Set`1:UnionWith(IEnumerable`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 4, 7 ) ref -> [rbp+0x10] EH do-not-enreg[] this class-hnd EH-live ; V01 arg1 [V01,T09] ( 3, 3 ) ref -> rsi class-hnd ; V02 loc0 [V02,T01] ( 7, 11 ) ref -> [rbp-0x28] EH do-not-enreg[] class-hnd EH-live ; V03 loc1 [V03,T05] ( 2, 8 ) ref -> rdx class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T10] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V06 tmp2 [V06,T08] ( 4, 5 ) long -> r11 "spilling Runtime Lookup tree" ;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V08 tmp4 [V08,T02] ( 2, 10 ) long -> rcx "impRuntimeLookup slot" ; V09 tmp5 [V09,T00] ( 4, 20 ) long -> r11 "spilling Runtime Lookup tree" ;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V11 PSPSym [V11 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "PSPSym" ; V12 tmp8 [V12,T12] ( 2, 2 ) ref -> rax "optAddCopies" ; V13 cse0 [V13,T04] ( 3, 9 ) long -> r11 "CSE - aggressive" ; V14 cse1 [V14,T11] ( 3, 2.25) long -> r11 "CSE - aggressive" ; V15 cse2 [V15,T06] ( 3, 6 ) long -> rbx "CSE - aggressive" ; V16 cse3 [V16,T07] ( 3, 6 ) long -> rdi "CSE - aggressive" ; ; Lcl frame size = 56 G_M23465_IG01: push rbp push rdi push rsi push rbx sub rsp, 56 lea rbp, [rsp+50H] mov qword ptr [rbp-30H], rsp mov qword ptr [rbp-20H], rcx mov gword ptr [rbp+10H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 8.00 G_M23465_IG02: mov rcx, gword ptr [rbp+10H] mov rdi, qword ptr [rcx] mov rcx, rdi mov rdx, qword ptr [rcx+48] mov rbx, qword ptr [rdx] mov r11, qword ptr [rbx+32] test r11, r11 je SHORT G_M23465_IG04 ;; bbWeight=1 PerfScore 10.50 G_M23465_IG03: jmp SHORT G_M23465_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M23465_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M23465_IG05: mov rcx, rsi call gword ptr [r11] mov gword ptr [rbp-28H], rax ;; bbWeight=1 PerfScore 4.25 G_M23465_IG06: mov rcx, gword ptr [rbp-28H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M23465_IG11 ;; bbWeight=1 PerfScore 5.75 G_M23465_IG07: mov rcx, rdi mov r11, qword ptr [rbx+40] test r11, r11 je SHORT G_M23465_IG09 ;; bbWeight=4 PerfScore 14.00 G_M23465_IG08: jmp SHORT G_M23465_IG10 ;; bbWeight=1 PerfScore 2.00 G_M23465_IG09: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=1 PerfScore 1.50 G_M23465_IG10: mov rcx, gword ptr [rbp-28H] call gword ptr [r11] mov rdx, rax mov rcx, gword ptr [rbp+10H] call Set`1:Add(__Canon):bool:this mov rcx, gword ptr [rbp-28H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M23465_IG07 ;; bbWeight=4 PerfScore 48.00 G_M23465_IG11: mov rcx, gword ptr [rbp-28H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this nop ;; bbWeight=1 PerfScore 4.75 G_M23465_IG12: lea rsp, [rbp-18H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.50 G_M23465_IG13: push rbp push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=0 PerfScore 0.00 G_M23465_IG14: cmp gword ptr [rbp-28H], 0 je SHORT G_M23465_IG15 mov rcx, gword ptr [rbp-28H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M23465_IG15: nop ;; bbWeight=0 PerfScore 0.00 G_M23465_IG16: add rsp, 40 pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 295, prolog size 28, PerfScore 132.63, (MethodHash=6cdca456) for method Set`1:UnionWith(IEnumerable`1):this ; ============================================================ ; Assembly listing for method ConcatIterator`1:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 22, 41 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T03] ( 3, 12 ) ref -> rdi class-hnd ; V02 loc1 [V02,T04] ( 3, 12 ) int -> rdx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 18 ) long -> rcx "impRuntimeLookup slot" ; V05 tmp2 [V05,T01] ( 4, 20 ) long -> r11 "spilling Runtime Lookup tree" ;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V07 tmp4 [V07,T08] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V08 tmp5 [V08,T10] ( 2, 2 ) ref -> rdi class-hnd "impAppendStmt" ; V09 tmp6 [V09,T06] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V10 tmp7 [V10 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V11 tmp8 [V11,T09] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V12 tmp9 [V12,T11] ( 2, 2 ) ref -> rdi class-hnd "impAppendStmt" ; V13 tmp10 [V13,T07] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V14 tmp11 [V14 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V15 cse0 [V15,T05] ( 3, 9 ) long -> r11 "CSE - aggressive" ; V16 cse1 [V16,T12] ( 3, 1.25) long -> r11 "CSE - moderate" ; V17 cse2 [V17,T13] ( 3, 1.25) long -> r11 "CSE - moderate" ; ; Lcl frame size = 40 G_M65528_IG01: push rdi push rsi sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M65528_IG02: cmp dword ptr [rsi+20], 1 jne SHORT G_M65528_IG07 ;; bbWeight=1 PerfScore 3.00 G_M65528_IG03: mov rcx, rsi xor edx, edx mov rax, qword ptr [rsi] mov rax, qword ptr [rax+80] call gword ptr [rax+8]ConcatIterator`1:GetEnumerable(int):IEnumerable`1:this mov rdi, rax mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx+8] mov r11, qword ptr [rdx+16] test r11, r11 je SHORT G_M65528_IG05 ;; bbWeight=0.50 PerfScore 8.50 G_M65528_IG04: jmp SHORT G_M65528_IG06 ;; bbWeight=0.25 PerfScore 0.50 G_M65528_IG05: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M65528_IG06: mov rcx, rdi call gword ptr [r11] lea rcx, bword ptr [rsi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+20], 2 ;; bbWeight=0.50 PerfScore 3.00 G_M65528_IG07: cmp dword ptr [rsi+20], 1 jle G_M65528_IG19 ;; bbWeight=1 PerfScore 3.00 G_M65528_IG08: mov rcx, gword ptr [rsi+24] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne G_M65528_IG13 ;; bbWeight=4 PerfScore 27.00 G_M65528_IG09: mov edx, dword ptr [rsi+20] lea ecx, [rdx+1] mov dword ptr [rsi+20], ecx dec edx mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+80] call gword ptr [rax+8]ConcatIterator`1:GetEnumerable(int):IEnumerable`1:this mov rdi, rax test rdi, rdi je G_M65528_IG18 mov rcx, gword ptr [rsi+24] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx+8] mov r11, qword ptr [rdx+16] test r11, r11 je SHORT G_M65528_IG11 ;; bbWeight=4 PerfScore 109.00 G_M65528_IG10: jmp SHORT G_M65528_IG12 ;; bbWeight=1 PerfScore 2.00 G_M65528_IG11: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=1 PerfScore 1.50 G_M65528_IG12: mov rcx, rdi call gword ptr [r11] lea rcx, bword ptr [rsi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF jmp G_M65528_IG08 ;; bbWeight=4 PerfScore 28.00 G_M65528_IG13: mov rdi, gword ptr [rsi+24] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx+8] mov r11, qword ptr [rdx+24] test r11, r11 je SHORT G_M65528_IG15 ;; bbWeight=0.50 PerfScore 5.63 G_M65528_IG14: jmp SHORT G_M65528_IG16 ;; bbWeight=0.25 PerfScore 0.50 G_M65528_IG15: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M65528_IG16: mov rcx, rdi call gword ptr [r11] lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov eax, 1 ;; bbWeight=0.50 PerfScore 2.63 G_M65528_IG17: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M65528_IG18: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+48]Iterator`1:Dispose():this ;; bbWeight=0.50 PerfScore 3.63 G_M65528_IG19: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M65528_IG20: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 368, prolog size 11, PerfScore 241.30, (MethodHash=b4960007) for method ConcatIterator`1:MoveNext():bool:this ; ============================================================ ; Assembly listing for method Concat2Iterator`1:GetEnumerable(int):IEnumerable`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 4, 3.50) int -> rdx ; V02 loc0 [V02,T02] ( 4, 2.50) ref -> rax class-hnd ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M57423_IG01: ;; bbWeight=1 PerfScore 0.00 G_M57423_IG02: test edx, edx je SHORT G_M57423_IG04 ;; bbWeight=1 PerfScore 1.25 G_M57423_IG03: cmp edx, 1 je SHORT G_M57423_IG05 jmp SHORT G_M57423_IG06 ;; bbWeight=0.50 PerfScore 1.63 G_M57423_IG04: mov rax, gword ptr [rcx+32] jmp SHORT G_M57423_IG07 ;; bbWeight=0.50 PerfScore 2.00 G_M57423_IG05: mov rax, gword ptr [rcx+40] jmp SHORT G_M57423_IG07 ;; bbWeight=0.50 PerfScore 2.00 G_M57423_IG06: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M57423_IG07: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 26, prolog size 0, PerfScore 10.60, (MethodHash=92c91fb0) for method Concat2Iterator`1:GetEnumerable(int):IEnumerable`1:this ; ============================================================ ; Assembly listing for method WhereSelectArrayIterator`2:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 11, 18 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T02] ( 6, 18 ) int -> rdi ; V02 loc1 [V02,T06] ( 3, 6 ) ref -> rbx class-hnd ; V03 loc2 [V03,T05] ( 3, 8.50) ref -> r14 class-hnd ; V04 loc3 [V04,T03] ( 3, 12 ) int -> rdi ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 cse0 [V06,T04] ( 4, 10 ) int -> rbp "CSE - aggressive" ; V07 rat0 [V07,T00] ( 3, 24 ) ref -> rax "delegate invoke call" ; V08 rat1 [V08,T07] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 32 G_M12499_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 5.50 G_M12499_IG02: mov edi, dword ptr [rsi+20] dec edi mov rbx, gword ptr [rsi+24] mov ebp, dword ptr [rbx+8] cmp ebp, edi jbe SHORT G_M12499_IG05 ;; bbWeight=1 PerfScore 7.50 G_M12499_IG03: cmp edi, ebp jae SHORT G_M12499_IG09 movsxd rcx, edi mov r14, gword ptr [rbx+8*rcx+16] mov edi, dword ptr [rsi+20] lea ecx, [rdi+1] mov dword ptr [rsi+20], ecx mov rax, gword ptr [rsi+32] mov rcx, gword ptr [rax+8] mov rdx, r14 call qword ptr [rax+24]Func`2:Invoke(__Canon):bool:this test eax, eax jne SHORT G_M12499_IG07 ;; bbWeight=4 PerfScore 62.00 G_M12499_IG04: cmp ebp, edi ja SHORT G_M12499_IG03 ;; bbWeight=4 PerfScore 5.00 G_M12499_IG05: xor eax, eax mov qword ptr [rsi+8], rax mov dword ptr [rsi+20], -1 ;; bbWeight=0.50 PerfScore 1.13 G_M12499_IG06: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M12499_IG07: mov rax, gword ptr [rsi+40] mov rcx, gword ptr [rax+8] mov rdx, r14 call gword ptr [rax+24]Func`2:Invoke(__Canon):__Canon:this lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov eax, 1 ;; bbWeight=0.50 PerfScore 4.63 G_M12499_IG08: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M12499_IG09: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 144, prolog size 10, PerfScore 103.90, (MethodHash=341acf2c) for method WhereSelectArrayIterator`2:MoveNext():bool:this ; ============================================================ ; Assembly listing for method <>c:b__8_0(FieldInfo):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M31470_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M31470_IG02: mov rcx, rdx mov rax, qword ptr [rdx] mov rax, qword ptr [rax+80] call gword ptr [rax+24]FieldInfo:get_FieldType():Type:this mov rcx, rax ;; bbWeight=1 PerfScore 7.50 G_M31470_IG03: add rsp, 40 jmp CharacteristicHelper:IsCharacteristicSubclass(Type):bool ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 29, prolog size 4, PerfScore 12.90, (MethodHash=18a58511) for method <>c:b__8_0(FieldInfo):bool:this ; ============================================================ ; Assembly listing for method RtFieldInfo:get_FieldType():Type:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V03 tmp2 [V03,T02] ( 3, 2.50) ref -> rax ; ; Lcl frame size = 0 G_M54662_IG01: ;; bbWeight=1 PerfScore 0.00 G_M54662_IG02: mov rax, gword ptr [rcx+40] test rax, rax jne SHORT G_M54662_IG04 ;; bbWeight=1 PerfScore 3.25 G_M54662_IG03: jmp RtFieldInfo:InitializeFieldType():RuntimeType:this ;; bbWeight=0.50 PerfScore 1.00 G_M54662_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 15, prolog size 0, PerfScore 6.25, (MethodHash=a2642a79) for method RtFieldInfo:get_FieldType():Type:this ; ============================================================ ; Assembly listing for method RtFieldInfo:InitializeFieldType():RuntimeType:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rdi class-hnd "dup spill" ; V05 tmp3 [V05,T03] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "struct address for call/obj" ;* V07 tmp5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V08 tmp6 [V08,T04] ( 2, 4 ) long -> r9 "Inlining Arg" ; V09 tmp7 [V09,T05] ( 2, 2 ) long -> r9 V06.m_handle(offs=0x00) P-INDEP "field V06.m_handle (fldOffset=0x0)" ; V10 tmp8 [V10,T06] ( 2, 2 ) long -> r9 V07.m_handle(offs=0x00) P-INDEP "field V07.m_handle (fldOffset=0x0)" ; ; Lcl frame size = 56 G_M48955_IG01: push rdi push rsi sub rsp, 56 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M48955_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, gword ptr [rsi+16] mov r9, qword ptr [rsi+48] xor rdx, rdx mov gword ptr [rsp+20H], rdx mov gword ptr [rsp+28H], rcx mov rcx, rdi xor r8d, r8d call Signature:GetSignature(long,int,RuntimeFieldHandleInternal,IRuntimeMethodInfo,RuntimeType):this mov rdi, gword ptr [rdi+24] lea rcx, bword ptr [rsi+40] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=1 PerfScore 13.25 G_M48955_IG03: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 84, prolog size 6, PerfScore 26.40, (MethodHash=f97d40c4) for method RtFieldInfo:InitializeFieldType():RuntimeType:this ; ============================================================ ; Assembly listing for method CharacteristicHelper:IsCharacteristicSubclass(Type):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rcx class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> rsi "argument with side effect" ; V03 tmp2 [V03,T02] ( 2, 4 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M40731_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M40731_IG02: call IntrospectionExtensions:GetTypeInfo(Type):TypeInfo mov rsi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+168] mov rax, qword ptr [rax+24] ;; bbWeight=1 PerfScore 9.00 G_M40731_IG03: add rsp, 32 pop rsi rex.jmp rax ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 56, prolog size 5, PerfScore 18.60, (MethodHash=fb4960e4) for method CharacteristicHelper:IsCharacteristicSubclass(Type):bool ; ============================================================ ; Assembly listing for method <>c:b__8_1(FieldInfo):Characteristic:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 4.24) ref -> rax "CASTCLASS eval op1" ; V04 tmp2 [V04,T03] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V05 tmp3 [V05,T01] ( 5, 6.74) ref -> rdx class-hnd "spilling QMark2" ; ; Lcl frame size = 32 G_M33180_IG01: push rsi sub rsp, 32 mov rsi, rdx ;; bbWeight=1 PerfScore 1.50 G_M33180_IG02: mov rcx, rsi xor rdx, rdx mov rax, qword ptr [rsi] mov rax, qword ptr [rax+88] call gword ptr [rax]FieldInfo:GetValue(Object):Object:this mov rdx, rax test rdx, rdx je SHORT G_M33180_IG05 ;; bbWeight=1 PerfScore 9.00 G_M33180_IG03: mov rcx, 0xD1FFAB1E cmp qword ptr [rdx], rcx je SHORT G_M33180_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M33180_IG04: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdx, rax ;; bbWeight=0.12 PerfScore 0.18 G_M33180_IG05: mov rcx, rsi ;; bbWeight=1 PerfScore 0.25 G_M33180_IG06: add rsp, 32 pop rsi jmp CharacteristicHelper:AssertHasValue(MemberInfo,Characteristic):Characteristic ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 69, prolog size 5, PerfScore 21.39, (MethodHash=c9607e63) for method <>c:b__8_1(FieldInfo):Characteristic:this ; ============================================================ ; Assembly listing for method RtFieldInfo:GetValue(Object):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 15, 8.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 7, 3.25) ref -> rdi class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ; V03 loc1 [V03,T04] ( 10, 5 ) ref -> rbp class-hnd ; V04 loc2 [V04,T08] ( 3, 2 ) ref -> rbx class-hnd ; V05 loc3 [V05 ] ( 5, 3 ) bool -> [rsp+0x28] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc4 [V06,T19] ( 2, 1 ) ref -> rsi class-hnd ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T05] ( 2, 4 ) ref -> rax "CASTCLASS eval op1" ; V09 tmp2 [V09,T01] ( 5, 6.74) ref -> rbp class-hnd "spilling QMark2" ;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1" ; V11 tmp4 [V11,T16] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V12 tmp5 [V12,T02] ( 5, 6.74) ref -> rbx class-hnd "spilling QMark2" ; V13 tmp6 [V13,T24] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V14 tmp7 [V14,T25] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V15 tmp8 [V15,T09] ( 3, 2 ) int -> rbx "Inline return value spill temp" ; V16 tmp9 [V16,T29] ( 2, 0 ) ref -> rbx class-hnd "impAppendStmt" ; V17 tmp10 [V17,T26] ( 3, 0 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V18 tmp11 [V18,T27] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V19 tmp12 [V19,T13] ( 3, 1.50) ref -> rcx class-hnd "Inlining Arg" ; V20 tmp13 [V20,T30] ( 2, 0 ) ref -> rdx class-hnd "Inlining Arg" ; V21 tmp14 [V21,T06] ( 2, 4 ) ref -> rdx class-hnd "dup spill" ; V22 tmp15 [V22,T07] ( 5, 3.37) ref -> rdx ; V23 tmp16 [V23,T14] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ; V24 tmp17 [V24,T17] ( 3, 1 ) ref -> rax class-hnd "Inline stloc first use temp" ; V25 tmp18 [V25,T10] ( 2, 2 ) long -> rcx ld-addr-op "Inlining Arg" ;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V27 tmp20 [V27,T22] ( 2, 1 ) long -> rcx "Inlining Arg" ;* V28 tmp21 [V28 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V29 tmp22 [V29,T20] ( 2, 1 ) byref -> rcx "Inlining Arg" ; V30 tmp23 [V30,T11] ( 2, 2 ) bool -> rdi "Inlining Arg" ; V31 tmp24 [V31,T15] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ; V32 tmp25 [V32,T18] ( 3, 1 ) ref -> rax class-hnd "Inline stloc first use temp" ; V33 tmp26 [V33,T12] ( 2, 2 ) long -> rcx ld-addr-op "Inlining Arg" ;* V34 tmp27 [V34 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V35 tmp28 [V35,T23] ( 2, 1 ) long -> rcx "Inlining Arg" ;* V36 tmp29 [V36 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V37 tmp30 [V37,T21] ( 2, 1 ) byref -> rcx "Inlining Arg" ; V38 tmp31 [V38,T31] ( 2, 0 ) ref -> rcx "argument with side effect" ; V39 tmp32 [V39,T32] ( 2, 0 ) ref -> rdx "argument with side effect" ; V40 tmp33 [V40,T33] ( 2, 0 ) ref -> rcx "argument with side effect" ; V41 tmp34 [V41,T34] ( 2, 0 ) ref -> rcx "argument with side effect" ; V42 tmp35 [V42,T35] ( 2, 0 ) ref -> r14 "argument with side effect" ; V43 tmp36 [V43,T36] ( 2, 0 ) ref -> r9 "argument with side effect" ; V44 tmp37 [V44,T37] ( 2, 0 ) ref -> rsi "argument with side effect" ; V45 tmp38 [V45,T38] ( 2, 0 ) ref -> rdx "argument with side effect" ; V46 rat0 [V46,T28] ( 3, 0 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 48 G_M57680_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 5.75 G_M57680_IG02: test byte ptr [rsi+56], 1 jne SHORT G_M57680_IG04 ;; bbWeight=1 PerfScore 3.00 G_M57680_IG03: mov rcx, rsi call RtFieldInfo:InitializeInvocationFlags():int:this mov ebx, eax jmp SHORT G_M57680_IG05 ;; bbWeight=0.50 PerfScore 1.75 G_M57680_IG04: mov ebx, dword ptr [rsi+56] ;; bbWeight=0.50 PerfScore 1.00 G_M57680_IG05: mov rcx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]RuntimeFieldInfo:get_DeclaringType():Type:this mov rbp, rax test rbp, rbp je SHORT G_M57680_IG08 ;; bbWeight=1 PerfScore 5.00 G_M57680_IG06: mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx je SHORT G_M57680_IG08 ;; bbWeight=0.25 PerfScore 0.81 G_M57680_IG07: xor rbp, rbp ;; bbWeight=0.12 PerfScore 0.03 G_M57680_IG08: test bl, 2 jne G_M57680_IG29 ;; bbWeight=1 PerfScore 1.25 G_M57680_IG09: test byte ptr [rsi+28], 16 jne SHORT G_M57680_IG11 ;; bbWeight=1 PerfScore 3.00 G_M57680_IG10: mov rcx, gword ptr [rsi+16] cmp dword ptr [rcx], ecx mov rdx, rdi call RuntimeTypeHandle:IsInstanceOfType(RuntimeType,Object):bool test eax, eax je G_M57680_IG31 ;; bbWeight=0.25 PerfScore 1.63 G_M57680_IG11: mov rdx, gword ptr [rsi+40] test rdx, rdx jne SHORT G_M57680_IG13 ;; bbWeight=1 PerfScore 3.25 G_M57680_IG12: mov rcx, rsi call RtFieldInfo:InitializeFieldType():RuntimeType:this mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M57680_IG13: mov rbx, rdx test rbx, rbx je SHORT G_M57680_IG16 ;; bbWeight=1 PerfScore 1.50 G_M57680_IG14: mov rcx, 0xD1FFAB1E cmp qword ptr [rbx], rcx je SHORT G_M57680_IG16 ;; bbWeight=0.25 PerfScore 0.81 G_M57680_IG15: call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rbx, rax ;; bbWeight=0.12 PerfScore 0.15 G_M57680_IG16: xor ecx, ecx mov dword ptr [rsp+28H], ecx test rbp, rbp jne SHORT G_M57680_IG19 ;; bbWeight=1 PerfScore 2.50 G_M57680_IG17: lea rcx, [rsp+28H] mov qword ptr [rsp+20H], rcx mov rcx, rsi mov rdx, rdi mov r8, rbx xor r9, r9 call RuntimeFieldHandle:GetValue(RtFieldInfo,Object,RuntimeType,RuntimeType,byref):Object nop ;; bbWeight=0.50 PerfScore 1.88 G_M57680_IG18: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M57680_IG19: mov rcx, qword ptr [rbp+16] test rcx, rcx je SHORT G_M57680_IG22 ;; bbWeight=0.50 PerfScore 1.63 G_M57680_IG20: mov rcx, qword ptr [rbp+16] mov rax, gword ptr [rcx] test rax, rax je SHORT G_M57680_IG22 ;; bbWeight=0.25 PerfScore 1.31 G_M57680_IG21: jmp SHORT G_M57680_IG23 ;; bbWeight=0.50 PerfScore 1.00 G_M57680_IG22: mov rcx, rbp call RuntimeType:InitializeCache():RuntimeTypeCache:this ;; bbWeight=0.50 PerfScore 0.63 G_M57680_IG23: movzx rcx, byte ptr [rax+141] mov dword ptr [rsp+28H], ecx lea rcx, [rsp+28H] mov qword ptr [rsp+20H], rcx mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9, rbp call RuntimeFieldHandle:GetValue(RtFieldInfo,Object,RuntimeType,RuntimeType,byref):Object mov rsi, rax mov ecx, dword ptr [rsp+28H] movzx rdi, cl mov rcx, qword ptr [rbp+16] test rcx, rcx je SHORT G_M57680_IG26 ;; bbWeight=0.50 PerfScore 5.63 G_M57680_IG24: mov rcx, qword ptr [rbp+16] mov rax, gword ptr [rcx] test rax, rax je SHORT G_M57680_IG26 ;; bbWeight=0.25 PerfScore 1.31 G_M57680_IG25: jmp SHORT G_M57680_IG27 ;; bbWeight=0.50 PerfScore 1.00 G_M57680_IG26: mov rcx, rbp call RuntimeType:InitializeCache():RuntimeTypeCache:this ;; bbWeight=0.50 PerfScore 0.63 G_M57680_IG27: mov byte ptr [rax+141], dil mov rax, rsi ;; bbWeight=0.50 PerfScore 0.63 G_M57680_IG28: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M57680_IG29: test rbp, rbp je SHORT G_M57680_IG30 mov rcx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]RuntimeFieldInfo:get_DeclaringType():Type:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+168] call qword ptr [rax]Type:get_ContainsGenericParameters():bool:this test eax, eax je SHORT G_M57680_IG30 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x57C5 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M57680_IG30: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call FieldAccessException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M57680_IG31: test rdi, rdi jne SHORT G_M57680_IG32 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xFDF9 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi xor r8, r8 call TargetException:.ctor(String,Exception):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M57680_IG32: mov ecx, 0x3F47 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]RtFieldInfo:get_Name():String:this mov r14, rax mov rsi, gword ptr [rsi+16] mov rcx, rdi call Object:GetType():Type:this mov r9, rax mov rdx, r14 mov r8, rsi mov rcx, rbx call SR:Format(String,Object,Object,Object):String mov rdx, rax mov rcx, rbp call ArgumentException:.ctor(String):this mov rcx, rbp call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 681, prolog size 10, PerfScore 119.28, (MethodHash=065f1eaf) for method RtFieldInfo:GetValue(Object):Object:this ; ============================================================ ; Assembly listing for method RtFieldInfo:InitializeInvocationFlags():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5.25) ref -> rsi this class-hnd ; V01 loc0 [V01,T04] ( 4, 3 ) ref -> rax class-hnd ; V02 loc1 [V02,T01] ( 9, 6 ) int -> rdi ; V03 loc2 [V03,T03] ( 7, 3.50) ref -> rbx class-hnd ;* V04 loc3 [V04 ] ( 0, 0 ) int -> zero-ref ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T02] ( 3, 6 ) int -> rax "dup spill" ; V07 tmp2 [V07,T05] ( 2, 2 ) ref -> rbx class-hnd "dup spill" ; V08 tmp3 [V08,T06] ( 4, 1.75) ref -> rbx ; V09 cse0 [V09,T07] ( 3, 1.50) int -> rcx "CSE - moderate" ; ; Lcl frame size = 32 G_M7881_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M7881_IG02: mov rcx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]RuntimeFieldInfo:get_DeclaringType():Type:this xor edi, edi test rax, rax je SHORT G_M7881_IG04 ;; bbWeight=1 PerfScore 7.00 G_M7881_IG03: mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+168] call qword ptr [rax]Type:get_ContainsGenericParameters():bool:this test eax, eax je SHORT G_M7881_IG04 mov edi, 2 ;; bbWeight=0.50 PerfScore 4.38 G_M7881_IG04: test edi, edi jne SHORT G_M7881_IG11 ;; bbWeight=1 PerfScore 1.25 G_M7881_IG05: mov ecx, dword ptr [rsi+28] test cl, 32 je SHORT G_M7881_IG06 mov edi, 16 ;; bbWeight=0.50 PerfScore 1.75 G_M7881_IG06: test ecx, 256 je SHORT G_M7881_IG07 or edi, 16 ;; bbWeight=0.50 PerfScore 0.75 G_M7881_IG07: mov rbx, gword ptr [rsi+40] test rbx, rbx jne SHORT G_M7881_IG09 ;; bbWeight=0.50 PerfScore 1.63 G_M7881_IG08: mov rcx, rsi call RtFieldInfo:InitializeFieldType():RuntimeType:this mov rbx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M7881_IG09: mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+88] call qword ptr [rax+40]Type:IsPointerImpl():bool:this test eax, eax jne SHORT G_M7881_IG10 mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+112] call qword ptr [rax+24]Type:get_IsEnum():bool:this test eax, eax jne SHORT G_M7881_IG10 mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+112] call qword ptr [rax+40]Type:IsPrimitiveImpl():bool:this test eax, eax je SHORT G_M7881_IG11 ;; bbWeight=0.50 PerfScore 12.75 G_M7881_IG10: or edi, 32 ;; bbWeight=0.50 PerfScore 0.13 G_M7881_IG11: mov eax, edi or eax, 1 mov dword ptr [rsi+56], eax ;; bbWeight=1 PerfScore 1.50 G_M7881_IG12: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 176, prolog size 7, PerfScore 55.35, (MethodHash=1363e136) for method RtFieldInfo:InitializeInvocationFlags():int:this ; ============================================================ ; Assembly listing for method RuntimeFieldInfo:get_DeclaringType():Type:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" ; ; Lcl frame size = 0 G_M37443_IG01: ;; bbWeight=1 PerfScore 0.00 G_M37443_IG02: mov rax, gword ptr [rcx+8] cmp byte ptr [rax+140], 0 jne SHORT G_M37443_IG05 ;; bbWeight=1 PerfScore 5.00 G_M37443_IG03: mov rax, gword ptr [rcx+16] ;; bbWeight=0.50 PerfScore 1.00 G_M37443_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M37443_IG05: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M37443_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 21, prolog size 0, PerfScore 9.23, (MethodHash=cfe86dbc) for method RuntimeFieldInfo:get_DeclaringType():Type:this ; ============================================================ ; Assembly listing for method RuntimeType:IsPointerImpl():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 2 ) ubyte -> rax "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M9492_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M9492_IG02: call RuntimeTypeHandle:GetCorElementType(RuntimeType):ubyte cmp eax, 15 sete al movzx rax, al ;; bbWeight=1 PerfScore 2.50 G_M9492_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 23, prolog size 4, PerfScore 6.30, (MethodHash=04dfdaeb) for method RuntimeType:IsPointerImpl():bool:this ; ============================================================ ; Assembly listing for method RuntimeType:IsPrimitiveImpl():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M15406_IG01: ;; bbWeight=1 PerfScore 0.00 G_M15406_IG02: jmp RuntimeTypeHandle:IsPrimitive(RuntimeType):bool ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 5, prolog size 0, PerfScore 2.50, (MethodHash=8b03c3d1) for method RuntimeType:IsPrimitiveImpl():bool:this ; ============================================================ ; Assembly listing for method RuntimeTypeHandle:IsPrimitive(RuntimeType):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd ; V01 loc0 [V01,T01] ( 5, 3.50) ubyte -> rax ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M25732_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M25732_IG02: call RuntimeTypeHandle:GetCorElementType(RuntimeType):ubyte cmp eax, 2 jl SHORT G_M25732_IG04 ;; bbWeight=1 PerfScore 2.25 G_M25732_IG03: cmp eax, 13 jle SHORT G_M25732_IG06 ;; bbWeight=0.50 PerfScore 0.63 G_M25732_IG04: cmp eax, 24 je SHORT G_M25732_IG06 cmp eax, 25 sete al movzx rax, al ;; bbWeight=0.50 PerfScore 1.38 G_M25732_IG05: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M25732_IG06: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M25732_IG07: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 48, prolog size 4, PerfScore 10.68, (MethodHash=db369b7b) for method RuntimeTypeHandle:IsPrimitive(RuntimeType):bool ; ============================================================ ; Assembly listing for method CharacteristicHelper:AssertHasValue(MemberInfo,Characteristic):Characteristic ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 9, 4 ) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 1 ) ref -> rax ; V04 tmp2 [V04,T03] ( 7, 0 ) ref -> rdi class-hnd exact "dup spill" ; V05 tmp3 [V05,T07] ( 2, 0 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" ; V06 tmp4 [V06,T08] ( 2, 0 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" ; V07 tmp5 [V07,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp6 [V08,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp7 [V09,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp8 [V10,T10] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 rat0 [V11,T06] ( 3, 0 ) ref -> rax "virtual vtable call" ; TEMP_01 byref -> [rsp+0x20] ; ; Lcl frame size = 40 G_M34593_IG01: push rdi push rsi sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 4.00 G_M34593_IG02: test rsi, rsi jne SHORT G_M34593_IG07 ;; bbWeight=1 PerfScore 1.25 G_M34593_IG03: jmp SHORT G_M34593_IG08 ;; bbWeight=0.50 PerfScore 1.00 G_M34593_IG04: test rdi, rdi je SHORT G_M34593_IG09 ;; bbWeight=1 PerfScore 1.25 G_M34593_IG05: mov rax, rdi ;; bbWeight=1 PerfScore 0.25 G_M34593_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M34593_IG07: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+56]MemberInfo:get_DeclaringType():Type:this test rax, rax jne SHORT G_M34593_IG04 ;; bbWeight=0.50 PerfScore 4.25 G_M34593_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x13673 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call NullReferenceException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M34593_IG09: mov rcx, 0xD1FFAB1E mov edx, 5 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov bword ptr [rsp+20H], rcx mov ecx, 0x1368F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, bword ptr [rsp+20H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+56]MemberInfo:get_DeclaringType():Type:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+64] call gword ptr [rax+48]MemberInfo:get_Name():String:this lea rcx, bword ptr [rdi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+32] mov bword ptr [rsp+20H], rcx mov ecx, 0x5D3 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, bword ptr [rsp+20H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+48]MemberInfo:get_Name():String:this lea rcx, bword ptr [rdi+40] mov rdx, rax call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+48] mov bword ptr [rsp+20H], rcx mov ecx, 0x136AB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, bword ptr [rsp+20H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rdi call String:Concat(ref):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 374, prolog size 13, PerfScore 51.65, (MethodHash=37cd78de) for method CharacteristicHelper:AssertHasValue(MemberInfo,Characteristic):Characteristic ; ============================================================ ; Assembly listing for method Set`1:Add(__Canon):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 15, 19.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T12] ( 5, 5.50) ref -> rdi class-hnd ; V02 loc0 [V02,T13] ( 5, 7 ) int -> rbx ; V03 loc1 [V03,T25] ( 3, 1.50) int -> rcx ; V04 loc2 [V04,T26] ( 3, 1.50) int -> r15 ; V05 loc3 [V05,T02] ( 7, 22 ) int -> rbp ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T07] ( 3, 10 ) long -> rcx "impRuntimeLookup slot" ; V08 tmp2 [V08,T08] ( 2, 8 ) ref -> r15 class-hnd "impAppendStmt" ; V09 tmp3 [V09,T09] ( 2, 8 ) ref -> r12 class-hnd "impAppendStmt" ; V10 tmp4 [V10,T05] ( 4, 12 ) long -> r11 "spilling Runtime Lookup tree" ;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V12 tmp6 [V12,T14] ( 3, 6 ) ref -> r8 "arr expr" ; V13 tmp7 [V13,T15] ( 3, 6 ) int -> rdx "index expr" ; V14 tmp8 [V14,T00] ( 3, 24 ) ref -> rdx "arr expr" ; V15 tmp9 [V15,T10] ( 2, 8 ) ref -> rcx "arr expr" ; V16 tmp10 [V16,T01] ( 3, 24 ) ref -> rcx "arr expr" ; V17 tmp11 [V17,T17] ( 3, 3 ) ref -> rax "arr expr" ; V18 tmp12 [V18,T22] ( 2, 2 ) ref -> rdx "arr expr" ;* V19 tmp13 [V19,T33] ( 0, 0 ) ref -> zero-ref "arr expr" ; V20 tmp14 [V20,T18] ( 3, 3 ) ref -> rax "arr expr" ; V21 tmp15 [V21,T23] ( 2, 2 ) ref -> r14 "arr expr" ; V22 cse0 [V22,T24] ( 3, 1.50) byref -> r12 "CSE - moderate" ; V23 cse1 [V23,T16] ( 3, 5 ) long -> r11 "CSE - moderate" ; V24 cse2 [V24,T27] ( 3, 1.50) int -> rbp "CSE - moderate" ; V25 cse3 [V25,T04] ( 4, 14 ) long -> r14 "CSE - aggressive" ; V26 cse4 [V26,T06] ( 3, 10 ) ref -> rcx "CSE - aggressive" ; V27 cse5 [V27,T20] ( 3, 1.50) ref -> rdx "CSE - moderate" ; V28 cse6 [V28,T28] ( 3, 1.50) long -> rcx "CSE - moderate" ; V29 cse7 [V29,T21] ( 4, 2 ) ref -> r14 "CSE - moderate" ; V30 cse8 [V30,T19] ( 3, 3 ) ref -> rcx "CSE - moderate" ; V31 cse9 [V31,T29] ( 3, 1.50) int -> rbp "CSE - moderate" ; V32 cse10 [V32,T30] ( 3, 1.50) long -> rdx "CSE - moderate" ; V33 cse11 [V33,T11] ( 2, 8 ) int -> rax "CSE - aggressive" ; V34 cse12 [V34,T31] ( 2, 1 ) int -> r8 "CSE - moderate" ; V35 cse13 [V35,T32] ( 2, 1 ) int -> rdx "CSE - moderate" ; ; Lcl frame size = 48 G_M10358_IG01: push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 8.75 G_M10358_IG02: mov rcx, rsi mov rdx, rdi call Set`1:InternalGetHashCode(__Canon):int:this mov ebx, eax mov rcx, gword ptr [rsi+16] mov r8, rcx mov eax, ebx cdq idiv edx:eax, dword ptr [rcx+8] cmp edx, dword ptr [r8+8] jae G_M10358_IG14 movsxd rcx, edx mov ebp, dword ptr [r8+4*rcx+16] dec ebp test ebp, ebp jl SHORT G_M10358_IG09 ;; bbWeight=1 PerfScore 38.00 G_M10358_IG03: mov rcx, gword ptr [rsi+24] mov rdx, rcx mov eax, dword ptr [rdx+8] cmp ebp, eax jae G_M10358_IG14 movsxd r14, ebp shl r14, 4 cmp dword ptr [rdx+r14+24], ebx jne SHORT G_M10358_IG08 ;; bbWeight=4 PerfScore 43.00 G_M10358_IG04: mov r15, gword ptr [rsi+8] mov r12, gword ptr [rcx+r14+16] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov r11, qword ptr [rdx+48] test r11, r11 je SHORT G_M10358_IG06 ;; bbWeight=2 PerfScore 26.50 G_M10358_IG05: jmp SHORT G_M10358_IG07 ;; bbWeight=1 PerfScore 2.00 G_M10358_IG06: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=1 PerfScore 1.50 G_M10358_IG07: mov rcx, r15 mov rdx, r12 mov r8, rdi call qword ptr [r11] test eax, eax jne G_M10358_IG12 ;; bbWeight=2 PerfScore 10.00 G_M10358_IG08: mov rcx, gword ptr [rsi+24] cmp ebp, dword ptr [rcx+8] jae G_M10358_IG14 mov ebp, dword ptr [rcx+r14+28] test ebp, ebp jge SHORT G_M10358_IG03 ;; bbWeight=4 PerfScore 33.00 G_M10358_IG09: mov ecx, dword ptr [rsi+32] mov rax, gword ptr [rsi+24] cmp ecx, dword ptr [rax+8] jne SHORT G_M10358_IG10 mov rcx, rsi call Set`1:Resize():this ;; bbWeight=0.50 PerfScore 4.13 G_M10358_IG10: mov ebp, dword ptr [rsi+32] mov ecx, ebp inc ebp mov dword ptr [rsi+32], ebp mov r14, gword ptr [rsi+16] mov eax, ebx cdq idiv edx:eax, dword ptr [r14+8] mov r15d, edx mov rdx, gword ptr [rsi+24] mov rax, rdx mov r8d, dword ptr [rax+8] cmp ecx, r8d jae SHORT G_M10358_IG14 movsxd rcx, ecx shl rcx, 4 lea r12, bword ptr [rax+rcx+16] mov dword ptr [r12+8], ebx lea rcx, bword ptr [rdx+rcx+16] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, r14 mov edx, dword ptr [rax+8] cmp r15d, edx jae SHORT G_M10358_IG14 movsxd rdx, r15d mov eax, dword ptr [rax+4*rdx+16] dec eax mov dword ptr [r12+12], eax mov dword ptr [r14+4*rdx+16], ebp mov eax, 1 ;; bbWeight=0.50 PerfScore 26.63 G_M10358_IG11: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.38 G_M10358_IG12: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M10358_IG13: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.38 G_M10358_IG14: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 360, prolog size 25, PerfScore 234.38, (MethodHash=39b2d789) for method Set`1:Add(__Canon):bool:this ; ============================================================ ; Assembly listing for method Set`1:InternalGetHashCode(__Canon):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V04 tmp2 [V04,T04] ( 2, 2 ) ref -> rbx class-hnd "impAppendStmt" ; V05 tmp3 [V05,T02] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V07 cse0 [V07,T05] ( 3, 1.25) long -> r11 "CSE - moderate" ; ; Lcl frame size = 48 G_M35460_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 4.75 G_M35460_IG02: test rsi, rsi je SHORT G_M35460_IG08 ;; bbWeight=1 PerfScore 1.25 G_M35460_IG03: mov rbx, gword ptr [rdi+8] mov rcx, qword ptr [rdi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov r11, qword ptr [rdx+56] test r11, r11 je SHORT G_M35460_IG05 ;; bbWeight=0.50 PerfScore 5.63 G_M35460_IG04: jmp SHORT G_M35460_IG06 ;; bbWeight=0.25 PerfScore 0.50 G_M35460_IG05: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M35460_IG06: mov rcx, rbx mov rdx, rsi call qword ptr [r11] and eax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 1.88 G_M35460_IG07: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M35460_IG08: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M35460_IG09: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 98, prolog size 12, PerfScore 27.05, (MethodHash=5726757b) for method Set`1:InternalGetHashCode(__Canon):int:this ; ============================================================ ; Assembly listing for method ObjectEqualityComparer`1:GetHashCode(__Canon):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rdx ld-addr-op class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M55657_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M55657_IG02: test rdx, rdx jne SHORT G_M55657_IG05 ;; bbWeight=1 PerfScore 1.25 G_M55657_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M55657_IG04: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M55657_IG05: mov rcx, rdx mov rax, qword ptr [rdx] mov rax, qword ptr [rax+64] call qword ptr [rax+24]Object:GetHashCode():int:this nop ;; bbWeight=0.50 PerfScore 3.75 G_M55657_IG06: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 35, prolog size 4, PerfScore 10.13, (MethodHash=63012696) for method ObjectEqualityComparer`1:GetHashCode(__Canon):int:this ; ============================================================ ; Assembly listing for method Set`1:Resize():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 9, 12 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T09] ( 4, 7 ) int -> rbx ; V02 loc1 [V02,T02] ( 5, 14 ) ref -> rbp class-hnd exact ; V03 loc2 [V03,T07] ( 5, 8 ) ref -> r14 class-hnd exact ; V04 loc3 [V04,T00] ( 6, 21 ) int -> rdi ; V05 loc4 [V05,T04] ( 3, 12 ) int -> rdx ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T11] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V08 tmp2 [V08,T12] ( 3, 3 ) long -> [rsp+0x20] "spilling Runtime Lookup tree" ; V09 cse0 [V09,T03] ( 3, 12 ) byref -> r8 "CSE - aggressive" ; V10 cse1 [V10,T14] ( 3, 2.25) long -> rdx "CSE - aggressive" ; V11 cse2 [V11,T13] ( 3, 3 ) int -> rdi "CSE - aggressive" ; V12 cse3 [V12,T10] ( 2, 5 ) int -> rcx "CSE - aggressive" ; V13 cse4 [V13,T08] ( 2, 8 ) int -> rax "CSE - aggressive" ; V14 cse5 [V14,T05] ( 3, 12 ) int -> rdi "CSE - aggressive" ; V15 cse6 [V15,T06] ( 3, 12 ) long -> rax "CSE - aggressive" ; ; Lcl frame size = 48 G_M46396_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 6.50 G_M46396_IG02: mov edi, dword ptr [rsi+32] imul ebx, edi, 2 jo G_M46396_IG09 add ebx, 1 jo G_M46396_IG09 movsxd rdx, ebx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbp, rax mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M46396_IG04 ;; bbWeight=1 PerfScore 17.25 G_M46396_IG03: mov qword ptr [rsp+20H], rdx jmp SHORT G_M46396_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M46396_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+20H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M46396_IG05: movsxd rdx, ebx mov rcx, qword ptr [rsp+20H] call CORINFO_HELP_NEWARR_1_VC mov r14, rax mov rcx, gword ptr [rsi+24] mov r8d, edi mov rdx, r14 call Array:Copy(Array,Array,int) xor edi, edi cmp dword ptr [rsi+32], 0 jle SHORT G_M46396_IG07 mov ecx, dword ptr [r14+8] ;; bbWeight=1 PerfScore 11.25 G_M46396_IG06: cmp edi, ecx jae SHORT G_M46396_IG10 movsxd rax, edi shl rax, 4 lea r8, bword ptr [r14+rax+16] mov eax, dword ptr [r8+8] cdq idiv edx:eax, ebx mov eax, dword ptr [rbp+8] cmp edx, eax jae SHORT G_M46396_IG10 movsxd rax, edx mov edx, dword ptr [rbp+4*rax+16] dec edx mov dword ptr [r8+12], edx inc edi mov dword ptr [rbp+4*rax+16], edi cmp edi, dword ptr [rsi+32] jl SHORT G_M46396_IG06 ;; bbWeight=4 PerfScore 178.00 G_M46396_IG07: lea rcx, bword ptr [rsi+16] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+24] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 3.75 G_M46396_IG08: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M46396_IG09: call CORINFO_HELP_OVERFLOW int3 ;; bbWeight=0 PerfScore 0.00 G_M46396_IG10: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 251, prolog size 18, PerfScore 246.91, (MethodHash=c7394ac3) for method Set`1:Resize():this ; ============================================================ ; Assembly listing for method EmptyPartition`1:GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M9871_IG01: ;; bbWeight=1 PerfScore 0.00 G_M9871_IG02: mov rax, rcx ;; bbWeight=1 PerfScore 0.25 G_M9871_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 1.65, (MethodHash=f4cfd970) for method EmptyPartition`1:GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method EmptyPartition`1:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M14809_IG01: ;; bbWeight=1 PerfScore 0.00 G_M14809_IG02: xor eax, eax ;; bbWeight=1 PerfScore 0.25 G_M14809_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 3, prolog size 0, PerfScore 1.55, (MethodHash=d291c626) for method EmptyPartition`1:MoveNext():bool:this ; ============================================================ ; Assembly listing for method ConcatIterator`1:Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5.50) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 cse0 [V02,T01] ( 3, 2.50) ref -> rcx "CSE - aggressive" ; ; Lcl frame size = 32 G_M41997_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M41997_IG02: mov rcx, gword ptr [rsi+24] test rcx, rcx je SHORT G_M41997_IG04 ;; bbWeight=1 PerfScore 3.25 G_M41997_IG03: mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this xor rax, rax mov gword ptr [rsi+24], rax ;; bbWeight=0.50 PerfScore 2.38 G_M41997_IG04: xor eax, eax mov qword ptr [rsi+8], rax mov dword ptr [rsi+20], -1 ;; bbWeight=1 PerfScore 2.25 G_M41997_IG05: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 64, prolog size 5, PerfScore 17.53, (MethodHash=a7c35bf2) for method ConcatIterator`1:Dispose():this ; ============================================================ ; Assembly listing for method EmptyPartition`1:System.IDisposable.Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M15704_IG01: ;; bbWeight=1 PerfScore 0.00 G_M15704_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=701fc2a7) for method EmptyPartition`1:System.IDisposable.Dispose():this ; ============================================================ ; Assembly listing for method Set`1:ToArray():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T05] ( 5, 8 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T04] ( 4, 7 ) ref -> rdi class-hnd exact ; V02 loc1 [V02,T00] ( 7, 25 ) int -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T09] ( 3, 4.20) long -> rcx "impRuntimeLookup slot" ; V05 tmp2 [V05,T10] ( 2, 4 ) int -> rdi "impAppendStmt" ; V06 tmp3 [V06,T08] ( 3, 4.80) long -> rdx "impRuntimeLookup indirectOffset" ; V07 tmp4 [V07,T11] ( 3, 3 ) long -> [rsp+0x28] "spilling Runtime Lookup tree" ; V08 tmp5 [V08,T01] ( 3, 24 ) ref -> rcx "arr expr" ;* V09 tmp6 [V09,T06] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V10 tmp7 [V10,T03] ( 2, 16 ) int -> rdx "argument with side effect" ; V11 tmp8 [V11,T02] ( 2, 16 ) ref -> r8 "argument with side effect" ; V12 cse0 [V12,T12] ( 3, 1.20) long -> rdx "CSE - moderate" ; V13 cse1 [V13,T07] ( 3, 6 ) int -> rbp "CSE - aggressive" ; ; Lcl frame size = 56 G_M40583_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 5.50 G_M40583_IG02: mov edi, dword ptr [rsi+32] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] cmp qword ptr [rdx+8], 64 jle SHORT G_M40583_IG04 ;; bbWeight=1 PerfScore 11.00 G_M40583_IG03: mov rdx, qword ptr [rdx+64] test rdx, rdx je SHORT G_M40583_IG04 mov qword ptr [rsp+28H], rdx jmp SHORT G_M40583_IG05 ;; bbWeight=0.40 PerfScore 2.50 G_M40583_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+28H], rax ;; bbWeight=0.10 PerfScore 0.23 G_M40583_IG05: movsxd rdx, edi mov rcx, qword ptr [rsp+28H] call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax xor ebx, ebx mov ebp, dword ptr [rdi+8] test ebp, ebp je SHORT G_M40583_IG07 ;; bbWeight=1 PerfScore 6.00 G_M40583_IG06: mov edx, ebx mov rcx, gword ptr [rsi+24] cmp ebx, dword ptr [rcx+8] jae SHORT G_M40583_IG09 movsxd r8, ebx shl r8, 4 mov r8, gword ptr [rcx+r8+16] mov rcx, rdi call CORINFO_HELP_ARRADDR_ST inc ebx cmp ebp, ebx jne SHORT G_M40583_IG06 ;; bbWeight=4 PerfScore 49.00 G_M40583_IG07: mov rax, rdi ;; bbWeight=1 PerfScore 0.25 G_M40583_IG08: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M40583_IG09: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 152, prolog size 16, PerfScore 92.93, (MethodHash=f7526178) for method Set`1:ToArray():ref:this ; ============================================================ ; Assembly listing for method OrderedEnumerable`2:GetEnumerableSorter(EnumerableSorter`1):EnumerableSorter`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 10, 9 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 loc0 [V02,T06] ( 4, 3 ) ref -> rbx class-hnd ; V03 loc1 [V03,T07] ( 4, 3 ) ref -> rax class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T00] ( 6, 12 ) ref -> [rsp+0x28] class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T12] ( 2, 2.50) long -> rcx "impRuntimeLookup slot" ; V07 tmp3 [V07,T03] ( 2, 4 ) ref -> r14 class-hnd "impAppendStmt" ; V08 tmp4 [V08,T04] ( 2, 4 ) int -> r15 "impAppendStmt" ; V09 tmp5 [V09,T11] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V10 tmp6 [V10,T16] ( 2, 1.50) long -> rcx "impRuntimeLookup slot" ;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" ; V12 tmp8 [V12,T14] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V13 tmp9 [V13,T08] ( 3, 3 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V14 tmp10 [V14,T09] ( 3, 3 ) ref -> rax class-hnd "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg" ; V16 tmp12 [V16,T15] ( 2, 2 ) ref -> rdx "argument with side effect" ; V17 cse0 [V17,T17] ( 3, 1.25) long -> rdx "CSE - moderate" ; V18 cse1 [V18,T13] ( 3, 2.25) long -> rdx "CSE - moderate" ; V19 cse2 [V19,T05] ( 4, 3.50) long -> rbp "CSE - aggressive" ; V20 rat0 [V20,T10] ( 3, 3 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 56 G_M7169_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 7.75 G_M7169_IG02: mov rbx, gword ptr [rsi+32] mov rcx, qword ptr [rsi] mov rcx, qword ptr [rcx+48] mov rbp, qword ptr [rcx+8] mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+8], rcx jne SHORT G_M7169_IG07 ;; bbWeight=1 PerfScore 11.25 G_M7169_IG03: mov rcx, 0xD1FFAB1E cmp rbx, gword ptr [rcx] jne SHORT G_M7169_IG07 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax call CultureInfo:get_CurrentCulture():CultureInfo mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+48]CultureInfo:get_CompareInfo():CompareInfo:this mov rdx, rax mov rcx, rbx xor r8d, r8d call CultureAwareComparer:.ctor(CompareInfo,int):this mov rcx, qword ptr [rsi] mov rdx, qword ptr [rbp+40] test rdx, rdx je SHORT G_M7169_IG05 ;; bbWeight=0.50 PerfScore 10.00 G_M7169_IG04: jmp SHORT G_M7169_IG06 ;; bbWeight=0.25 PerfScore 0.50 G_M7169_IG05: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M7169_IG06: mov rcx, rdx mov rdx, rbx call CORINFO_HELP_CHKCASTANY mov rbx, rax ;; bbWeight=0.50 PerfScore 0.88 G_M7169_IG07: mov r14, gword ptr [rsi+24] movzx r15, byte ptr [rsi+40] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rbp+32] test rdx, rdx je SHORT G_M7169_IG09 ;; bbWeight=1 PerfScore 9.25 G_M7169_IG08: jmp SHORT G_M7169_IG10 ;; bbWeight=0.25 PerfScore 0.50 G_M7169_IG09: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M7169_IG10: mov rcx, rdx call CORINFO_HELP_NEWSFAST mov gword ptr [rsp+28H], rax lea rcx, bword ptr [rax+8] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+28H] lea rcx, bword ptr [rax+16] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+28H] mov byte ptr [rax+40], r15b mov gword ptr [rsp+28H], rax lea rcx, bword ptr [rax+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+28H] cmp gword ptr [rsi+16], 0 je SHORT G_M7169_IG12 ;; bbWeight=1 PerfScore 15.50 G_M7169_IG11: mov rcx, gword ptr [rsi+16] mov rdx, rax mov rax, qword ptr [rcx] mov rax, qword ptr [rax+72] call gword ptr [rax+40]OrderedEnumerable`1:GetEnumerableSorter(EnumerableSorter`1):EnumerableSorter`1:this ;; bbWeight=0.50 PerfScore 4.63 G_M7169_IG12: nop ;; bbWeight=1 PerfScore 0.25 G_M7169_IG13: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 317, prolog size 17, PerfScore 97.20, (MethodHash=8a48e3fe) for method OrderedEnumerable`2:GetEnumerableSorter(EnumerableSorter`1):EnumerableSorter`1:this ; ============================================================ ; Assembly listing for method CultureAwareComparer:.ctor(CompareInfo,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T01] ( 4, 4 ) int -> rdi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T04] ( 2, 0 ) ref -> rcx "argument with side effect" ; V06 tmp3 [V06,T05] ( 2, 0 ) ref -> rdi "argument with side effect" ; V07 tmp4 [V07,T06] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M27606_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov edi, r8d ;; bbWeight=1 PerfScore 2.75 G_M27606_IG02: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF test edi, 0xD1FFAB1E jne SHORT G_M27606_IG05 ;; bbWeight=1 PerfScore 2.75 G_M27606_IG03: mov dword ptr [rsi+16], edi ;; bbWeight=1 PerfScore 1.00 G_M27606_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M27606_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x73E5 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1B32 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 133, prolog size 6, PerfScore 22.05, (MethodHash=cf489429) for method CultureAwareComparer:.ctor(CompareInfo,int):this ; ============================================================ ; Assembly listing for method OrderedEnumerable`2:GetEnumerableSorter(EnumerableSorter`1):EnumerableSorter`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 loc0 [V02,T10] ( 2, 2 ) ref -> rbx class-hnd ; V03 loc1 [V03,T06] ( 4, 3 ) ref -> rax class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T00] ( 6, 12 ) ref -> [rsp+0x20] class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T03] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V07 tmp3 [V07,T04] ( 2, 4 ) ref -> rbp class-hnd "impAppendStmt" ; V08 tmp4 [V08,T05] ( 2, 4 ) int -> r14 "impAppendStmt" ; V09 tmp5 [V09,T08] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ;* V10 tmp6 [V10 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg" ; V11 cse0 [V11,T09] ( 3, 2.25) long -> rdx "CSE - aggressive" ; V12 cse1 [V12,T07] ( 4, 3 ) ref -> rcx "CSE - aggressive" ; ; Lcl frame size = 48 G_M7169_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 6.75 G_M7169_IG02: mov rbx, gword ptr [rsi+32] mov rbp, gword ptr [rsi+24] movzx r14, byte ptr [rsi+40] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx+8] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M7169_IG04 ;; bbWeight=1 PerfScore 15.25 G_M7169_IG03: jmp SHORT G_M7169_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M7169_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M7169_IG05: mov rcx, rdx call CORINFO_HELP_NEWSFAST mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rax+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+20H] lea rcx, bword ptr [rax+16] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+20H] mov byte ptr [rax+40], r14b mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rax+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+20H] mov rcx, gword ptr [rsi+16] test rcx, rcx je SHORT G_M7169_IG07 ;; bbWeight=1 PerfScore 15.75 G_M7169_IG06: mov rdx, rax mov rax, qword ptr [rcx] mov rax, qword ptr [rax+72] call gword ptr [rax+40]OrderedEnumerable`1:GetEnumerableSorter(EnumerableSorter`1):EnumerableSorter`1:this ;; bbWeight=0.50 PerfScore 3.63 G_M7169_IG07: nop ;; bbWeight=1 PerfScore 0.25 G_M7169_IG08: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 181, prolog size 15, PerfScore 64.35, (MethodHash=8a48e3fe) for method OrderedEnumerable`2:GetEnumerableSorter(EnumerableSorter`1):EnumerableSorter`1:this ; ============================================================ ; Assembly listing for method EnumerableSorter`1:Sort(ref,int):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T01] ( 4, 4 ) int -> rdi ; V03 loc0 [V03,T03] ( 3, 3 ) ref -> rbx class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M23760_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, r8d ;; bbWeight=1 PerfScore 3.75 G_M23760_IG02: mov rcx, rsi mov r8d, edi call EnumerableSorter`1:ComputeMap(ref,int):ref:this mov rbx, rax lea r9d, [rdi-1] mov rcx, rsi mov rdx, rbx xor r8d, r8d mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+48]EnumerableSorter`1:QuickSort(ref,int,int):this mov rax, rbx ;; bbWeight=1 PerfScore 10.25 G_M23760_IG03: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 61, prolog size 7, PerfScore 22.85, (MethodHash=3baea32f) for method EnumerableSorter`1:Sort(ref,int):ref:this ; ============================================================ ; Assembly listing for method EnumerableSorter`1:ComputeMap(ref,int):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T05] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T03] ( 4, 4 ) int -> rsi ; V03 loc0 [V03,T01] ( 4, 7 ) ref -> rax class-hnd exact ; V04 loc1 [V04,T00] ( 6, 21 ) int -> rdx ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 cse0 [V06,T04] ( 3, 6 ) int -> rcx "CSE - aggressive" ; ; Lcl frame size = 32 G_M59555_IG01: push rsi sub rsp, 32 mov esi, r8d ;; bbWeight=1 PerfScore 1.50 G_M59555_IG02: mov r8d, esi mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+32]EnumerableSorter`1:ComputeKeys(ref,int):this movsxd rdx, esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC xor edx, edx mov ecx, dword ptr [rax+8] test ecx, ecx jle SHORT G_M59555_IG04 ;; bbWeight=1 PerfScore 12.25 G_M59555_IG03: movsxd r8, edx mov dword ptr [rax+4*r8+16], edx inc edx cmp ecx, edx jg SHORT G_M59555_IG03 ;; bbWeight=4 PerfScore 11.00 G_M59555_IG04: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 68, prolog size 8, PerfScore 33.30, (MethodHash=2711175c) for method EnumerableSorter`1:ComputeMap(ref,int):ref:this ; ============================================================ ; Assembly listing for method EnumerableSorter`2:ComputeKeys(ref,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T05] ( 8, 20 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T06] ( 8, 16.50) ref -> rdi class-hnd ; V02 arg2 [V02,T07] ( 9, 14.50) int -> rbx ; V03 loc0 [V03,T00] ( 14, 53 ) int -> rbp ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T01] ( 6, 48 ) ref -> r14 class-hnd "non-inline candidate call" ; V06 tmp2 [V06,T02] ( 4, 32 ) int -> rax "Strict ordering of exceptions for Array store" ; V07 tmp3 [V07,T08] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V08 tmp4 [V08,T09] ( 4, 3 ) ref -> rcx ; V09 rat0 [V09,T03] ( 3, 24 ) ref -> rax "delegate invoke call" ; V10 rat1 [V10,T04] ( 3, 24 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 32 G_M49715_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 6.00 G_M49715_IG02: movsxd rdx, ebx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+32] mov rdx, rax call CORINFO_HELP_ASSIGN_REF xor ebp, ebp test ebx, ebx jle SHORT G_M49715_IG07 test rdi, rdi je SHORT G_M49715_IG06 ;; bbWeight=1 PerfScore 6.00 G_M49715_IG03: cmp dword ptr [rdi+8], ebx setge dl movzx rdx, dl test ebx, ebx setge cl movzx rcx, cl test edx, ecx je SHORT G_M49715_IG06 ;; bbWeight=1 PerfScore 6.00 G_M49715_IG04: mov r14, gword ptr [rsi+32] movsxd rdx, ebp mov rdx, gword ptr [rdi+8*rdx+16] mov rax, gword ptr [rsi+8] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`2:Invoke(__Canon):int:this cmp ebp, dword ptr [r14+8] jae SHORT G_M49715_IG11 movsxd rdx, ebp mov dword ptr [r14+4*rdx+16], eax inc ebp cmp ebp, ebx jl SHORT G_M49715_IG04 ;; bbWeight=4 PerfScore 68.00 G_M49715_IG05: jmp SHORT G_M49715_IG07 ;; bbWeight=1 PerfScore 2.00 G_M49715_IG06: mov r14, gword ptr [rsi+32] cmp ebp, dword ptr [rdi+8] jae SHORT G_M49715_IG11 movsxd rdx, ebp mov rdx, gword ptr [rdi+8*rdx+16] mov rax, gword ptr [rsi+8] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`2:Invoke(__Canon):int:this cmp ebp, dword ptr [r14+8] jae SHORT G_M49715_IG11 movsxd rcx, ebp mov dword ptr [r14+4*rcx+16], eax inc ebp cmp ebp, ebx jl SHORT G_M49715_IG06 ;; bbWeight=4 PerfScore 80.00 G_M49715_IG07: mov rcx, gword ptr [rsi+24] test rcx, rcx jne SHORT G_M49715_IG09 ;; bbWeight=1 PerfScore 3.25 G_M49715_IG08: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M49715_IG09: mov rdx, rdi mov r8d, ebx mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+32] ;; bbWeight=0.50 PerfScore 3.25 G_M49715_IG10: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 rex.jmp rax ;; bbWeight=0.50 PerfScore 2.38 G_M49715_IG11: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 230, prolog size 19, PerfScore 201.75, (MethodHash=3bb03dcc) for method EnumerableSorter`2:ComputeKeys(ref,int):this ; ============================================================ ; Assembly listing for method <>c:b__8_4(Characteristic):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M47750_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M47750_IG02: mov rcx, gword ptr [rdx+16] call CharacteristicHelper:IsCharacteristicObjectSubclass(Type):bool test al, al jne SHORT G_M47750_IG05 ;; bbWeight=1 PerfScore 4.25 G_M47750_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M47750_IG04: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M47750_IG05: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M47750_IG06: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 34, prolog size 4, PerfScore 9.40, (MethodHash=6f2e4579) for method <>c:b__8_4(Characteristic):int:this ; ============================================================ ; Assembly listing for method EnumerableSorter`2:ComputeKeys(ref,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T05] ( 9, 21 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T06] ( 8, 16.50) ref -> rdi class-hnd ; V02 arg2 [V02,T07] ( 9, 14.50) int -> rbx ; V03 loc0 [V03,T00] ( 12, 45 ) int -> rbp ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T08] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V06 tmp2 [V06,T11] ( 3, 3 ) long -> [rsp+0x20] "spilling Runtime Lookup tree" ; V07 tmp3 [V07,T01] ( 4, 32 ) ref -> r14 class-hnd "non-inline candidate call" ; V08 tmp4 [V08,T09] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V09 tmp5 [V09,T10] ( 4, 3 ) ref -> rcx ; V10 tmp6 [V10,T02] ( 4, 32 ) ref -> rax "argument with side effect" ; V11 cse0 [V11,T12] ( 3, 2.25) long -> rdx "CSE - aggressive" ; V12 rat0 [V12,T03] ( 3, 24 ) ref -> rax "delegate invoke call" ; V13 rat1 [V13,T04] ( 3, 24 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 48 G_M49715_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx mov rdi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 7.00 G_M49715_IG02: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx+8] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M49715_IG04 ;; bbWeight=1 PerfScore 9.25 G_M49715_IG03: mov qword ptr [rsp+20H], rdx jmp SHORT G_M49715_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M49715_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+20H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M49715_IG05: movsxd rdx, ebx mov rcx, qword ptr [rsp+20H] call CORINFO_HELP_NEWARR_1_OBJ lea rcx, bword ptr [rsi+32] mov rdx, rax call CORINFO_HELP_ASSIGN_REF xor ebp, ebp test ebx, ebx jle SHORT G_M49715_IG10 test rdi, rdi je SHORT G_M49715_IG09 ;; bbWeight=1 PerfScore 6.75 G_M49715_IG06: cmp dword ptr [rdi+8], ebx setge dl movzx rdx, dl test ebx, ebx setge cl movzx rcx, cl test edx, ecx je SHORT G_M49715_IG09 ;; bbWeight=1 PerfScore 6.00 G_M49715_IG07: mov r14, gword ptr [rsi+32] movsxd rdx, ebp mov rdx, gword ptr [rdi+8*rdx+16] mov rax, gword ptr [rsi+8] mov rcx, gword ptr [rax+8] call gword ptr [rax+24]Func`2:Invoke(__Canon):__Canon:this mov r8, rax mov edx, ebp mov rcx, r14 call CORINFO_HELP_ARRADDR_ST inc ebp cmp ebp, ebx jl SHORT G_M49715_IG07 ;; bbWeight=4 PerfScore 58.00 G_M49715_IG08: jmp SHORT G_M49715_IG10 ;; bbWeight=1 PerfScore 2.00 G_M49715_IG09: mov r14, gword ptr [rsi+32] cmp ebp, dword ptr [rdi+8] jae SHORT G_M49715_IG14 movsxd rdx, ebp mov rdx, gword ptr [rdi+8*rdx+16] mov rax, gword ptr [rsi+8] mov rcx, gword ptr [rax+8] call gword ptr [rax+24]Func`2:Invoke(__Canon):__Canon:this mov r8, rax mov edx, ebp mov rcx, r14 call CORINFO_HELP_ARRADDR_ST inc ebp cmp ebp, ebx jl SHORT G_M49715_IG09 ;; bbWeight=4 PerfScore 70.00 G_M49715_IG10: mov rcx, gword ptr [rsi+24] test rcx, rcx jne SHORT G_M49715_IG12 ;; bbWeight=1 PerfScore 3.25 G_M49715_IG11: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M49715_IG12: mov rdx, rdi mov r8d, ebx mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+32] ;; bbWeight=0.50 PerfScore 3.25 G_M49715_IG13: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 rex.jmp rax ;; bbWeight=0.50 PerfScore 2.38 G_M49715_IG14: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 275, prolog size 24, PerfScore 198.56, (MethodHash=3bb03dcc) for method EnumerableSorter`2:ComputeKeys(ref,int):this ; ============================================================ ; Assembly listing for method <>c:b__8_5(Characteristic):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M30433_IG01: ;; bbWeight=1 PerfScore 0.00 G_M30433_IG02: mov rax, gword ptr [rdx+8] ;; bbWeight=1 PerfScore 2.00 G_M30433_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=e489891e) for method <>c:b__8_5(Characteristic):String:this ; ============================================================ ; Assembly listing for method EnumerableSorter`2:QuickSort(ref,int,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T04] ( 5, 3.75) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 6, 4 ) int -> r8 ; V03 arg3 [V03,T05] ( 3, 3 ) int -> r9 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V06 tmp2 [V06,T06] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V07 tmp3 [V07,T09] ( 3, 3 ) long -> rbp "spilling Runtime Lookup tree" ; V08 tmp4 [V08,T00] ( 4, 8 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V09 tmp5 [V09,T07] ( 4, 4 ) int -> r9 "Inlining Arg" ;* V10 tmp6 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V11 tmp7 [V11,T13] ( 2, 2 ) byref -> rdx "Inlining Arg" ; V12 tmp8 [V12,T08] ( 2, 4 ) long -> rbp "Inlining Arg" ; V13 tmp9 [V13,T11] ( 3, 2 ) byref -> rdi V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ; V14 tmp10 [V14,T12] ( 3, 2 ) int -> rbx V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ; V15 tmp11 [V15,T14] ( 2, 1 ) byref -> rdi V10._value(offs=0x00) P-INDEP "field V10._value (fldOffset=0x0)" ; V16 tmp12 [V16 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V17 tmp13 [V17,T03] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V18 cse0 [V18,T10] ( 3, 2.25) long -> rbp "CSE - moderate" ; ; Lcl frame size = 64 G_M30242_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 64 xor rax, rax mov qword ptr [rsp+28H], rax mov qword ptr [rsp+38H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 7.75 G_M30242_IG02: sub r9d, r8d inc r9d test rdx, rdx jne SHORT G_M30242_IG05 ;; bbWeight=1 PerfScore 1.75 G_M30242_IG03: or r8d, r9d jne G_M30242_IG12 ;; bbWeight=0.25 PerfScore 0.31 G_M30242_IG04: xor rdi, rdi xor ebx, ebx jmp SHORT G_M30242_IG07 ;; bbWeight=0.50 PerfScore 1.25 G_M30242_IG05: mov ecx, r8d mov eax, r9d add rcx, rax mov eax, dword ptr [rdx+8] cmp rcx, rax ja G_M30242_IG12 ;; bbWeight=0.25 PerfScore 1.00 G_M30242_IG06: add rdx, 16 movsxd rcx, r8d lea rdi, bword ptr [rdx+4*rcx] mov ebx, r9d ;; bbWeight=0.50 PerfScore 0.63 G_M30242_IG07: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx+8] mov rbp, qword ptr [rdx+24] test rbp, rbp je SHORT G_M30242_IG09 ;; bbWeight=1 PerfScore 9.25 G_M30242_IG08: jmp SHORT G_M30242_IG10 ;; bbWeight=0.25 PerfScore 0.50 G_M30242_IG09: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rbp, rax ;; bbWeight=0.25 PerfScore 0.38 G_M30242_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rcx, rsi mov rdx, rbp mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov rbp, rax lea rcx, bword ptr [r14+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov qword ptr [r14+24], rbp lea rcx, bword ptr [rsp+28H] mov bword ptr [rcx], rdi mov dword ptr [rcx+8], ebx lea rcx, bword ptr [rsp+28H] mov rdx, r14 call MemoryExtensions:Sort(Span`1,Comparison`1) nop ;; bbWeight=1 PerfScore 10.75 G_M30242_IG11: add rsp, 64 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M30242_IG12: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 226, prolog size 22, PerfScore 59.91, (MethodHash=b46489dd) for method EnumerableSorter`2:QuickSort(ref,int,int):this ; ============================================================ ; Assembly listing for method MemoryExtensions:Sort(Span`1,Comparison`1) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 7 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T01] ( 4, 3.50) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref V05._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref V05._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; ; Lcl frame size = 40 G_M33545_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M33545_IG02: test rdx, rdx je SHORT G_M33545_IG06 ;; bbWeight=1 PerfScore 1.25 G_M33545_IG03: cmp dword ptr [rcx+8], 1 jle SHORT G_M33545_IG05 ;; bbWeight=1 PerfScore 3.00 G_M33545_IG04: add rsp, 40 jmp ArraySortHelper`1:Sort(Span`1,Comparison`1) ;; bbWeight=0.50 PerfScore 1.13 G_M33545_IG05: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M33545_IG06: mov ecx, 29 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 40, prolog size 4, PerfScore 10.25, (MethodHash=78267cf6) for method MemoryExtensions:Sort(Span`1,Comparison`1) ; ============================================================ ; Assembly listing for method ArraySortHelper`1:Sort(Span`1,Comparison`1) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 6 ) byref -> rcx ; V01 arg1 [V01,T01] ( 4, 3 ) ref -> [rbp+0x18] EH do-not-enreg[] class-hnd EH-live ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 2, 0 ) ref -> rdx class-hnd "impSpillSpecialSideEff" ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref V08._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V09 PSPSym [V09 ] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 48 G_M46742_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] mov qword ptr [rbp-10H], rsp mov gword ptr [rbp+18H], rdx ;; bbWeight=1 PerfScore 3.75 G_M46742_IG02: mov rdx, gword ptr [rbp+18H] call ArraySortHelper`1:IntrospectiveSort(Span`1,Comparison`1) nop ;; bbWeight=1 PerfScore 2.25 G_M46742_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 G_M46742_IG04: push rbp sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+30H] ;; bbWeight=0 PerfScore 0.00 G_M46742_IG05: mov rcx, gword ptr [rbp+18H] call ThrowHelper:ThrowArgumentException_BadComparer(Object) lea rax, G_M46742_IG03 ;; bbWeight=0 PerfScore 0.00 G_M46742_IG06: add rsp, 48 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M46742_IG07: push rbp sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+30H] ;; bbWeight=0 PerfScore 0.00 G_M46742_IG08: mov ecx, 61 call ThrowHelper:ThrowInvalidOperationException(int,Exception) lea rax, G_M46742_IG03 ;; bbWeight=0 PerfScore 0.00 G_M46742_IG09: add rsp, 48 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 115, prolog size 18, PerfScore 19.50, (MethodHash=0eb24969) for method ArraySortHelper`1:Sort(Span`1,Comparison`1) ; ============================================================ ; Assembly listing for method ArraySortHelper`1:IntrospectiveSort(Span`1,Comparison`1) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T01] ( 3, 2.50) ref -> r8 class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ; V04 tmp2 [V04,T08] ( 2, 1 ) int -> rax "Inline return value spill temp" ; V05 tmp3 [V05,T04] ( 2, 2 ) int -> rax "Inlining Arg" ; V06 tmp4 [V06,T06] ( 2, 1.50) byref -> rdx V10._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V07 tmp5 [V07,T03] ( 3, 2.50) int -> rcx V10._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ; V08 tmp6 [V08,T07] ( 2, 1 ) byref -> rdx V03._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ; V09 tmp7 [V09,T05] ( 3, 1.50) int -> rcx V03._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V11 tmp9 [V11 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V12 tmp10 [V12,T02] ( 3, 3 ) byref -> r9 stack-byref "BlockOp address local" ; ; Lcl frame size = 56 G_M13395_IG01: sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax mov r8, rdx ;; bbWeight=1 PerfScore 1.75 G_M13395_IG02: mov rdx, bword ptr [rcx] mov ecx, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M13395_IG03: cmp ecx, 1 jle SHORT G_M13395_IG05 ;; bbWeight=1 PerfScore 1.25 G_M13395_IG04: mov eax, ecx or eax, 1 lzcnt eax, eax xor eax, 31 lea r9, bword ptr [rsp+28H] mov bword ptr [r9], rdx mov dword ptr [r9+8], ecx lea rcx, bword ptr [rsp+28H] lea edx, [2*rax+2] call ArraySortHelper`1:IntroSort(Span`1,int,Comparison`1) ;; bbWeight=0.50 PerfScore 3.63 G_M13395_IG05: nop ;; bbWeight=1 PerfScore 0.25 G_M13395_IG06: add rsp, 56 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 72, prolog size 11, PerfScore 19.33, (MethodHash=ddf5cbac) for method ArraySortHelper`1:IntrospectiveSort(Span`1,Comparison`1) ; ============================================================ ; Assembly listing for method ArraySortHelper`1:IntroSort(Span`1,int,Comparison`1) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T10] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T04] ( 6, 18 ) int -> rsi ; V02 arg2 [V02,T06] ( 10, 13 ) ref -> rdi class-hnd ; V03 loc0 [V03,T01] ( 13, 28 ) int -> r14 ; V04 loc1 [V04,T08] ( 3, 12 ) int -> r15 ;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V06 loc3 [V06,T05] ( 4, 16 ) int -> rcx ; V07 loc4 [V07,T09] ( 3, 12 ) int -> r14 ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V14 tmp6 [V14 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V15 tmp7 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V17 tmp9 [V17 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V18 tmp10 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V19 tmp11 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V21 tmp13 [V21 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V22 tmp14 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V23 tmp15 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V24 tmp16 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V25 tmp17 [V25 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V26 tmp18 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V27 tmp19 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V28 tmp20 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V29 tmp21 [V29,T00] ( 9, 12 ) byref -> rbx V53._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V30 tmp22 [V30,T07] ( 11, 14 ) int -> rbp V53._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V31 tmp23 [V31,T18] ( 0, 0 ) byref -> zero-ref V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ;* V32 tmp24 [V32 ] ( 0, 0 ) int -> zero-ref V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ;* V33 tmp25 [V33,T19] ( 0, 0 ) byref -> zero-ref V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ; V34 tmp26 [V34,T14] ( 2, 8 ) int -> rcx V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ; V35 tmp27 [V35,T11] ( 2, 8 ) byref -> rcx V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ; V36 tmp28 [V36,T15] ( 2, 8 ) int -> r14 V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ; V37 tmp29 [V37,T28] ( 2, 1 ) byref -> rcx V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ; V38 tmp30 [V38,T34] ( 2, 1 ) int -> rdx V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ; V39 tmp31 [V39,T29] ( 2, 1 ) byref -> rbx V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ; V40 tmp32 [V40,T35] ( 2, 1 ) int -> rcx V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ; V41 tmp33 [V41,T30] ( 2, 1 ) byref -> rbx V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ; V42 tmp34 [V42,T36] ( 2, 1 ) int -> rcx V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V43 tmp35 [V43,T31] ( 2, 1 ) byref -> rbx V16._value(offs=0x00) P-INDEP "field V16._value (fldOffset=0x0)" ; V44 tmp36 [V44,T32] ( 2, 1 ) byref -> rcx V17._pointer(offs=0x00) P-INDEP "field V17._pointer (fldOffset=0x0)" ; V45 tmp37 [V45,T37] ( 2, 1 ) int -> rdx V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)" ; V46 tmp38 [V46,T33] ( 2, 1 ) byref -> rcx V20._value(offs=0x00) P-INDEP "field V20._value (fldOffset=0x0)" ;* V47 tmp39 [V47,T20] ( 0, 0 ) byref -> zero-ref V21._pointer(offs=0x00) P-INDEP "field V21._pointer (fldOffset=0x0)" ; V48 tmp40 [V48,T16] ( 2, 8 ) int -> rcx V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)" ;* V49 tmp41 [V49,T21] ( 0, 0 ) byref -> zero-ref V24._value(offs=0x00) P-INDEP "field V24._value (fldOffset=0x0)" ; V50 tmp42 [V50,T12] ( 2, 8 ) byref -> rcx V25._pointer(offs=0x00) P-INDEP "field V25._pointer (fldOffset=0x0)" ; V51 tmp43 [V51,T17] ( 2, 8 ) int -> r14 V25._length(offs=0x08) P-INDEP "field V25._length (fldOffset=0x8)" ; V52 tmp44 [V52,T13] ( 2, 8 ) byref -> rcx V28._value(offs=0x00) P-INDEP "field V28._value (fldOffset=0x0)" ;* V53 tmp45 [V53 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V54 tmp46 [V54 ] ( 16, 44 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V55 tmp47 [V55,T22] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V56 tmp48 [V56,T23] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V57 tmp49 [V57,T24] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V58 tmp50 [V58,T25] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V59 tmp51 [V59,T26] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V60 tmp52 [V60,T27] ( 3, 3 ) byref -> rax stack-byref "BlockOp address local" ; V61 tmp53 [V61,T02] ( 3, 24 ) byref -> rdx stack-byref "BlockOp address local" ; V62 tmp54 [V62,T03] ( 3, 24 ) byref -> rdx stack-byref "BlockOp address local" ; ; Lcl frame size = 56 G_M2663_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax mov esi, edx mov rdi, r8 ;; bbWeight=1 PerfScore 8.00 G_M2663_IG02: mov rbx, bword ptr [rcx] mov ebp, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M2663_IG03: mov r14d, ebp cmp ebp, 1 jle G_M2663_IG16 ;; bbWeight=1 PerfScore 1.50 G_M2663_IG04: cmp r14d, 16 jle G_M2663_IG10 ;; bbWeight=4 PerfScore 5.00 G_M2663_IG05: test esi, esi je G_M2663_IG14 ;; bbWeight=4 PerfScore 5.00 G_M2663_IG06: dec esi mov ecx, r14d mov edx, ebp cmp rcx, rdx ja G_M2663_IG18 ;; bbWeight=4 PerfScore 8.00 G_M2663_IG07: mov ecx, r14d lea rdx, bword ptr [rsp+28H] mov bword ptr [rdx], rbx mov dword ptr [rdx+8], ecx lea rcx, bword ptr [rsp+28H] mov rdx, rdi call ArraySortHelper`1:PickPivotAndPartition(Span`1,Comparison`1):int mov r15d, eax lea ecx, [r15+1] sub r14d, ecx mov edx, ecx mov r8d, r14d add rdx, r8 mov r8d, ebp cmp rdx, r8 ja G_M2663_IG18 ;; bbWeight=4 PerfScore 31.00 G_M2663_IG08: movsxd rcx, ecx lea rcx, bword ptr [rbx+4*rcx] lea rdx, bword ptr [rsp+28H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], r14d lea rcx, bword ptr [rsp+28H] mov edx, esi mov r8, rdi call ArraySortHelper`1:IntroSort(Span`1,int,Comparison`1) mov r14d, r15d cmp r14d, 1 jg G_M2663_IG04 ;; bbWeight=4 PerfScore 27.00 G_M2663_IG09: jmp G_M2663_IG16 ;; bbWeight=0.50 PerfScore 1.00 G_M2663_IG10: cmp r14d, 2 jne SHORT G_M2663_IG11 lea rcx, bword ptr [rsp+28H] mov bword ptr [rcx], rbx mov dword ptr [rcx+8], ebp lea rcx, bword ptr [rsp+28H] mov rdx, rdi xor r8d, r8d mov r9d, 1 call ArraySortHelper`1:SwapIfGreater(Span`1,Comparison`1,int,int) jmp G_M2663_IG16 ;; bbWeight=0.50 PerfScore 4.00 G_M2663_IG11: cmp r14d, 3 jne SHORT G_M2663_IG12 lea rcx, bword ptr [rsp+28H] mov bword ptr [rcx], rbx mov dword ptr [rcx+8], ebp lea rcx, bword ptr [rsp+28H] mov rdx, rdi xor r8d, r8d mov r9d, 1 call ArraySortHelper`1:SwapIfGreater(Span`1,Comparison`1,int,int) lea rcx, bword ptr [rsp+28H] mov bword ptr [rcx], rbx mov dword ptr [rcx+8], ebp lea rcx, bword ptr [rsp+28H] mov rdx, rdi xor r8d, r8d mov r9d, 2 call ArraySortHelper`1:SwapIfGreater(Span`1,Comparison`1,int,int) lea rcx, bword ptr [rsp+28H] mov bword ptr [rcx], rbx mov dword ptr [rcx+8], ebp lea rcx, bword ptr [rsp+28H] mov rdx, rdi mov r8d, 1 mov r9d, 2 call ArraySortHelper`1:SwapIfGreater(Span`1,Comparison`1,int,int) jmp SHORT G_M2663_IG16 ;; bbWeight=0.50 PerfScore 8.75 G_M2663_IG12: mov ecx, r14d mov edx, ebp cmp rcx, rdx ja SHORT G_M2663_IG18 ;; bbWeight=0.50 PerfScore 0.88 G_M2663_IG13: mov ecx, r14d lea rdx, bword ptr [rsp+28H] mov bword ptr [rdx], rbx mov dword ptr [rdx+8], ecx lea rcx, bword ptr [rsp+28H] mov rdx, rdi call ArraySortHelper`1:InsertionSort(Span`1,Comparison`1) jmp SHORT G_M2663_IG16 ;; bbWeight=0.50 PerfScore 3.25 G_M2663_IG14: mov ecx, r14d mov edx, ebp cmp rcx, rdx ja SHORT G_M2663_IG18 ;; bbWeight=0.50 PerfScore 0.88 G_M2663_IG15: mov rcx, rbx mov edx, r14d lea rax, bword ptr [rsp+28H] mov bword ptr [rax], rcx mov dword ptr [rax+8], edx lea rcx, bword ptr [rsp+28H] mov rdx, rdi call ArraySortHelper`1:HeapSort(Span`1,Comparison`1) ;; bbWeight=0.50 PerfScore 2.38 G_M2663_IG16: nop ;; bbWeight=1 PerfScore 0.25 G_M2663_IG17: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 G_M2663_IG18: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 438, prolog size 19, PerfScore 158.93, (MethodHash=2dd3f598) for method ArraySortHelper`1:IntroSort(Span`1,int,Comparison`1) ; ============================================================ ; Assembly listing for method ArraySortHelper`1:InsertionSort(Span`1,Comparison`1) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T09] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T06] ( 3, 18 ) ref -> rsi class-hnd ; V02 loc0 [V02,T07] ( 5, 17 ) int -> rbp ; V03 loc1 [V03,T05] ( 3, 24 ) int -> r12 ; V04 loc2 [V04,T00] ( 9,104 ) int -> rbp ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T02] ( 6, 41 ) byref -> rdi V08._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V07 tmp2 [V07,T04] ( 5, 30 ) int -> rbx V08._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V09 cse0 [V09,T03] ( 6, 36 ) int -> rax "CSE - aggressive" ; V10 cse1 [V10,T08] ( 3, 12 ) int -> r15 "CSE - aggressive" ; V11 cse2 [V11,T10] ( 3, 6 ) int -> r14 "CSE - aggressive" ; V12 rat0 [V12,T01] ( 3, 96 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 32 G_M34505_IG01: push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 32 mov rsi, rdx ;; bbWeight=1 PerfScore 7.50 G_M34505_IG02: mov rdi, bword ptr [rcx] mov ebx, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M34505_IG03: xor ebp, ebp lea r14d, [rbx-1] test r14d, r14d jle SHORT G_M34505_IG09 ;; bbWeight=1 PerfScore 2.00 G_M34505_IG04: lea r15d, [rbp+1] movsxd r8, r15d mov r12d, dword ptr [rdi+4*r8] jmp SHORT G_M34505_IG06 ;; bbWeight=4 PerfScore 19.00 G_M34505_IG05: lea eax, [rbp+1] cmp eax, ebx jae SHORT G_M34505_IG10 movsxd rax, eax movsxd rdx, ebp mov edx, dword ptr [rdi+4*rdx] mov dword ptr [rdi+4*rax], edx dec ebp ;; bbWeight=8 PerfScore 44.00 G_M34505_IG06: test ebp, ebp jl SHORT G_M34505_IG08 ;; bbWeight=32 PerfScore 40.00 G_M34505_IG07: cmp ebp, ebx jae SHORT G_M34505_IG10 movsxd r8, ebp mov r8d, dword ptr [rdi+4*r8] mov rax, rsi mov rcx, gword ptr [rax+8] mov edx, r12d call qword ptr [rax+24]Comparison`1:Invoke(int,int):int:this test eax, eax jl SHORT G_M34505_IG05 ;; bbWeight=16 PerfScore 164.00 G_M34505_IG08: lea eax, [rbp+1] cmp eax, ebx jae SHORT G_M34505_IG10 movsxd rax, eax mov dword ptr [rdi+4*rax], r12d mov ebp, r15d cmp ebp, r14d jl SHORT G_M34505_IG04 ;; bbWeight=4 PerfScore 18.00 G_M34505_IG09: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.75 G_M34505_IG10: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 143, prolog size 17, PerfScore 317.55, (MethodHash=7a5b7936) for method ArraySortHelper`1:InsertionSort(Span`1,Comparison`1) ; ============================================================ ; Assembly listing for method EnumerableSorter`2:CompareAnyKeys(int,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 6, 5 ) int -> rdi ; V02 arg2 [V02,T02] ( 6, 5 ) int -> rbx ; V03 loc0 [V03,T10] ( 3, 2.50) int -> rax ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 3, 6 ) ref -> rdx "arr expr" ; V06 tmp2 [V06,T04] ( 2, 4 ) ref -> r8 "arr expr" ; V07 tmp3 [V07,T05] ( 2, 4 ) ref -> rcx "argument with side effect" ; V08 tmp4 [V08,T06] ( 2, 4 ) int -> r8 "argument with side effect" ; V09 tmp5 [V09,T07] ( 2, 4 ) int -> rdx "argument with side effect" ; V10 cse0 [V10,T08] ( 3, 3 ) ref -> r8 "CSE - aggressive" ; V11 cse1 [V11,T11] ( 4, 2 ) ref -> rcx "CSE - moderate" ; V12 cse2 [V12,T09] ( 3, 3 ) int -> r11 "CSE - aggressive" ; ; Lcl frame size = 32 G_M4892_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx mov ebx, r8d ;; bbWeight=1 PerfScore 4.00 G_M4892_IG02: mov rcx, gword ptr [rsi+16] mov r8, gword ptr [rsi+32] mov rdx, r8 mov r11d, dword ptr [rdx+8] cmp edi, r11d jae G_M4892_IG11 movsxd rax, edi mov edx, dword ptr [rdx+4*rax+16] cmp ebx, r11d jae SHORT G_M4892_IG11 movsxd r11, ebx mov r8d, dword ptr [r8+4*r11+16] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IComparer`1:Compare(int,int):int:this test eax, eax jne SHORT G_M4892_IG07 ;; bbWeight=1 PerfScore 18.00 G_M4892_IG03: mov rcx, gword ptr [rsi+24] test rcx, rcx jne SHORT G_M4892_IG05 mov eax, edi sub eax, ebx ;; bbWeight=0.50 PerfScore 1.88 G_M4892_IG04: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M4892_IG05: mov edx, edi mov r8d, ebx mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+40] ;; bbWeight=0.50 PerfScore 3.25 G_M4892_IG06: add rsp, 32 pop rbx pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.88 G_M4892_IG07: movzx rdx, byte ptr [rsi+40] test eax, eax setg al movzx rax, al cmp edx, eax jne SHORT G_M4892_IG09 mov eax, -1 ;; bbWeight=0.50 PerfScore 2.50 G_M4892_IG08: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M4892_IG09: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M4892_IG10: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M4892_IG11: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 180, prolog size 7, PerfScore 53.75, (MethodHash=af2dece3) for method EnumerableSorter`2:CompareAnyKeys(int,int):int:this ; ============================================================ ; Assembly listing for method GenericComparer`1:Compare(int,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 4, 3.25) int -> rdx ld-addr-op ; V02 arg2 [V02,T01] ( 4, 3.25) int -> r8 ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 4, 2.50) int -> rax "Inline return value spill temp" ; ; Lcl frame size = 0 G_M41194_IG01: ;; bbWeight=1 PerfScore 0.00 G_M41194_IG02: cmp edx, r8d jge SHORT G_M41194_IG04 ;; bbWeight=1 PerfScore 1.25 G_M41194_IG03: mov eax, -1 jmp SHORT G_M41194_IG07 ;; bbWeight=0.50 PerfScore 1.13 G_M41194_IG04: cmp edx, r8d jle SHORT G_M41194_IG06 ;; bbWeight=0.25 PerfScore 0.31 G_M41194_IG05: mov eax, 1 jmp SHORT G_M41194_IG07 ;; bbWeight=0.50 PerfScore 1.13 G_M41194_IG06: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M41194_IG07: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 27, prolog size 0, PerfScore 7.64, (MethodHash=1ebc5f15) for method GenericComparer`1:Compare(int,int):int:this ; ============================================================ ; Assembly listing for method EnumerableSorter`2:CompareAnyKeys(int,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 6, 5 ) int -> rdi ; V02 arg2 [V02,T02] ( 6, 5 ) int -> rbx ; V03 loc0 [V03,T12] ( 3, 2.50) int -> rax ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V06 tmp2 [V06,T06] ( 2, 4 ) ref -> rbp class-hnd "impAppendStmt" ; V07 tmp3 [V07,T07] ( 2, 4 ) ref -> r14 class-hnd "impAppendStmt" ; V08 tmp4 [V08,T08] ( 2, 4 ) ref -> r15 class-hnd "impAppendStmt" ; V09 tmp5 [V09,T04] ( 4, 5 ) long -> r11 "spilling Runtime Lookup tree" ;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V11 tmp7 [V11,T03] ( 3, 6 ) ref -> rdx "arr expr" ; V12 tmp8 [V12,T09] ( 2, 4 ) ref -> rcx "arr expr" ; V13 cse0 [V13,T13] ( 3, 2.25) long -> r11 "CSE - aggressive" ; V14 cse1 [V14,T10] ( 3, 3 ) ref -> rcx "CSE - aggressive" ; V15 cse2 [V15,T14] ( 4, 2 ) ref -> rcx "CSE - moderate" ; V16 cse3 [V16,T11] ( 3, 3 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 40 G_M4892_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx mov edi, edx mov ebx, r8d ;; bbWeight=1 PerfScore 8.00 G_M4892_IG02: mov rbp, gword ptr [rsi+16] mov rcx, gword ptr [rsi+32] mov rdx, rcx mov eax, dword ptr [rdx+8] cmp edi, eax jae G_M4892_IG14 movsxd r8, edi mov r14, gword ptr [rdx+8*r8+16] cmp ebx, eax jae G_M4892_IG14 movsxd rdx, ebx mov r15, gword ptr [rcx+8*rdx+16] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx+8] mov r11, qword ptr [rdx+32] test r11, r11 je SHORT G_M4892_IG04 ;; bbWeight=1 PerfScore 22.50 G_M4892_IG03: jmp SHORT G_M4892_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M4892_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M4892_IG05: mov rcx, rbp mov rdx, r14 mov r8, r15 call qword ptr [r11] test eax, eax jne SHORT G_M4892_IG10 ;; bbWeight=1 PerfScore 5.00 G_M4892_IG06: mov rcx, gword ptr [rsi+24] test rcx, rcx jne SHORT G_M4892_IG08 mov eax, edi sub eax, ebx ;; bbWeight=0.50 PerfScore 1.88 G_M4892_IG07: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M4892_IG08: mov edx, edi mov r8d, ebx mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+40] ;; bbWeight=0.50 PerfScore 3.25 G_M4892_IG09: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 rex.jmp rax ;; bbWeight=0.50 PerfScore 2.63 G_M4892_IG10: movzx rdx, byte ptr [rsi+40] test eax, eax setg al movzx rax, al cmp edx, eax jne SHORT G_M4892_IG12 mov eax, -1 ;; bbWeight=0.50 PerfScore 2.50 G_M4892_IG11: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M4892_IG12: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M4892_IG13: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M4892_IG14: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 242, prolog size 17, PerfScore 77.33, (MethodHash=af2dece3) for method EnumerableSorter`2:CompareAnyKeys(int,int):int:this ; ============================================================ ; Assembly listing for method CultureAwareComparer:Compare(String,String):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 3 ) ref -> [rsp+0x08] this class-hnd ; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rdx class-hnd ; V02 arg2 [V02,T01] ( 5, 4 ) ref -> r8 class-hnd ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M13062_IG01: ;; bbWeight=1 PerfScore 0.00 G_M13062_IG02: cmp rdx, r8 jne SHORT G_M13062_IG05 ;; bbWeight=1 PerfScore 1.25 G_M13062_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M13062_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M13062_IG05: test rdx, rdx jne SHORT G_M13062_IG07 mov eax, -1 ;; bbWeight=0.50 PerfScore 0.75 G_M13062_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 G_M13062_IG07: test r8, r8 jne SHORT G_M13062_IG09 mov eax, 1 ;; bbWeight=0.50 PerfScore 0.75 G_M13062_IG08: ret ;; bbWeight=0.50 PerfScore 0.50 G_M13062_IG09: mov gword ptr [rsp+08H], rcx mov rcx, gword ptr [rcx+8] mov r9, gword ptr [rsp+08H] mov r9d, dword ptr [r9+16] cmp dword ptr [rcx], ecx ;; bbWeight=0.50 PerfScore 4.00 G_M13062_IG10: jmp CompareInfo:Compare(String,String,int):int:this ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 55, prolog size 0, PerfScore 14.88, (MethodHash=04b9ccf9) for method CultureAwareComparer:Compare(String,String):int:this ; ============================================================ ; Assembly listing for method CompareInfo:Compare(String,String,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 2.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rdx class-hnd ; V02 arg2 [V02,T00] ( 6, 4 ) ref -> r8 class-hnd ; V03 arg3 [V03,T02] ( 7, 3.50) int -> r9 ; V04 loc0 [V04,T11] ( 3, 1.50) int -> rax ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V08 tmp3 [V08,T12] ( 3, 1.50) int -> rax ;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V12 tmp7 [V12,T06] ( 2, 2 ) byref -> rax "Inlining Arg" ;* V13 tmp8 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V14 tmp9 [V14,T09] ( 2, 2 ) int -> rdx "Inlining Arg" ;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V17 tmp12 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V18 tmp13 [V18,T07] ( 2, 2 ) byref -> r10 "Inlining Arg" ;* V19 tmp14 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V20 tmp15 [V20,T10] ( 2, 2 ) int -> r8 "Inlining Arg" ; V21 tmp16 [V21,T13] ( 2, 1 ) byref -> rax V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V22 tmp17 [V22,T21] ( 2, 1 ) int -> rdx V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V23 tmp18 [V23,T14] ( 2, 1 ) byref -> r10 V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V24 tmp19 [V24,T22] ( 2, 1 ) int -> r8 V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V25 tmp20 [V25,T15] ( 2, 1 ) byref -> rax V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ; V26 tmp21 [V26,T23] ( 2, 1 ) int -> rdx V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ; V27 tmp22 [V27,T16] ( 2, 1 ) byref -> rax V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ; V28 tmp23 [V28,T24] ( 2, 1 ) int -> rdx V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ;* V30 tmp25 [V30 ] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ; V31 tmp26 [V31,T17] ( 2, 1 ) byref -> rax V13._value(offs=0x00) P-INDEP "field V13._value (fldOffset=0x0)" ; V32 tmp27 [V32,T18] ( 2, 1 ) byref -> r10 V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ; V33 tmp28 [V33,T25] ( 2, 1 ) int -> r8 V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ; V34 tmp29 [V34,T19] ( 2, 1 ) byref -> r10 V16._pointer(offs=0x00) P-INDEP "field V16._pointer (fldOffset=0x0)" ; V35 tmp30 [V35,T26] ( 2, 1 ) int -> r8 V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)" ;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref V17._pointer(offs=0x00) P-INDEP "field V17._pointer (fldOffset=0x0)" ;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)" ; V38 tmp33 [V38,T20] ( 2, 1 ) byref -> r10 V19._value(offs=0x00) P-INDEP "field V19._value (fldOffset=0x0)" ; V39 tmp34 [V39 ] ( 2, 2 ) struct (16) [rsp+0x38] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V40 tmp35 [V40,T04] ( 3, 3 ) byref -> r11 stack-byref "BlockOp address local" ; V41 tmp36 [V41 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V42 tmp37 [V42,T05] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V43 tmp38 [V43,T08] ( 2, 2 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 72 G_M49833_IG01: sub rsp, 72 xor rax, rax mov qword ptr [rsp+28H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 mov qword ptr [rsp+40H], rax ;; bbWeight=1 PerfScore 3.83 G_M49833_IG02: test rdx, rdx jne SHORT G_M49833_IG06 ;; bbWeight=1 PerfScore 1.25 G_M49833_IG03: test r8, r8 je SHORT G_M49833_IG04 mov eax, -1 jmp SHORT G_M49833_IG05 ;; bbWeight=0.50 PerfScore 1.75 G_M49833_IG04: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M49833_IG05: jmp SHORT G_M49833_IG09 ;; bbWeight=0.50 PerfScore 1.00 G_M49833_IG06: test r8, r8 jne SHORT G_M49833_IG07 mov eax, 1 jmp SHORT G_M49833_IG09 ;; bbWeight=0.50 PerfScore 1.75 G_M49833_IG07: lea rax, bword ptr [rdx+12] mov edx, dword ptr [rdx+8] lea r10, bword ptr [r8+12] mov r8d, dword ptr [r8+8] lea r11, bword ptr [rsp+38H] mov bword ptr [r11], rax mov dword ptr [r11+8], edx lea rdx, bword ptr [rsp+28H] mov bword ptr [rdx], r10 mov dword ptr [rdx+8], r8d lea rdx, bword ptr [rsp+38H] lea r8, bword ptr [rsp+28H] call CompareInfo:Compare(ReadOnlySpan`1,ReadOnlySpan`1,int):int:this nop ;; bbWeight=0.50 PerfScore 6.13 G_M49833_IG08: add rsp, 72 ret ;; bbWeight=0.50 PerfScore 0.63 G_M49833_IG09: test r9d, 0xD1FFAB1E je SHORT G_M49833_IG11 ;; bbWeight=0.50 PerfScore 0.63 G_M49833_IG10: cmp r9d, 0xD1FFAB1E je SHORT G_M49833_IG11 cmp r9d, 0xD1FFAB1E jne SHORT G_M49833_IG12 ;; bbWeight=0.25 PerfScore 0.63 G_M49833_IG11: add rsp, 72 ret ;; bbWeight=0.50 PerfScore 0.63 G_M49833_IG12: mov ecx, r9d call CompareInfo:ThrowCompareOptionsCheckFailed(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 160, prolog size 26, PerfScore 34.53, (MethodHash=63b63d56) for method CompareInfo:Compare(String,String,int):int:this ; ============================================================ ; Assembly listing for method CompareInfo:Compare(ReadOnlySpan`1,ReadOnlySpan`1,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 2.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 4, 8 ) byref -> rdx ; V02 arg2 [V02,T01] ( 4, 8 ) byref -> r8 ; V03 arg3 [V03,T02] ( 10, 5 ) int -> r9 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T13] ( 2, 1 ) bool -> rax "Inline return value spill temp" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V08 tmp4 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V10 tmp6 [V10,T16] ( 2, 1 ) int -> rax "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V13 tmp9 [V13,T17] ( 2, 1 ) int -> rax "Inline return value spill temp" ;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V23 tmp19 [V23,T04] ( 5, 3 ) byref -> r8 V43._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ; V24 tmp20 [V24,T06] ( 5, 3.50) int -> rdx V43._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ; V25 tmp21 [V25,T05] ( 5, 3 ) byref -> r10 V44._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ; V26 tmp22 [V26,T07] ( 5, 3.50) int -> r11 V44._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ;* V27 tmp23 [V27,T20] ( 0, 0 ) byref -> zero-ref V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ;* V28 tmp24 [V28 ] ( 0, 0 ) int -> zero-ref V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ;* V29 tmp25 [V29,T21] ( 0, 0 ) byref -> zero-ref V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V31 tmp27 [V31,T14] ( 2, 1 ) byref -> r8 V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ; V32 tmp28 [V32,T18] ( 2, 1 ) int -> rdx V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ; V33 tmp29 [V33,T15] ( 2, 1 ) byref -> r10 V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ; V34 tmp30 [V34,T19] ( 2, 1 ) int -> r11 V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ;* V35 tmp31 [V35 ] ( 0, 0 ) byref -> zero-ref V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ;* V37 tmp33 [V37 ] ( 0, 0 ) byref -> zero-ref V16._pointer(offs=0x00) P-INDEP "field V16._pointer (fldOffset=0x0)" ;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)" ;* V39 tmp35 [V39 ] ( 0, 0 ) byref -> zero-ref V19._pointer(offs=0x00) P-INDEP "field V19._pointer (fldOffset=0x0)" ;* V40 tmp36 [V40 ] ( 0, 0 ) int -> zero-ref V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)" ;* V41 tmp37 [V41 ] ( 0, 0 ) byref -> zero-ref V21._pointer(offs=0x00) P-INDEP "field V21._pointer (fldOffset=0x0)" ;* V42 tmp38 [V42 ] ( 0, 0 ) int -> zero-ref V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)" ;* V43 tmp39 [V43 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ;* V44 tmp40 [V44 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V45 tmp41 [V45 ] ( 4, 4 ) struct (16) [rsp+0x38] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V46 tmp42 [V46,T08] ( 3, 3 ) byref -> rax stack-byref "BlockOp address local" ; V47 tmp43 [V47 ] ( 4, 4 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V48 tmp44 [V48,T09] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V49 tmp45 [V49,T12] ( 2, 2 ) ref -> rcx "argument with side effect" ; V50 tmp46 [V50,T10] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V51 tmp47 [V51,T11] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 72 G_M61929_IG01: sub rsp, 72 xor rax, rax mov qword ptr [rsp+28H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 mov qword ptr [rsp+40H], rax ;; bbWeight=1 PerfScore 3.83 G_M61929_IG02: mov r10, bword ptr [r8] mov r11d, dword ptr [r8+8] mov r8, bword ptr [rdx] mov edx, dword ptr [rdx+8] ;; bbWeight=1 PerfScore 8.00 G_M61929_IG03: cmp edx, r11d jne SHORT G_M61929_IG08 ;; bbWeight=1 PerfScore 1.25 G_M61929_IG04: cmp r8, r10 sete al movzx rax, al test eax, eax je SHORT G_M61929_IG08 test r9d, 0xD1FFAB1E je SHORT G_M61929_IG06 ;; bbWeight=0.50 PerfScore 2.00 G_M61929_IG05: cmp r9d, 0xD1FFAB1E je SHORT G_M61929_IG06 cmp r9d, 0xD1FFAB1E jne G_M61929_IG15 ;; bbWeight=0.25 PerfScore 0.63 G_M61929_IG06: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M61929_IG07: add rsp, 72 ret ;; bbWeight=0.50 PerfScore 0.63 G_M61929_IG08: test r9d, 0xD1FFAB1E jne SHORT G_M61929_IG10 lea rax, bword ptr [rsp+38H] mov bword ptr [rax], r8 mov dword ptr [rax+8], edx lea rdx, bword ptr [rsp+28H] mov bword ptr [rdx], r10 mov dword ptr [rdx+8], r11d lea rdx, bword ptr [rsp+38H] lea r8, bword ptr [rsp+28H] call CompareInfo:IcuCompareString(ReadOnlySpan`1,ReadOnlySpan`1,int):int:this nop ;; bbWeight=0.50 PerfScore 4.25 G_M61929_IG09: add rsp, 72 ret ;; bbWeight=0.50 PerfScore 0.63 G_M61929_IG10: cmp r9d, 0xD1FFAB1E je SHORT G_M61929_IG13 cmp r9d, 0xD1FFAB1E jne SHORT G_M61929_IG15 ;; bbWeight=0.50 PerfScore 1.25 G_M61929_IG11: lea rcx, bword ptr [rsp+38H] mov bword ptr [rcx], r8 mov dword ptr [rcx+8], edx lea rcx, bword ptr [rsp+28H] mov bword ptr [rcx], r10 mov dword ptr [rcx+8], r11d lea rcx, bword ptr [rsp+38H] lea rdx, bword ptr [rsp+28H] call CompareInfo:CompareOrdinalIgnoreCase(ReadOnlySpan`1,ReadOnlySpan`1):int nop ;; bbWeight=0.50 PerfScore 3.63 G_M61929_IG12: add rsp, 72 ret ;; bbWeight=0.50 PerfScore 0.63 G_M61929_IG13: mov rcx, r8 mov r8, r10 mov r9d, r11d call SpanHelpers:SequenceCompareTo(byref,int,byref,int):int nop ;; bbWeight=0.50 PerfScore 1.00 G_M61929_IG14: add rsp, 72 ret ;; bbWeight=0.50 PerfScore 0.63 G_M61929_IG15: mov ecx, r9d call CompareInfo:ThrowCompareOptionsCheckFailed(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 239, prolog size 26, PerfScore 52.56, (MethodHash=10a30e16) for method CompareInfo:Compare(ReadOnlySpan`1,ReadOnlySpan`1,int):int:this ; ============================================================ ; Assembly listing for method CompareInfo:IcuCompareString(ReadOnlySpan`1,ReadOnlySpan`1,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 3 ) ref -> rbx this class-hnd ; V01 arg1 [V01,T00] ( 4, 8 ) byref -> rsi ld-addr-op ; V02 arg2 [V02,T01] ( 4, 8 ) byref -> rdi ld-addr-op ; V03 arg3 [V03,T04] ( 3, 3 ) int -> r14 ;* V04 loc0 [V04 ] ( 0, 0 ) long -> zero-ref ; V05 loc1 [V05 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned ;* V06 loc2 [V06 ] ( 0, 0 ) long -> zero-ref ; V07 loc3 [V07 ] ( 1, 1 ) byref -> [rbp-0x48] must-init pinned ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T05] ( 2, 4 ) long -> rcx "impAppendStmt" ; V10 tmp2 [V10,T06] ( 2, 4 ) int -> r8 "impAppendStmt" ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V13 tmp5 [V13,T07] ( 2, 4 ) int -> rax "Single return block return value" ; V14 FramesRoot [V14,T02] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot" ; V15 PInvokeFrame [V15 ] ( 8, 8 ) blk (72) [rbp-0x90] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ;* V16 tmp8 [V16 ] ( 0, 0 ) byref -> zero-ref V24._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ;* V17 tmp9 [V17 ] ( 0, 0 ) int -> zero-ref V24._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ;* V18 tmp10 [V18 ] ( 0, 0 ) byref -> zero-ref V25._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ;* V19 tmp11 [V19 ] ( 0, 0 ) int -> zero-ref V25._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V20 tmp12 [V20,T10] ( 3, 3 ) byref -> rdx V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ;* V21 tmp13 [V21 ] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ; V22 tmp14 [V22,T11] ( 3, 3 ) byref -> r9 V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ;* V23 tmp15 [V23 ] ( 0, 0 ) int -> zero-ref V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ;* V24 tmp16 [V24 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ;* V25 tmp17 [V25 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V26 tmp18 [V26,T08] ( 2, 4 ) long -> rdx "Cast away GC" ; V27 tmp19 [V27,T09] ( 2, 4 ) long -> r9 "Cast away GC" ; ; Lcl frame size = 136 G_M2723_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] xor rbx, rbx mov qword ptr [rbp-40H], rbx mov qword ptr [rbp-48H], rbx mov rbx, rcx mov rsi, rdx mov rdi, r8 mov r14d, r9d ;; bbWeight=1 PerfScore 12.00 G_M2723_IG02: lea rcx, [rbp-88H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r15, rax mov rcx, rsp mov qword ptr [rbp-68H], rcx mov rcx, rbp mov qword ptr [rbp-58H], rcx mov rdx, bword ptr [rsi] mov bword ptr [rbp-40H], rdx mov r9, bword ptr [rdi] mov bword ptr [rbp-48H], r9 mov rcx, qword ptr [rbx+32] mov r8d, dword ptr [rsi+8] mov eax, dword ptr [rdi+8] mov dword ptr [rsp+20H], eax mov dword ptr [rsp+28H], r14d mov rax, 0xD1FFAB1E mov qword ptr [rbp-78H], rax lea rax, G_M2723_IG05 mov qword ptr [rbp-60H], rax lea rax, bword ptr [rbp-88H] mov qword ptr [r15+16], rax mov byte ptr [r15+12], 0 ;; bbWeight=1 PerfScore 24.25 G_M2723_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M2723_IG04: call qword ptr [rax]Globalization:CompareString(long,long,int,long,int,int):int ;; bbWeight=1 PerfScore 3.00 G_M2723_IG05: mov byte ptr [r15+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M2723_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M2723_IG06: mov rdx, bword ptr [rbp-80H] mov qword ptr [r15+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M2723_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 225, prolog size 37, PerfScore 77.00, (MethodHash=9ccbf55c) for method CompareInfo:IcuCompareString(ReadOnlySpan`1,ReadOnlySpan`1,int):int:this ; ============================================================ ; Assembly listing for method ConcurrentDictionary`2:TryAddInternal(__Canon,Nullable`1,__Canon,bool,bool,byref):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T22] ( 12, 163 ) ref -> [rbp+0x10] EH do-not-enreg[] this class-hnd EH-live ; V01 arg1 [V01,T20] ( 8, 198 ) ref -> [rbp+0x18] EH do-not-enreg[] ld-addr-op class-hnd EH-live ; V02 arg2 [V02 ] ( 3, 3 ) struct ( 8) [rbp+0x20] do-not-enreg[XSB] addr-exposed ; V03 arg3 [V03,T19] ( 7, 212 ) ref -> [rbp+0x28] EH do-not-enreg[] class-hnd EH-live ; V04 arg4 [V04,T44] ( 1, 4 ) bool -> [rbp+0x30] EH do-not-enreg[] EH-live ; V05 arg5 [V05,T45] ( 1, 4 ) bool -> [rbp+0x38] EH do-not-enreg[] EH-live ; V06 arg6 [V06,T25] ( 3, 97 ) byref -> [rbp+0x40] EH do-not-enreg[] EH-live ; V07 loc0 [V07,T26] ( 5, 83 ) ref -> [rbp-0x68] EH do-not-enreg[] must-init class-hnd EH-live ; V08 loc1 [V08,T21] ( 5, 166 ) int -> [rbp-0x44] EH do-not-enreg[] EH-live ;* V09 loc2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ; V10 loc3 [V10,T28] ( 6, 18 ) ref -> rsi class-hnd ; V11 loc4 [V11,T29] ( 7, 16 ) ref -> [rbp-0x70] EH do-not-enreg[] class-hnd EH-live ; V12 loc5 [V12,T24] ( 5, 138 ) byref -> r14 ; V13 loc6 [V13 ] ( 10, 19 ) int -> [rbp-0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V14 loc7 [V14,T38] ( 3, 6 ) bool -> r15 ; V15 loc8 [V15 ] ( 5, 14 ) bool -> [rbp-0x58] do-not-enreg[XF] addr-exposed ld-addr-op ; V16 loc9 [V16,T12] ( 5, 324 ) ref -> r12 class-hnd ;* V17 loc10 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V18 loc11 [V18,T03] ( 12, 584 ) ref -> r13 class-hnd ; V19 loc12 [V19,T10] ( 3, 384 ) ref -> rdx class-hnd exact ; V20 loc13 [V20,T17] ( 2, 257 ) bool -> [rbp-0x5C] EH do-not-enreg[] EH-live ; V21 OutArgs [V21 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V22 tmp1 [V22,T41] ( 4, 4 ) int -> rax ; V23 tmp2 [V23,T09] ( 3, 448 ) int -> rax ; V24 tmp3 [V24,T06] ( 3, 528 ) long -> rcx "impRuntimeLookup slot" ; V25 tmp4 [V25,T05] ( 3, 548 ) long -> rdx "spilling Runtime Lookup tree" ; V26 tmp5 [V26,T00] ( 6,1536 ) ref -> r15 class-hnd exact "NewObj constructor temp" ; V27 tmp6 [V27,T13] ( 2, 320 ) long -> rcx "impRuntimeLookup slot" ; V28 tmp7 [V28,T07] ( 2, 512 ) ref -> rsi class-hnd "impAppendStmt" ; V29 tmp8 [V29,T08] ( 2, 512 ) ref -> r13 class-hnd "impAppendStmt" ; V30 tmp9 [V30,T11] ( 3, 384 ) long -> rdx "spilling Runtime Lookup tree" ;* V31 tmp10 [V31,T18] ( 0, 0 ) long -> zero-ref "impRuntimeLookup slot" ;* V32 tmp11 [V32 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V33 tmp12 [V33,T04] ( 3, 576 ) long -> rcx "impRuntimeLookup slot" ; V34 tmp13 [V34,T23] ( 2, 160 ) ref -> rbx class-hnd "impAppendStmt" ;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V36 tmp15 [V36,T01] ( 4, 784 ) long -> r11 "spilling Runtime Lookup tree" ;* V37 tmp16 [V37 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V38 tmp17 [V38,T31] ( 6, 12 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V39 tmp18 [V39,T39] ( 3, 5 ) long -> rcx "impRuntimeLookup slot" ; V40 tmp19 [V40,T43] ( 2, 4 ) ref -> rbx class-hnd "impAppendStmt" ;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V42 tmp21 [V42,T42] ( 3, 4 ) long -> rdx "spilling Runtime Lookup tree" ;* V43 tmp22 [V43,T52] ( 0, 0 ) long -> zero-ref "impRuntimeLookup slot" ;* V44 tmp23 [V44 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V45 tmp24 [V45,T34] ( 3, 6 ) byref -> rax "dup spill" ; V46 tmp25 [V46,T40] ( 3, 5 ) long -> rcx "impRuntimeLookup slot" ;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V48 tmp27 [V48,T33] ( 4, 6 ) long -> r11 "spilling Runtime Lookup tree" ;* V49 tmp28 [V49 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V50 tmp29 [V50,T30] ( 2, 16 ) ref -> rcx class-hnd "Inlining Arg" ; V51 tmp30 [V51,T50] ( 2, 2 ) bool -> rdx V09.hasValue(offs=0x00) P-INDEP "field V09.hasValue (fldOffset=0x0)" ; V52 tmp31 [V52,T51] ( 2, 2 ) int -> rsi V09.value(offs=0x04) P-INDEP "field V09.value (fldOffset=0x4)" ; V53 tmp32 [V53,T35] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V54 tmp33 [V54,T36] ( 3, 6 ) ref -> rax "arr expr" ; V55 tmp34 [V55,T37] ( 3, 6 ) ref -> rcx "arr expr" ; V56 PSPSym [V56 ] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[X] addr-exposed "PSPSym" ; V57 cse0 [V57,T16] ( 3, 288 ) long -> rdx "CSE - moderate" ; V58 cse1 [V58,T27] ( 3, 40 ) long -> r11 "CSE - moderate" ; V59 cse2 [V59,T32] ( 3, 10 ) long -> rdx "CSE - moderate" ; V60 cse3 [V60,T48] ( 3, 2.50) long -> r11 "CSE - moderate" ; V61 cse4 [V61,T49] ( 3, 2.50) long -> rdx "CSE - moderate" ; V62 cse5 [V62,T14] ( 9, 172 ) long -> registers "CSE - moderate" ; V63 cse6 [V63,T46] ( 3, 3 ) ref -> rcx "CSE - moderate" ; V64 cse7 [V64,T47] ( 3, 3 ) long -> rax "CSE - moderate" ; V65 cse8 [V65,T15] ( 9, 172 ) long -> rdi "CSE - moderate" ; V66 rat0 [V66,T02] ( 3, 768 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 104 G_M31991_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 104 lea rbp, [rsp+A0H] xor rax, rax mov qword ptr [rbp-68H], rax mov qword ptr [rbp-80H], rsp mov qword ptr [rbp-40H], rcx mov gword ptr [rbp+10H], rcx mov gword ptr [rbp+18H], rdx mov qword ptr [rbp+20H], r8 mov gword ptr [rbp+28H], r9 ;; bbWeight=1 PerfScore 16.00 G_M31991_IG02: mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+16] mov gword ptr [rbp-68H], rcx lea rcx, bword ptr [rbp+20H] movzx rdx, byte ptr [rcx] mov esi, dword ptr [rcx+4] test dl, dl jne SHORT G_M31991_IG07 cmp gword ptr [rbp-68H], 0 je SHORT G_M31991_IG06 mov rcx, gword ptr [rbp+10H] mov rdi, qword ptr [rcx] mov rcx, rdi mov rdx, qword ptr [rcx+48] mov rbx, qword ptr [rdx] mov r11, qword ptr [rbx+56] test r11, r11 je SHORT G_M31991_IG04 ;; bbWeight=1 PerfScore 22.25 G_M31991_IG03: jmp SHORT G_M31991_IG05 ;; bbWeight=0.50 PerfScore 1.00 G_M31991_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.50 PerfScore 0.75 G_M31991_IG05: mov rcx, gword ptr [rbp-68H] mov rdx, gword ptr [rbp+18H] call qword ptr [r11] jmp SHORT G_M31991_IG08 ;; bbWeight=1 PerfScore 7.00 G_M31991_IG06: mov rcx, gword ptr [rbp+18H] mov rax, gword ptr [rbp+18H] mov rax, qword ptr [rax] mov rax, qword ptr [rax+64] call qword ptr [rax+24]Object:GetHashCode():int:this jmp SHORT G_M31991_IG08 ;; bbWeight=1 PerfScore 11.00 G_M31991_IG07: mov eax, esi ;; bbWeight=1 PerfScore 0.25 G_M31991_IG08: mov dword ptr [rbp-44H], eax ;; bbWeight=1 PerfScore 1.00 G_M31991_IG09: mov r8, gword ptr [rbp+10H] mov rsi, gword ptr [r8+8] mov r8, gword ptr [rsi+16] mov gword ptr [rbp-70H], r8 lea r8, [rbp-50H] mov rcx, rsi mov edx, dword ptr [rbp-44H] call Tables:GetBucketAndLock(int,byref):byref:this mov r14, rax xor r15d, r15d xor edx, edx mov dword ptr [rbp-58H], edx ;; bbWeight=4 PerfScore 42.00 G_M31991_IG10: cmp byte ptr [rbp+38H], 0 je SHORT G_M31991_IG12 mov rdx, gword ptr [rbp-70H] mov edx, dword ptr [rdx+8] cmp dword ptr [rbp-50H], edx jae G_M31991_IG18 mov rdx, gword ptr [rbp-70H] mov ecx, dword ptr [rbp-50H] movsxd rcx, ecx mov rcx, gword ptr [rdx+8*rcx+16] cmp byte ptr [rbp-58H], 0 jne G_M31991_IG29 ;; bbWeight=4 PerfScore 53.00 G_M31991_IG11: lea rdx, [rbp-58H] call Monitor:ReliableEnter(Object,byref) ;; bbWeight=4 PerfScore 6.00 G_M31991_IG12: mov rcx, gword ptr [rbp+10H] cmp rsi, gword ptr [rcx+8] jne G_M31991_IG40 ;; bbWeight=4 PerfScore 16.00 G_M31991_IG13: xor r12, r12 mov r13, gword ptr [r14] test r13, r13 je G_M31991_IG22 ;; bbWeight=4 PerfScore 14.00 G_M31991_IG14: mov ecx, dword ptr [rbp-44H] cmp ecx, dword ptr [r13+32] jne SHORT G_M31991_IG21 ;; bbWeight=32 PerfScore 128.00 G_M31991_IG15: cmp gword ptr [rbp-68H], 0 je SHORT G_M31991_IG20 mov rbx, gword ptr [r13+8] mov rcx, gword ptr [rbp+10H] mov rdi, qword ptr [rcx] mov rcx, rdi mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdi, rdx mov r11, qword ptr [rdi+72] test r11, r11 je SHORT G_M31991_IG19 ;; bbWeight=16 PerfScore 236.00 G_M31991_IG16: mov rcx, gword ptr [rbp-68H] mov rdx, rbx mov r8, gword ptr [rbp+18H] call qword ptr [r11] ;; bbWeight=64 PerfScore 336.00 G_M31991_IG17: test eax, eax je SHORT G_M31991_IG21 jmp SHORT G_M31991_IG24 ;; bbWeight=256 PerfScore 832.00 G_M31991_IG18: call CORINFO_HELP_RNGCHKFAIL ;; bbWeight=0 PerfScore 0.00 G_M31991_IG19: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax jmp SHORT G_M31991_IG16 ;; bbWeight=256 PerfScore 896.00 G_M31991_IG20: mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+24] mov rdx, gword ptr [r13+8] mov r8, gword ptr [rbp+18H] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+48]EqualityComparer`1:Equals(__Canon,__Canon):bool:this jmp SHORT G_M31991_IG17 ;; bbWeight=128 PerfScore 1920.00 G_M31991_IG21: mov r12, r13 mov r13, gword ptr [r12+24] test r13, r13 jne G_M31991_IG14 ;; bbWeight=32 PerfScore 112.00 G_M31991_IG22: mov rbx, gword ptr [r14] mov rcx, gword ptr [rbp+10H] mov rdi, qword ptr [rcx] mov rcx, rdi mov rdx, qword ptr [rcx+48] mov rdi, qword ptr [rdx] mov rdx, qword ptr [rdi+80] test rdx, rdx je G_M31991_IG37 ;; bbWeight=1 PerfScore 12.50 G_M31991_IG23: jmp G_M31991_IG38 ;; bbWeight=0.50 PerfScore 1.00 G_M31991_IG24: cmp byte ptr [rbp+30H], 0 je G_M31991_IG36 mov rcx, gword ptr [rbp+10H] mov rdi, qword ptr [rcx] mov rcx, rdi mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rbx, rdx mov rdx, qword ptr [rbx+24] test rdx, rdx je SHORT G_M31991_IG30 ;; bbWeight=4 PerfScore 51.00 G_M31991_IG25: mov rcx, rdx call CORINFO_HELP_GETGENERICS_NONGCSTATIC_BASE cmp byte ptr [rax+8], 0 je SHORT G_M31991_IG31 lea rcx, bword ptr [r13+16] mov rdx, gword ptr [rbp+28H] call CORINFO_HELP_ASSIGN_REF ;; bbWeight=16 PerfScore 108.00 G_M31991_IG26: mov rcx, bword ptr [rbp+40H] mov rdx, gword ptr [rbp+28H] call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=64 PerfScore 192.00 G_M31991_IG27: xor ecx, ecx mov dword ptr [rbp-5CH], ecx jmp G_M31991_IG42 ;; bbWeight=256 PerfScore 832.00 G_M31991_IG28: call CORINFO_HELP_OVERFLOW ;; bbWeight=0 PerfScore 0.00 G_M31991_IG29: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M31991_IG30: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax jmp SHORT G_M31991_IG25 ;; bbWeight=256 PerfScore 896.00 G_M31991_IG31: mov rsi, gword ptr [r13+8] mov r13, gword ptr [r13+24] mov rcx, rdi mov rdx, qword ptr [rbx+80] test rdx, rdx je SHORT G_M31991_IG33 ;; bbWeight=128 PerfScore 960.00 G_M31991_IG32: jmp SHORT G_M31991_IG34 ;; bbWeight=32 PerfScore 64.00 G_M31991_IG33: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=32 PerfScore 48.00 G_M31991_IG34: mov rcx, rdx call CORINFO_HELP_NEWSFAST mov r15, rax lea rcx, bword ptr [r15+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r15+16] mov rdx, gword ptr [rbp+28H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r15+24] mov rdx, r13 call CORINFO_HELP_ASSIGN_REF mov edx, dword ptr [rbp-44H] mov dword ptr [r15+32], edx mov rdx, r15 test r12, r12 jne SHORT G_M31991_IG35 mov rcx, r14 call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M31991_IG26 ;; bbWeight=128 PerfScore 1824.00 G_M31991_IG35: lea rcx, bword ptr [r12+24] call CORINFO_HELP_ASSIGN_REF jmp G_M31991_IG26 ;; bbWeight=128 PerfScore 448.00 G_M31991_IG36: mov rdx, gword ptr [r13+16] mov rcx, bword ptr [rbp+40H] call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M31991_IG27 ;; bbWeight=32 PerfScore 192.00 G_M31991_IG37: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.50 PerfScore 0.75 G_M31991_IG38: mov rcx, rdx call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, gword ptr [rbp+18H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+16] mov rdx, gword ptr [rbp+28H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov edx, dword ptr [rbp-44H] mov dword ptr [rdi+32], edx mov rcx, r14 mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, gword ptr [rsi+24] mov rax, rcx mov edx, dword ptr [rax+8] cmp dword ptr [rbp-50H], edx jae G_M31991_IG18 mov edx, dword ptr [rbp-50H] movsxd rdx, edx lea rax, bword ptr [rax+4*rdx+16] mov edx, dword ptr [rax] add edx, 1 jo G_M31991_IG28 mov dword ptr [rax], edx mov eax, dword ptr [rcx+8] cmp dword ptr [rbp-50H], eax jae G_M31991_IG18 mov eax, dword ptr [rbp-50H] movsxd rax, eax mov ecx, dword ptr [rcx+4*rax+16] mov rdx, gword ptr [rbp+10H] cmp ecx, dword ptr [rdx+32] jle SHORT G_M31991_IG39 mov r15d, 1 ;; bbWeight=1 PerfScore 36.00 G_M31991_IG39: cmp byte ptr [rbp-58H], 0 je SHORT G_M31991_IG44 mov rcx, gword ptr [rbp-70H] mov ecx, dword ptr [rcx+8] cmp dword ptr [rbp-50H], ecx jae SHORT G_M31991_IG49 mov rcx, gword ptr [rbp-70H] mov rcx, gword ptr [rcx+8*rax+16] call Monitor:Exit(Object) jmp SHORT G_M31991_IG44 ;; bbWeight=1 PerfScore 13.00 G_M31991_IG40: mov rcx, rsp call G_M31991_IG50 ;; bbWeight=4 PerfScore 5.00 G_M31991_IG41: jmp G_M31991_IG09 ;; bbWeight=4 PerfScore 8.00 G_M31991_IG42: mov rcx, rsp call G_M31991_IG50 ;; bbWeight=1 PerfScore 1.25 G_M31991_IG43: jmp SHORT G_M31991_IG47 ;; bbWeight=1 PerfScore 2.00 G_M31991_IG44: test r15d, r15d je SHORT G_M31991_IG45 mov rcx, gword ptr [rbp+10H] mov rdx, rsi call ConcurrentDictionary`2:GrowTable(Tables):this ;; bbWeight=1 PerfScore 3.50 G_M31991_IG45: mov rcx, bword ptr [rbp+40H] mov rdx, gword ptr [rbp+28H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov eax, 1 ;; bbWeight=1 PerfScore 3.25 G_M31991_IG46: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M31991_IG47: mov eax, dword ptr [rbp-5CH] ;; bbWeight=1 PerfScore 1.00 G_M31991_IG48: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M31991_IG49: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 G_M31991_IG50: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+A0H] ;; bbWeight=1 PerfScore 11.75 G_M31991_IG51: cmp byte ptr [rbp-58H], 0 je SHORT G_M31991_IG52 mov rcx, gword ptr [rbp-70H] mov ecx, dword ptr [rcx+8] cmp dword ptr [rbp-50H], ecx jae SHORT G_M31991_IG54 mov rcx, gword ptr [rbp-70H] mov eax, dword ptr [rbp-50H] movsxd rax, eax mov rcx, gword ptr [rcx+8*rax+16] call Monitor:Exit(Object) ;; bbWeight=1 PerfScore 12.25 G_M31991_IG52: nop ;; bbWeight=1 PerfScore 0.25 G_M31991_IG53: add rsp, 40 pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.25 G_M31991_IG54: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1137, prolog size 54, PerfScore 10506.70, (MethodHash=031b8308) for method ConcurrentDictionary`2:TryAddInternal(__Canon,Nullable`1,__Canon,bool,bool,byref):bool:this ; ============================================================ ; Assembly listing for method Tables:GetBucketAndLock(int,byref):byref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdx ; V02 arg2 [V02,T01] ( 3, 3 ) byref -> r8 ; V03 loc0 [V03,T06] ( 3, 3 ) ref -> rdi class-hnd ;* V04 loc1 [V04 ] ( 0, 0 ) int -> zero-ref ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V07 tmp2 [V07,T07] ( 3, 3 ) long -> r8 "spilling Runtime Lookup tree" ; V08 tmp3 [V08,T04] ( 2, 4 ) long -> rcx "Inlining Arg" ; V09 tmp4 [V09,T05] ( 2, 4 ) int -> rax "Inlining Arg" ; V10 tmp5 [V10,T08] ( 3, 3 ) int -> rbx "Inline stloc first use temp" ; V11 cse0 [V11,T09] ( 3, 2.25) long -> r8 "CSE - aggressive" ; ; Lcl frame size = 48 G_M8205_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 4.50 G_M8205_IG02: mov rdi, gword ptr [rsi+8] mov eax, dword ptr [rdi+8] mov rcx, qword ptr [rsi+32] mov edx, edx imul rdx, rcx shr rdx, 32 inc rdx mov eax, eax imul rax, rdx shr rax, 32 mov ebx, eax mov rcx, gword ptr [rsi+16] mov eax, ebx xor rdx, rdx div edx:eax, dword ptr [rcx+8] mov dword ptr [r8], edx mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov r8, qword ptr [rdx+24] test r8, r8 je SHORT G_M8205_IG04 ;; bbWeight=1 PerfScore 53.75 G_M8205_IG03: jmp SHORT G_M8205_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M8205_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r8, rax ;; bbWeight=0.25 PerfScore 0.38 G_M8205_IG05: mov rcx, rdi mov edx, ebx call CORINFO_HELP_LDELEMA_REF nop ;; bbWeight=1 PerfScore 1.75 G_M8205_IG06: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 123, prolog size 12, PerfScore 75.93, (MethodHash=5fefdff2) for method Tables:GetBucketAndLock(int,byref):byref:this ; ============================================================ ; Assembly listing for method <>c:b__13_0(Characteristic):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M31427_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M31427_IG02: mov rcx, gword ptr [rdx+16] call CharacteristicHelper:IsCharacteristicObjectSubclass(Type):bool test al, al sete al movzx rax, al ;; bbWeight=1 PerfScore 4.50 G_M31427_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 26, prolog size 4, PerfScore 8.60, (MethodHash=8d46853c) for method <>c:b__13_0(Characteristic):bool:this ; ============================================================ ; Assembly listing for method HashSet`1:AddIfNotPresent(__Canon,byref):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 28, 18 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T09] ( 11, 9.50) ref -> rdi ld-addr-op class-hnd ; V02 arg2 [V02,T13] ( 6, 4 ) byref -> [rsp+0xC0] ; V03 loc0 [V03,T02] ( 12, 20.50) ref -> registers class-hnd ; V04 loc1 [V04,T14] ( 5, 5 ) ref -> r14 class-hnd ; V05 loc2 [V05,T10] ( 8, 11 ) int -> r12 ; V06 loc3 [V06,T01] ( 8, 25.50) int -> r15 ; V07 loc4 [V07,T18] ( 7, 3.50) byref -> r13 ; V08 loc5 [V08,T19] ( 7, 3.50) int -> [rsp+0x5C] ; V09 loc6 [V09,T04] ( 7, 17.50) int -> [rsp+0x58] ;* V10 loc7 [V10 ] ( 0, 0 ) byref -> zero-ref ; V11 loc8 [V11,T16] ( 3, 4.50) ref -> [rsp+0x40] class-hnd ; V12 loc9 [V12,T06] ( 4, 14 ) byref -> [rsp+0x38] ; V13 loc10 [V13,T05] ( 7, 17.50) int -> [rsp+0x54] ; V14 loc11 [V14,T07] ( 4, 14 ) byref -> [rsp+0x30] ; V15 loc12 [V15,T36] ( 3, 1.50) int -> [rsp+0x50] ; V16 loc13 [V16,T24] ( 4, 2 ) byref -> rcx ; V17 OutArgs [V17 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V18 tmp1 [V18,T22] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ;* V19 tmp2 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V20 tmp3 [V20,T20] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V21 tmp4 [V21 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V22 tmp5 [V22,T37] ( 3, 1.50) int -> r12 ; V23 tmp6 [V23,T11] ( 3, 10 ) long -> rcx "impRuntimeLookup slot" ; V24 tmp7 [V24,T12] ( 2, 8 ) ref -> [rsp+0x28] class-hnd "impAppendStmt" ;* V25 tmp8 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "bubbling QMark1" ; V26 tmp9 [V26,T08] ( 4, 12 ) long -> r11 "spilling Runtime Lookup tree" ;* V27 tmp10 [V27 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V28 tmp11 [V28,T17] ( 4, 3.50) ref -> r14 class-hnd "spilling QMark2" ; V29 tmp12 [V29,T38] ( 3, 1.50) int -> r12 ; V30 tmp13 [V30,T23] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V31 tmp14 [V31,T25] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V32 tmp15 [V32,T50] ( 2, 1 ) byref -> r13 "Inline return value spill temp" ; V33 tmp16 [V33,T33] ( 3, 1.50) ref -> rcx class-hnd "Inline stloc first use temp" ; V34 tmp17 [V34,T26] ( 2, 2 ) long -> r8 "Inlining Arg" ; V35 tmp18 [V35,T27] ( 2, 2 ) int -> rax "Inlining Arg" ; V36 tmp19 [V36,T39] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V37 tmp20 [V37,T51] ( 2, 1 ) byref -> r13 "Inline return value spill temp" ; V38 tmp21 [V38,T34] ( 3, 1.50) ref -> rcx class-hnd "Inline stloc first use temp" ; V39 tmp22 [V39,T28] ( 2, 2 ) long -> r8 "Inlining Arg" ; V40 tmp23 [V40,T29] ( 2, 2 ) int -> rax "Inlining Arg" ; V41 tmp24 [V41,T40] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V42 tmp25 [V42,T52] ( 2, 1 ) byref -> r13 "Inline return value spill temp" ; V43 tmp26 [V43,T35] ( 3, 1.50) ref -> rdx class-hnd "Inline stloc first use temp" ; V44 tmp27 [V44,T30] ( 2, 2 ) long -> r8 "Inlining Arg" ; V45 tmp28 [V45,T31] ( 2, 2 ) int -> rax "Inlining Arg" ; V46 tmp29 [V46,T41] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V47 tmp30 [V47,T21] ( 3, 3 ) int -> rax "index expr" ; V48 tmp31 [V48,T32] ( 2, 2 ) int -> rdx "argument with side effect" ; V49 cse0 [V49,T15] ( 3, 5 ) long -> r11 "CSE - aggressive" ; V50 cse1 [V50,T48] ( 3, 1.25) long -> rdx "CSE - conservative" ; V51 cse2 [V51,T49] ( 3, 1.25) long -> r11 "CSE - conservative" ; V52 cse3 [V52,T42] ( 3, 1.50) int -> rdx "CSE - conservative" ; V53 cse4 [V53,T43] ( 3, 1.50) int -> rdx "CSE - conservative" ; V54 cse5 [V54,T44] ( 3, 1.50) int -> rcx "CSE - conservative" ; V55 cse6 [V55,T45] ( 3, 1.50) int -> r8 "CSE - conservative" ; V56 cse7 [V56,T46] ( 3, 1.50) int -> rax "CSE - conservative" ; V57 cse8 [V57,T47] ( 3, 1.50) int -> rcx "CSE - conservative" ; V58 cse9 [V58,T00] ( 10, 26 ) int -> [rsp+0x4C] "CSE - aggressive" ; ; Lcl frame size = 104 G_M64883_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 104 mov qword ptr [rsp+60H], rcx mov bword ptr [rsp+C0H], r8 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 10.75 G_M64883_IG02: cmp gword ptr [rsi+8], 0 jne SHORT G_M64883_IG04 ;; bbWeight=1 PerfScore 3.00 G_M64883_IG03: mov rcx, rsi xor edx, edx call HashSet`1:Initialize(int):int:this ;; bbWeight=0.50 PerfScore 0.75 G_M64883_IG04: mov rbp, gword ptr [rsi+16] mov r14, gword ptr [rsi+24] xor r15d, r15d test r14, r14 jne G_M64883_IG18 ;; bbWeight=1 PerfScore 5.50 G_M64883_IG05: test rdi, rdi jne SHORT G_M64883_IG06 xor r12d, r12d jmp SHORT G_M64883_IG07 ;; bbWeight=0.50 PerfScore 1.75 G_M64883_IG06: mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+64] call qword ptr [rax+24]Object:GetHashCode():int:this mov r12d, eax ;; bbWeight=0.50 PerfScore 3.75 G_M64883_IG07: mov rcx, gword ptr [rsi+8] mov edx, dword ptr [rcx+8] mov eax, edx mov r8, qword ptr [rsi+40] mov r9d, r12d imul r8, r9 shr r8, 32 inc r8 mov eax, eax imul rax, r8 shr rax, 32 cmp eax, edx jae G_M64883_IG43 movsxd rdx, eax lea r13, bword ptr [rcx+4*rdx+16] mov eax, dword ptr [r13] dec eax mov dword ptr [rsp+58H], eax mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M64883_IG09 ;; bbWeight=0.50 PerfScore 15.00 G_M64883_IG08: jmp SHORT G_M64883_IG10 ;; bbWeight=0.25 PerfScore 0.50 G_M64883_IG09: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M64883_IG10: mov rcx, rdx call EqualityComparer`1:get_Default():EqualityComparer`1 mov r9d, dword ptr [rsp+58H] test r9d, r9d jl G_M64883_IG31 ;; bbWeight=0.50 PerfScore 1.75 G_M64883_IG11: mov r10d, dword ptr [rbp+8] mov dword ptr [rsp+4CH], r10d cmp r9d, r10d jae G_M64883_IG43 mov dword ptr [rsp+58H], r9d movsxd rdx, r9d shl rdx, 4 lea r11, bword ptr [rbp+rdx+16] cmp dword ptr [r11+8], r12d jne SHORT G_M64883_IG13 ;; bbWeight=4 PerfScore 50.00 G_M64883_IG12: mov bword ptr [rsp+38H], r11 mov rdx, gword ptr [r11] mov rcx, rax mov r8, rdi mov gword ptr [rsp+40H], rax mov rbx, qword ptr [rax] mov rbx, qword ptr [rbx+64] call qword ptr [rbx+48]EqualityComparer`1:Equals(__Canon,__Canon):bool:this test eax, eax mov rax, gword ptr [rsp+40H] mov r11, bword ptr [rsp+38H] jne SHORT G_M64883_IG16 ;; bbWeight=2 PerfScore 29.50 G_M64883_IG13: mov r9d, dword ptr [r11+12] mov ecx, r9d inc r15d cmp dword ptr [rsp+4CH], r15d jb G_M64883_IG42 ;; bbWeight=4 PerfScore 18.00 G_M64883_IG14: test ecx, ecx mov r9d, ecx jge SHORT G_M64883_IG11 ;; bbWeight=4 PerfScore 6.00 G_M64883_IG15: jmp G_M64883_IG31 ;; bbWeight=0.50 PerfScore 1.00 G_M64883_IG16: mov rbx, bword ptr [rsp+C0H] mov r9d, dword ptr [rsp+58H] mov dword ptr [rbx], r9d xor eax, eax ;; bbWeight=0.50 PerfScore 1.63 G_M64883_IG17: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M64883_IG18: test rdi, rdi jne SHORT G_M64883_IG19 xor r12d, r12d jmp SHORT G_M64883_IG23 ;; bbWeight=0.50 PerfScore 1.75 G_M64883_IG19: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov r11, qword ptr [rdx+32] test r11, r11 je SHORT G_M64883_IG21 ;; bbWeight=0.50 PerfScore 4.63 G_M64883_IG20: jmp SHORT G_M64883_IG22 ;; bbWeight=0.25 PerfScore 0.50 G_M64883_IG21: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M64883_IG22: mov rcx, r14 mov rdx, rdi call qword ptr [r11] mov r12d, eax ;; bbWeight=0.50 PerfScore 1.88 G_M64883_IG23: mov rcx, gword ptr [rsi+8] mov edx, dword ptr [rcx+8] mov eax, edx mov r8, qword ptr [rsi+40] mov r9d, r12d imul r8, r9 shr r8, 32 inc r8 mov eax, eax imul rax, r8 shr rax, 32 cmp eax, edx jae G_M64883_IG43 movsxd rdx, eax lea r13, bword ptr [rcx+4*rdx+16] mov eax, dword ptr [r13] dec eax test eax, eax jl G_M64883_IG31 ;; bbWeight=0.50 PerfScore 10.50 G_M64883_IG24: mov r10d, dword ptr [rbp+8] mov r8d, r10d mov dword ptr [rsp+4CH], r8d cmp eax, r8d jae G_M64883_IG43 mov dword ptr [rsp+54H], eax movsxd rcx, eax shl rcx, 4 lea r9, bword ptr [rbp+rcx+16] cmp dword ptr [r9+8], r12d jne SHORT G_M64883_IG29 ;; bbWeight=4 PerfScore 51.00 G_M64883_IG25: mov bword ptr [rsp+30H], r9 mov r10, gword ptr [r9] mov gword ptr [rsp+28H], r10 mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov r11, qword ptr [rdx+40] test r11, r11 je SHORT G_M64883_IG27 ;; bbWeight=2 PerfScore 26.50 G_M64883_IG26: mov r10, gword ptr [rsp+28H] jmp SHORT G_M64883_IG28 ;; bbWeight=1 PerfScore 3.00 G_M64883_IG27: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax mov r10, gword ptr [rsp+28H] ;; bbWeight=1 PerfScore 2.50 G_M64883_IG28: mov rcx, r14 mov rdx, r10 mov r8, rdi call qword ptr [r11] test eax, eax mov r9, bword ptr [rsp+30H] jne SHORT G_M64883_IG32 ;; bbWeight=2 PerfScore 12.00 G_M64883_IG29: mov eax, dword ptr [r9+12] inc r15d cmp dword ptr [rsp+4CH], r15d jb G_M64883_IG42 ;; bbWeight=4 PerfScore 17.00 G_M64883_IG30: test eax, eax jge G_M64883_IG24 ;; bbWeight=4 PerfScore 5.00 G_M64883_IG31: mov r8d, dword ptr [rsi+56] test r8d, r8d jle SHORT G_M64883_IG34 mov eax, dword ptr [rsi+52] mov edx, eax dec r8d mov dword ptr [rsi+56], r8d mov r8d, dword ptr [rbp+8] cmp eax, r8d jae G_M64883_IG43 movsxd rax, eax shl rax, 4 mov eax, dword ptr [rbp+rax+28] neg eax add eax, -3 mov dword ptr [rsi+52], eax jmp G_M64883_IG36 ;; bbWeight=0.50 PerfScore 8.88 G_M64883_IG32: mov rbx, bword ptr [rsp+C0H] mov eax, dword ptr [rsp+54H] mov dword ptr [rbx], eax xor eax, eax ;; bbWeight=0.50 PerfScore 1.63 G_M64883_IG33: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M64883_IG34: mov ecx, dword ptr [rsi+48] mov edx, ecx mov r8d, dword ptr [rbp+8] mov dword ptr [rsp+50H], edx cmp r8d, edx jne SHORT G_M64883_IG35 call HashHelpers:ExpandPrime(int):int mov edx, eax mov rcx, rsi xor r8d, r8d call HashSet`1:Resize(int,bool):this mov rdx, gword ptr [rsi+8] mov ecx, dword ptr [rdx+8] mov eax, ecx mov r8, qword ptr [rsi+40] mov r9d, r12d imul r8, r9 shr r8, 32 inc r8 mov eax, eax imul rax, r8 shr rax, 32 cmp eax, ecx jae G_M64883_IG43 movsxd rcx, eax lea r13, bword ptr [rdx+4*rcx+16] ;; bbWeight=0.50 PerfScore 13.38 G_M64883_IG35: mov edx, dword ptr [rsp+50H] mov ebp, edx lea edx, [rbp+1] mov dword ptr [rsi+48], edx mov rdx, gword ptr [rsi+16] mov rax, rdx mov edx, ebp mov rbp, rax ;; bbWeight=0.50 PerfScore 2.75 G_M64883_IG36: cmp edx, dword ptr [rbp+8] jae G_M64883_IG43 mov dword ptr [rsp+5CH], edx movsxd rcx, edx shl rcx, 4 lea rcx, bword ptr [rbp+rcx+16] mov dword ptr [rcx+8], r12d mov eax, dword ptr [r13] dec eax mov dword ptr [rcx+12], eax mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov r12d, dword ptr [rsp+5CH] lea edx, [r12+1] mov dword ptr [r13], edx inc dword ptr [rsi+60] mov rbx, bword ptr [rsp+C0H] mov dword ptr [rbx], r12d cmp r15d, 100 jbe SHORT G_M64883_IG40 test r14, r14 je SHORT G_M64883_IG38 ;; bbWeight=0.50 PerfScore 12.88 G_M64883_IG37: mov rdx, 0xD1FFAB1E cmp qword ptr [r14], rdx jne SHORT G_M64883_IG40 ;; bbWeight=0.25 PerfScore 0.81 G_M64883_IG38: test r14, r14 je SHORT G_M64883_IG40 ;; bbWeight=0.50 PerfScore 0.63 G_M64883_IG39: xor rdx, rdx mov gword ptr [rsi+24], rdx mov edx, dword ptr [rbp+8] mov rcx, rsi mov r8d, 1 call HashSet`1:Resize(int,bool):this mov rcx, rsi mov rdx, rdi call HashSet`1:FindItemIndex(__Canon):int:this mov dword ptr [rbx], eax ;; bbWeight=0.50 PerfScore 3.63 G_M64883_IG40: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M64883_IG41: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M64883_IG42: call ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() int3 ;; bbWeight=0 PerfScore 0.00 G_M64883_IG43: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1033, prolog size 35, PerfScore 441.74, (MethodHash=d605028c) for method HashSet`1:AddIfNotPresent(__Canon,byref):bool:this ; ============================================================ ; Assembly listing for method HashSet`1:Initialize(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdx ; V02 loc0 [V02,T01] ( 5, 5 ) int -> rdi ; V03 loc1 [V03,T06] ( 2, 2 ) ref -> rbx class-hnd exact ; V04 loc2 [V04,T07] ( 2, 2 ) ref -> rbp class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V07 tmp2 [V07,T04] ( 3, 3 ) long -> [rsp+0x28] "spilling Runtime Lookup tree" ; V08 cse0 [V08,T05] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 56 G_M55982_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 5.50 G_M55982_IG02: mov ecx, edx call HashHelpers:GetPrime(int):int mov edi, eax movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbx, rax mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+48] test rdx, rdx je SHORT G_M55982_IG04 ;; bbWeight=1 PerfScore 12.50 G_M55982_IG03: mov qword ptr [rsp+28H], rdx jmp SHORT G_M55982_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M55982_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+28H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M55982_IG05: movsxd rdx, edi mov rcx, qword ptr [rsp+28H] call CORINFO_HELP_NEWARR_1_VC mov rbp, rax mov dword ptr [rsi+52], -1 lea rcx, bword ptr [rsi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rax, -1 mov ecx, edi xor rdx, rdx div rdx:rax, rcx inc rax mov qword ptr [rsi+40], rax mov eax, edi ;; bbWeight=1 PerfScore 70.25 G_M55982_IG06: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 174, prolog size 13, PerfScore 110.21, (MethodHash=25162551) for method HashSet`1:Initialize(int):int:this ; ============================================================ ; Assembly listing for method List`1:AddWithResize(__Canon):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdi class-hnd ; V02 loc0 [V02,T02] ( 3, 3 ) int -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 cse0 [V04,T03] ( 3, 3 ) int -> rbp "CSE - aggressive" ; ; Lcl frame size = 40 G_M5138_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 4.75 G_M5138_IG02: mov ebx, dword ptr [rsi+16] lea ebp, [rbx+1] mov edx, ebp mov rcx, rsi call List`1:EnsureCapacity(int):this mov dword ptr [rsi+16], ebp mov rcx, gword ptr [rsi+8] mov edx, ebx mov r8, rdi call CORINFO_HELP_ARRADDR_ST nop ;; bbWeight=1 PerfScore 8.75 G_M5138_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 57, prolog size 8, PerfScore 22.45, (MethodHash=a289ebed) for method List`1:AddWithResize(__Canon):this ; ============================================================ ; Assembly listing for method List`1:EnsureCapacity(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 3.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 5, 4 ) int -> rdx ; V02 loc0 [V02,T02] ( 6, 3 ) int -> rax ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 1.50) int -> rax ; V05 cse0 [V05,T03] ( 4, 3 ) ref -> rax "CSE - aggressive" ; ; Lcl frame size = 0 G_M38611_IG01: ;; bbWeight=1 PerfScore 0.00 G_M38611_IG02: mov rax, gword ptr [rcx+8] cmp dword ptr [rax+8], edx jge SHORT G_M38611_IG09 ;; bbWeight=1 PerfScore 5.00 G_M38611_IG03: cmp dword ptr [rax+8], 0 je SHORT G_M38611_IG04 mov eax, dword ptr [rax+8] add eax, eax jmp SHORT G_M38611_IG05 ;; bbWeight=0.50 PerfScore 3.63 G_M38611_IG04: mov eax, 4 ;; bbWeight=0.50 PerfScore 0.13 G_M38611_IG05: cmp eax, 0xD1FFAB1E jbe SHORT G_M38611_IG06 mov eax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.75 G_M38611_IG06: cmp eax, edx jge SHORT G_M38611_IG07 mov eax, edx ;; bbWeight=0.50 PerfScore 0.75 G_M38611_IG07: mov edx, eax ;; bbWeight=0.50 PerfScore 0.13 G_M38611_IG08: jmp List`1:set_Capacity(int):this ;; bbWeight=0.50 PerfScore 1.00 G_M38611_IG09: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 53, prolog size 0, PerfScore 17.18, (MethodHash=1aaa692c) for method List`1:EnsureCapacity(int):this ; ============================================================ ; Assembly listing for method List`1:set_Capacity(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 9, 6.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 6, 5 ) int -> rdi ; V02 loc0 [V02,T07] ( 3, 1.50) ref -> rdi class-hnd exact ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V05 tmp2 [V05,T05] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V06 tmp3 [V06,T04] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V07 tmp4 [V07,T06] ( 3, 2 ) long -> [rsp+0x20] "spilling Runtime Lookup tree" ; V08 cse0 [V08,T08] ( 3, 1.25) long -> rdx "CSE - moderate" ; V09 cse1 [V09,T09] ( 3, 1.25) long -> rdx "CSE - moderate" ; V10 cse2 [V10,T02] ( 4, 3 ) int -> rbx "CSE - aggressive" ; ; Lcl frame size = 48 G_M63988_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 4.75 G_M63988_IG02: mov ebx, dword ptr [rsi+16] cmp edi, ebx jl G_M63988_IG16 ;; bbWeight=1 PerfScore 3.25 G_M63988_IG03: mov rcx, gword ptr [rsi+8] cmp dword ptr [rcx+8], edi je G_M63988_IG14 ;; bbWeight=1 PerfScore 5.00 G_M63988_IG04: test edi, edi jle SHORT G_M63988_IG10 mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M63988_IG06 ;; bbWeight=0.50 PerfScore 5.25 G_M63988_IG05: mov qword ptr [rsp+20H], rdx jmp SHORT G_M63988_IG07 ;; bbWeight=0.25 PerfScore 0.75 G_M63988_IG06: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+20H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M63988_IG07: movsxd rdx, edi mov rcx, qword ptr [rsp+20H] call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax test ebx, ebx jle SHORT G_M63988_IG08 mov rcx, gword ptr [rsi+8] mov r8d, ebx mov rdx, rdi call Array:Copy(Array,Array,int) ;; bbWeight=0.50 PerfScore 3.63 G_M63988_IG08: lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 1.00 G_M63988_IG09: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M63988_IG10: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M63988_IG12 ;; bbWeight=0.50 PerfScore 4.63 G_M63988_IG11: jmp SHORT G_M63988_IG13 ;; bbWeight=0.25 PerfScore 0.50 G_M63988_IG12: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M63988_IG13: mov rcx, rdx call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov rdx, gword ptr [rax] lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 2.38 G_M63988_IG14: nop ;; bbWeight=0.50 PerfScore 0.13 G_M63988_IG15: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M63988_IG16: mov ecx, 7 mov edx, 12 call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 231, prolog size 12, PerfScore 58.04, (MethodHash=5588060b) for method List`1:set_Capacity(int):this ; ============================================================ ; Assembly listing for method HashSet`1:Resize(int,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 10, 12 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T12] ( 5, 5 ) int -> rdi ; V02 arg2 [V02,T19] ( 3, 3 ) bool -> rbx ; V03 loc0 [V03,T02] ( 7, 16 ) ref -> rbp class-hnd exact ; V04 loc1 [V04,T07] ( 6, 11.50) int -> r14 ; V05 loc2 [V05,T01] ( 6, 20.50) int -> rbx ; V06 loc3 [V06,T04] ( 5, 14 ) byref -> r15 ; V07 loc4 [V07,T00] ( 7, 23 ) int -> rdi ; V08 loc5 [V08,T06] ( 4, 12 ) byref -> rax ;* V09 loc6 [V09 ] ( 0, 0 ) byref -> zero-ref ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T20] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V12 tmp2 [V12,T22] ( 3, 3 ) long -> [rsp+0x28] "spilling Runtime Lookup tree" ; V13 tmp3 [V13,T21] ( 2, 4 ) byref -> r12 ; V14 tmp4 [V14,T13] ( 3, 6 ) byref -> r12 ; V15 tmp5 [V15,T16] ( 3, 6 ) int -> r13 ; V16 tmp6 [V16,T14] ( 3, 6 ) byref -> rdx "Inline return value spill temp" ; V17 tmp7 [V17,T15] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V18 tmp8 [V18,T09] ( 2, 8 ) int -> rdx "Inlining Arg" ; V19 tmp9 [V19,T10] ( 2, 8 ) long -> r10 "Inlining Arg" ; V20 tmp10 [V20,T11] ( 2, 8 ) int -> r9 "Inlining Arg" ; V21 tmp11 [V21,T17] ( 3, 6 ) int -> rdx "Inline stloc first use temp" ; V22 cse0 [V22,T23] ( 3, 2.25) long -> rdx "CSE - moderate" ; V23 cse1 [V23,T05] ( 4, 13 ) int -> r15 "CSE - aggressive" ; V24 cse2 [V24,T08] ( 4, 8 ) ref -> rcx "CSE - aggressive" ; V25 cse3 [V25,T18] ( 3, 6 ) int -> r8 "CSE - aggressive" ; ; Lcl frame size = 56 G_M11135_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rsi, rcx mov edi, edx mov ebx, r8d ;; bbWeight=1 PerfScore 10.00 G_M11135_IG02: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+48] test rdx, rdx je SHORT G_M11135_IG04 ;; bbWeight=1 PerfScore 9.25 G_M11135_IG03: mov qword ptr [rsp+28H], rdx jmp SHORT G_M11135_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M11135_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+28H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M11135_IG05: movsxd rdx, edi mov rcx, qword ptr [rsp+28H] call CORINFO_HELP_NEWARR_1_VC mov rbp, rax mov r14d, dword ptr [rsi+48] mov rcx, gword ptr [rsi+16] mov rdx, rbp mov r8d, r14d call Array:Copy(Array,Array,int) movzx rcx, bl test cl, 1 je SHORT G_M11135_IG12 ;; bbWeight=1 PerfScore 9.50 G_M11135_IG06: xor ebx, ebx test r14d, r14d jle SHORT G_M11135_IG12 ;; bbWeight=0.50 PerfScore 0.75 G_M11135_IG07: mov r15d, dword ptr [rbp+8] cmp ebx, r15d jae G_M11135_IG18 movsxd rcx, ebx shl rcx, 4 lea r15, bword ptr [rbp+rcx+16] cmp dword ptr [r15+12], -1 jl SHORT G_M11135_IG11 ;; bbWeight=4 PerfScore 42.00 G_M11135_IG08: mov r12, r15 mov rcx, gword ptr [r15] test rcx, rcx jne SHORT G_M11135_IG09 xor r13d, r13d jmp SHORT G_M11135_IG10 ;; bbWeight=2 PerfScore 11.50 G_M11135_IG09: mov r12, r15 mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+24]Object:GetHashCode():int:this mov r13d, eax ;; bbWeight=2 PerfScore 15.00 G_M11135_IG10: mov dword ptr [r12+8], r13d ;; bbWeight=2 PerfScore 2.00 G_M11135_IG11: inc ebx cmp ebx, r14d jl SHORT G_M11135_IG07 ;; bbWeight=4 PerfScore 6.00 G_M11135_IG12: movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rax, -1 mov ecx, edi xor rdx, rdx div rdx:rax, rcx inc rax mov qword ptr [rsi+40], rax xor edi, edi test r14d, r14d jle SHORT G_M11135_IG16 mov r15d, dword ptr [rbp+8] ;; bbWeight=1 PerfScore 69.75 G_M11135_IG13: cmp edi, r15d jae SHORT G_M11135_IG18 movsxd rax, edi shl rax, 4 lea rax, bword ptr [rbp+rax+16] cmp dword ptr [rax+12], -1 jl SHORT G_M11135_IG15 ;; bbWeight=4 PerfScore 34.00 G_M11135_IG14: mov edx, dword ptr [rax+8] mov rcx, gword ptr [rsi+8] mov r8d, dword ptr [rcx+8] mov r9d, r8d mov r10, qword ptr [rsi+40] mov edx, edx imul rdx, r10 shr rdx, 32 inc rdx mov r9d, r9d imul rdx, r9 shr rdx, 32 cmp edx, r8d jae SHORT G_M11135_IG18 movsxd rdx, edx lea rdx, bword ptr [rcx+4*rdx+16] mov ecx, dword ptr [rdx] dec ecx mov dword ptr [rax+12], ecx lea eax, [rdi+1] mov dword ptr [rdx], eax ;; bbWeight=2 PerfScore 48.50 G_M11135_IG15: inc edi cmp edi, r14d jl SHORT G_M11135_IG13 ;; bbWeight=4 PerfScore 6.00 G_M11135_IG16: lea rcx, bword ptr [rsi+16] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 2.00 G_M11135_IG17: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M11135_IG18: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 399, prolog size 29, PerfScore 312.71, (MethodHash=d356d480) for method HashSet`1:Resize(int,bool):this ; ============================================================ ; Assembly listing for method <>c:b__13_1(Characteristic):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M64834_IG01: ;; bbWeight=1 PerfScore 0.00 G_M64834_IG02: mov rcx, gword ptr [rdx+16] ;; bbWeight=1 PerfScore 2.00 G_M64834_IG03: jmp CharacteristicHelper:IsCharacteristicObjectSubclass(Type):bool ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 9, prolog size 0, PerfScore 4.90, (MethodHash=da3f02bd) for method <>c:b__13_1(Characteristic):bool:this ; ============================================================ ; Assembly listing for method GcMode:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M31553_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M31553_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ;; bbWeight=1 PerfScore 38.50 G_M31553_IG03: mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M31553_IG04: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 431, prolog size 10, PerfScore 92.10, (MethodHash=c7f984be) for method GcMode:.cctor() ; ============================================================ ; Assembly listing for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V04 cse0 [V04,T03] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M16290_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M16290_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M16290_IG04 ;; bbWeight=1 PerfScore 5.25 G_M16290_IG03: jmp SHORT G_M16290_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M16290_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M16290_IG05: mov rcx, rdx mov rdx, rsi ;; bbWeight=1 PerfScore 0.50 G_M16290_IG06: add rsp, 48 pop rsi jmp Characteristic:Create(String):Characteristic`1 ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 62, prolog size 13, PerfScore 18.08, (MethodHash=2b1ec05d) for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic:Create(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd ;* V02 loc0 [V02,T04] ( 0, 0 ) bool -> zero-ref ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T01] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 64 G_M31099_IG01: push rdi push rsi push rbx sub rsp, 64 mov qword ptr [rsp+38H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 4.50 G_M31099_IG02: mov rcx, qword ptr [rcx+16] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax xor ecx, ecx mov dword ptr [rsp+20H], ecx mov dword ptr [rsp+28H], ecx mov dword ptr [rsp+30H], ecx mov rcx, rbx mov rdx, rsi mov r8, rdi xor r9, r9 call Characteristic`1:.ctor(String,Type,Func`3,bool,bool,bool):this mov rax, rbx ;; bbWeight=1 PerfScore 12.25 G_M31099_IG03: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 90, prolog size 12, PerfScore 28.50, (MethodHash=6cd58684) for method Characteristic:Create(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic`1:.ctor(String,Type,Func`3,bool,bool,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T04] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T06] ( 2, 2 ) bool -> r14 ; V05 arg5 [V05,T07] ( 1, 1 ) bool -> [rsp+0x98] ; V06 arg6 [V06,T08] ( 1, 1 ) bool -> [rsp+0xA0] ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 3, 6 ) ref -> r15 class-hnd exact "Single-def Box Helper" ; V09 tmp2 [V09,T05] ( 2, 4 ) ref -> r8 class-hnd "impImportAndPushBox" ; ; Lcl frame size = 56 G_M50711_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 mov r14d, dword ptr [rsp+90H] ;; bbWeight=1 PerfScore 8.25 G_M50711_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov byte ptr [r15+8], r14b mov gword ptr [rsp+20H], r15 mov r15d, dword ptr [rsp+98H] movzx rcx, r15b mov dword ptr [rsp+28H], ecx mov r15d, dword ptr [rsp+A0H] movzx rcx, r15b mov dword ptr [rsp+30H], ecx mov rcx, rsi mov rdx, rdi mov r9, rbx call Characteristic:.ctor(String,Type,Type,Object,bool,bool):this lea rcx, bword ptr [rsi+48] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov byte ptr [rsi+42], r14b ;; bbWeight=1 PerfScore 14.00 G_M50711_IG03: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 152, prolog size 12, PerfScore 41.70, (MethodHash=cf7a39e8) for method Characteristic`1:.ctor(String,Type,Func`3,bool,bool,bool):this ; ============================================================ ; Assembly listing for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V04 cse0 [V04,T03] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M16290_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M16290_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M16290_IG04 ;; bbWeight=1 PerfScore 5.25 G_M16290_IG03: jmp SHORT G_M16290_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M16290_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M16290_IG05: mov rcx, rdx mov rdx, rsi ;; bbWeight=1 PerfScore 0.50 G_M16290_IG06: add rsp, 48 pop rsi jmp Characteristic:Create(String):Characteristic`1 ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 62, prolog size 13, PerfScore 18.08, (MethodHash=2b1ec05d) for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic:Create(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T01] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 64 G_M31099_IG01: push rdi push rsi push rbx sub rsp, 64 mov qword ptr [rsp+38H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 4.50 G_M31099_IG02: mov rcx, qword ptr [rcx+16] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax xor ecx, ecx mov dword ptr [rsp+20H], ecx mov dword ptr [rsp+28H], ecx mov dword ptr [rsp+30H], ecx mov rcx, rbx mov rdx, rsi mov r8, rdi xor r9, r9 call Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this mov rax, rbx ;; bbWeight=1 PerfScore 12.25 G_M31099_IG03: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 90, prolog size 12, PerfScore 28.50, (MethodHash=6cd58684) for method Characteristic:Create(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T04] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T06] ( 2, 2 ) int -> r14 ; V05 arg5 [V05,T07] ( 1, 1 ) bool -> [rsp+0x98] ; V06 arg6 [V06,T08] ( 1, 1 ) bool -> [rsp+0xA0] ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 3, 6 ) ref -> r15 class-hnd exact "Single-def Box Helper" ; V09 tmp2 [V09,T05] ( 2, 4 ) ref -> r8 class-hnd "impImportAndPushBox" ; ; Lcl frame size = 56 G_M33194_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 mov r14d, dword ptr [rsp+90H] ;; bbWeight=1 PerfScore 8.25 G_M33194_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov dword ptr [r15+8], r14d mov gword ptr [rsp+20H], r15 mov r15d, dword ptr [rsp+98H] movzx rcx, r15b mov dword ptr [rsp+28H], ecx mov r15d, dword ptr [rsp+A0H] movzx rcx, r15b mov dword ptr [rsp+30H], ecx mov rcx, rsi mov rdx, rdi mov r9, rbx call Characteristic:.ctor(String,Type,Type,Object,bool,bool):this lea rcx, bword ptr [rsi+48] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+56], r14d ;; bbWeight=1 PerfScore 14.00 G_M33194_IG03: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 152, prolog size 12, PerfScore 41.70, (MethodHash=14b87e55) for method Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this ; ============================================================ ; Assembly listing for method ObjectEqualityComparer`1:Equals(__Canon,__Canon):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 5, 4 ) ref -> [rsp+0x38] ld-addr-op class-hnd ; V02 arg2 [V02,T01] ( 5, 3.50) ref -> r8 class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M3779_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M3779_IG02: test rdx, rdx je SHORT G_M3779_IG07 ;; bbWeight=1 PerfScore 1.25 G_M3779_IG03: test r8, r8 je SHORT G_M3779_IG05 mov gword ptr [rsp+38H], rdx mov rcx, rdx mov rdx, r8 mov rax, gword ptr [rsp+38H] mov rax, qword ptr [rax] mov rax, qword ptr [rax+64] call qword ptr [rax+16]Object:Equals(Object):bool:this nop ;; bbWeight=0.50 PerfScore 5.50 G_M3779_IG04: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M3779_IG05: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M3779_IG06: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M3779_IG07: test r8, r8 je SHORT G_M3779_IG09 xor eax, eax ;; bbWeight=0.50 PerfScore 0.75 G_M3779_IG08: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M3779_IG09: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M3779_IG10: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 75, prolog size 4, PerfScore 18.00, (MethodHash=7d18f13c) for method ObjectEqualityComparer`1:Equals(__Canon,__Canon):bool:this ; ============================================================ ; Assembly listing for method Object:Equals(Object):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M63894_IG01: ;; bbWeight=1 PerfScore 0.00 G_M63894_IG02: jmp RuntimeHelpers:Equals(Object,Object):bool ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 5, prolog size 0, PerfScore 2.50, (MethodHash=b6480669) for method Object:Equals(Object):bool:this ; ============================================================ ; Assembly listing for method List`1:ToArray():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4.50) ref -> rsi this class-hnd ; V01 loc0 [V01,T07] ( 3, 1.50) ref -> rbx class-hnd exact ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V04 tmp2 [V04,T06] ( 2, 2 ) int -> rbx "impAppendStmt" ; V05 tmp3 [V05,T04] ( 3, 2 ) long -> [rsp+0x20] "spilling Runtime Lookup tree" ; V06 tmp4 [V06,T03] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V07 tmp5 [V07,T05] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V08 cse0 [V08,T08] ( 3, 1.25) long -> rdx "CSE - moderate" ; V09 cse1 [V09,T09] ( 3, 1.25) long -> rdx "CSE - moderate" ; V10 cse2 [V10,T01] ( 4, 3 ) int -> rdi "CSE - aggressive" ; ; Lcl frame size = 48 G_M37447_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 4.50 G_M37447_IG02: mov edi, dword ptr [rsi+16] test edi, edi jne SHORT G_M37447_IG08 ;; bbWeight=1 PerfScore 3.25 G_M37447_IG03: mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+24] test rdx, rdx je SHORT G_M37447_IG05 ;; bbWeight=0.50 PerfScore 4.63 G_M37447_IG04: jmp SHORT G_M37447_IG06 ;; bbWeight=0.25 PerfScore 0.50 G_M37447_IG05: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M37447_IG06: mov rcx, rdx call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.63 G_M37447_IG07: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M37447_IG08: mov ebx, edi mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M37447_IG10 ;; bbWeight=0.50 PerfScore 4.75 G_M37447_IG09: mov qword ptr [rsp+20H], rdx jmp SHORT G_M37447_IG11 ;; bbWeight=0.25 PerfScore 0.75 G_M37447_IG10: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rsp+20H], rax ;; bbWeight=0.25 PerfScore 0.56 G_M37447_IG11: movsxd rdx, ebx mov rcx, qword ptr [rsp+20H] call CORINFO_HELP_NEWARR_1_OBJ mov rbx, rax mov rcx, gword ptr [rsi+8] mov r8d, edi mov rdx, rbx call Array:Copy(Array,Array,int) mov rax, rbx ;; bbWeight=0.50 PerfScore 3.13 G_M37447_IG12: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 170, prolog size 12, PerfScore 43.81, (MethodHash=9f8d6db8) for method List`1:ToArray():ref:this ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method AccuracyMode:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M17400_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M17400_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 35.25 G_M17400_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 339, prolog size 10, PerfScore 72.90, (MethodHash=70e7bc07) for method AccuracyMode:.cctor() ; ============================================================ ; Assembly listing for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V04 cse0 [V04,T03] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M16290_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M16290_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M16290_IG04 ;; bbWeight=1 PerfScore 5.25 G_M16290_IG03: jmp SHORT G_M16290_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M16290_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M16290_IG05: mov rcx, rdx mov rdx, rsi ;; bbWeight=1 PerfScore 0.50 G_M16290_IG06: add rsp, 48 pop rsi jmp Characteristic:Create(String):Characteristic`1 ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 62, prolog size 13, PerfScore 18.08, (MethodHash=2b1ec05d) for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic:Create(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd ;* V02 loc0 [V02,T04] ( 0, 0 ) double -> zero-ref do-not-enreg[F] ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T01] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 64 G_M31099_IG01: push rdi push rsi push rbx sub rsp, 64 vzeroupper mov qword ptr [rsp+38H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 5.50 G_M31099_IG02: mov rcx, qword ptr [rcx+16] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax vxorps xmm0, xmm0 vmovsd qword ptr [rsp+20H], xmm0 xor ecx, ecx mov dword ptr [rsp+28H], ecx mov dword ptr [rsp+30H], ecx mov rcx, rbx mov rdx, rsi mov r8, rdi xor r9, r9 call Characteristic`1:.ctor(String,Type,Func`3,double,bool,bool):this mov rax, rbx ;; bbWeight=1 PerfScore 12.08 G_M31099_IG03: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 99, prolog size 15, PerfScore 30.43, (MethodHash=6cd58684) for method Characteristic:Create(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic`1:.ctor(String,Type,Func`3,double,bool,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T04] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T08] ( 2, 2 ) double -> [rsp+0x90] ; V05 arg5 [V05,T06] ( 1, 1 ) bool -> [rsp+0x98] ; V06 arg6 [V06,T07] ( 1, 1 ) bool -> [rsp+0xA0] ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 3, 6 ) ref -> r14 class-hnd exact "Single-def Box Helper" ; V09 tmp2 [V09,T05] ( 2, 4 ) ref -> r8 class-hnd "impImportAndPushBox" ; ; Lcl frame size = 64 G_M29196_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 64 vzeroupper mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 ;; bbWeight=1 PerfScore 7.25 G_M29196_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax vmovsd xmm0, qword ptr [rsp+90H] vmovsd qword ptr [r14+8], xmm0 mov gword ptr [rsp+20H], r14 mov r14d, dword ptr [rsp+98H] movzx rcx, r14b mov dword ptr [rsp+28H], ecx mov r14d, dword ptr [rsp+A0H] movzx rcx, r14b mov dword ptr [rsp+30H], ecx mov rcx, rsi mov rdx, rdi mov r9, rbx call Characteristic:.ctor(String,Type,Type,Object,bool,bool):this lea rcx, bword ptr [rsi+48] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF vmovsd xmm0, qword ptr [rsp+90H] vmovsd qword ptr [rsi+56], xmm0 ;; bbWeight=1 PerfScore 17.00 G_M29196_IG03: add rsp, 64 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 164, prolog size 13, PerfScore 44.70, (MethodHash=61748df3) for method Characteristic`1:.ctor(String,Type,Func`3,double,bool,bool):this ; ============================================================ ; Assembly listing for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V04 cse0 [V04,T03] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M16290_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M16290_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M16290_IG04 ;; bbWeight=1 PerfScore 5.25 G_M16290_IG03: jmp SHORT G_M16290_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M16290_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M16290_IG05: mov rcx, rdx mov rdx, rsi ;; bbWeight=1 PerfScore 0.50 G_M16290_IG06: add rsp, 48 pop rsi jmp Characteristic:Create(String):Characteristic`1 ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 62, prolog size 13, PerfScore 18.08, (MethodHash=2b1ec05d) for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic:Create(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rsi ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 loc0 [V02,T04] ( 2, 2 ) struct ( 8) [rsp+0x40] do-not-enreg[SB] ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T03] ( 2, 4 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 80 G_M31099_IG01: push rdi push rsi push rbx sub rsp, 80 mov qword ptr [rsp+48H], rcx mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 4.75 G_M31099_IG02: xor ecx, ecx mov qword ptr [rsp+40H], rcx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, qword ptr [rsi+16] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rdx, qword ptr [rsp+40H] mov qword ptr [rsp+20H], rdx xor edx, edx mov dword ptr [rsp+28H], edx mov dword ptr [rsp+30H], edx mov rdx, rdi mov rcx, rbx xor r9, r9 call Characteristic`1:.ctor(String,Type,Func`3,TimeInterval,bool,bool):this mov rax, rbx ;; bbWeight=1 PerfScore 14.25 G_M31099_IG03: add rsp, 80 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 103, prolog size 12, PerfScore 32.05, (MethodHash=6cd58684) for method Characteristic:Create(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic`1:.ctor(String,Type,Func`3,TimeInterval,bool,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T04] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T06] ( 2, 2 ) struct ( 8) [rsp+0x90] do-not-enreg[SB] ; V05 arg5 [V05,T07] ( 1, 1 ) bool -> [rsp+0x98] ; V06 arg6 [V06,T08] ( 1, 1 ) bool -> [rsp+0xA0] ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 3, 6 ) ref -> r14 class-hnd exact "Single-def Box Helper" ; V09 tmp2 [V09,T05] ( 2, 4 ) ref -> r8 class-hnd "impImportAndPushBox" ; ; Lcl frame size = 64 G_M6675_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 64 mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 ;; bbWeight=1 PerfScore 6.25 G_M6675_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, qword ptr [rsp+90H] mov qword ptr [r14+8], rcx mov gword ptr [rsp+20H], r14 mov r14d, dword ptr [rsp+98H] movzx rcx, r14b mov dword ptr [rsp+28H], ecx mov r14d, dword ptr [rsp+A0H] movzx rcx, r14b mov dword ptr [rsp+30H], ecx mov rcx, rsi mov rdx, rdi mov r9, rbx call Characteristic:.ctor(String,Type,Type,Object,bool,bool):this lea rcx, bword ptr [rsi+48] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rax, qword ptr [rsp+90H] mov qword ptr [rsi+56], rax ;; bbWeight=1 PerfScore 16.00 G_M6675_IG03: add rsp, 64 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 156, prolog size 10, PerfScore 41.60, (MethodHash=b312e5ec) for method Characteristic`1:.ctor(String,Type,Func`3,TimeInterval,bool,bool):this ; ============================================================ ; Assembly listing for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V04 cse0 [V04,T03] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M16290_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M16290_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M16290_IG04 ;; bbWeight=1 PerfScore 5.25 G_M16290_IG03: jmp SHORT G_M16290_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M16290_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M16290_IG05: mov rcx, rdx mov rdx, rsi ;; bbWeight=1 PerfScore 0.50 G_M16290_IG06: add rsp, 48 pop rsi jmp Characteristic:Create(String):Characteristic`1 ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 62, prolog size 13, PerfScore 18.08, (MethodHash=2b1ec05d) for method CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic:Create(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T01] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 64 G_M31099_IG01: push rdi push rsi push rbx sub rsp, 64 mov qword ptr [rsp+38H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 4.50 G_M31099_IG02: mov rcx, qword ptr [rcx+16] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax xor ecx, ecx mov dword ptr [rsp+20H], ecx mov dword ptr [rsp+28H], ecx mov dword ptr [rsp+30H], ecx mov rcx, rbx mov rdx, rsi mov r8, rdi xor r9, r9 call Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this mov rax, rbx ;; bbWeight=1 PerfScore 12.25 G_M31099_IG03: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 90, prolog size 12, PerfScore 28.50, (MethodHash=6cd58684) for method Characteristic:Create(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T04] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T06] ( 2, 2 ) int -> r14 ; V05 arg5 [V05,T07] ( 1, 1 ) bool -> [rsp+0x98] ; V06 arg6 [V06,T08] ( 1, 1 ) bool -> [rsp+0xA0] ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 3, 6 ) ref -> r15 class-hnd exact "Single-def Box Helper" ; V09 tmp2 [V09,T05] ( 2, 4 ) ref -> r8 class-hnd "impImportAndPushBox" ; ; Lcl frame size = 56 G_M33194_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 mov r14d, dword ptr [rsp+90H] ;; bbWeight=1 PerfScore 8.25 G_M33194_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov dword ptr [r15+8], r14d mov gword ptr [rsp+20H], r15 mov r15d, dword ptr [rsp+98H] movzx rcx, r15b mov dword ptr [rsp+28H], ecx mov r15d, dword ptr [rsp+A0H] movzx rcx, r15b mov dword ptr [rsp+30H], ecx mov rcx, rsi mov rdx, rdi mov r9, rbx call Characteristic:.ctor(String,Type,Type,Object,bool,bool):this lea rcx, bword ptr [rsi+48] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+56], r14d ;; bbWeight=1 PerfScore 14.00 G_M33194_IG03: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 152, prolog size 12, PerfScore 41.70, (MethodHash=14b87e55) for method Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this ; ============================================================ ; Assembly listing for method RuntimeType:Equals(Object):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M19079_IG01: ;; bbWeight=1 PerfScore 0.00 G_M19079_IG02: cmp rdx, rcx sete al movzx rax, al ;; bbWeight=1 PerfScore 1.50 G_M19079_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 10, prolog size 0, PerfScore 3.50, (MethodHash=da33b578) for method RuntimeType:Equals(Object):bool:this ; ============================================================ ; Assembly listing for method InfrastructureMode:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init "argument with side effect" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init "argument with side effect" ; ; Lcl frame size = 64 G_M31650_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 4.08 G_M31650_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, 0xD1FFAB1E mov edx, 148 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-18H], rdx mov rdx, gword ptr [rbp-18H] mov rcx, gword ptr [rbp-08H] call InfrastructureMode:.ctor(IToolchain):this ;; bbWeight=1 PerfScore 40.00 G_M31650_IG03: mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, 0xD1FFAB1E mov edx, 148 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-20H], rdx mov rdx, gword ptr [rbp-20H] mov rcx, gword ptr [rbp-10H] call InfrastructureMode:.ctor(IToolchain):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 14.75 G_M31650_IG04: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 483, prolog size 24, PerfScore 109.43, (MethodHash=9c17845d) for method InfrastructureMode:.cctor() ; ============================================================ ; Assembly listing for method InProcessEmitToolchain:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M31434_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax mov qword ptr [rbp-10H], rax ;; bbWeight=1 PerfScore 4.00 G_M31434_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] mov edx, 1 call InProcessEmitToolchain:.ctor(bool):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] xor edx, edx call InProcessEmitToolchain:.ctor(bool):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 13.75 G_M31434_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 128, prolog size 20, PerfScore 32.55, (MethodHash=18b38535) for method InProcessEmitToolchain:.cctor() ; ============================================================ ; Assembly listing for method InProcessEmitToolchain:.ctor(bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) bool -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) long -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M48635_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 2.75 G_M48635_IG02: mov rcx, 0xD1FFAB1E mov edx, 415 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rdx, qword ptr [rdx+8] movzx r8, dil mov rcx, rsi ;; bbWeight=1 PerfScore 6.25 G_M48635_IG03: add rsp, 40 pop rsi pop rdi jmp InProcessEmitToolchain:.ctor(TimeSpan,bool):this ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 66, prolog size 11, PerfScore 18.85, (MethodHash=e6c64204) for method InProcessEmitToolchain:.ctor(bool):this ; ============================================================ ; Assembly listing for method TimeSpan:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) struct ( 8) [rbp-0x08] do-not-enreg[XSB] addr-exposed "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[XSB] addr-exposed "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[XSB] addr-exposed "NewObj constructor temp" ; ; Lcl frame size = 64 G_M37631_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] ;; bbWeight=1 PerfScore 1.75 G_M37631_IG02: xor ecx, ecx mov qword ptr [rbp-08H], rcx lea rcx, bword ptr [rbp-08H] xor edx, edx movsxd rdx, edx call TimeSpan:.ctor(long):this mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, qword ptr [rbp-08H] mov qword ptr [rcx+8], rdx xor ecx, ecx mov qword ptr [rbp-10H], rcx lea rcx, bword ptr [rbp-10H] mov rdx, 0xD1FFAB1E call TimeSpan:.ctor(long):this mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, qword ptr [rbp-10H] mov qword ptr [rcx+8], rdx xor ecx, ecx mov qword ptr [rbp-18H], rcx lea rcx, bword ptr [rbp-18H] mov rdx, 0xD1FFAB1E call TimeSpan:.ctor(long):this mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] mov rdx, qword ptr [rbp-18H] mov qword ptr [rax+8], rdx ;; bbWeight=1 PerfScore 22.00 G_M37631_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 149, prolog size 10, PerfScore 40.65, (MethodHash=00666d00) for method TimeSpan:.cctor() ; ============================================================ ; Assembly listing for method TimeSpan:.ctor(long):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rcx this ; V01 arg1 [V01,T01] ( 3, 3 ) long -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M34986_IG01: ;; bbWeight=1 PerfScore 0.00 G_M34986_IG02: mov qword ptr [rcx], rdx ;; bbWeight=1 PerfScore 1.00 G_M34986_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 2.40, (MethodHash=558a7755) for method TimeSpan:.ctor(long):this ; ============================================================ ; Assembly listing for method InProcessEmitToolchain:.ctor(TimeSpan,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ; V02 arg2 [V02,T02] ( 3, 3 ) bool -> rdi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V06 tmp3 [V06,T01] ( 3, 6 ) ref -> r15 class-hnd exact "NewObj constructor temp" ; V07 tmp4 [V07,T05] ( 2, 2 ) long -> rbx V01._ticks(offs=0x00) P-INDEP "field V01._ticks (fldOffset=0x0)" ; ; Lcl frame size = 40 G_M2606_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rbx, rdx mov edi, r8d ;; bbWeight=1 PerfScore 7.00 G_M2606_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax movzx r8, dil mov rcx, r15 mov rdx, rbx call InProcessEmitExecutor:.ctor(TimeSpan,bool):this mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+24] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+32] mov rdx, r15 call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 15.50 G_M2606_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 162, prolog size 12, PerfScore 42.95, (MethodHash=c16ff5d1) for method InProcessEmitToolchain:.ctor(TimeSpan,bool):this ; ============================================================ ; Assembly listing for method InProcessEmitExecutor:.ctor(TimeSpan,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ; V02 arg2 [V02,T02] ( 3, 3 ) bool -> rdi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ; V06 tmp3 [V06,T01] ( 4, 3.50) long -> rdx V01._ticks(offs=0x00) P-INDEP "field V01._ticks (fldOffset=0x0)" ;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref V04._ticks(offs=0x00) P-INDEP "field V04._ticks (fldOffset=0x0)" ; V08 tmp5 [V08,T03] ( 2, 2 ) long -> rcx V05._ticks(offs=0x00) P-INDEP "field V05._ticks (fldOffset=0x0)" ; ; Lcl frame size = 40 G_M12892_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov edi, r8d ;; bbWeight=1 PerfScore 2.75 G_M12892_IG02: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rcx, qword ptr [rcx+8] cmp rdx, rcx jne SHORT G_M12892_IG04 ;; bbWeight=1 PerfScore 5.50 G_M12892_IG03: mov rcx, 0xD1FFAB1E mov edx, 146 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] mov rdx, qword ptr [rax+8] ;; bbWeight=0.50 PerfScore 2.88 G_M12892_IG04: mov qword ptr [rsi+16], rdx mov byte ptr [rsi+8], dil ;; bbWeight=1 PerfScore 2.00 G_M12892_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 86, prolog size 6, PerfScore 23.98, (MethodHash=6d4dcda3) for method InProcessEmitExecutor:.ctor(TimeSpan,bool):this ; ============================================================ ; Assembly listing for method InProcessEmitExecutor:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M42744_IG01: push rbp push rsi sub rsp, 40 vzeroupper lea rbp, [rsp+30H] ;; bbWeight=1 PerfScore 3.75 G_M42744_IG02: mov rax, 0xD1FFAB1E mov rsi, gword ptr [rax] vmovsd xmm0, qword ptr [reloc @RWD08] call TimeSpan:FromDays(double):TimeSpan mov qword ptr [rsi+8], rax mov rax, 0xD1FFAB1E mov rsi, gword ptr [rax] vmovsd xmm0, qword ptr [reloc @RWD24] call TimeSpan:FromMinutes(double):TimeSpan mov qword ptr [rsi+8], rax ;; bbWeight=1 PerfScore 12.50 G_M42744_IG03: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 RWD00 dq 0000000000000000h RWD08 dq 3FF0000000000000h RWD16 dq 0000000000000000h RWD24 dq 4014000000000000h ; Total bytes of code 81, prolog size 14, PerfScore 27.05, (MethodHash=b77e5907) for method InProcessEmitExecutor:.cctor() ; ============================================================ ; Assembly listing for method TimeSpan:FromDays(double):TimeSpan ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) double -> mm0 ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M54935_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M54935_IG02: vmovsd xmm1, qword ptr [reloc @RWD08] ;; bbWeight=1 PerfScore 2.00 G_M54935_IG03: jmp TimeSpan:Interval(double,double):TimeSpan ;; bbWeight=1 PerfScore 2.00 RWD00 dq 0000000000000000h RWD08 dq 4269254D38000000h ; Total bytes of code 16, prolog size 3, PerfScore 6.70, (MethodHash=4e302968) for method TimeSpan:FromDays(double):TimeSpan ; ============================================================ ; Assembly listing for method TimeSpan:Interval(double,double):TimeSpan ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 5 ) double -> mm0 ; V01 arg1 [V01,T01] ( 3, 3 ) double -> mm1 ; V02 loc0 [V02,T02] ( 2, 2 ) double -> mm0 ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T04] ( 2, 0 ) ref -> rcx "argument with side effect" ; V06 tmp3 [V06,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M31592_IG01: push rsi sub rsp, 32 vzeroupper ;; bbWeight=1 PerfScore 2.25 G_M31592_IG02: vucomisd xmm0, xmm0 jp SHORT G_M31592_IG05 ;; bbWeight=1 PerfScore 2.00 G_M31592_IG03: vmulsd xmm0, xmm0, xmm1 ;; bbWeight=1 PerfScore 3.00 G_M31592_IG04: add rsp, 32 pop rsi jmp TimeSpan:IntervalFromDoubleTicks(double):TimeSpan ;; bbWeight=1 PerfScore 2.75 G_M31592_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x3869 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call ArgumentException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 96, prolog size 8, PerfScore 19.80, (MethodHash=e7318497) for method TimeSpan:Interval(double,double):TimeSpan ; ============================================================ ; Assembly listing for method TimeSpan:IntervalFromDoubleTicks(double):TimeSpan ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 8, 7.50) double -> mm0 ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V05 tmp4 [V05,T00] ( 2, 1 ) long -> rax V03._ticks(offs=0x00) P-INDEP "field V03._ticks (fldOffset=0x0)" ; V06 tmp5 [V06,T03] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp6 [V07,T04] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M52244_IG01: push rsi sub rsp, 32 vzeroupper ;; bbWeight=1 PerfScore 2.25 G_M52244_IG02: vucomisd xmm0, qword ptr [reloc @RWD08] ja SHORT G_M52244_IG08 vmovsd xmm1, qword ptr [reloc @RWD24] vucomisd xmm1, xmm0 ja SHORT G_M52244_IG08 vucomisd xmm0, xmm0 jp SHORT G_M52244_IG08 ;; bbWeight=1 PerfScore 8.00 G_M52244_IG03: vucomisd xmm0, qword ptr [reloc @RWD40] jp SHORT G_M52244_IG06 jne SHORT G_M52244_IG06 ;; bbWeight=1 PerfScore 3.00 G_M52244_IG04: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] mov rax, qword ptr [rax+8] ;; bbWeight=0.50 PerfScore 2.13 G_M52244_IG05: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M52244_IG06: vcvttsd2si rax, xmm0 ;; bbWeight=0.50 PerfScore 2.50 G_M52244_IG07: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M52244_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xF755 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call OverflowException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 43E0000000000000h RWD16 dq 0000000000000000h RWD24 dq C3E0000000000000h RWD32 dq 0000000000000000h RWD40 dq 43E0000000000000h ; Total bytes of code 152, prolog size 8, PerfScore 35.33, (MethodHash=e7ad33eb) for method TimeSpan:IntervalFromDoubleTicks(double):TimeSpan ; ============================================================ ; Assembly listing for method TimeSpan:FromMinutes(double):TimeSpan ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) double -> mm0 ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M16741_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M16741_IG02: vmovsd xmm1, qword ptr [reloc @RWD08] ;; bbWeight=1 PerfScore 2.00 G_M16741_IG03: jmp TimeSpan:Interval(double,double):TimeSpan ;; bbWeight=1 PerfScore 2.00 RWD00 dq 0000000000000000h RWD08 dq 41C1E1A300000000h ; Total bytes of code 16, prolog size 3, PerfScore 6.70, (MethodHash=673abe9a) for method TimeSpan:FromMinutes(double):TimeSpan ; ============================================================ ; Assembly listing for method InfrastructureMode:.ctor(IToolchain):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rdx class-hnd "Inlining Arg" ; ; Lcl frame size = 40 G_M23937_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 2.75 G_M23937_IG02: mov rcx, rsi call CharacteristicObject:.ctor():this mov rcx, 0xD1FFAB1E mov edx, 272 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rcx] cmp dword ptr [rdx], edx cmp dword ptr [rsi], esi mov rcx, rsi mov r8, rdi ;; bbWeight=1 PerfScore 9.50 G_M23937_IG03: add rsp, 40 pop rsi pop rdi jmp CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 74, prolog size 6, PerfScore 22.90, (MethodHash=85c1a27e) for method InfrastructureMode:.ctor(IToolchain):this ; ============================================================ ; Assembly listing for method MdFieldInfo:get_FieldType():Type:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 6 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V02 loc1 [V02 ] ( 2, 1 ) struct (16) [rsp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op ;* V03 loc2 [V03 ] ( 0, 0 ) long -> zero-ref ld-addr-op ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ; V06 tmp2 [V06,T01] ( 3, 3 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T02] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ; V08 tmp4 [V08,T03] ( 3, 3 ) ref -> rax class-hnd "Inlining Arg" ; V09 tmp5 [V09 ] ( 4, 2 ) struct (16) [rsp+0x38] do-not-enreg[XSB] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V10 tmp6 [V10,T05] ( 2, 2 ) int -> rdx "Inlining Arg" ;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V13 tmp9 [V13,T04] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V14 tmp10 [V14,T06] ( 2, 1 ) int -> rdi V01.m_length(offs=0x00) P-INDEP "field V01.m_length (fldOffset=0x0)" ; V15 tmp11 [V15,T07] ( 2, 1 ) long -> rbx V01.m_constArray(offs=0x08) P-INDEP "field V01.m_constArray (fldOffset=0x8)" ; V16 tmp12 [V16 ] ( 1, 0.50) ref -> [rsp+0x48] do-not-enreg[X] addr-exposed V02.m_keepalive(offs=0x00) P-DEP "field V02.m_keepalive (fldOffset=0x0)" ; V17 tmp13 [V17 ] ( 2, 1 ) long -> [rsp+0x50] do-not-enreg[X] addr-exposed V02.m_metadataImport2(offs=0x08) P-DEP "field V02.m_metadataImport2 (fldOffset=0x8)" ; V18 tmp14 [V18 ] ( 3, 1.50) int -> [rsp+0x38] do-not-enreg[X] addr-exposed V09.m_length(offs=0x00) P-DEP "field V09.m_length (fldOffset=0x0)" ; V19 tmp15 [V19 ] ( 3, 1.50) long -> [rsp+0x40] do-not-enreg[X] addr-exposed V09.m_constArray(offs=0x08) P-DEP "field V09.m_constArray (fldOffset=0x8)" ;* V20 tmp16 [V20,T08] ( 0, 0 ) long -> zero-ref V12.m_handle(offs=0x00) P-INDEP "field V12.m_handle (fldOffset=0x0)" ; ; Lcl frame size = 88 G_M36297_IG01: push rdi push rsi push rbp push rbx sub rsp, 88 vzeroupper xor rax, rax mov qword ptr [rsp+48H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 6.75 G_M36297_IG02: cmp gword ptr [rsi+40], 0 jne G_M36297_IG04 ;; bbWeight=1 PerfScore 3.00 G_M36297_IG03: mov rcx, gword ptr [rsi+16] cmp dword ptr [rcx], ecx call RuntimeTypeHandle:GetModule(RuntimeType):RuntimeModule cmp dword ptr [rax], eax lea rcx, bword ptr [rsp+48H] mov rdx, rax call ModuleHandle:GetMetadataImport(RuntimeModule):MetadataImport mov edx, dword ptr [rsi+28] vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+38H], xmm0 lea r8, bword ptr [rsp+38H] mov rcx, qword ptr [rsp+50H] call MetadataImport:_GetSigOfFieldDef(long,int,byref) mov edi, dword ptr [rsp+38H] mov rbx, qword ptr [rsp+40H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, gword ptr [rsi+16] xor rdx, rdx mov gword ptr [rsp+20H], rdx mov gword ptr [rsp+28H], rcx mov rcx, rbp mov rdx, rbx mov r8d, edi xor r9, r9 call Signature:GetSignature(long,int,RuntimeFieldHandleInternal,IRuntimeMethodInfo,RuntimeType):this mov rdx, gword ptr [rbp+24] lea rcx, bword ptr [rsi+40] call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 13.92 G_M36297_IG04: mov rax, gword ptr [rsi+40] ;; bbWeight=1 PerfScore 2.00 G_M36297_IG05: add rsp, 88 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 172, prolog size 18, PerfScore 46.32, (MethodHash=496a7236) for method MdFieldInfo:get_FieldType():Type:this ; ============================================================ ; Assembly listing for method MetaMode:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M53176_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M53176_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateHiddenCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateIgnoreOnApplyCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateHiddenCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 15.25 G_M53176_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 155, prolog size 10, PerfScore 34.50, (MethodHash=04a53047) for method MetaMode:.cctor() ; ============================================================ ; Assembly listing for method CharacteristicObject`1:CreateHiddenCharacteristic(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V04 cse0 [V04,T03] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M49256_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M49256_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M49256_IG04 ;; bbWeight=1 PerfScore 5.25 G_M49256_IG03: jmp SHORT G_M49256_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M49256_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M49256_IG05: mov rcx, rdx mov rdx, rsi ;; bbWeight=1 PerfScore 0.50 G_M49256_IG06: add rsp, 48 pop rsi jmp Characteristic:CreateHidden(String):Characteristic`1 ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 62, prolog size 13, PerfScore 18.08, (MethodHash=e7113f97) for method CharacteristicObject`1:CreateHiddenCharacteristic(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic:CreateHidden(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd ;* V02 loc0 [V02,T04] ( 0, 0 ) bool -> zero-ref ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T01] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 64 G_M48369_IG01: push rdi push rsi push rbx sub rsp, 64 mov qword ptr [rsp+38H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 4.50 G_M48369_IG02: mov rcx, qword ptr [rcx+16] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax xor ecx, ecx mov dword ptr [rsp+20H], ecx mov dword ptr [rsp+28H], ecx mov dword ptr [rsp+30H], 1 mov rcx, rbx mov rdx, rsi mov r8, rdi xor r9, r9 call Characteristic`1:.ctor(String,Type,Func`3,bool,bool,bool):this mov rax, rbx ;; bbWeight=1 PerfScore 12.25 G_M48369_IG03: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 94, prolog size 12, PerfScore 28.90, (MethodHash=4b9c430e) for method Characteristic:CreateHidden(String):Characteristic`1 ; ============================================================ ; Assembly listing for method CharacteristicObject`1:CreateIgnoreOnApplyCharacteristic(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V04 cse0 [V04,T03] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 48 G_M48495_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M48495_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M48495_IG04 ;; bbWeight=1 PerfScore 5.25 G_M48495_IG03: jmp SHORT G_M48495_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M48495_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M48495_IG05: mov rcx, rdx mov rdx, rsi ;; bbWeight=1 PerfScore 0.50 G_M48495_IG06: add rsp, 48 pop rsi jmp Characteristic:CreateIgnoreOnApply(String):Characteristic`1 ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 62, prolog size 13, PerfScore 18.08, (MethodHash=c0854290) for method CharacteristicObject`1:CreateIgnoreOnApplyCharacteristic(String):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic:CreateIgnoreOnApply(String):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd ;* V02 loc0 [V02,T04] ( 0, 0 ) bool -> zero-ref ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T01] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 64 G_M63670_IG01: push rdi push rsi push rbx sub rsp, 64 mov qword ptr [rsp+38H], rcx mov rsi, rdx ;; bbWeight=1 PerfScore 4.50 G_M63670_IG02: mov rcx, qword ptr [rcx+16] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax xor ecx, ecx mov dword ptr [rsp+20H], ecx mov dword ptr [rsp+28H], 1 mov dword ptr [rsp+30H], ecx mov rcx, rbx mov rdx, rsi mov r8, rdi xor r9, r9 call Characteristic`1:.ctor(String,Type,Func`3,bool,bool,bool):this mov rax, rbx ;; bbWeight=1 PerfScore 12.25 G_M63670_IG03: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 94, prolog size 12, PerfScore 28.90, (MethodHash=f6090749) for method Characteristic:CreateIgnoreOnApply(String):Characteristic`1 ; ============================================================ ; Assembly listing for method RunMode:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd exact "NewObj constructor temp" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init class-hnd exact "NewObj constructor temp" ; V05 tmp5 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 80 G_M35244_IG01: push rbp sub rsp, 80 lea rbp, [rsp+50H] xor rax, rax mov qword ptr [rbp-28H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 5.33 G_M35244_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E xor r8d, r8d call Characteristic:Create(String,int):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 ;; bbWeight=1 PerfScore 38.75 G_M35244_IG03: mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CharacteristicObject`1:CreateCharacteristic(String):Characteristic`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp-08H] call RunMode:.ctor(String):this mov rcx, gword ptr [rbp-08H] mov edx, 1 cmp dword ptr [rcx], ecx call RunMode:set_LaunchCount(int):this mov rcx, gword ptr [rbp-08H] mov edx, 1 cmp dword ptr [rcx], ecx call RunMode:set_WarmupCount(int):this mov rcx, gword ptr [rbp-08H] mov edx, 1 cmp dword ptr [rcx], ecx call RunMode:set_IterationCount(int):this mov rcx, gword ptr [rbp-08H] mov edx, 1 cmp dword ptr [rcx], ecx call RunMode:set_RunStrategy(int):this mov rcx, gword ptr [rbp-08H] mov edx, 1 cmp dword ptr [rcx], ecx call RunMode:set_UnrollFactor(int):this mov rcx, gword ptr [rbp-08H] cmp dword ptr [rcx], ecx call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=1 PerfScore 49.75 G_M35244_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp-10H] call RunMode:.ctor(String):this mov rcx, gword ptr [rbp-10H] mov edx, 1 cmp dword ptr [rcx], ecx call RunMode:set_LaunchCount(int):this mov rcx, gword ptr [rbp-10H] mov edx, 3 cmp dword ptr [rcx], ecx call RunMode:set_WarmupCount(int):this mov rcx, gword ptr [rbp-10H] mov edx, 3 cmp dword ptr [rcx], ecx call RunMode:set_IterationCount(int):this mov rcx, gword ptr [rbp-10H] cmp dword ptr [rcx], ecx call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-18H], rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp-18H] call RunMode:.ctor(String):this mov rcx, gword ptr [rbp-18H] mov edx, 2 cmp dword ptr [rcx], ecx call RunMode:set_LaunchCount(int):this mov rcx, gword ptr [rbp-18H] mov edx, 10 cmp dword ptr [rcx], ecx call RunMode:set_WarmupCount(int):this mov rcx, gword ptr [rbp-18H] mov edx, 15 cmp dword ptr [rcx], ecx call RunMode:set_IterationCount(int):this mov rcx, gword ptr [rbp-18H] cmp dword ptr [rcx], ecx call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-20H], rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp-20H] call RunMode:.ctor(String):this mov rcx, gword ptr [rbp-20H] mov edx, 3 ;; bbWeight=1 PerfScore 57.25 G_M35244_IG05: cmp dword ptr [rcx], ecx call RunMode:set_LaunchCount(int):this mov rcx, gword ptr [rbp-20H] mov edx, 15 cmp dword ptr [rcx], ecx call RunMode:set_WarmupCount(int):this mov rcx, gword ptr [rbp-20H] mov edx, 100 cmp dword ptr [rcx], ecx call RunMode:set_IterationCount(int):this mov rcx, gword ptr [rbp-20H] cmp dword ptr [rcx], ecx call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-28H], rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, gword ptr [rbp-28H] call RunMode:.ctor(String):this mov rcx, gword ptr [rbp-28H] mov edx, 4 cmp dword ptr [rcx], ecx call RunMode:set_LaunchCount(int):this mov rcx, gword ptr [rbp-28H] mov edx, 30 cmp dword ptr [rcx], ecx call RunMode:set_WarmupCount(int):this mov rcx, gword ptr [rbp-28H] mov edx, 500 cmp dword ptr [rcx], ecx call RunMode:set_IterationCount(int):this mov rcx, gword ptr [rbp-28H] cmp dword ptr [rcx], ecx call CharacteristicObject`1:Freeze():__Canon:this mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 42.00 G_M35244_IG06: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 1168, prolog size 30, PerfScore 312.18, (MethodHash=f7a67653) for method RunMode:.cctor() ; ============================================================ ; Assembly listing for method Characteristic:Create(String,int):Characteristic`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rsi ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg1 [V02,T03] ( 3, 3 ) int -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 72 G_M28196_IG01: push rdi push rsi push rbp push rbx sub rsp, 72 mov qword ptr [rsp+40H], rcx mov rsi, rcx mov rdi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 6.00 G_M28196_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, qword ptr [rsi+16] mov rcx, qword ptr [rcx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov dword ptr [rsp+20H], ebx xor edx, edx mov dword ptr [rsp+28H], edx mov dword ptr [rsp+30H], edx mov rdx, rdi mov rcx, rbp xor r9, r9 call Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this mov rax, rbp ;; bbWeight=1 PerfScore 12.00 G_M28196_IG03: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 95, prolog size 13, PerfScore 30.75, (MethodHash=1f0091db) for method Characteristic:Create(String,int):Characteristic`1 ; ============================================================ ; Assembly listing for method Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T04] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T06] ( 2, 2 ) int -> r14 ; V05 arg5 [V05,T07] ( 1, 1 ) bool -> [rsp+0x98] ; V06 arg6 [V06,T08] ( 1, 1 ) bool -> [rsp+0xA0] ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 3, 6 ) ref -> r15 class-hnd exact "Single-def Box Helper" ; V09 tmp2 [V09,T05] ( 2, 4 ) ref -> r8 class-hnd "impImportAndPushBox" ; ; Lcl frame size = 56 G_M33194_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 mov r14d, dword ptr [rsp+90H] ;; bbWeight=1 PerfScore 8.25 G_M33194_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov dword ptr [r15+8], r14d mov gword ptr [rsp+20H], r15 mov r15d, dword ptr [rsp+98H] movzx rcx, r15b mov dword ptr [rsp+28H], ecx mov r15d, dword ptr [rsp+A0H] movzx rcx, r15b mov dword ptr [rsp+30H], ecx mov rcx, rsi mov rdx, rdi mov r9, rbx call Characteristic:.ctor(String,Type,Type,Object,bool,bool):this lea rcx, bword ptr [rsi+48] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+56], r14d ;; bbWeight=1 PerfScore 14.00 G_M33194_IG03: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 152, prolog size 12, PerfScore 41.70, (MethodHash=14b87e55) for method Characteristic`1:.ctor(String,Type,Func`3,int,bool,bool):this ; ============================================================ ; Assembly listing for method RunMode:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 5, 3.75) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03,T03] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V04 tmp2 [V04,T02] ( 3, 3 ) ref -> rdx class-hnd exact "Inlining Arg" ; ; Lcl frame size = 40 G_M19814_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 2.75 G_M19814_IG02: mov rcx, rsi call CharacteristicObject:.ctor():this test rdi, rdi je SHORT G_M19814_IG06 ;; bbWeight=1 PerfScore 2.50 G_M19814_IG03: cmp dword ptr [rdi+8], 0 jbe SHORT G_M19814_IG06 ;; bbWeight=0.25 PerfScore 0.75 G_M19814_IG04: mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rcx] cmp dword ptr [rdx], edx cmp dword ptr [rsi], esi mov rcx, rsi mov r8, rdi ;; bbWeight=0.50 PerfScore 3.38 G_M19814_IG05: add rsp, 40 pop rsi pop rdi jmp CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=0.50 PerfScore 1.63 G_M19814_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 72, prolog size 6, PerfScore 19.33, (MethodHash=5a58b299) for method RunMode:.ctor(String):this ; ============================================================ ; Assembly listing for method RunMode:set_LaunchCount(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) int -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rbx class-hnd "Inlining Arg" ; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; ; Lcl frame size = 32 G_M9799_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M9799_IG02: mov rcx, 0xD1FFAB1E mov edx, 281 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] cmp dword ptr [rbx], ebx cmp dword ptr [rsi], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], edi mov r8, rax mov rcx, rsi mov rdx, rbx ;; bbWeight=1 PerfScore 10.75 G_M9799_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 88, prolog size 12, PerfScore 27.05, (MethodHash=c29ad9b8) for method RunMode:set_LaunchCount(int):this ; ============================================================ ; Assembly listing for method RunMode:set_WarmupCount(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) int -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rbx class-hnd "Inlining Arg" ; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; ; Lcl frame size = 32 G_M23798_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M23798_IG02: mov rcx, 0xD1FFAB1E mov edx, 281 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] cmp dword ptr [rbx], ebx cmp dword ptr [rsi], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], edi mov r8, rax mov rcx, rsi mov rdx, rbx ;; bbWeight=1 PerfScore 10.75 G_M23798_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 88, prolog size 12, PerfScore 27.05, (MethodHash=8054a309) for method RunMode:set_WarmupCount(int):this ; ============================================================ ; Assembly listing for method RunMode:set_IterationCount(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) int -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rbx class-hnd "Inlining Arg" ; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; ; Lcl frame size = 32 G_M9037_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M9037_IG02: mov rcx, 0xD1FFAB1E mov edx, 281 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] cmp dword ptr [rbx], ebx cmp dword ptr [rsi], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], edi mov r8, rax mov rcx, rsi mov rdx, rbx ;; bbWeight=1 PerfScore 10.75 G_M9037_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 88, prolog size 12, PerfScore 27.05, (MethodHash=d9b4dcb2) for method RunMode:set_IterationCount(int):this ; ============================================================ ; Assembly listing for method RunMode:set_RunStrategy(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) int -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rbx class-hnd "Inlining Arg" ; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; ; Lcl frame size = 32 G_M62187_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M62187_IG02: mov rcx, 0xD1FFAB1E mov edx, 281 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] cmp dword ptr [rbx], ebx cmp dword ptr [rsi], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], edi mov r8, rax mov rcx, rsi mov rdx, rbx ;; bbWeight=1 PerfScore 10.75 G_M62187_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 88, prolog size 12, PerfScore 27.05, (MethodHash=23c50d14) for method RunMode:set_RunStrategy(int):this ; ============================================================ ; Assembly listing for method RunMode:set_UnrollFactor(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) int -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rbx class-hnd "Inlining Arg" ; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; ; Lcl frame size = 32 G_M55378_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M55378_IG02: mov rcx, 0xD1FFAB1E mov edx, 281 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] cmp dword ptr [rbx], ebx cmp dword ptr [rsi], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], edi mov r8, rax mov rcx, rsi mov rdx, rbx ;; bbWeight=1 PerfScore 10.75 G_M55378_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 88, prolog size 12, PerfScore 27.05, (MethodHash=ada427ad) for method RunMode:set_UnrollFactor(int):this ; ============================================================ ; Assembly listing for method Enumerable:Intersect(IEnumerable`1,IEnumerable`1):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T01] ( 4, 4 ) ref -> rsi class-hnd ; V02 arg1 [V02,T02] ( 4, 4 ) ref -> rdi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V05 cse0 [V05,T04] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M40618_IG01: push rdi push rsi sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rdx mov rdi, r8 ;; bbWeight=1 PerfScore 3.75 G_M40618_IG02: test rsi, rsi je SHORT G_M40618_IG09 ;; bbWeight=1 PerfScore 1.25 G_M40618_IG03: test rdi, rdi je SHORT G_M40618_IG10 ;; bbWeight=1 PerfScore 1.25 G_M40618_IG04: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M40618_IG06 ;; bbWeight=1 PerfScore 5.25 G_M40618_IG05: jmp SHORT G_M40618_IG07 ;; bbWeight=0.25 PerfScore 0.50 G_M40618_IG06: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M40618_IG07: mov rcx, rdx mov rdx, rsi mov r8, rdi xor r9, r9 ;; bbWeight=1 PerfScore 1.00 G_M40618_IG08: add rsp, 40 pop rsi pop rdi jmp Enumerable:IntersectIterator(IEnumerable`1,IEnumerable`1,IEqualityComparer`1):IEnumerable`1 ;; bbWeight=1 PerfScore 3.25 G_M40618_IG09: mov ecx, 4 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M40618_IG10: mov ecx, 14 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 105, prolog size 17, PerfScore 27.13, (MethodHash=aeae6155) for method Enumerable:Intersect(IEnumerable`1,IEnumerable`1):IEnumerable`1 ; ============================================================ ; Assembly listing for method Enumerable:IntersectIterator(IEnumerable`1,IEnumerable`1,IEqualityComparer`1):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rcx ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd ; V02 arg1 [V02,T03] ( 3, 3 ) ref -> rdi class-hnd ; V03 arg2 [V03,T04] ( 3, 3 ) ref -> rbx class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T00] ( 7, 14 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T07] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree" ; V07 tmp3 [V07,T05] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V08 tmp4 [V08,T06] ( 4, 3.25) ref -> rcx ; V09 cse0 [V09,T08] ( 3, 2.25) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M321_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rdx mov rdi, r8 mov rbx, r9 ;; bbWeight=1 PerfScore 6.00 G_M321_IG02: mov rdx, qword ptr [rcx+16] mov rdx, qword ptr [rdx+16] test rdx, rdx je SHORT G_M321_IG04 ;; bbWeight=1 PerfScore 5.25 G_M321_IG03: jmp SHORT G_M321_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M321_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M321_IG05: mov rcx, rdx call CORINFO_HELP_NEWSFAST mov rbp, rax mov dword ptr [rbp+80], -2 mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M321_IG07 ;; bbWeight=1 PerfScore 7.25 G_M321_IG06: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M321_IG07: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbp+84], eax lea rcx, bword ptr [rbp+56] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbp+40] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbp+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, rbp ;; bbWeight=1 PerfScore 9.50 G_M321_IG08: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 168, prolog size 13, PerfScore 49.24, (MethodHash=0714febe) for method Enumerable:IntersectIterator(IEnumerable`1,IEnumerable`1,IEqualityComparer`1):IEnumerable`1 ; ============================================================ ; Assembly listing for method CharacteristicObject:ApplyCore(CharacteristicObject,IEnumerable`1):CharacteristicObject:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 9, 12 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T08] ( 4, 7 ) ref -> rdi class-hnd ; V02 arg2 [V02,T16] ( 3, 2.50) ref -> rbx class-hnd ; V03 loc0 [V03,T07] ( 7, 9.50) ref -> [rbp-0x30] EH do-not-enreg[] class-hnd EH-live ; V04 loc1 [V04,T01] ( 8, 20 ) ref -> rbx class-hnd ; V05 loc2 [V05,T04] ( 6, 12 ) ref -> r14 ld-addr-op class-hnd ; V06 loc3 [V06,T14] ( 3, 6 ) ref -> rcx class-hnd ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T09] ( 3, 8.96) ref -> rax "CASTCLASS eval op1" ; V09 tmp2 [V09,T15] ( 3, 4.96) long -> rdx "fgInsertCommaFormTemp is creating a new local variable" ; V10 tmp3 [V10,T02] ( 5, 14.96) ref -> rcx class-hnd "spilling QMark2" ; V11 tmp4 [V11,T10] ( 3, 8 ) bool -> rcx "Inline return value spill temp" ; V12 tmp5 [V12,T00] ( 3, 24 ) ref -> rcx class-hnd "Inlining Arg" ; V13 tmp6 [V13,T06] ( 3, 10 ) byref -> rax "Inline stloc first use temp" ; V14 tmp7 [V14,T11] ( 2, 8 ) ref -> rcx class-hnd "Inlining Arg" ;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" ; V16 tmp9 [V16,T12] ( 2, 8 ) ref -> rcx class-hnd "Inlining Arg" ; V17 tmp10 [V17,T05] ( 3, 12 ) ref -> r15 "argument with side effect" ; V18 tmp11 [V18,T13] ( 2, 8 ) ref -> rdx "argument with side effect" ; V19 PSPSym [V19 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 56 G_M18650_IG01: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 56 lea rbp, [rsp+60H] mov qword ptr [rbp-40H], rsp mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 8.50 G_M18650_IG02: mov rcx, rsi call CharacteristicObject:AssertNotFrozen():this test rdi, rdi jne SHORT G_M18650_IG05 ;; bbWeight=1 PerfScore 2.50 G_M18650_IG03: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M18650_IG04: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.25 G_M18650_IG05: mov rcx, rbx mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-30H], rax ;; bbWeight=0.50 PerfScore 2.38 G_M18650_IG06: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M18650_IG18 ;; bbWeight=0.50 PerfScore 2.88 G_M18650_IG07: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerator`1:get_Current():__Canon:this mov rbx, rax mov rcx, gword ptr [rdi+8] cmp dword ptr [rcx], ecx mov rdx, rbx call Dictionary`2:FindValue(__Canon):byref:this test rax, rax je SHORT G_M18650_IG09 ;; bbWeight=4 PerfScore 45.00 G_M18650_IG08: mov r14, gword ptr [rax] mov ecx, 1 jmp SHORT G_M18650_IG10 ;; bbWeight=2 PerfScore 8.50 G_M18650_IG09: xor r14, r14 xor ecx, ecx ;; bbWeight=2 PerfScore 1.00 G_M18650_IG10: test ecx, ecx je G_M18650_IG17 ;; bbWeight=4 PerfScore 5.00 G_M18650_IG11: mov rcx, gword ptr [rbx+16] call IntrospectionExtensions:GetTypeInfo(Type):TypeInfo mov r15, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, r15 mov rax, qword ptr [r15] mov rax, qword ptr [rax+168] call qword ptr [rax+24]Type:IsSubclassOf(Type):bool:this test al, al je SHORT G_M18650_IG16 mov rcx, rsi mov rdx, rbx call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax jne SHORT G_M18650_IG17 mov rcx, rbx mov rdx, rsi mov r8, r14 mov rax, qword ptr [rbx] mov rax, qword ptr [rax+64] call gword ptr [rax+32]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rcx, rax test rcx, rcx je SHORT G_M18650_IG14 ;; bbWeight=2 PerfScore 50.50 G_M18650_IG12: mov rdx, 0xD1FFAB1E cmp qword ptr [rcx], rdx je SHORT G_M18650_IG14 ;; bbWeight=1 PerfScore 3.25 G_M18650_IG13: mov rcx, rdx mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rcx, rax ;; bbWeight=0.48 PerfScore 0.84 G_M18650_IG14: test rcx, rcx je SHORT G_M18650_IG15 call Object:GetType():Type:this mov rcx, rax xor edx, edx mov r8d, 1 call Activator:CreateInstance(Type,bool,bool):Object mov r14, rax ;; bbWeight=2 PerfScore 8.50 G_M18650_IG15: mov rcx, rsi mov rdx, rbx mov r8, r14 call CharacteristicObject:SetValueCore(Characteristic,Object):this jmp SHORT G_M18650_IG17 ;; bbWeight=2 PerfScore 7.50 G_M18650_IG16: mov rcx, rsi mov rdx, rbx mov r8, r14 call CharacteristicObject:SetValueCore(Characteristic,Object):this ;; bbWeight=2 PerfScore 3.50 G_M18650_IG17: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne G_M18650_IG07 ;; bbWeight=4 PerfScore 23.00 G_M18650_IG18: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this mov rax, rsi ;; bbWeight=0.50 PerfScore 2.38 G_M18650_IG19: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.25 G_M18650_IG20: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=0 PerfScore 0.00 G_M18650_IG21: cmp gword ptr [rbp-30H], 0 je SHORT G_M18650_IG22 mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M18650_IG22: nop ;; bbWeight=0 PerfScore 0.00 G_M18650_IG23: add rsp, 40 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 521, prolog size 30, PerfScore 231.94, (MethodHash=b121b725) for method CharacteristicObject:ApplyCore(CharacteristicObject,IEnumerable`1):CharacteristicObject:this ; ============================================================ ; Assembly listing for method d__101`1:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 8 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T01] ( 6, 5 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 4, 4 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T05] ( 2, 2 ) int -> rdi "impAppendStmt" ; V05 tmp3 [V05,T03] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V06 tmp4 [V06,T06] ( 4, 1.75) ref -> rcx ; V07 tmp5 [V07,T04] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V08 tmp6 [V08,T07] ( 4, 1.75) ref -> rcx ; ; Lcl frame size = 40 G_M27156_IG01: push rdi push rsi sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M27156_IG02: cmp dword ptr [rsi+80], -2 jne SHORT G_M27156_IG06 ;; bbWeight=1 PerfScore 3.00 G_M27156_IG03: mov edi, dword ptr [rsi+84] mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M27156_IG05 ;; bbWeight=0.50 PerfScore 3.38 G_M27156_IG04: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M27156_IG05: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this cmp eax, edi jne SHORT G_M27156_IG06 xor ecx, ecx mov dword ptr [rsi+80], ecx mov rdi, rsi jmp SHORT G_M27156_IG09 ;; bbWeight=0.50 PerfScore 3.88 G_M27156_IG06: mov rcx, qword ptr [rsi] call CORINFO_HELP_NEWSFAST mov rdi, rax xor ecx, ecx mov dword ptr [rdi+80], ecx mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M27156_IG08 ;; bbWeight=0.50 PerfScore 4.63 G_M27156_IG07: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M27156_IG08: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rdi+84], eax ;; bbWeight=0.50 PerfScore 2.00 G_M27156_IG09: mov rdx, gword ptr [rsi+56] lea rcx, bword ptr [rdi+48] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsi+40] lea rcx, bword ptr [rdi+32] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsi+24] lea rcx, bword ptr [rdi+16] call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=1 PerfScore 10.75 G_M27156_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 193, prolog size 11, PerfScore 53.30, (MethodHash=8d0695eb) for method d__101`1:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method d__101`1:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 26, 21.75) ref -> [rbp+0x10] EH do-not-enreg[] this class-hnd EH-live ; V01 loc0 [V01,T09] ( 4, 2.50) bool -> rax ; V02 loc1 [V02,T10] ( 3, 2.50) int -> rcx ; V03 loc2 [V03,T06] ( 3, 4.50) ref -> rsi class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T08] ( 3, 3 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T11] ( 3, 2.50) long -> rcx "impRuntimeLookup slot" ; V07 tmp3 [V07,T13] ( 2, 2 ) ref -> rsi class-hnd "impAppendStmt" ; V08 tmp4 [V08,T12] ( 3, 2 ) long -> rdx "spilling Runtime Lookup tree" ; V09 tmp5 [V09,T15] ( 2, 1.50) long -> rcx "impRuntimeLookup slot" ; V10 tmp6 [V10,T14] ( 2, 2 ) ref -> rsi class-hnd "impAppendStmt" ; V11 tmp7 [V11,T07] ( 4, 3 ) long -> r11 "spilling Runtime Lookup tree" ;* V12 tmp8 [V12 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V13 tmp9 [V13,T02] ( 3, 10 ) long -> rcx "impRuntimeLookup slot" ; V14 tmp10 [V14,T03] ( 2, 8 ) ref -> rsi class-hnd "impAppendStmt" ; V15 tmp11 [V15,T01] ( 4, 12 ) long -> r11 "spilling Runtime Lookup tree" ;* V16 tmp12 [V16 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V17 PSPSym [V17 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "PSPSym" ;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref "optAddCopies" ; V19 cse0 [V19,T05] ( 3, 5 ) long -> r11 "CSE - aggressive" ; V20 cse1 [V20,T16] ( 3, 1.25) long -> rdx "CSE - moderate" ; V21 cse2 [V21,T17] ( 3, 1.25) long -> r11 "CSE - moderate" ; V22 cse3 [V22,T04] ( 5, 5.50) long -> rdi "CSE - aggressive" ; ; Lcl frame size = 56 G_M38527_IG01: push rbp push rdi push rsi push rbx sub rsp, 56 lea rbp, [rsp+50H] mov qword ptr [rbp-30H], rsp mov qword ptr [rbp-20H], rcx mov gword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 7.75 G_M38527_IG02: mov rcx, gword ptr [rbp+10H] mov ecx, dword ptr [rcx+80] test ecx, ecx je SHORT G_M38527_IG04 ;; bbWeight=1 PerfScore 4.25 G_M38527_IG03: cmp ecx, 1 je G_M38527_IG16 xor eax, eax jmp G_M38527_IG21 ;; bbWeight=0.50 PerfScore 1.75 G_M38527_IG04: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+80], -1 mov rcx, gword ptr [rbp+10H] mov rsi, gword ptr [rcx+16] mov rcx, gword ptr [rbp+10H] mov rcx, qword ptr [rcx] mov rdx, qword ptr [rcx+48] mov rdi, qword ptr [rdx] mov rdx, qword ptr [rdi+16] test rdx, rdx je SHORT G_M38527_IG06 ;; bbWeight=0.50 PerfScore 7.63 G_M38527_IG05: jmp SHORT G_M38527_IG07 ;; bbWeight=0.25 PerfScore 0.50 G_M38527_IG06: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdx, rax ;; bbWeight=0.25 PerfScore 0.38 G_M38527_IG07: mov rcx, rdx call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, rbx mov rdx, rsi call Set`1:.ctor(IEqualityComparer`1):this mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+64] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+64] mov rdx, gword ptr [rbp+10H] mov rdx, gword ptr [rdx+32] cmp dword ptr [rcx], ecx call Set`1:UnionWith(IEnumerable`1):this mov rcx, gword ptr [rbp+10H] mov rsi, gword ptr [rcx+48] mov rcx, gword ptr [rbp+10H] mov rcx, qword ptr [rcx] mov r11, qword ptr [rdi+24] test r11, r11 je SHORT G_M38527_IG09 ;; bbWeight=0.50 PerfScore 12.00 G_M38527_IG08: jmp SHORT G_M38527_IG10 ;; bbWeight=0.25 PerfScore 0.50 G_M38527_IG09: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=0.25 PerfScore 0.38 G_M38527_IG10: mov rcx, rsi call gword ptr [r11] mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+72] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+80], -3 mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+72] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M38527_IG18 ;; bbWeight=0.50 PerfScore 7.88 G_M38527_IG11: mov rcx, gword ptr [rbp+10H] mov rsi, gword ptr [rcx+72] mov rcx, gword ptr [rbp+10H] mov rcx, qword ptr [rcx] mov rdx, qword ptr [rcx+48] mov rdi, qword ptr [rdx] mov r11, qword ptr [rdi+32] test r11, r11 je SHORT G_M38527_IG13 ;; bbWeight=2 PerfScore 26.50 G_M38527_IG12: jmp SHORT G_M38527_IG14 ;; bbWeight=1 PerfScore 2.00 G_M38527_IG13: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax ;; bbWeight=1 PerfScore 1.50 G_M38527_IG14: mov rcx, rsi call gword ptr [r11] mov rsi, rax mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+64] mov rdx, rsi cmp dword ptr [rcx], ecx call Set`1:Remove(__Canon):bool:this test eax, eax je SHORT G_M38527_IG17 ;; bbWeight=2 PerfScore 22.00 G_M38527_IG15: mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+80], 1 mov eax, 1 jmp SHORT G_M38527_IG21 ;; bbWeight=0.50 PerfScore 3.50 G_M38527_IG16: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+80], -3 ;; bbWeight=0.50 PerfScore 1.00 G_M38527_IG17: mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+72] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne G_M38527_IG11 ;; bbWeight=4 PerfScore 31.00 G_M38527_IG18: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+80], -1 mov rcx, gword ptr [rbp+10H] cmp gword ptr [rcx+72], 0 je SHORT G_M38527_IG20 ;; bbWeight=0.50 PerfScore 3.00 G_M38527_IG19: mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+72] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0.25 PerfScore 1.63 G_M38527_IG20: mov rax, gword ptr [rbp+10H] xor rcx, rcx mov gword ptr [rax+72], rcx xor eax, eax ;; bbWeight=0.50 PerfScore 1.25 G_M38527_IG21: lea rsp, [rbp-18H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.50 G_M38527_IG22: push rbp push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=0 PerfScore 0.00 G_M38527_IG23: mov rcx, gword ptr [rbp+10H] mov rax, 0xD1FFAB1E call qword ptr [rax]d__101`1:System.IDisposable.Dispose():this nop ;; bbWeight=0 PerfScore 0.00 G_M38527_IG24: add rsp, 40 pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 575, prolog size 25, PerfScore 197.38, (MethodHash=40b26980) for method d__101`1:MoveNext():bool:this ; ============================================================ ; Assembly listing for method <>c:b__23_2(Characteristic):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M16142_IG01: ;; bbWeight=1 PerfScore 0.00 G_M16142_IG02: cmp byte ptr [rdx+40], 0 sete al movzx rax, al ;; bbWeight=1 PerfScore 3.25 G_M16142_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 11, prolog size 0, PerfScore 5.35, (MethodHash=9b7fc0f1) for method <>c:b__23_2(Characteristic):bool:this ; ============================================================ ; Assembly listing for method Set`1:Remove(__Canon):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 12, 18 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T13] ( 4, 5 ) ref -> rdi class-hnd ; V02 loc0 [V02,T15] ( 3, 6 ) int -> rbx ; V03 loc1 [V03,T17] ( 5, 4 ) int -> rbp ; V04 loc2 [V04,T06] ( 6, 10.50) int -> r14 ; V05 loc3 [V05,T00] ( 11, 24 ) int -> r15 ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T08] ( 3, 10 ) long -> rcx "impRuntimeLookup slot" ; V08 tmp2 [V08,T09] ( 2, 8 ) ref -> r13 class-hnd "impAppendStmt" ; V09 tmp3 [V09,T10] ( 2, 8 ) ref -> [rsp+0x28] class-hnd "impAppendStmt" ; V10 tmp4 [V10,T05] ( 4, 12 ) long -> r11 "spilling Runtime Lookup tree" ;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V12 tmp6 [V12,T20] ( 3, 3 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" ; V13 tmp7 [V13,T28] ( 2, 2 ) int -> r9 "Strict ordering of exceptions for Array store" ; V14 tmp8 [V14,T14] ( 3, 6 ) ref -> rcx "arr expr" ; V15 tmp9 [V15,T01] ( 3, 24 ) ref -> rdx "arr expr" ; V16 tmp10 [V16,T11] ( 2, 8 ) ref -> rcx "arr expr" ; V17 tmp11 [V17,T21] ( 3, 3 ) ref -> rcx "arr expr" ; V18 tmp12 [V18,T22] ( 3, 3 ) ref -> rax "arr expr" ; V19 tmp13 [V19,T26] ( 2, 2 ) ref -> rcx "arr expr" ;* V20 tmp14 [V20,T29] ( 0, 0 ) ref -> zero-ref "arr expr" ; V21 tmp15 [V21,T27] ( 2, 2 ) ref -> rdx "arr expr" ; V22 tmp16 [V22,T23] ( 3, 3 ) ref -> rax "arr expr" ; V23 tmp17 [V23,T02] ( 3, 24 ) ref -> rax "arr expr" ; V24 cse0 [V24,T25] ( 5, 2.50) byref -> rcx "CSE - moderate" ; V25 cse1 [V25,T16] ( 3, 5 ) long -> r11 "CSE - moderate" ; V26 cse2 [V26,T04] ( 8, 16 ) long -> r12 "CSE - aggressive" ; V27 cse3 [V27,T07] ( 3, 10 ) ref -> rcx "CSE - aggressive" ; V28 cse4 [V28,T18] ( 6, 3 ) ref -> rdx "CSE - moderate" ; V29 cse5 [V29,T24] ( 3, 3 ) ref -> rcx "CSE - moderate" ; V30 cse6 [V30,T12] ( 2, 8 ) int -> rax "CSE - aggressive" ; V31 cse7 [V31,T19] ( 6, 3 ) int -> r8 "CSE - moderate" ; ; Lcl frame size = 56 G_M11281_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+30H], rcx mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 9.75 G_M11281_IG02: mov rcx, rsi mov rdx, rdi call Set`1:InternalGetHashCode(__Canon):int:this mov ebx, eax mov rcx, gword ptr [rsi+16] mov eax, ebx cdq idiv edx:eax, dword ptr [rcx+8] mov ebp, edx mov r14d, -1 cmp ebp, dword ptr [rcx+8] jae G_M11281_IG15 movsxd rdx, ebp mov r15d, dword ptr [rcx+4*rdx+16] dec r15d test r15d, r15d jl G_M11281_IG09 ;; bbWeight=1 PerfScore 38.25 G_M11281_IG03: mov rcx, gword ptr [rsi+24] mov rdx, rcx mov eax, dword ptr [rdx+8] cmp r15d, eax jae G_M11281_IG15 movsxd r12, r15d shl r12, 4 cmp dword ptr [rdx+r12+24], ebx jne SHORT G_M11281_IG08 ;; bbWeight=4 PerfScore 43.00 G_M11281_IG04: mov r13, gword ptr [rsi+8] mov rax, gword ptr [rcx+r12+16] mov gword ptr [rsp+28H], rax mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx] mov r11, qword ptr [rdx+48] test r11, r11 je SHORT G_M11281_IG06 ;; bbWeight=2 PerfScore 28.50 G_M11281_IG05: mov rax, gword ptr [rsp+28H] jmp SHORT G_M11281_IG07 ;; bbWeight=1 PerfScore 3.00 G_M11281_IG06: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r11, rax mov rax, gword ptr [rsp+28H] ;; bbWeight=1 PerfScore 2.50 G_M11281_IG07: mov rcx, r13 mov rdx, rax mov r8, rdi call qword ptr [r11] test eax, eax jne SHORT G_M11281_IG11 ;; bbWeight=2 PerfScore 10.00 G_M11281_IG08: mov r14d, r15d mov rax, gword ptr [rsi+24] cmp r14d, dword ptr [rax+8] jae G_M11281_IG15 mov r15d, dword ptr [rax+r12+28] test r15d, r15d jge G_M11281_IG03 ;; bbWeight=4 PerfScore 34.00 G_M11281_IG09: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M11281_IG10: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M11281_IG11: test r14d, r14d jge SHORT G_M11281_IG12 mov rax, gword ptr [rsi+16] mov rdx, gword ptr [rsi+24] mov rcx, rdx mov r8d, dword ptr [rcx+8] cmp r15d, r8d jae G_M11281_IG15 lea rcx, bword ptr [rcx+r12+16] mov r9d, dword ptr [rcx+12] inc r9d cmp ebp, dword ptr [rax+8] jae SHORT G_M11281_IG15 movsxd r10, ebp mov dword ptr [rax+4*r10+16], r9d jmp SHORT G_M11281_IG13 ;; bbWeight=0.50 PerfScore 9.13 G_M11281_IG12: mov rdx, gword ptr [rsi+24] mov rax, rdx mov r8d, dword ptr [rax+8] cmp r14d, r8d jae SHORT G_M11281_IG15 movsxd r9, r14d shl r9, 4 mov rcx, rdx cmp r15d, r8d jae SHORT G_M11281_IG15 lea rcx, bword ptr [rcx+r12+16] mov r10d, dword ptr [rcx+12] mov dword ptr [rax+r9+28], r10d ;; bbWeight=0.50 PerfScore 6.63 G_M11281_IG13: mov dword ptr [rcx+8], -1 cmp r15d, r8d jae SHORT G_M11281_IG15 xor eax, eax mov qword ptr [rdx+r12+16], rax mov rax, gword ptr [rsi+24] cmp r15d, dword ptr [rax+8] jae SHORT G_M11281_IG15 mov dword ptr [rax+r12+28], -1 mov eax, 1 ;; bbWeight=0.50 PerfScore 4.88 G_M11281_IG14: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M11281_IG15: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 416, prolog size 27, PerfScore 236.60, (MethodHash=60dad3ee) for method Set`1:Remove(__Canon):bool:this ; ============================================================ ; Assembly listing for method d__101`1:System.Collections.Generic.IEnumerator.get_Current():__Canon:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M44501_IG01: ;; bbWeight=1 PerfScore 0.00 G_M44501_IG02: mov rax, gword ptr [rcx+8] ;; bbWeight=1 PerfScore 2.00 G_M44501_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=54ae522a) for method d__101`1:System.Collections.Generic.IEnumerator.get_Current():__Canon:this ; ============================================================ ; Assembly listing for method CharacteristicObject:HasValue(Characteristic):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 loc0 [V02 ] ( 2, 1.50) ref -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M31757_IG01: sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax ;; bbWeight=1 PerfScore 1.50 G_M31757_IG02: mov rcx, gword ptr [rcx+8] lea r8, [rsp+20H] mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:TryGetValue(__Canon,byref):bool:this test eax, eax je SHORT G_M31757_IG05 ;; bbWeight=1 PerfScore 9.00 G_M31757_IG03: mov rax, gword ptr [rsp+20H] mov rdx, 0xD1FFAB1E cmp rax, gword ptr [rdx] setne al movzx rax, al ;; bbWeight=0.50 PerfScore 2.25 G_M31757_IG04: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M31757_IG05: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M31757_IG06: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 74, prolog size 11, PerfScore 21.53, (MethodHash=c59283f2) for method CharacteristicObject:HasValue(Characteristic):bool:this ; ============================================================ ; Assembly listing for method d__101`1:System.IDisposable.Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4.25) ref -> rcx this class-hnd ; V01 loc0 [V01,T01] ( 3, 2.50) int -> r11 ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M62846_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M62846_IG02: mov r11d, dword ptr [rcx+80] cmp r11d, -3 je SHORT G_M62846_IG04 ;; bbWeight=1 PerfScore 3.25 G_M62846_IG03: cmp r11d, 1 jne SHORT G_M62846_IG06 ;; bbWeight=0.50 PerfScore 0.63 G_M62846_IG04: mov dword ptr [rcx+80], -1 cmp gword ptr [rcx+72], 0 je SHORT G_M62846_IG06 ;; bbWeight=0.50 PerfScore 2.00 G_M62846_IG05: mov rcx, gword ptr [rcx+72] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0.25 PerfScore 1.38 G_M62846_IG06: nop ;; bbWeight=1 PerfScore 0.25 G_M62846_IG07: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 66, prolog size 4, PerfScore 15.60, (MethodHash=db730a81) for method d__101`1:System.IDisposable.Dispose():this ; ============================================================ ; Assembly listing for method Guid:Parse(String):Guid ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T01] ( 4, 4 ) byref -> rsi ; V01 arg0 [V01,T00] ( 5, 5 ) ref -> rdx class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V05 tmp2 [V05,T14] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V09 tmp6 [V09,T03] ( 2, 4 ) byref -> rcx "Inlining Arg" ;* V10 tmp7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V11 tmp8 [V11,T04] ( 2, 4 ) int -> rdx "Inlining Arg" ; V12 tmp9 [V12 ] ( 4, 4 ) struct (24) [rsp+0x38] do-not-enreg[XSFB] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V14 tmp11 [V14 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ;* V15 tmp12 [V15 ] ( 0, 0 ) byref -> zero-ref V02._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ;* V16 tmp13 [V16 ] ( 0, 0 ) int -> zero-ref V02._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V17 tmp14 [V17,T05] ( 2, 2 ) byref -> rcx V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ; V18 tmp15 [V18,T10] ( 2, 2 ) int -> rdx V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V19 tmp16 [V19,T06] ( 2, 2 ) byref -> rcx V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V20 tmp17 [V20,T11] ( 2, 2 ) int -> rdx V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V21 tmp18 [V21,T07] ( 2, 2 ) byref -> rcx V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V22 tmp19 [V22,T12] ( 2, 2 ) int -> rdx V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ;* V23 tmp20 [V23 ] ( 0, 0 ) byref -> zero-ref V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ; V25 tmp22 [V25,T08] ( 2, 2 ) byref -> rcx V10._value(offs=0x00) P-INDEP "field V10._value (fldOffset=0x0)" ; V26 tmp23 [V26,T09] ( 2, 2 ) byref -> rcx V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ; V27 tmp24 [V27,T13] ( 2, 2 ) int -> rdx V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V28 tmp25 [V28,T15] ( 2, 0 ) ref -> rdx "argument with side effect" ; V29 tmp26 [V29 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V30 tmp27 [V30,T02] ( 3, 6 ) byref -> rax stack-byref "BlockOp address local" ; ; Lcl frame size = 80 G_M11451_IG01: push rsi sub rsp, 80 vzeroupper xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 3.75 G_M11451_IG02: test rdx, rdx je SHORT G_M11451_IG05 ;; bbWeight=1 PerfScore 1.25 G_M11451_IG03: lea rcx, bword ptr [rdx+12] mov edx, dword ptr [rdx+8] xor eax, eax vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+38H], xmm0 mov dword ptr [rsp+48H], eax mov byte ptr [rsp+38H], 2 lea rax, bword ptr [rsp+28H] mov bword ptr [rax], rcx mov dword ptr [rax+8], edx lea rcx, bword ptr [rsp+28H] lea rdx, [rsp+38H] call Guid:TryParseGuid(ReadOnlySpan`1,byref):bool vmovdqu xmm0, xmmword ptr [rsp+3CH] vmovdqu xmmword ptr [rsi], xmm0 mov rax, rsi ;; bbWeight=1 PerfScore 12.83 G_M11451_IG04: add rsp, 80 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M11451_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x258A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 154, prolog size 15, PerfScore 35.38, (MethodHash=9979d344) for method Guid:Parse(String):Guid ; ============================================================ ; Assembly listing for method Guid:TryParseGuid(ReadOnlySpan`1,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 11, 16 ) byref -> rsi ld-addr-op ; V01 arg1 [V01,T01] ( 8, 5 ) byref -> rdi ; V02 loc0 [V02,T05] ( 4, 2 ) bool -> rax ; V03 loc1 [V03,T06] ( 3, 1.50) ushort -> rdx ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T07] ( 3, 1.50) int -> rax ; V06 tmp2 [V06,T08] ( 3, 1.50) int -> rax ; V07 tmp3 [V07,T11] ( 2, 1 ) bool -> rax "Inline return value spill temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V09 tmp5 [V09,T15] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V10 tmp6 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V13 tmp9 [V13,T16] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V17 tmp13 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V21 tmp17 [V21,T12] ( 2, 1 ) bool -> rax "Inline return value spill temp" ;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V23 tmp19 [V23,T17] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V27 tmp23 [V27,T18] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V30 tmp26 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V31 tmp27 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V32 tmp28 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V33 tmp29 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V34 tmp30 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V35 tmp31 [V35 ] ( 0, 0 ) byref -> zero-ref do-not-enreg[] V53._pointer(offs=0x00) P-DEP "field V00._pointer (fldOffset=0x0)" ;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] V53._length(offs=0x08) P-DEP "field V00._length (fldOffset=0x8)" ; V37 tmp33 [V37,T09] ( 2, 1 ) byref -> rcx V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ; V38 tmp34 [V38,T13] ( 2, 1 ) int -> r8 V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ;* V39 tmp35 [V39 ] ( 0, 0 ) byref -> zero-ref V16._pointer(offs=0x00) P-INDEP "field V16._pointer (fldOffset=0x0)" ;* V40 tmp36 [V40 ] ( 0, 0 ) int -> zero-ref V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)" ;* V41 tmp37 [V41 ] ( 0, 0 ) byref -> zero-ref V18._pointer(offs=0x00) P-INDEP "field V18._pointer (fldOffset=0x0)" ;* V42 tmp38 [V42 ] ( 0, 0 ) int -> zero-ref V18._length(offs=0x08) P-INDEP "field V18._length (fldOffset=0x8)" ;* V43 tmp39 [V43 ] ( 0, 0 ) byref -> zero-ref V20._pointer(offs=0x00) P-INDEP "field V20._pointer (fldOffset=0x0)" ;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref V20._length(offs=0x08) P-INDEP "field V20._length (fldOffset=0x8)" ; V45 tmp41 [V45,T10] ( 2, 1 ) byref -> rcx V22._pointer(offs=0x00) P-INDEP "field V22._pointer (fldOffset=0x0)" ; V46 tmp42 [V46,T14] ( 2, 1 ) int -> r8 V22._length(offs=0x08) P-INDEP "field V22._length (fldOffset=0x8)" ;* V47 tmp43 [V47 ] ( 0, 0 ) byref -> zero-ref V30._pointer(offs=0x00) P-INDEP "field V30._pointer (fldOffset=0x0)" ;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref V30._length(offs=0x08) P-INDEP "field V30._length (fldOffset=0x8)" ;* V49 tmp45 [V49 ] ( 0, 0 ) byref -> zero-ref V32._pointer(offs=0x00) P-INDEP "field V32._pointer (fldOffset=0x0)" ;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref V32._length(offs=0x08) P-INDEP "field V32._length (fldOffset=0x8)" ;* V51 tmp47 [V51 ] ( 0, 0 ) byref -> zero-ref V34._pointer(offs=0x00) P-INDEP "field V34._pointer (fldOffset=0x0)" ;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref V34._length(offs=0x08) P-INDEP "field V34._length (fldOffset=0x8)" ;* V53 tmp49 [V53 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Promoted implicit byref" ; V54 tmp50 [V54 ] ( 12, 14 ) struct (16) [rsp+0x28] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V55 tmp51 [V55,T02] ( 2, 4 ) byref -> rcx "argument with side effect" ; V56 cse0 [V56,T03] ( 5, 3.50) int -> r8 "CSE - aggressive" ; V57 cse1 [V57,T04] ( 4, 2 ) byref -> rcx "CSE - moderate" ; ; Lcl frame size = 56 G_M49922_IG01: push rdi push rsi sub rsp, 56 vzeroupper mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M49922_IG02: mov rcx, rsi ;; bbWeight=1 PerfScore 0.25 G_M49922_IG03: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rsp+28H], xmm0 ;; bbWeight=1 PerfScore 3.00 G_M49922_IG04: lea rdx, bword ptr [rsp+28H] call MemoryExtensions:Trim(ReadOnlySpan`1):ReadOnlySpan`1 mov r8d, dword ptr [rsi+8] test r8d, r8d jne SHORT G_M49922_IG07 ;; bbWeight=1 PerfScore 4.75 G_M49922_IG05: mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, rdi xor edx, edx call GuidResult:SetFailure(bool,String):this xor eax, eax ;; bbWeight=0.50 PerfScore 2.00 G_M49922_IG06: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M49922_IG07: cmp r8d, 0 jbe G_M49922_IG23 mov rcx, bword ptr [rsi] movzx rdx, word ptr [rcx] cmp edx, 40 je SHORT G_M49922_IG08 cmp edx, 123 je SHORT G_M49922_IG10 jmp SHORT G_M49922_IG16 ;; bbWeight=0.50 PerfScore 4.88 G_M49922_IG08: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rsp+28H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M49922_IG09: lea rcx, bword ptr [rsp+28H] mov rdx, rdi call Guid:TryParseExactP(ReadOnlySpan`1,byref):bool jmp G_M49922_IG22 ;; bbWeight=0.50 PerfScore 1.88 G_M49922_IG10: mov edx, 45 call SpanHelpers:Contains(byref,ushort,int):bool test eax, eax jne SHORT G_M49922_IG13 ;; bbWeight=0.50 PerfScore 1.25 G_M49922_IG11: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rsp+28H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M49922_IG12: lea rcx, bword ptr [rsp+28H] mov rdx, rdi call Guid:TryParseExactX(ReadOnlySpan`1,byref):bool jmp SHORT G_M49922_IG15 ;; bbWeight=0.50 PerfScore 1.88 G_M49922_IG13: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rsp+28H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M49922_IG14: lea rcx, bword ptr [rsp+28H] mov rdx, rdi call Guid:TryParseExactB(ReadOnlySpan`1,byref):bool ;; bbWeight=0.50 PerfScore 0.88 G_M49922_IG15: movzx rax, al jmp SHORT G_M49922_IG22 ;; bbWeight=0.50 PerfScore 1.13 G_M49922_IG16: mov edx, 45 call SpanHelpers:Contains(byref,ushort,int):bool test eax, eax jne SHORT G_M49922_IG19 ;; bbWeight=0.50 PerfScore 1.25 G_M49922_IG17: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rsp+28H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M49922_IG18: lea rcx, bword ptr [rsp+28H] mov rdx, rdi call Guid:TryParseExactN(ReadOnlySpan`1,byref):bool jmp SHORT G_M49922_IG21 ;; bbWeight=0.50 PerfScore 1.88 G_M49922_IG19: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rsp+28H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M49922_IG20: lea rcx, bword ptr [rsp+28H] mov rdx, rdi call Guid:TryParseExactD(ReadOnlySpan`1,byref):bool ;; bbWeight=0.50 PerfScore 0.88 G_M49922_IG21: movzx rax, al ;; bbWeight=0.50 PerfScore 0.13 G_M49922_IG22: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M49922_IG23: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 280, prolog size 9, PerfScore 68.70, (MethodHash=31fc3cfd) for method Guid:TryParseGuid(ReadOnlySpan`1,byref):bool ; ============================================================ ; Assembly listing for method MemoryExtensions:Trim(ReadOnlySpan`1):ReadOnlySpan`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T09] ( 5, 5 ) byref -> rsi ; V01 arg0 [V01,T05] ( 4, 8 ) byref -> rdx ld-addr-op ; V02 loc0 [V02,T02] ( 10, 25 ) int -> rbp ; V03 loc1 [V03,T03] ( 8, 23 ) int -> r14 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T07] ( 4, 8 ) bool -> r14 "Inline return value spill temp" ; V06 tmp2 [V06,T00] ( 5, 28 ) ushort -> rcx "Inlining Arg" ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V13 tmp9 [V13,T08] ( 4, 8 ) bool -> r15 "Inline return value spill temp" ; V14 tmp10 [V14,T01] ( 5, 28 ) ushort -> rcx "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V17 tmp13 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V20 tmp16 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V21 tmp17 [V21,T10] ( 3, 6 ) int -> rax "Inlining Arg" ;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V23 tmp19 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V25 tmp21 [V25 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V26 tmp22 [V26,T06] ( 4, 10 ) byref -> rdi V51._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ; V27 tmp23 [V27,T04] ( 6, 12 ) int -> rbx V51._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ;* V30 tmp26 [V30 ] ( 0, 0 ) byref -> zero-ref V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ;* V31 tmp27 [V31 ] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ;* V32 tmp28 [V32 ] ( 0, 0 ) byref -> zero-ref V09._value(offs=0x00) P-INDEP "field V09._value (fldOffset=0x0)" ;* V33 tmp29 [V33 ] ( 0, 0 ) byref -> zero-ref V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ;* V34 tmp30 [V34 ] ( 0, 0 ) int -> zero-ref V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ;* V35 tmp31 [V35 ] ( 0, 0 ) byref -> zero-ref V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ;* V37 tmp33 [V37 ] ( 0, 0 ) byref -> zero-ref V12._value(offs=0x00) P-INDEP "field V12._value (fldOffset=0x0)" ;* V38 tmp34 [V38 ] ( 0, 0 ) byref -> zero-ref V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ;* V40 tmp36 [V40 ] ( 0, 0 ) byref -> zero-ref V16._pointer(offs=0x00) P-INDEP "field V16._pointer (fldOffset=0x0)" ;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)" ;* V42 tmp38 [V42 ] ( 0, 0 ) byref -> zero-ref V17._value(offs=0x00) P-INDEP "field V17._value (fldOffset=0x0)" ;* V43 tmp39 [V43 ] ( 0, 0 ) byref -> zero-ref V18._pointer(offs=0x00) P-INDEP "field V18._pointer (fldOffset=0x0)" ;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref V18._length(offs=0x08) P-INDEP "field V18._length (fldOffset=0x8)" ;* V45 tmp41 [V45 ] ( 0, 0 ) byref -> zero-ref V19._pointer(offs=0x00) P-INDEP "field V19._pointer (fldOffset=0x0)" ;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)" ;* V47 tmp43 [V47 ] ( 0, 0 ) byref -> zero-ref V20._value(offs=0x00) P-INDEP "field V20._value (fldOffset=0x0)" ; V48 tmp44 [V48,T11] ( 2, 2 ) byref -> rdx V22._pointer(offs=0x00) P-INDEP "field V22._pointer (fldOffset=0x0)" ; V49 tmp45 [V49,T13] ( 2, 2 ) int -> rax V22._length(offs=0x08) P-INDEP "field V22._length (fldOffset=0x8)" ; V50 tmp46 [V50,T12] ( 2, 2 ) byref -> rdx V25._value(offs=0x00) P-INDEP "field V25._value (fldOffset=0x0)" ;* V51 tmp47 [V51 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; ; Lcl frame size = 40 G_M49426_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 6.50 G_M49426_IG02: mov rdi, bword ptr [rdx] mov ebx, dword ptr [rdx+8] ;; bbWeight=1 PerfScore 4.00 G_M49426_IG03: xor ebp, ebp test ebx, ebx jle SHORT G_M49426_IG08 ;; bbWeight=1 PerfScore 1.50 G_M49426_IG04: movsxd rcx, ebp movzx rcx, word ptr [rdi+2*rcx] cmp ecx, 256 jae SHORT G_M49426_IG06 ;; bbWeight=4 PerfScore 14.00 G_M49426_IG05: cmp ecx, 256 jae G_M49426_IG17 movsxd rcx, ecx mov rax, 0xD1FFAB1E test byte ptr [rcx+rax], 128 setne r14b movzx r14, r14b test r14d, r14d je SHORT G_M49426_IG08 jmp SHORT G_M49426_IG07 ;; bbWeight=2 PerfScore 16.50 G_M49426_IG06: call CharUnicodeInfo:GetIsWhiteSpace(ushort):bool movzx r14, al test r14d, r14d je SHORT G_M49426_IG08 ;; bbWeight=2 PerfScore 5.00 G_M49426_IG07: inc ebp cmp ebp, ebx jl SHORT G_M49426_IG04 ;; bbWeight=4 PerfScore 6.00 G_M49426_IG08: lea r14d, [rbx-1] cmp r14d, ebp jle SHORT G_M49426_IG13 ;; bbWeight=1 PerfScore 1.75 G_M49426_IG09: cmp r14d, ebx jae G_M49426_IG17 movsxd rcx, r14d movzx rcx, word ptr [rdi+2*rcx] cmp ecx, 256 jae SHORT G_M49426_IG11 ;; bbWeight=4 PerfScore 19.00 G_M49426_IG10: cmp ecx, 256 jae SHORT G_M49426_IG17 movsxd rcx, ecx mov rax, 0xD1FFAB1E test byte ptr [rcx+rax], 128 setne r15b movzx r15, r15b test r15d, r15d je SHORT G_M49426_IG13 jmp SHORT G_M49426_IG12 ;; bbWeight=2 PerfScore 16.50 G_M49426_IG11: call CharUnicodeInfo:GetIsWhiteSpace(ushort):bool movzx r15, al test r15d, r15d je SHORT G_M49426_IG13 ;; bbWeight=2 PerfScore 5.00 G_M49426_IG12: dec r14d cmp r14d, ebp jg SHORT G_M49426_IG09 ;; bbWeight=4 PerfScore 6.00 G_M49426_IG13: mov eax, r14d sub eax, ebp inc eax mov edx, ebp mov ecx, eax add rdx, rcx mov ecx, ebx cmp rdx, rcx ja SHORT G_M49426_IG16 ;; bbWeight=1 PerfScore 3.00 G_M49426_IG14: movsxd rdx, ebp lea rdx, bword ptr [rdi+2*rdx] mov bword ptr [rsi], rdx mov dword ptr [rsi+8], eax mov rax, rsi ;; bbWeight=1 PerfScore 3.00 G_M49426_IG15: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 G_M49426_IG16: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 G_M49426_IG17: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 263, prolog size 15, PerfScore 138.30, (MethodHash=60173eed) for method MemoryExtensions:Trim(ReadOnlySpan`1):ReadOnlySpan`1 ; ============================================================ ; Assembly listing for method Guid:TryParseExactD(ReadOnlySpan`1,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T02] ( 7, 4.50) byref -> rsi ; V02 loc0 [V02,T03] ( 12, 6 ) byref -> rbx ; V03 loc1 [V03 ] ( 15, 7.50) int -> [rsp+0x60] do-not-enreg[X] addr-exposed ld-addr-op ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V13 tmp9 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V14 tmp10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V16 tmp12 [V16 ] ( 2, 1 ) bool -> [rsp+0x58] do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp" ;* V17 tmp13 [V17 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V21 tmp17 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V22 tmp18 [V22 ] ( 2, 1 ) bool -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp" ;* V23 tmp19 [V23 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V27 tmp23 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V28 tmp24 [V28 ] ( 2, 1 ) bool -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp" ;* V29 tmp25 [V29 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V30 tmp26 [V30 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V31 tmp27 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V32 tmp28 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V33 tmp29 [V33 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V34 tmp30 [V34 ] ( 2, 1 ) bool -> [rsp+0x40] do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp" ;* V35 tmp31 [V35 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V36 tmp32 [V36 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V37 tmp33 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V38 tmp34 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V39 tmp35 [V39 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V40 tmp36 [V40 ] ( 2, 1 ) bool -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp" ;* V41 tmp37 [V41 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V42 tmp38 [V42 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V43 tmp39 [V43 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V44 tmp40 [V44 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V45 tmp41 [V45 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V46 tmp42 [V46 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V47 tmp43 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" ; V48 tmp44 [V48,T33] ( 2, 1 ) int -> rax "Inline return value spill temp" ;* V49 tmp45 [V49 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V50 tmp46 [V50,T01] ( 11, 6 ) byref -> rdi V96._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V51 tmp47 [V51,T11] ( 2, 2 ) int -> r8 V96._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V52 tmp48 [V52,T47] ( 0, 0 ) byref -> zero-ref V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ; V53 tmp49 [V53,T34] ( 2, 1 ) int -> rcx V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ; V54 tmp50 [V54,T12] ( 2, 1 ) byref -> rcx V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V55 tmp51 [V55,T35] ( 2, 1 ) int -> rdx V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V56 tmp52 [V56,T13] ( 2, 1 ) byref -> rcx V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V57 tmp53 [V57,T36] ( 2, 1 ) int -> rdx V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V58 tmp54 [V58,T14] ( 2, 1 ) byref -> rcx V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ; V59 tmp55 [V59,T37] ( 2, 1 ) int -> rdx V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ; V60 tmp56 [V60,T15] ( 2, 1 ) byref -> rcx V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ; V61 tmp57 [V61,T38] ( 2, 1 ) int -> rdx V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ; V62 tmp58 [V62,T16] ( 2, 1 ) byref -> rdi V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ; V63 tmp59 [V63,T39] ( 2, 1 ) int -> rbp V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ;* V64 tmp60 [V64,T48] ( 0, 0 ) byref -> zero-ref V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ;* V65 tmp61 [V65,T51] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ;* V66 tmp62 [V66,T49] ( 0, 0 ) byref -> zero-ref V14._value(offs=0x00) P-INDEP "field V14._value (fldOffset=0x0)" ;* V67 tmp63 [V67,T50] ( 0, 0 ) byref -> zero-ref V17._pointer(offs=0x00) P-INDEP "field V17._pointer (fldOffset=0x0)" ; V68 tmp64 [V68,T40] ( 2, 1 ) int -> rcx V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)" ; V69 tmp65 [V69,T17] ( 2, 1 ) byref -> rcx V18._pointer(offs=0x00) P-INDEP "field V18._pointer (fldOffset=0x0)" ;* V70 tmp66 [V70,T52] ( 0, 0 ) int -> zero-ref V18._length(offs=0x08) P-INDEP "field V18._length (fldOffset=0x8)" ; V71 tmp67 [V71,T18] ( 2, 1 ) byref -> rcx V21._value(offs=0x00) P-INDEP "field V21._value (fldOffset=0x0)" ; V72 tmp68 [V72,T19] ( 2, 1 ) byref -> rcx V23._pointer(offs=0x00) P-INDEP "field V23._pointer (fldOffset=0x0)" ; V73 tmp69 [V73,T41] ( 2, 1 ) int -> rdx V23._length(offs=0x08) P-INDEP "field V23._length (fldOffset=0x8)" ; V74 tmp70 [V74,T20] ( 2, 1 ) byref -> rcx V24._pointer(offs=0x00) P-INDEP "field V24._pointer (fldOffset=0x0)" ;* V75 tmp71 [V75,T53] ( 0, 0 ) int -> zero-ref V24._length(offs=0x08) P-INDEP "field V24._length (fldOffset=0x8)" ; V76 tmp72 [V76,T21] ( 2, 1 ) byref -> rcx V27._value(offs=0x00) P-INDEP "field V27._value (fldOffset=0x0)" ; V77 tmp73 [V77,T22] ( 2, 1 ) byref -> rcx V29._pointer(offs=0x00) P-INDEP "field V29._pointer (fldOffset=0x0)" ; V78 tmp74 [V78,T42] ( 2, 1 ) int -> rdx V29._length(offs=0x08) P-INDEP "field V29._length (fldOffset=0x8)" ; V79 tmp75 [V79,T23] ( 2, 1 ) byref -> rcx V30._pointer(offs=0x00) P-INDEP "field V30._pointer (fldOffset=0x0)" ;* V80 tmp76 [V80,T54] ( 0, 0 ) int -> zero-ref V30._length(offs=0x08) P-INDEP "field V30._length (fldOffset=0x8)" ; V81 tmp77 [V81,T24] ( 2, 1 ) byref -> rcx V33._value(offs=0x00) P-INDEP "field V33._value (fldOffset=0x0)" ; V82 tmp78 [V82,T25] ( 2, 1 ) byref -> rcx V35._pointer(offs=0x00) P-INDEP "field V35._pointer (fldOffset=0x0)" ; V83 tmp79 [V83,T43] ( 2, 1 ) int -> rdx V35._length(offs=0x08) P-INDEP "field V35._length (fldOffset=0x8)" ; V84 tmp80 [V84,T26] ( 2, 1 ) byref -> rcx V36._pointer(offs=0x00) P-INDEP "field V36._pointer (fldOffset=0x0)" ;* V85 tmp81 [V85,T55] ( 0, 0 ) int -> zero-ref V36._length(offs=0x08) P-INDEP "field V36._length (fldOffset=0x8)" ; V86 tmp82 [V86,T27] ( 2, 1 ) byref -> rcx V39._value(offs=0x00) P-INDEP "field V39._value (fldOffset=0x0)" ; V87 tmp83 [V87,T28] ( 2, 1 ) byref -> rcx V41._pointer(offs=0x00) P-INDEP "field V41._pointer (fldOffset=0x0)" ; V88 tmp84 [V88,T44] ( 2, 1 ) int -> rdx V41._length(offs=0x08) P-INDEP "field V41._length (fldOffset=0x8)" ; V89 tmp85 [V89,T29] ( 2, 1 ) byref -> rdi V42._pointer(offs=0x00) P-INDEP "field V42._pointer (fldOffset=0x0)" ;* V90 tmp86 [V90,T56] ( 0, 0 ) int -> zero-ref V42._length(offs=0x08) P-INDEP "field V42._length (fldOffset=0x8)" ; V91 tmp87 [V91,T30] ( 2, 1 ) byref -> rdi V45._value(offs=0x00) P-INDEP "field V45._value (fldOffset=0x0)" ; V92 tmp88 [V92,T31] ( 2, 1 ) byref -> rdi V46._pointer(offs=0x00) P-INDEP "field V46._pointer (fldOffset=0x0)" ; V93 tmp89 [V93,T45] ( 2, 1 ) int -> rbp V46._length(offs=0x08) P-INDEP "field V46._length (fldOffset=0x8)" ; V94 tmp90 [V94,T32] ( 2, 1 ) byref -> rdi V49._pointer(offs=0x00) P-INDEP "field V49._pointer (fldOffset=0x0)" ; V95 tmp91 [V95,T46] ( 2, 1 ) int -> rbp V49._length(offs=0x08) P-INDEP "field V49._length (fldOffset=0x8)" ;* V96 tmp92 [V96 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V97 tmp93 [V97 ] ( 12, 12 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V98 tmp94 [V98,T05] ( 3, 3 ) byref -> r8 stack-byref "BlockOp address local" ; V99 tmp95 [V99,T06] ( 3, 3 ) byref -> r8 stack-byref "BlockOp address local" ; V100 tmp96 [V100,T07] ( 3, 3 ) byref -> r8 stack-byref "BlockOp address local" ; V101 tmp97 [V101,T08] ( 3, 3 ) byref -> r8 stack-byref "BlockOp address local" ; V102 tmp98 [V102,T09] ( 3, 3 ) byref -> r8 stack-byref "BlockOp address local" ;* V103 tmp99 [V103 ] ( 0, 0 ) byref -> zero-ref stack-byref "BlockOp address local" ; V104 tmp100 [V104,T10] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ;* V105 tmp101 [V105 ] ( 0, 0 ) byref -> zero-ref stack-byref "BlockOp address local" ; V106 cse0 [V106,T04] ( 7, 3.50) long -> rbp "CSE - aggressive" ; ; Lcl frame size = 104 G_M48882_IG01: push rdi push rsi push rbp push rbx sub rsp, 104 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rdx ;; bbWeight=1 PerfScore 5.75 G_M48882_IG02: mov rdi, bword ptr [rcx] mov r8d, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M48882_IG03: cmp r8d, 36 je SHORT G_M48882_IG06 ;; bbWeight=1 PerfScore 1.25 G_M48882_IG04: mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, rsi xor edx, edx call GuidResult:SetFailure(bool,String):this xor eax, eax ;; bbWeight=0.50 PerfScore 2.00 G_M48882_IG05: add rsp, 104 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M48882_IG06: cmp word ptr [rdi+16], 45 jne SHORT G_M48882_IG07 cmp word ptr [rdi+26], 45 jne SHORT G_M48882_IG07 cmp word ptr [rdi+36], 45 jne SHORT G_M48882_IG07 cmp word ptr [rdi+46], 45 je SHORT G_M48882_IG09 ;; bbWeight=0.50 PerfScore 6.00 G_M48882_IG07: mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, rsi xor edx, edx call GuidResult:SetFailure(bool,String):this xor eax, eax ;; bbWeight=0.50 PerfScore 2.00 G_M48882_IG08: add rsp, 104 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M48882_IG09: cmp dword ptr [rsi], esi lea rbx, bword ptr [rsi+4] mov ebp, 36 cmp rbp, 8 jb G_M48882_IG19 ;; bbWeight=0.50 PerfScore 2.00 G_M48882_IG10: mov ecx, 8 xor r8d, r8d mov dword ptr [rsp+58H], r8d lea r8, bword ptr [rsp+28H] mov bword ptr [r8], rdi mov dword ptr [r8+8], ecx lea rcx, bword ptr [rsp+28H] lea r8, [rsp+58H] mov rdx, rbx call Guid:TryParseHex(ReadOnlySpan`1,byref,byref):bool test eax, eax je G_M48882_IG17 cmp rbp, 13 jb G_M48882_IG19 ;; bbWeight=0.50 PerfScore 4.38 G_M48882_IG11: lea rcx, bword ptr [rdi+18] mov edx, 4 xor r8d, r8d mov dword ptr [rsp+50H], r8d lea r8, bword ptr [rsp+28H] mov bword ptr [r8], rcx mov dword ptr [r8+8], edx lea rcx, bword ptr [rsp+28H] lea rdx, [rsp+60H] lea r8, [rsp+50H] call Guid:TryParseHex(ReadOnlySpan`1,byref,byref):bool test eax, eax je G_M48882_IG17 mov ecx, dword ptr [rsp+60H] mov word ptr [rbx+4], cx cmp rbp, 18 jb G_M48882_IG19 ;; bbWeight=0.50 PerfScore 5.75 G_M48882_IG12: lea rcx, bword ptr [rdi+28] mov edx, 4 xor r8d, r8d mov dword ptr [rsp+48H], r8d lea r8, bword ptr [rsp+28H] mov bword ptr [r8], rcx mov dword ptr [r8+8], edx lea rcx, bword ptr [rsp+28H] lea rdx, [rsp+60H] lea r8, [rsp+48H] call Guid:TryParseHex(ReadOnlySpan`1,byref,byref):bool test eax, eax je G_M48882_IG17 mov ecx, dword ptr [rsp+60H] mov word ptr [rbx+6], cx cmp rbp, 23 jb G_M48882_IG19 ;; bbWeight=0.50 PerfScore 5.75 G_M48882_IG13: lea rcx, bword ptr [rdi+38] mov edx, 4 xor r8d, r8d mov dword ptr [rsp+40H], r8d lea r8, bword ptr [rsp+28H] mov bword ptr [r8], rcx mov dword ptr [r8+8], edx lea rcx, bword ptr [rsp+28H] lea rdx, [rsp+60H] lea r8, [rsp+40H] call Guid:TryParseHex(ReadOnlySpan`1,byref,byref):bool test eax, eax je G_M48882_IG17 mov ecx, dword ptr [rsp+60H] shr ecx, 8 mov byte ptr [rbx+8], cl mov ecx, dword ptr [rsp+60H] mov byte ptr [rbx+9], cl cmp rbp, 28 jb G_M48882_IG19 ;; bbWeight=0.50 PerfScore 7.75 G_M48882_IG14: lea rcx, bword ptr [rdi+48] mov edx, 4 xor r8d, r8d mov dword ptr [rsp+38H], r8d lea r8, bword ptr [rsp+28H] mov bword ptr [r8], rcx mov dword ptr [r8+8], edx lea rcx, bword ptr [rsp+28H] lea rdx, [rsp+60H] lea r8, [rsp+38H] call Guid:TryParseHex(ReadOnlySpan`1,byref,byref):bool test eax, eax je G_M48882_IG17 mov ecx, dword ptr [rsp+60H] shr ecx, 8 mov byte ptr [rbx+10], cl mov ecx, dword ptr [rsp+60H] mov byte ptr [rbx+11], cl cmp rbp, 36 jb G_M48882_IG19 ;; bbWeight=0.50 PerfScore 7.75 G_M48882_IG15: add rdi, 56 mov ebp, 8 mov ecx, 512 call NumberFormatInfo:ValidateParseStyleInteger(int) call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo lea rcx, bword ptr [rsp+28H] mov bword ptr [rcx], rdi mov dword ptr [rcx+8], ebp lea rcx, bword ptr [rsp+28H] lea r8, [rsp+60H] mov edx, 512 call Number:TryParseUInt32HexNumberStyle(ReadOnlySpan`1,int,byref):int test eax, eax jne SHORT G_M48882_IG17 mov eax, dword ptr [rsp+60H] shr eax, 24 mov byte ptr [rbx+12], al mov eax, dword ptr [rsp+60H] shr eax, 16 mov byte ptr [rbx+13], al mov eax, dword ptr [rsp+60H] shr eax, 8 mov byte ptr [rbx+14], al mov eax, dword ptr [rsp+60H] mov byte ptr [rbx+15], al mov eax, 1 ;; bbWeight=0.50 PerfScore 11.50 G_M48882_IG16: add rsp, 104 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M48882_IG17: mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, rsi xor edx, edx call GuidResult:SetFailure(bool,String):this xor eax, eax ;; bbWeight=0.50 PerfScore 2.00 G_M48882_IG18: add rsp, 104 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M48882_IG19: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 677, prolog size 15, PerfScore 142.08, (MethodHash=3f39410d) for method Guid:TryParseExactD(ReadOnlySpan`1,byref):bool ; ============================================================ ; Assembly listing for method Guid:TryParseHex(ReadOnlySpan`1,byref,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T05] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T09] ( 4, 3 ) byref -> rdx ; V02 arg2 [V02,T10] ( 4, 3 ) byref -> r8 ; V03 loc0 [V03,T00] ( 10, 34 ) int -> r9 ; V04 loc1 [V04,T04] ( 5, 10 ) int -> r10 ; V05 loc2 [V05,T07] ( 4, 9.50) int -> r11 ; V06 loc3 [V06,T06] ( 3, 10 ) ushort -> rsi ; V07 loc4 [V07,T03] ( 3, 12 ) int -> rsi ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V10 tmp2 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V11 tmp3 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp4 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V13 tmp5 [V13,T11] ( 2, 2 ) int -> rcx "Inlining Arg" ;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V15 tmp7 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V18 tmp10 [V18,T12] ( 2, 2 ) int -> rcx "Inlining Arg" ; V19 tmp11 [V19,T08] ( 3, 8 ) int -> rsi "Inline return value spill temp" ;* V20 tmp12 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V21 tmp13 [V21 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V22 tmp14 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V23 tmp15 [V23 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V24 tmp16 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V25 tmp17 [V25,T02] ( 10, 12.50) byref -> rax V41._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V26 tmp18 [V26,T01] ( 13, 19 ) int -> rcx V41._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ; V27 tmp19 [V27,T13] ( 2, 1 ) byref -> rax V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ; V28 tmp20 [V28,T17] ( 2, 1 ) int -> rcx V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ; V29 tmp21 [V29,T14] ( 2, 1 ) byref -> rax V12._value(offs=0x00) P-INDEP "field V12._value (fldOffset=0x0)" ; V30 tmp22 [V30,T15] ( 2, 1 ) byref -> rax V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ; V31 tmp23 [V31,T18] ( 2, 1 ) int -> rcx V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ; V32 tmp24 [V32,T16] ( 2, 1 ) byref -> rax V17._value(offs=0x00) P-INDEP "field V17._value (fldOffset=0x0)" ;* V33 tmp25 [V33 ] ( 0, 0 ) byref -> zero-ref V20._pointer(offs=0x00) P-INDEP "field V20._pointer (fldOffset=0x0)" ;* V34 tmp26 [V34 ] ( 0, 0 ) int -> zero-ref V20._length(offs=0x08) P-INDEP "field V20._length (fldOffset=0x8)" ;* V35 tmp27 [V35 ] ( 0, 0 ) byref -> zero-ref V21._pointer(offs=0x00) P-INDEP "field V21._pointer (fldOffset=0x0)" ;* V36 tmp28 [V36 ] ( 0, 0 ) int -> zero-ref V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)" ;* V37 tmp29 [V37 ] ( 0, 0 ) byref -> zero-ref V22._value(offs=0x00) P-INDEP "field V22._value (fldOffset=0x0)" ;* V38 tmp30 [V38 ] ( 0, 0 ) byref -> zero-ref V23._pointer(offs=0x00) P-INDEP "field V23._pointer (fldOffset=0x0)" ;* V39 tmp31 [V39 ] ( 0, 0 ) int -> zero-ref V23._length(offs=0x08) P-INDEP "field V23._length (fldOffset=0x8)" ;* V40 tmp32 [V40 ] ( 0, 0 ) byref -> zero-ref V24._value(offs=0x00) P-INDEP "field V24._value (fldOffset=0x0)" ;* V41 tmp33 [V41 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; ; Lcl frame size = 40 G_M60174_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M60174_IG02: mov rax, bword ptr [rcx] mov ecx, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M60174_IG03: test ecx, ecx je SHORT G_M60174_IG08 ;; bbWeight=1 PerfScore 1.25 G_M60174_IG04: cmp ecx, 0 jbe G_M60174_IG25 cmp word ptr [rax], 43 jne SHORT G_M60174_IG06 cmp ecx, 1 jb G_M60174_IG24 ;; bbWeight=0.50 PerfScore 2.75 G_M60174_IG05: dec ecx add rax, 2 ;; bbWeight=0.50 PerfScore 0.25 G_M60174_IG06: cmp ecx, 1 jbe SHORT G_M60174_IG08 cmp word ptr [rax], 48 jne SHORT G_M60174_IG08 movzx r9, word ptr [rax+2] or r9d, 32 cmp r9d, 120 jne SHORT G_M60174_IG08 cmp ecx, 2 jb G_M60174_IG24 ;; bbWeight=0.50 PerfScore 4.50 G_M60174_IG07: add ecx, -2 add rax, 4 ;; bbWeight=0.50 PerfScore 0.25 G_M60174_IG08: xor r9d, r9d jmp SHORT G_M60174_IG10 ;; bbWeight=1 PerfScore 2.25 G_M60174_IG09: inc r9d ;; bbWeight=2 PerfScore 0.50 G_M60174_IG10: cmp r9d, ecx jge SHORT G_M60174_IG12 ;; bbWeight=8 PerfScore 10.00 G_M60174_IG11: movsxd r10, r9d cmp word ptr [rax+2*r10], 48 je SHORT G_M60174_IG09 ;; bbWeight=4 PerfScore 13.00 G_M60174_IG12: xor r10d, r10d xor r11d, r11d cmp r9d, ecx jge SHORT G_M60174_IG18 ;; bbWeight=1 PerfScore 1.75 G_M60174_IG13: movsxd rsi, r9d movzx rsi, word ptr [rax+2*rsi] cmp esi, 256 jge SHORT G_M60174_IG15 ;; bbWeight=4 PerfScore 14.00 G_M60174_IG14: movsxd rsi, esi mov rdi, 0xD1FFAB1E movzx rsi, byte ptr [rsi+rdi] jmp SHORT G_M60174_IG16 ;; bbWeight=2 PerfScore 9.00 G_M60174_IG15: mov esi, 255 ;; bbWeight=2 PerfScore 0.50 G_M60174_IG16: cmp esi, 255 je SHORT G_M60174_IG21 ;; bbWeight=4 PerfScore 5.00 G_M60174_IG17: shl r11d, 4 add r11d, esi inc r10d inc r9d cmp r9d, ecx jl SHORT G_M60174_IG13 ;; bbWeight=4 PerfScore 16.00 G_M60174_IG18: cmp r10d, 8 jle SHORT G_M60174_IG19 mov byte ptr [r8], 1 ;; bbWeight=0.50 PerfScore 1.13 G_M60174_IG19: mov dword ptr [rdx], r11d mov eax, 1 ;; bbWeight=0.50 PerfScore 0.63 G_M60174_IG20: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M60174_IG21: cmp r10d, 8 jle SHORT G_M60174_IG22 mov byte ptr [r8], 1 ;; bbWeight=0.50 PerfScore 1.13 G_M60174_IG22: xor eax, eax mov dword ptr [rdx], eax ;; bbWeight=0.50 PerfScore 0.63 G_M60174_IG23: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M60174_IG24: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 G_M60174_IG25: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 247, prolog size 6, PerfScore 117.70, (MethodHash=abbe14f1) for method Guid:TryParseHex(ReadOnlySpan`1,byref,byref):bool ; ============================================================ ; Assembly listing for method Number:TryParseUInt32HexNumberStyle(ReadOnlySpan`1,int,byref):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T08] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T14] ( 4, 3 ) int -> rdx ; V02 arg2 [V02,T13] ( 5, 3.50) byref -> rsi ; V03 loc0 [V03,T00] ( 31, 89 ) int -> r9 ; V04 loc1 [V04,T01] ( 26, 50.50) int -> r10 ; V05 loc2 [V05,T17] ( 3, 5 ) bool -> rdi ; V06 loc3 [V06,T09] ( 5, 13 ) int -> rbx ; V07 loc4 [V07,T16] ( 4, 2.50) int -> rax ; V08 loc5 [V08,T05] ( 4, 12.50) int -> rax ; V09 loc6 [V09,T06] ( 3, 12 ) int -> r11 ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V11 tmp1 [V11,T22] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V12 tmp2 [V12,T11] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V13 tmp3 [V13,T18] ( 2, 1 ) int -> rax "Inline return value spill temp" ;* V14 tmp4 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V15 tmp5 [V15 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V16 tmp6 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V17 tmp7 [V17 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V18 tmp8 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V19 tmp9 [V19,T19] ( 2, 1 ) int -> rax "Inline return value spill temp" ;* V20 tmp10 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V21 tmp11 [V21 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V22 tmp12 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V23 tmp13 [V23 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V24 tmp14 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V25 tmp15 [V25,T20] ( 3, 1.50) int -> rbx "Inline return value spill temp" ;* V26 tmp16 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V27 tmp17 [V27 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V28 tmp18 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V29 tmp19 [V29 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V30 tmp20 [V30 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V31 tmp21 [V31,T10] ( 3, 8 ) int -> r11 "Inline return value spill temp" ;* V32 tmp22 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V33 tmp23 [V33 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V34 tmp24 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V35 tmp25 [V35 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V36 tmp26 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V37 tmp27 [V37,T21] ( 2, 1 ) int -> rax "Inline return value spill temp" ;* V38 tmp28 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V39 tmp29 [V39 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V40 tmp30 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V41 tmp31 [V41 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V42 tmp32 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V43 tmp33 [V43,T07] ( 2, 8 ) int -> rax "Inline return value spill temp" ;* V44 tmp34 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V45 tmp35 [V45 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V46 tmp36 [V46 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V47 tmp37 [V47 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V48 tmp38 [V48 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V49 tmp39 [V49,T23] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V50 tmp40 [V50,T12] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V51 tmp41 [V51,T04] ( 3, 18 ) int -> rdx "Inlining Arg" ; V52 tmp42 [V52,T03] ( 9, 22.50) byref -> r8 V102._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V53 tmp43 [V53,T02] ( 12, 28 ) int -> rcx V102._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V54 tmp44 [V54 ] ( 0, 0 ) byref -> zero-ref V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ;* V55 tmp45 [V55 ] ( 0, 0 ) int -> zero-ref V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ;* V56 tmp46 [V56 ] ( 0, 0 ) byref -> zero-ref V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ;* V57 tmp47 [V57 ] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ;* V58 tmp48 [V58 ] ( 0, 0 ) byref -> zero-ref V16._value(offs=0x00) P-INDEP "field V16._value (fldOffset=0x0)" ;* V59 tmp49 [V59 ] ( 0, 0 ) byref -> zero-ref V17._pointer(offs=0x00) P-INDEP "field V17._pointer (fldOffset=0x0)" ;* V60 tmp50 [V60 ] ( 0, 0 ) int -> zero-ref V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)" ;* V61 tmp51 [V61 ] ( 0, 0 ) byref -> zero-ref V18._value(offs=0x00) P-INDEP "field V18._value (fldOffset=0x0)" ;* V62 tmp52 [V62 ] ( 0, 0 ) byref -> zero-ref V20._pointer(offs=0x00) P-INDEP "field V20._pointer (fldOffset=0x0)" ;* V63 tmp53 [V63 ] ( 0, 0 ) int -> zero-ref V20._length(offs=0x08) P-INDEP "field V20._length (fldOffset=0x8)" ;* V64 tmp54 [V64 ] ( 0, 0 ) byref -> zero-ref V21._pointer(offs=0x00) P-INDEP "field V21._pointer (fldOffset=0x0)" ;* V65 tmp55 [V65 ] ( 0, 0 ) int -> zero-ref V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)" ;* V66 tmp56 [V66 ] ( 0, 0 ) byref -> zero-ref V22._value(offs=0x00) P-INDEP "field V22._value (fldOffset=0x0)" ;* V67 tmp57 [V67 ] ( 0, 0 ) byref -> zero-ref V23._pointer(offs=0x00) P-INDEP "field V23._pointer (fldOffset=0x0)" ;* V68 tmp58 [V68 ] ( 0, 0 ) int -> zero-ref V23._length(offs=0x08) P-INDEP "field V23._length (fldOffset=0x8)" ;* V69 tmp59 [V69 ] ( 0, 0 ) byref -> zero-ref V24._value(offs=0x00) P-INDEP "field V24._value (fldOffset=0x0)" ;* V70 tmp60 [V70 ] ( 0, 0 ) byref -> zero-ref V26._pointer(offs=0x00) P-INDEP "field V26._pointer (fldOffset=0x0)" ;* V71 tmp61 [V71 ] ( 0, 0 ) int -> zero-ref V26._length(offs=0x08) P-INDEP "field V26._length (fldOffset=0x8)" ;* V72 tmp62 [V72 ] ( 0, 0 ) byref -> zero-ref V27._pointer(offs=0x00) P-INDEP "field V27._pointer (fldOffset=0x0)" ;* V73 tmp63 [V73 ] ( 0, 0 ) int -> zero-ref V27._length(offs=0x08) P-INDEP "field V27._length (fldOffset=0x8)" ;* V74 tmp64 [V74 ] ( 0, 0 ) byref -> zero-ref V28._value(offs=0x00) P-INDEP "field V28._value (fldOffset=0x0)" ;* V75 tmp65 [V75 ] ( 0, 0 ) byref -> zero-ref V29._pointer(offs=0x00) P-INDEP "field V29._pointer (fldOffset=0x0)" ;* V76 tmp66 [V76 ] ( 0, 0 ) int -> zero-ref V29._length(offs=0x08) P-INDEP "field V29._length (fldOffset=0x8)" ;* V77 tmp67 [V77 ] ( 0, 0 ) byref -> zero-ref V30._value(offs=0x00) P-INDEP "field V30._value (fldOffset=0x0)" ;* V78 tmp68 [V78 ] ( 0, 0 ) byref -> zero-ref V32._pointer(offs=0x00) P-INDEP "field V32._pointer (fldOffset=0x0)" ;* V79 tmp69 [V79 ] ( 0, 0 ) int -> zero-ref V32._length(offs=0x08) P-INDEP "field V32._length (fldOffset=0x8)" ;* V80 tmp70 [V80 ] ( 0, 0 ) byref -> zero-ref V33._pointer(offs=0x00) P-INDEP "field V33._pointer (fldOffset=0x0)" ;* V81 tmp71 [V81 ] ( 0, 0 ) int -> zero-ref V33._length(offs=0x08) P-INDEP "field V33._length (fldOffset=0x8)" ;* V82 tmp72 [V82 ] ( 0, 0 ) byref -> zero-ref V34._value(offs=0x00) P-INDEP "field V34._value (fldOffset=0x0)" ;* V83 tmp73 [V83 ] ( 0, 0 ) byref -> zero-ref V35._pointer(offs=0x00) P-INDEP "field V35._pointer (fldOffset=0x0)" ;* V84 tmp74 [V84 ] ( 0, 0 ) int -> zero-ref V35._length(offs=0x08) P-INDEP "field V35._length (fldOffset=0x8)" ;* V85 tmp75 [V85 ] ( 0, 0 ) byref -> zero-ref V36._value(offs=0x00) P-INDEP "field V36._value (fldOffset=0x0)" ;* V86 tmp76 [V86 ] ( 0, 0 ) byref -> zero-ref V38._pointer(offs=0x00) P-INDEP "field V38._pointer (fldOffset=0x0)" ;* V87 tmp77 [V87 ] ( 0, 0 ) int -> zero-ref V38._length(offs=0x08) P-INDEP "field V38._length (fldOffset=0x8)" ;* V88 tmp78 [V88 ] ( 0, 0 ) byref -> zero-ref V39._pointer(offs=0x00) P-INDEP "field V39._pointer (fldOffset=0x0)" ;* V89 tmp79 [V89 ] ( 0, 0 ) int -> zero-ref V39._length(offs=0x08) P-INDEP "field V39._length (fldOffset=0x8)" ;* V90 tmp80 [V90 ] ( 0, 0 ) byref -> zero-ref V40._value(offs=0x00) P-INDEP "field V40._value (fldOffset=0x0)" ;* V91 tmp81 [V91 ] ( 0, 0 ) byref -> zero-ref V41._pointer(offs=0x00) P-INDEP "field V41._pointer (fldOffset=0x0)" ;* V92 tmp82 [V92 ] ( 0, 0 ) int -> zero-ref V41._length(offs=0x08) P-INDEP "field V41._length (fldOffset=0x8)" ;* V93 tmp83 [V93 ] ( 0, 0 ) byref -> zero-ref V42._value(offs=0x00) P-INDEP "field V42._value (fldOffset=0x0)" ;* V94 tmp84 [V94 ] ( 0, 0 ) byref -> zero-ref V44._pointer(offs=0x00) P-INDEP "field V44._pointer (fldOffset=0x0)" ;* V95 tmp85 [V95 ] ( 0, 0 ) int -> zero-ref V44._length(offs=0x08) P-INDEP "field V44._length (fldOffset=0x8)" ;* V96 tmp86 [V96 ] ( 0, 0 ) byref -> zero-ref V45._pointer(offs=0x00) P-INDEP "field V45._pointer (fldOffset=0x0)" ;* V97 tmp87 [V97 ] ( 0, 0 ) int -> zero-ref V45._length(offs=0x08) P-INDEP "field V45._length (fldOffset=0x8)" ;* V98 tmp88 [V98 ] ( 0, 0 ) byref -> zero-ref V46._value(offs=0x00) P-INDEP "field V46._value (fldOffset=0x0)" ;* V99 tmp89 [V99 ] ( 0, 0 ) byref -> zero-ref V47._pointer(offs=0x00) P-INDEP "field V47._pointer (fldOffset=0x0)" ;* V100 tmp90 [V100 ] ( 0, 0 ) int -> zero-ref V47._length(offs=0x08) P-INDEP "field V47._length (fldOffset=0x8)" ;* V101 tmp91 [V101 ] ( 0, 0 ) byref -> zero-ref V48._value(offs=0x00) P-INDEP "field V48._value (fldOffset=0x0)" ;* V102 tmp92 [V102 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V103 tmp93 [V103 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V104 tmp94 [V104,T15] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; ; Lcl frame size = 56 G_M2085_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, r8 ;; bbWeight=1 PerfScore 5.75 G_M2085_IG02: mov r8, bword ptr [rcx] mov ecx, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M2085_IG03: test ecx, ecx jbe G_M2085_IG26 ;; bbWeight=1 PerfScore 1.25 G_M2085_IG04: xor r9d, r9d movzx r10, word ptr [r8] test dl, 1 je SHORT G_M2085_IG08 cmp r10d, 32 je SHORT G_M2085_IG06 ;; bbWeight=0.50 PerfScore 2.38 G_M2085_IG05: lea eax, [r10-9] cmp eax, 4 ja SHORT G_M2085_IG08 ;; bbWeight=0.25 PerfScore 0.44 G_M2085_IG06: inc r9d cmp r9d, ecx jae G_M2085_IG26 movsxd r10, r9d movzx r10, word ptr [r8+2*r10] cmp r10d, 32 je SHORT G_M2085_IG06 ;; bbWeight=4 PerfScore 20.00 G_M2085_IG07: lea eax, [r10-9] cmp eax, 4 jbe SHORT G_M2085_IG06 ;; bbWeight=2 PerfScore 3.50 G_M2085_IG08: xor edi, edi xor ebx, ebx cmp r10d, 256 jge G_M2085_IG26 ;; bbWeight=4 PerfScore 7.00 G_M2085_IG09: movsxd rax, r10d mov r11, 0xD1FFAB1E movzx rax, byte ptr [rax+r11] cmp eax, 255 je G_M2085_IG26 ;; bbWeight=0.50 PerfScore 1.88 G_M2085_IG10: cmp r10d, 48 jne SHORT G_M2085_IG13 ;; bbWeight=0.50 PerfScore 0.63 G_M2085_IG11: inc r9d cmp r9d, ecx jae G_M2085_IG24 movsxd r10, r9d movzx r10, word ptr [r8+2*r10] cmp r10d, 48 je SHORT G_M2085_IG11 ;; bbWeight=4 PerfScore 20.00 G_M2085_IG12: cmp r10d, 256 jge G_M2085_IG28 movsxd rax, r10d mov r11, 0xD1FFAB1E movzx rax, byte ptr [rax+r11] cmp eax, 255 je G_M2085_IG28 ;; bbWeight=0.50 PerfScore 2.50 G_M2085_IG13: cmp r10d, 256 jge SHORT G_M2085_IG14 movsxd r10, r10d mov rax, 0xD1FFAB1E movzx rbx, byte ptr [r10+rax] jmp SHORT G_M2085_IG15 ;; bbWeight=0.50 PerfScore 2.88 G_M2085_IG14: mov ebx, 255 ;; bbWeight=0.50 PerfScore 0.13 G_M2085_IG15: inc r9d xor eax, eax ;; bbWeight=0.50 PerfScore 0.25 G_M2085_IG16: cmp r9d, ecx jae G_M2085_IG24 movsxd r10, r9d movzx r10, word ptr [r8+2*r10] cmp r10d, 256 jge SHORT G_M2085_IG18 ;; bbWeight=4 PerfScore 19.00 G_M2085_IG17: movsxd r11, r10d mov rbp, 0xD1FFAB1E movzx r11, byte ptr [r11+rbp] jmp SHORT G_M2085_IG19 ;; bbWeight=2 PerfScore 9.00 G_M2085_IG18: mov r11d, 255 ;; bbWeight=2 PerfScore 0.50 G_M2085_IG19: cmp r11d, 255 je G_M2085_IG28 inc r9d shl ebx, 4 add ebx, r11d inc eax cmp eax, 7 jl SHORT G_M2085_IG16 ;; bbWeight=4 PerfScore 21.00 G_M2085_IG20: cmp r9d, ecx jae SHORT G_M2085_IG24 movsxd r10, r9d movzx r10, word ptr [r8+2*r10] cmp r10d, 256 jge SHORT G_M2085_IG28 movsxd rax, r10d mov r11, 0xD1FFAB1E movzx rax, byte ptr [rax+r11] cmp eax, 255 je SHORT G_M2085_IG28 ;; bbWeight=0.50 PerfScore 4.25 G_M2085_IG21: inc r9d cmp r9d, ecx jae SHORT G_M2085_IG27 movsxd r10, r9d movzx r10, word ptr [r8+2*r10] cmp r10d, 256 jge SHORT G_M2085_IG22 movsxd rax, r10d mov r11, 0xD1FFAB1E movzx rax, byte ptr [rax+r11] cmp eax, 255 jne SHORT G_M2085_IG21 ;; bbWeight=4 PerfScore 35.00 G_M2085_IG22: mov edi, 1 jmp SHORT G_M2085_IG28 ;; bbWeight=0.50 PerfScore 1.13 G_M2085_IG23: test edi, edi jne SHORT G_M2085_IG27 ;; bbWeight=0.50 PerfScore 0.63 G_M2085_IG24: mov dword ptr [rsi], ebx xor eax, eax ;; bbWeight=0.50 PerfScore 0.63 G_M2085_IG25: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M2085_IG26: xor eax, eax mov dword ptr [rsi], eax mov eax, 1 jmp SHORT G_M2085_IG25 ;; bbWeight=0.50 PerfScore 1.75 G_M2085_IG27: xor eax, eax mov dword ptr [rsi], eax mov eax, 2 jmp SHORT G_M2085_IG25 ;; bbWeight=0.50 PerfScore 1.75 G_M2085_IG28: cmp r10d, 32 je SHORT G_M2085_IG30 ;; bbWeight=0.50 PerfScore 0.63 G_M2085_IG29: add r10d, -9 cmp r10d, 4 ja SHORT G_M2085_IG35 ;; bbWeight=0.25 PerfScore 0.38 G_M2085_IG30: test dl, 2 je SHORT G_M2085_IG26 inc r9d cmp r9d, ecx jge SHORT G_M2085_IG34 ;; bbWeight=0.50 PerfScore 1.38 G_M2085_IG31: cmp r9d, ecx jae SHORT G_M2085_IG36 movsxd rdx, r9d movzx rdx, word ptr [r8+2*rdx] cmp edx, 32 je SHORT G_M2085_IG33 ;; bbWeight=4 PerfScore 19.00 G_M2085_IG32: add edx, -9 cmp edx, 4 ja SHORT G_M2085_IG34 ;; bbWeight=1 PerfScore 1.50 G_M2085_IG33: inc r9d cmp r9d, ecx jl SHORT G_M2085_IG31 ;; bbWeight=4 PerfScore 6.00 G_M2085_IG34: cmp r9d, ecx jae SHORT G_M2085_IG23 ;; bbWeight=0.50 PerfScore 0.63 G_M2085_IG35: lea rdx, bword ptr [rsp+28H] mov bword ptr [rdx], r8 mov dword ptr [rdx+8], ecx lea rcx, bword ptr [rsp+28H] mov edx, r9d call Number:TrailingZeros(ReadOnlySpan`1,int):bool test eax, eax jne G_M2085_IG23 jmp SHORT G_M2085_IG26 ;; bbWeight=0.50 PerfScore 3.75 G_M2085_IG36: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 585, prolog size 18, PerfScore 262.19, (MethodHash=3fa5f7da) for method Number:TryParseUInt32HexNumberStyle(ReadOnlySpan`1,int,byref):int ; ============================================================ ; Assembly listing for method Job:get_DisplayInfo():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T03] ( 3, 2.50) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 4 ) ref -> rcx class-hnd exact "Inlining Arg" ; V04 tmp2 [V04,T02] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ; V05 tmp3 [V05,T04] ( 2, 2 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 40 G_M23016_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M23016_IG02: mov rcx, rsi xor rdx, rdx call CharacteristicObject:ResolveId(CharacteristicObject,String):String mov rdi, rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, gword ptr [rcx+56] mov rcx, rdi call String:Equals(String,String):bool test eax, eax jne SHORT G_M23016_IG05 ;; bbWeight=1 PerfScore 8.50 G_M23016_IG03: mov rcx, rsi call Job:get_ResolvedId():String:this mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r9, 0xD1FFAB1E mov r9, gword ptr [r9] mov r8, rdi ;; bbWeight=0.50 PerfScore 3.13 G_M23016_IG04: add rsp, 40 pop rsi pop rdi jmp String:Concat(String,String,String,String):String ;; bbWeight=0.50 PerfScore 1.63 G_M23016_IG05: mov rcx, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M23016_IG06: add rsp, 40 pop rsi pop rdi jmp Job:get_ResolvedId():String:this ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 116, prolog size 6, PerfScore 29.10, (MethodHash=c426a617) for method Job:get_DisplayInfo():String:this ; ============================================================ ; Assembly listing for method CharacteristicObject:ResolveId(CharacteristicObject,String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 2.50) ref -> rdi class-hnd ; V01 arg1 [V01,T00] ( 6, 4.25) ref -> rsi class-hnd ; V02 loc0 [V02,T03] ( 4, 2 ) ref -> rax class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04,T07] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V05 tmp2 [V05,T04] ( 2, 2 ) ref -> rcx class-hnd exact "Inlining Arg" ; V06 tmp3 [V06,T05] ( 2, 2 ) ref -> rdx class-hnd "Inlining Arg" ; V07 tmp4 [V07,T06] ( 2, 2 ) ref -> rax class-hnd exact "Inlining Arg" ; V08 tmp5 [V08,T02] ( 3, 3 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 40 G_M33582_IG01: push rdi push rsi sub rsp, 40 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.75 G_M33582_IG02: test rsi, rsi je SHORT G_M33582_IG06 ;; bbWeight=1 PerfScore 1.25 G_M33582_IG03: cmp dword ptr [rsi+8], 0 jbe SHORT G_M33582_IG06 ;; bbWeight=0.25 PerfScore 0.75 G_M33582_IG04: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, gword ptr [rcx+56] mov rcx, rsi call String:Equals(String,String):bool test eax, eax jne SHORT G_M33582_IG06 mov rax, rsi ;; bbWeight=0.50 PerfScore 3.50 G_M33582_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M33582_IG06: mov rcx, 0xD1FFAB1E mov edx, 524 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, rdi mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call gword ptr [rax+32]CharacteristicSetPresenter:ToPresentation(CharacteristicObject):String:this cmp dword ptr [rax+8], 0 jne SHORT G_M33582_IG07 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] mov rax, gword ptr [rax+56] ;; bbWeight=0.50 PerfScore 9.13 G_M33582_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 138, prolog size 6, PerfScore 33.43, (MethodHash=d7fd7cd1) for method CharacteristicObject:ResolveId(CharacteristicObject,String):String ; ============================================================ ; Assembly listing for method CharacteristicSetPresenter:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd exact "NewObj constructor temp" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 64 G_M23333_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 4.08 G_M23333_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call DefaultPresenter:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] call DisplayPresenter:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-18H], rax mov rcx, gword ptr [rbp-18H] call FolderPresenter:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-18H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-20H], rax mov rcx, gword ptr [rbp-20H] call SourceCodePresenter:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-20H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 26.25 G_M23333_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 219, prolog size 24, PerfScore 54.53, (MethodHash=8e55a4da) for method CharacteristicSetPresenter:.cctor() ; ============================================================ ; Assembly listing for method DefaultPresenter:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M7790_IG01: ;; bbWeight=1 PerfScore 0.00 G_M7790_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=b678e191) for method DefaultPresenter:.ctor():this ; ============================================================ ; Assembly listing for method DisplayPresenter:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M20735_IG01: ;; bbWeight=1 PerfScore 0.00 G_M20735_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=5085af00) for method DisplayPresenter:.ctor():this ; ============================================================ ; Assembly listing for method FolderPresenter:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M57043_IG01: ;; bbWeight=1 PerfScore 0.00 G_M57043_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=307b212c) for method FolderPresenter:.ctor():this ; ============================================================ ; Assembly listing for method SourceCodePresenter:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M13333_IG01: ;; bbWeight=1 PerfScore 0.00 G_M13333_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=9089cbea) for method SourceCodePresenter:.ctor():this ; ============================================================ ; Assembly listing for method DisplayPresenter:ToPresentation(CharacteristicObject):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 loc0 [V02,T03] ( 4, 4 ) ref -> rbx class-hnd exact ; V03 loc1 [V03,T06] ( 2, 2 ) ref -> rdx class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 4 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T05] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 32 G_M28849_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M28849_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax lea rcx, bword ptr [rbx+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, gword ptr [rbx+8] mov rcx, rsi xor r8d, r8d mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+40]CharacteristicSetPresenter:GetPresentableCharacteristics(CharacteristicObject,bool):IEnumerable`1:this mov rsi, rax lea rcx, bword ptr [rdi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov r8, 0xD1FFAB1E mov qword ptr [rdi+24], r8 mov r8, rdi mov rdx, rsi mov rcx, 0xD1FFAB1E call Enumerable:Select(IEnumerable`1,Func`2):IEnumerable`1 mov rdx, rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] ;; bbWeight=1 PerfScore 21.75 G_M28849_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp String:Join(String,IEnumerable`1):String ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 159, prolog size 7, PerfScore 45.15, (MethodHash=417f8f4e) for method DisplayPresenter:ToPresentation(CharacteristicObject):String:this ; ============================================================ ; Assembly listing for method CharacteristicSetPresenter:GetPresentableCharacteristics(CharacteristicObject,bool):IEnumerable`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) bool -> rdi ; V03 loc0 [V03,T05] ( 3, 3 ) ref -> rbx class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 4 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T04] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 32 G_M33633_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rdx mov edi, r8d ;; bbWeight=1 PerfScore 3.75 G_M33633_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov byte ptr [rbx+8], dil mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rsi cmp dword ptr [rcx], ecx call CharacteristicObject:GetCharacteristicsWithValues():IEnumerable`1:this mov rsi, rax lea rcx, bword ptr [rdi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov r8, 0xD1FFAB1E mov qword ptr [rdi+24], r8 mov r8, rdi mov rdx, rsi mov rcx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 11.25 G_M33633_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 120, prolog size 7, PerfScore 30.75, (MethodHash=e3837c9e) for method CharacteristicSetPresenter:GetPresentableCharacteristics(CharacteristicObject,bool):IEnumerable`1:this ; ============================================================ ; Assembly listing for method CharacteristicObject:GetCharacteristicsWithValues():IEnumerable`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5.50) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T06] ( 2, 2 ) ref -> rdi class-hnd "dup spill" ; V04 tmp2 [V04,T07] ( 2, 2 ) ref -> rsi class-hnd "impAppendStmt" ; V05 tmp3 [V05,T09] ( 2, 1 ) ref -> rsi ; V06 tmp4 [V06,T05] ( 4, 2 ) ref -> rdi ; V07 tmp5 [V07,T01] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V08 tmp6 [V08,T02] ( 4, 4 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V09 tmp7 [V09,T08] ( 2, 2 ) ref -> rbx class-hnd "impAppendStmt" ;* V10 tmp8 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V11 tmp9 [V11,T03] ( 3, 3 ) ref -> rdx class-hnd exact "Inlining Arg" ;* V12 tmp10 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V13 tmp11 [V13,T04] ( 3, 3 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M57403_IG01: push rdi push rsi push rbx sub rsp, 48 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M57403_IG02: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+32]CharacteristicObject:get_IsPropertyBag():bool:this test eax, eax jne SHORT G_M57403_IG05 ;; bbWeight=1 PerfScore 8.50 G_M57403_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rsi call Object:GetType():Type:this mov rcx, rax call CharacteristicHelper:GetAllCharacteristics(Type):IReadOnlyList`1 mov rbx, rax lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov r8, 0xD1FFAB1E mov qword ptr [rdi+24], r8 mov r8, rdi mov rdx, rbx mov rcx, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 4.00 G_M57403_IG04: add rsp, 48 pop rbx pop rsi pop rdi jmp Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 ;; bbWeight=0.50 PerfScore 1.88 G_M57403_IG05: mov rcx, gword ptr [rsi+8] cmp dword ptr [rcx], ecx call Dictionary`2:get_Keys():KeyCollection:this mov rsi, rax mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] test rdi, rdi jne SHORT G_M57403_IG07 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je SHORT G_M57403_IG09 ;; bbWeight=0.50 PerfScore 6.88 G_M57403_IG06: lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 2.13 G_M57403_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax xor ecx, ecx mov dword ptr [rsp+20H], ecx mov gword ptr [rsp+28H], rcx mov rcx, rbx mov rdx, rsi mov r8, rdi xor r9, r9 call OrderedEnumerable`2:.ctor(IEnumerable`1,Func`2,IComparer`1,bool,OrderedEnumerable`1):this mov rax, rbx ;; bbWeight=0.50 PerfScore 3.00 G_M57403_IG08: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M57403_IG09: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 290, prolog size 7, PerfScore 60.25, (MethodHash=8ee11fc4) for method CharacteristicObject:GetCharacteristicsWithValues():IEnumerable`1:this ; ============================================================ ; Assembly listing for method WhereArrayIterator`1:Where(Func`2):IEnumerable`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 3, 4.50) long -> rcx "impRuntimeLookup slot" ; V04 tmp2 [V04,T04] ( 2, 4 ) ref -> rbx class-hnd "impAppendStmt" ; V05 tmp3 [V05,T05] ( 2, 4 ) ref -> rbp class-hnd "impAppendStmt" ; V06 tmp4 [V06,T09] ( 3, 3 ) long -> r15 "spilling Runtime Lookup tree" ; V07 tmp5 [V07,T00] ( 5, 10 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V08 tmp6 [V08,T06] ( 2, 4 ) ref -> rdi class-hnd "Inlining Arg" ; V09 tmp7 [V09,T07] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V10 tmp8 [V10,T08] ( 4, 3.25) ref -> rcx ; V11 cse0 [V11,T11] ( 3, 2.25) long -> r15 "CSE - aggressive" ; V12 cse1 [V12,T10] ( 3, 3 ) long -> r14 "CSE - aggressive" ; ; Lcl frame size = 40 G_M65431_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rcx mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 7.75 G_M65431_IG02: mov rbx, gword ptr [rsi+24] mov rbp, gword ptr [rsi+32] mov r14, qword ptr [rsi] mov rcx, r14 mov rdx, qword ptr [rcx+48] mov rdx, qword ptr [rdx+8] mov r15, qword ptr [rdx+16] test r15, r15 je SHORT G_M65431_IG04 ;; bbWeight=1 PerfScore 13.50 G_M65431_IG03: jmp SHORT G_M65431_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M65431_IG04: mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r15, rax ;; bbWeight=0.25 PerfScore 0.38 G_M65431_IG05: mov rcx, r14 call CORINFO_HELP_NEWSFAST mov r14, rax mov rcx, r15 mov rdx, rbp mov r8, rdi call Utilities:CombinePredicates(Func`2,Func`2):Func`2 mov rdi, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M65431_IG07 ;; bbWeight=1 PerfScore 8.25 G_M65431_IG06: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M65431_IG07: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [r14+16], eax lea rcx, bword ptr [r14+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r14+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, r14 ;; bbWeight=1 PerfScore 7.75 G_M65431_IG08: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 190, prolog size 17, PerfScore 61.69, (MethodHash=8e8f0068) for method WhereArrayIterator`1:Where(Func`2):IEnumerable`1:this ; ============================================================ ; Assembly listing for method Utilities:CombinePredicates(Func`2,Func`2):Func`2 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T01] ( 6, 4.50) long -> rsi ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg1 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T04] ( 4, 4 ) ref -> r14 class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T06] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ; V07 tmp3 [V07,T00] ( 4, 8 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp4 [V08,T07] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ;* V09 tmp5 [V09 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V10 cse0 [V10,T09] ( 3, 2.25) long -> rcx "CSE - aggressive" ; V11 cse1 [V11,T10] ( 3, 2.25) long -> rcx "CSE - aggressive" ; V12 cse2 [V12,T08] ( 3, 3 ) long -> rbp "CSE - aggressive" ; ; Lcl frame size = 48 G_M1686_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 mov qword ptr [rsp+28H], rcx mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 7.00 G_M1686_IG02: mov rbp, qword ptr [rsi+16] mov rcx, qword ptr [rbp+16] test rcx, rcx je SHORT G_M1686_IG04 ;; bbWeight=1 PerfScore 5.25 G_M1686_IG03: jmp SHORT G_M1686_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M1686_IG04: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M1686_IG05: call CORINFO_HELP_NEWSFAST mov r14, rax lea rcx, bword ptr [r14+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [r14+16] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, qword ptr [rbp+24] test rcx, rcx je SHORT G_M1686_IG07 ;; bbWeight=1 PerfScore 8.00 G_M1686_IG06: jmp SHORT G_M1686_IG08 ;; bbWeight=0.25 PerfScore 0.50 G_M1686_IG07: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M1686_IG08: call CORINFO_HELP_NEWSFAST mov rsi, rax lea rcx, bword ptr [rsi+8] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov rax, 0xD1FFAB1E mov qword ptr [rsi+24], rax mov rax, rsi ;; bbWeight=1 PerfScore 4.50 G_M1686_IG09: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 172, prolog size 15, PerfScore 47.58, (MethodHash=2b6df969) for method Utilities:CombinePredicates(Func`2,Func`2):Func`2 ; ============================================================ ; Assembly listing for method <>c__DisplayClass1_0`1:b__0(__Canon):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 3.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 4, 3.50) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 rat0 [V03,T00] ( 3, 6 ) ref -> rax "delegate invoke call" ; V04 rat1 [V04,T03] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 40 G_M56229_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 2.75 G_M56229_IG02: mov rax, gword ptr [rsi+8] mov rcx, gword ptr [rax+8] mov rdx, rdi call qword ptr [rax+24]Func`2:Invoke(__Canon):bool:this test eax, eax je SHORT G_M56229_IG05 ;; bbWeight=1 PerfScore 8.50 G_M56229_IG03: mov rax, gword ptr [rsi+16] mov rcx, gword ptr [rax+8] mov rdx, rdi mov rax, qword ptr [rax+24] ;; bbWeight=0.50 PerfScore 3.13 G_M56229_IG04: add rsp, 40 pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.63 G_M56229_IG05: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M56229_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 63, prolog size 6, PerfScore 23.55, (MethodHash=48f1245a) for method <>c__DisplayClass1_0`1:b__0(__Canon):bool:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass5_0:b__0(Characteristic):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rax class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M18066_IG01: mov rax, rdx ;; bbWeight=1 PerfScore 0.25 G_M18066_IG02: movzx rdx, byte ptr [rcx+8] mov rcx, rax ;; bbWeight=1 PerfScore 2.25 G_M18066_IG03: jmp CharacteristicHelper:IsPresentableCharacteristic(Characteristic,bool):bool ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 15, prolog size 3, PerfScore 6.00, (MethodHash=4826b96d) for method <>c__DisplayClass5_0:b__0(Characteristic):bool:this ; ============================================================ ; Assembly listing for method CharacteristicHelper:IsPresentableCharacteristic(Characteristic,bool):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 3, 2.50) bool -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M26391_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 2.75 G_M26391_IG02: mov rcx, gword ptr [rsi+16] call CharacteristicHelper:IsCharacteristicObjectSubclass(Type):bool test al, al jne SHORT G_M26391_IG07 ;; bbWeight=1 PerfScore 4.25 G_M26391_IG03: cmp byte ptr [rsi+41], 0 jne SHORT G_M26391_IG07 test dil, dil jne SHORT G_M26391_IG05 cmp byte ptr [rsi+40], 0 sete al movzx rax, al ;; bbWeight=0.50 PerfScore 3.75 G_M26391_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M26391_IG05: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M26391_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M26391_IG07: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M26391_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 73, prolog size 6, PerfScore 21.68, (MethodHash=5db498e8) for method CharacteristicHelper:IsPresentableCharacteristic(Characteristic,bool):bool ; ============================================================ ; Assembly listing for method <>c__DisplayClass2_0:b__0(Characteristic):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> rbx class-hnd "non-inline candidate call" ; V04 tmp2 [V04,T01] ( 3, 6 ) ref -> rcx "argument with side effect" ; V05 tmp3 [V05,T04] ( 2, 4 ) ref -> r8 "argument with side effect" ; V06 tmp4 [V06,T05] ( 2, 4 ) ref -> rbp "argument with side effect" ; ; Lcl frame size = 40 G_M55194_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 4.75 G_M55194_IG02: mov rbx, gword ptr [rsi+8] mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov edx, 0x438 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, gword ptr [rdi+8] mov r8, rsi mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call gword ptr [rax+32]CharacteristicPresenter:ToPresentation(CharacteristicObject,Characteristic):String:this mov r8, rax mov rdx, rbp mov rcx, rbx ;; bbWeight=1 PerfScore 18.00 G_M55194_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp String:Concat(String,String,String):String ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 103, prolog size 8, PerfScore 37.30, (MethodHash=d4372865) for method <>c__DisplayClass2_0:b__0(Characteristic):String:this ; ============================================================ ; Assembly listing for method DisplayPresenter:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M54240_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M54240_IG02: mov rcx, 0xD1FFAB1E mov edx, 522 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 5.25 G_M54240_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 65, prolog size 10, PerfScore 15.50, (MethodHash=87422c1f) for method DisplayPresenter:.cctor() ; ============================================================ ; Assembly listing for method CharacteristicPresenter:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd exact "NewObj constructor temp" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 64 G_M42951_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 4.08 G_M42951_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call DefaultCharacteristicPresenter:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] call FolderCharacteristicPresenter:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-18H], rax mov rcx, gword ptr [rbp-18H] call DefaultCharacteristicPresenter:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-18H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-20H], rax mov rcx, gword ptr [rbp-20H] call SourceCodeCharacteristicPresenter:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-20H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 26.25 G_M42951_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 219, prolog size 24, PerfScore 54.53, (MethodHash=6f385838) for method CharacteristicPresenter:.cctor() ; ============================================================ ; Assembly listing for method DefaultCharacteristicPresenter:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M50739_IG01: ;; bbWeight=1 PerfScore 0.00 G_M50739_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=4f4b39cc) for method DefaultCharacteristicPresenter:.ctor():this ; ============================================================ ; Assembly listing for method FolderCharacteristicPresenter:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M57038_IG01: ;; bbWeight=1 PerfScore 0.00 G_M57038_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=5be32131) for method FolderCharacteristicPresenter:.ctor():this ; ============================================================ ; Assembly listing for method SourceCodeCharacteristicPresenter:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M10888_IG01: ;; bbWeight=1 PerfScore 0.00 G_M10888_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=d101d577) for method SourceCodeCharacteristicPresenter:.ctor():this ; ============================================================ ; Assembly listing for method DefaultCharacteristicPresenter:ToPresentation(CharacteristicObject,Characteristic):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 3 ) ref -> rbx this class-hnd ; V01 arg1 [V01,T01] ( 5, 3.50) ref -> rdi class-hnd ; V02 arg2 [V02,T00] ( 7, 5 ) ref -> rsi class-hnd ; V03 loc0 [V03,T05] ( 3, 1.50) ref -> rcx class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 5, 3.74) ref -> rcx class-hnd "spilling QMark2" ; V06 tmp2 [V06,T04] ( 2, 2 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M62828_IG01: push rdi push rsi push rbx sub rsp, 32 mov rbx, rcx mov rdi, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 4.00 G_M62828_IG02: mov rcx, 0xD1FFAB1E cmp rsi, gword ptr [rcx] jne SHORT G_M62828_IG08 ;; bbWeight=1 PerfScore 3.25 G_M62828_IG03: mov rcx, rdi test rcx, rcx je SHORT G_M62828_IG06 ;; bbWeight=0.50 PerfScore 0.75 G_M62828_IG04: mov rax, 0xD1FFAB1E cmp qword ptr [rcx], rax je SHORT G_M62828_IG06 ;; bbWeight=0.25 PerfScore 0.81 G_M62828_IG05: xor rcx, rcx ;; bbWeight=0.12 PerfScore 0.03 G_M62828_IG06: test rcx, rcx je SHORT G_M62828_IG08 ;; bbWeight=0.50 PerfScore 0.63 G_M62828_IG07: add rsp, 32 pop rbx pop rsi pop rdi jmp Job:get_ResolvedId():String:this ;; bbWeight=0.50 PerfScore 1.88 G_M62828_IG08: mov rcx, rdi mov rdx, rsi cmp dword ptr [rcx], ecx call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax jne SHORT G_M62828_IG10 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 3.50 G_M62828_IG09: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M62828_IG10: cmp dword ptr [rsi], esi mov rcx, rdi mov rdx, rsi call CharacteristicObject:GetValue(Characteristic):Object:this mov rdx, rax mov rcx, rbx mov r8, rsi mov rax, qword ptr [rbx] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+40] ;; bbWeight=0.50 PerfScore 5.13 G_M62828_IG11: add rsp, 32 pop rbx pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.88 ; Total bytes of code 154, prolog size 16, PerfScore 38.62, (MethodHash=6ab80a93) for method DefaultCharacteristicPresenter:ToPresentation(CharacteristicObject,Characteristic):String:this ; ============================================================ ; Assembly listing for method Characteristic`1:ResolveValueCore(CharacteristicObject,Object):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 5, 3.50) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 4, 3 ) ref -> r8 class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T09] ( 2, 2 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T03] ( 4, 3.50) ref -> rbx "inline UNBOX clone1" ; V06 tmp3 [V06,T05] ( 3, 3 ) ref -> rbp class-hnd exact "Single-def Box Helper" ; V07 tmp4 [V07,T04] ( 4, 3.50) ref -> rdi "inline UNBOX clone1" ; V08 tmp5 [V08,T06] ( 3, 3 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V09 tmp6 [V09 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V10 tmp7 [V10,T10] ( 2, 2 ) ref -> rdi "argument with side effect" ; V11 tmp8 [V11,T11] ( 2, 2 ) byref -> rdx "argument with side effect" ; V12 tmp9 [V12,T12] ( 2, 2 ) ref -> r8 "argument with side effect" ; V13 cse0 [V13,T08] ( 3, 2.50) ref -> rdi "CSE - aggressive" ; V14 rat0 [V14,T07] ( 3, 3 ) ref -> rdi "delegate invoke call" ; ; Lcl frame size = 56 G_M41771_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 vzeroupper mov rsi, rdx ;; bbWeight=1 PerfScore 5.50 G_M41771_IG02: mov rdi, gword ptr [rcx+48] test rdi, rdi jne SHORT G_M41771_IG07 ;; bbWeight=1 PerfScore 3.25 G_M41771_IG03: mov rdx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rdi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rdi], rdx je SHORT G_M41771_IG05 ;; bbWeight=0.50 PerfScore 3.50 G_M41771_IG04: mov rdx, rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41771_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST vmovdqu xmm0, xmmword ptr [rdi+8] vmovdqu xmmword ptr [rax+8], xmm0 ;; bbWeight=0.50 PerfScore 2.13 G_M41771_IG06: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M41771_IG07: mov rdx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rbx, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rbx], rdx je SHORT G_M41771_IG09 ;; bbWeight=0.50 PerfScore 3.50 G_M41771_IG08: mov rdx, rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41771_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rdx, bword ptr [rbp+8] mov r8, rsi vmovdqu xmm0, xmmword ptr [rbx+8] vmovdqu xmmword ptr [rsp+28H], xmm0 mov rcx, gword ptr [rdi+8] lea r9, bword ptr [rsp+28H] call qword ptr [rdi+24]Func`3:Invoke(__Canon,Guid):Guid:this mov rax, rbp ;; bbWeight=0.50 PerfScore 5.50 G_M41771_IG10: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 219, prolog size 11, PerfScore 49.68, (MethodHash=f6005cd4) for method Characteristic`1:ResolveValueCore(CharacteristicObject,Object):Object:this ; ============================================================ ; Assembly listing for method DefaultCharacteristicPresenter:ToPresentation(Object,Characteristic):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 11, 6.75) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 3, 2.50) ref -> rdi class-hnd ; V03 loc0 [V03,T04] ( 3, 1.50) ref -> rax class-hnd ; V04 loc1 [V04,T05] ( 2, 1 ) long -> rcx ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T01] ( 3, 4.50) ref -> rdx class-hnd "spilling QMark2" ; V07 tmp2 [V07,T03] ( 3, 2.50) ref -> rdx class-hnd "spilling QMark2" ; ; Lcl frame size = 40 G_M14769_IG01: push rdi push rsi sub rsp, 40 mov rsi, rdx mov rdi, r8 ;; bbWeight=1 PerfScore 2.75 G_M14769_IG02: mov rdx, rsi test rdx, rdx je SHORT G_M14769_IG04 ;; bbWeight=1 PerfScore 1.50 G_M14769_IG03: mov rcx, 0xD1FFAB1E cmp qword ptr [rdx], rcx jne SHORT G_M14769_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M14769_IG04: test rsi, rsi jne SHORT G_M14769_IG07 ;; bbWeight=0.50 PerfScore 0.63 G_M14769_IG05: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFINTERFACE test rax, rax je SHORT G_M14769_IG07 mov rcx, rax ;; bbWeight=0.50 PerfScore 1.50 G_M14769_IG06: add rsp, 40 pop rsi pop rdi jmp DefaultCharacteristicPresenter:ToPresentation(IEnumerable):String ;; bbWeight=0.50 PerfScore 1.63 G_M14769_IG07: mov rdx, 0xD1FFAB1E cmp rdi, gword ptr [rdx] jne SHORT G_M14769_IG14 mov rdx, rsi test rdx, rdx je SHORT G_M14769_IG09 ;; bbWeight=0.50 PerfScore 2.38 G_M14769_IG08: mov rcx, 0xD1FFAB1E cmp qword ptr [rdx], rcx jne SHORT G_M14769_IG14 ;; bbWeight=0.25 PerfScore 0.81 G_M14769_IG09: test rsi, rsi je SHORT G_M14769_IG14 ;; bbWeight=0.50 PerfScore 0.63 G_M14769_IG10: mov rdx, 0xD1FFAB1E cmp qword ptr [rsi], rdx je SHORT G_M14769_IG12 ;; bbWeight=0.50 PerfScore 1.63 G_M14769_IG11: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M14769_IG12: mov rcx, qword ptr [rsi+8] mov edx, 12 ;; bbWeight=0.50 PerfScore 1.13 G_M14769_IG13: add rsp, 40 pop rsi pop rdi jmp ProcessExtensions:ToPresentation(long,int):String ;; bbWeight=0.50 PerfScore 1.63 G_M14769_IG14: mov rcx, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M14769_IG15: add rsp, 40 pop rsi pop rdi jmp DefaultCharacteristicPresenter:ToPresentation(Object):String ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 187, prolog size 12, PerfScore 37.83, (MethodHash=0187c64e) for method DefaultCharacteristicPresenter:ToPresentation(Object,Characteristic):String:this ; ============================================================ ; Assembly listing for method DefaultCharacteristicPresenter:ToPresentation(Object):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 4.50) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 2, 4 ) ref -> rdi class-hnd "dup spill" ; V03 tmp2 [V03,T03] ( 3, 2.50) ref -> rdi ; V04 tmp3 [V04,T04] ( 3, 2 ) ref -> rax ; V05 tmp4 [V05,T01] ( 6, 4.50) ref -> rax ; V06 tmp5 [V06,T06] ( 3, 1.50) ref -> rax ; V07 tmp6 [V07,T05] ( 2, 2 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M19324_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M19324_IG02: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFINTERFACE mov rdi, rax test rdi, rdi jne SHORT G_M19324_IG04 ;; bbWeight=1 PerfScore 3.00 G_M19324_IG03: xor rax, rax jmp SHORT G_M19324_IG05 ;; bbWeight=0.50 PerfScore 1.13 G_M19324_IG04: mov rcx, 0xD1FFAB1E mov edx, 285 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, rdi mov r11, 0xD1FFAB1E xor rdx, rdx mov rax, 0xD1FFAB1E call gword ptr [rax]IFormattable:ToString(String,IFormatProvider):String:this ;; bbWeight=0.50 PerfScore 3.88 G_M19324_IG05: test rax, rax jne SHORT G_M19324_IG09 ;; bbWeight=1 PerfScore 1.25 G_M19324_IG06: test rsi, rsi jne SHORT G_M19324_IG07 xor rax, rax jmp SHORT G_M19324_IG08 ;; bbWeight=0.50 PerfScore 1.75 G_M19324_IG07: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+8]Object:ToString():String:this ;; bbWeight=0.50 PerfScore 3.63 G_M19324_IG08: test rax, rax jne SHORT G_M19324_IG09 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.75 G_M19324_IG09: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 151, prolog size 6, PerfScore 36.23, (MethodHash=d00cb483) for method DefaultCharacteristicPresenter:ToPresentation(Object):String ; ============================================================ ; Assembly listing for method DefaultCultureInfo:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init "argument with side effect" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init "argument with side effect" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init "virtual vtable call" ; ; Lcl frame size = 64 G_M54735_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] vxorps xmm4, xmm4 vmovdqu xmmword ptr [rbp-18H], xmm4 xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 4.33 G_M54735_IG02: call CultureInfo:get_InvariantCulture():CultureInfo mov gword ptr [rbp-18H], rax mov rcx, gword ptr [rbp-18H] mov rax, gword ptr [rbp-18H] mov rax, qword ptr [rax] mov rax, qword ptr [rax+88] call gword ptr [rax]CultureInfo:Clone():Object:this mov gword ptr [rbp-08H], rax mov rdx, gword ptr [rbp-08H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTCLASS mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-18H], rcx mov rcx, gword ptr [rbp-18H] mov rax, gword ptr [rbp-18H] mov rax, qword ptr [rax] mov rax, qword ptr [rax+80] call gword ptr [rax+16]CultureInfo:get_NumberFormat():NumberFormatInfo:this mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] cmp dword ptr [rcx], ecx call NumberFormatInfo:set_NumberDecimalSeparator(String):this nop ;; bbWeight=1 PerfScore 35.50 G_M54735_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 162, prolog size 25, PerfScore 58.23, (MethodHash=788e2a30) for method DefaultCultureInfo:.cctor() ; ============================================================ ; Assembly listing for method CultureInfo:Clone():Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 17, 11.50) ref -> rsi this class-hnd ; V01 loc0 [V01,T01] ( 14, 8.50) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 3, 4.24) ref -> rax "CASTCLASS eval op1" ; V04 tmp2 [V04,T21] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V05 tmp3 [V05,T02] ( 5, 6.74) ref -> rdi class-hnd "spilling QMark2" ; V06 tmp4 [V06,T11] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V07 tmp5 [V07,T22] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V08 tmp6 [V08,T04] ( 5, 3.74) ref -> rdx class-hnd "spilling QMark2" ; V09 tmp7 [V09,T12] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V10 tmp8 [V10,T23] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V11 tmp9 [V11,T05] ( 5, 3.74) ref -> rdx class-hnd "spilling QMark2" ; V12 tmp10 [V12,T13] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V13 tmp11 [V13,T24] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V14 tmp12 [V14,T06] ( 5, 3.74) ref -> rdx class-hnd "spilling QMark2" ; V15 tmp13 [V15,T14] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V16 tmp14 [V16,T25] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V17 tmp15 [V17,T07] ( 5, 3.74) ref -> rdx class-hnd "spilling QMark2" ; V18 tmp16 [V18,T15] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V19 tmp17 [V19,T26] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V20 tmp18 [V20,T08] ( 5, 3.74) ref -> rdx class-hnd "spilling QMark2" ; V21 tmp19 [V21,T16] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V22 tmp20 [V22,T27] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V23 tmp21 [V23,T09] ( 5, 3.74) ref -> rdx class-hnd "spilling QMark2" ; V24 tmp22 [V24,T17] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V25 tmp23 [V25,T18] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ; V26 cse0 [V26,T19] ( 3, 1.50) ref -> rcx "CSE - moderate" ; V27 cse1 [V27,T20] ( 3, 1.50) ref -> rcx "CSE - moderate" ; V28 rat0 [V28,T10] ( 3, 3 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 40 G_M7483_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M7483_IG02: mov rcx, rsi call Object:MemberwiseClone():Object:this mov rdi, rax test rdi, rdi je SHORT G_M7483_IG05 ;; bbWeight=1 PerfScore 2.75 G_M7483_IG03: mov rcx, 0xD1FFAB1E cmp qword ptr [rdi], rcx je SHORT G_M7483_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M7483_IG04: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdi, rax ;; bbWeight=0.12 PerfScore 0.18 G_M7483_IG05: mov byte ptr [rdi+96], 0 cmp byte ptr [rsi+97], 0 jne G_M7483_IG14 ;; bbWeight=1 PerfScore 4.00 G_M7483_IG06: mov rcx, gword ptr [rsi+32] test rcx, rcx je SHORT G_M7483_IG10 mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]DateTimeFormatInfo:Clone():Object:this mov rdx, rax test rdx, rdx je SHORT G_M7483_IG09 ;; bbWeight=0.50 PerfScore 5.00 G_M7483_IG07: mov rcx, 0xD1FFAB1E cmp qword ptr [rdx], rcx je SHORT G_M7483_IG09 ;; bbWeight=0.25 PerfScore 0.81 G_M7483_IG08: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdx, rax ;; bbWeight=0.12 PerfScore 0.18 G_M7483_IG09: lea rcx, bword ptr [rdi+32] call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 0.75 G_M7483_IG10: mov rcx, gword ptr [rsi+24] test rcx, rcx je G_M7483_IG21 mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]NumberFormatInfo:Clone():Object:this mov rdx, rax test rdx, rdx je SHORT G_M7483_IG13 ;; bbWeight=0.50 PerfScore 5.00 G_M7483_IG11: mov rcx, 0xD1FFAB1E cmp qword ptr [rdx], rcx je SHORT G_M7483_IG13 ;; bbWeight=0.25 PerfScore 0.81 G_M7483_IG12: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdx, rax ;; bbWeight=0.12 PerfScore 0.18 G_M7483_IG13: lea rcx, bword ptr [rdi+24] call CORINFO_HELP_ASSIGN_REF jmp G_M7483_IG21 ;; bbWeight=0.50 PerfScore 1.75 G_M7483_IG14: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+80] call gword ptr [rax+32]CultureInfo:get_DateTimeFormat():DateTimeFormatInfo:this mov rcx, rax mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]DateTimeFormatInfo:Clone():Object:this mov rdx, rax test rdx, rdx je SHORT G_M7483_IG17 ;; bbWeight=0.50 PerfScore 7.13 G_M7483_IG15: mov rcx, 0xD1FFAB1E cmp qword ptr [rdx], rcx je SHORT G_M7483_IG17 ;; bbWeight=0.25 PerfScore 0.81 G_M7483_IG16: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdx, rax ;; bbWeight=0.12 PerfScore 0.18 G_M7483_IG17: mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+80] call qword ptr [rax+40]CultureInfo:set_DateTimeFormat(DateTimeFormatInfo):this mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+80] call gword ptr [rax+16]CultureInfo:get_NumberFormat():NumberFormatInfo:this mov rcx, rax mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]NumberFormatInfo:Clone():Object:this mov rdx, rax test rdx, rdx je SHORT G_M7483_IG20 ;; bbWeight=0.50 PerfScore 10.75 G_M7483_IG18: mov rcx, 0xD1FFAB1E cmp qword ptr [rdx], rcx je SHORT G_M7483_IG20 ;; bbWeight=0.25 PerfScore 0.81 G_M7483_IG19: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdx, rax ;; bbWeight=0.12 PerfScore 0.18 G_M7483_IG20: mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+80] call qword ptr [rax+24]CultureInfo:set_NumberFormat(NumberFormatInfo):this ;; bbWeight=0.50 PerfScore 3.63 G_M7483_IG21: cmp gword ptr [rsi+16], 0 je SHORT G_M7483_IG26 ;; bbWeight=1 PerfScore 3.00 G_M7483_IG22: mov rcx, gword ptr [rsi+16] mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]TextInfo:Clone():Object:this mov rdx, rax test rdx, rdx je SHORT G_M7483_IG25 ;; bbWeight=0.50 PerfScore 4.38 G_M7483_IG23: mov rcx, 0xD1FFAB1E cmp qword ptr [rdx], rcx je SHORT G_M7483_IG25 ;; bbWeight=0.25 PerfScore 0.81 G_M7483_IG24: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdx, rax ;; bbWeight=0.12 PerfScore 0.18 G_M7483_IG25: lea rcx, bword ptr [rdi+16] call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 0.75 G_M7483_IG26: cmp gword ptr [rsi+32], 0 je SHORT G_M7483_IG28 ;; bbWeight=1 PerfScore 3.00 G_M7483_IG27: mov rcx, gword ptr [rsi+32] mov rcx, gword ptr [rcx+112] cmp rcx, gword ptr [rsi+40] jne SHORT G_M7483_IG28 mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+80] call gword ptr [rax+32]CultureInfo:get_DateTimeFormat():DateTimeFormatInfo:this mov rdx, gword ptr [rax+112] lea rcx, bword ptr [rdi+40] call CORINFO_HELP_ASSIGN_REF jmp SHORT G_M7483_IG32 ;; bbWeight=0.50 PerfScore 9.88 G_M7483_IG28: cmp gword ptr [rsi+40], 0 je SHORT G_M7483_IG32 mov rcx, gword ptr [rsi+40] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+72] call gword ptr [rax+8]Calendar:Clone():Object:this mov rdx, rax test rdx, rdx je SHORT G_M7483_IG31 ;; bbWeight=0.50 PerfScore 6.75 G_M7483_IG29: mov rcx, 0xD1FFAB1E cmp qword ptr [rdx], rcx je SHORT G_M7483_IG31 ;; bbWeight=0.25 PerfScore 0.81 G_M7483_IG30: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdx, rax ;; bbWeight=0.12 PerfScore 0.18 G_M7483_IG31: lea rcx, bword ptr [rdi+40] call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 0.75 G_M7483_IG32: mov rax, rdi ;; bbWeight=1 PerfScore 0.25 G_M7483_IG33: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 551, prolog size 6, PerfScore 136.30, (MethodHash=fc49e2c4) for method CultureInfo:Clone():Object:this ; ============================================================ ; Assembly listing for method Object:MemberwiseClone():Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T01] ( 6, 5.25) ref -> rdi class-hnd ; V02 loc1 [V02,T04] ( 5, 3 ) long -> r8 ; V03 loc2 [V03,T06] ( 4, 2.50) byref -> rdx ; V04 loc3 [V04,T07] ( 4, 2.50) byref -> rax ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 4, 3.25) long -> rdx "Inline stloc first use temp" ; V07 tmp2 [V07,T08] ( 4, 2.50) long -> r8 "Inline stloc first use temp" ; V08 tmp3 [V08,T02] ( 2, 4 ) byref -> rcx "Inlining Arg" ;* V09 tmp4 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V10 tmp5 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V13 tmp8 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V14 cse0 [V14,T05] ( 3, 3 ) long -> rcx "CSE - aggressive" ; ; Lcl frame size = 40 G_M19924_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M19924_IG02: mov rcx, rsi call RuntimeHelpers:AllocateUninitializedClone(Object):Object mov rdi, rax mov rcx, qword ptr [rdi] mov rdx, rcx mov r8d, dword ptr [rdx+4] add r8, -16 test dword ptr [rdx], 0xD1FFAB1E je SHORT G_M19924_IG04 ;; bbWeight=1 PerfScore 9.00 G_M19924_IG03: mov eax, dword ptr [rdi+8] movzx rdx, word ptr [rdx] imul rdx, rax add r8, rdx ;; bbWeight=0.25 PerfScore 1.56 G_M19924_IG04: cmp dword ptr [rsi], esi lea rdx, bword ptr [rsi+8] lea rax, bword ptr [rdi+8] test dword ptr [rcx], 0xD1FFAB1E je SHORT G_M19924_IG07 ;; bbWeight=1 PerfScore 6.00 G_M19924_IG05: cmp r8, 0x4000 ja SHORT G_M19924_IG06 mov rcx, rax call Buffer:__BulkMoveWithWriteBarrier(byref,byref,long) jmp SHORT G_M19924_IG08 ;; bbWeight=0.50 PerfScore 2.25 G_M19924_IG06: mov rcx, rax call Buffer:_BulkMoveWithWriteBarrier(byref,byref,long) jmp SHORT G_M19924_IG08 ;; bbWeight=0.50 PerfScore 1.63 G_M19924_IG07: mov rcx, rax call Buffer:Memmove(byref,byref,long) ;; bbWeight=0.50 PerfScore 0.63 G_M19924_IG08: mov rax, rdi ;; bbWeight=1 PerfScore 0.25 G_M19924_IG09: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 120, prolog size 6, PerfScore 38.06, (MethodHash=35c3b22b) for method Object:MemberwiseClone():Object:this ; ============================================================ ; Assembly listing for method NumberFormatInfo:Clone():Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 4.24) ref -> rax "CASTCLASS eval op1" ; V04 tmp2 [V04,T03] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V05 tmp3 [V05,T00] ( 6, 8.74) ref -> registers class-hnd "spilling QMark2" ; ; Lcl frame size = 40 G_M28567_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M28567_IG02: call Object:MemberwiseClone():Object:this mov r8, rax test r8, r8 je SHORT G_M28567_IG05 ;; bbWeight=1 PerfScore 2.50 G_M28567_IG03: mov rcx, 0xD1FFAB1E cmp qword ptr [r8], rcx je SHORT G_M28567_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M28567_IG04: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov r8, rax ;; bbWeight=0.12 PerfScore 0.18 G_M28567_IG05: mov byte ptr [r8+188], 0 mov rax, r8 ;; bbWeight=1 PerfScore 1.25 G_M28567_IG06: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 59, prolog size 4, PerfScore 12.14, (MethodHash=cc509068) for method NumberFormatInfo:Clone():Object:this ; ============================================================ ; Assembly listing for method NumberFormatInfo:set_NumberDecimalSeparator(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M35502_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 2.75 G_M35502_IG02: mov rcx, rsi call NumberFormatInfo:VerifyWritable():this mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi call NumberFormatInfo:VerifyDecimalSeparator(String,String) lea rcx, bword ptr [rsi+48] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M35502_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 61, prolog size 6, PerfScore 17.85, (MethodHash=b1c57551) for method NumberFormatInfo:set_NumberDecimalSeparator(String):this ; ============================================================ ; Assembly listing for method NumberFormatInfo:VerifyWritable():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 0 ) ref -> rcx "argument with side effect" ; V04 tmp3 [V04,T03] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M086_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M086_IG02: cmp byte ptr [rcx+188], 0 jne SHORT G_M086_IG04 ;; bbWeight=1 PerfScore 3.00 G_M086_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M086_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xD869 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 88, prolog size 5, PerfScore 14.80, (MethodHash=66aeffa9) for method NumberFormatInfo:VerifyWritable():this ; ============================================================ ; Assembly listing for method NumberFormatInfo:VerifyDecimalSeparator(String,String) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 4, 2 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V05 tmp3 [V05,T04] ( 2, 0 ) ref -> rcx "argument with side effect" ; V06 tmp4 [V06,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M26402_IG01: push rdi push rsi sub rsp, 40 mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M26402_IG02: test rcx, rcx je SHORT G_M26402_IG05 ;; bbWeight=1 PerfScore 1.25 G_M26402_IG03: cmp dword ptr [rcx+8], 0 je SHORT G_M26402_IG06 ;; bbWeight=1 PerfScore 3.00 G_M26402_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M26402_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov rdx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M26402_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x684B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rdi mov r8, rsi call ArgumentException:.ctor(String,String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 135, prolog size 6, PerfScore 22.50, (MethodHash=3e4998dd) for method NumberFormatInfo:VerifyDecimalSeparator(String,String) ; ============================================================ ; Assembly listing for method Guid:ToString(String,IFormatProvider):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 3, 3 ) byref -> rdi this ; V01 arg1 [V01,T00] ( 10, 7.75) ref -> rsi class-hnd ;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V03 loc0 [V03,T10] ( 5, 3 ) int -> rcx ; V04 loc1 [V04,T05] ( 4, 4 ) ref -> rbp class-hnd ;* V05 loc2 [V05 ] ( 0, 0 ) bool -> zero-ref ; V06 loc3 [V06 ] ( 1, 1 ) int -> [rsp+0x40] do-not-enreg[X] addr-exposed ld-addr-op ; V07 loc4 [V07,T01] ( 14, 8 ) ushort -> rbx ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V11 tmp3 [V11,T24] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V12 tmp4 [V12,T25] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V13 tmp5 [V13,T22] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V14 tmp6 [V14,T06] ( 2, 4 ) byref -> rcx "Inlining Arg" ;* V15 tmp7 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V16 tmp8 [V16,T08] ( 2, 4 ) int -> rdx "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V19 tmp11 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V20 tmp12 [V20,T11] ( 2, 2 ) byref -> r8 "Inlining Arg" ;* V21 tmp13 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V22 tmp14 [V22,T15] ( 2, 2 ) int -> r9 "Inlining Arg" ; V23 tmp15 [V23,T12] ( 2, 2 ) byref -> rcx V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ; V24 tmp16 [V24,T16] ( 2, 2 ) int -> rdx V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ; V25 tmp17 [V25,T13] ( 2, 2 ) byref -> r8 V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ; V26 tmp18 [V26,T17] ( 2, 2 ) int -> r9 V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ; V27 tmp19 [V27,T14] ( 2, 2 ) byref -> rcx V15._value(offs=0x00) P-INDEP "field V15._value (fldOffset=0x0)" ; V28 tmp20 [V28,T18] ( 2, 1.50) byref -> r8 V17._pointer(offs=0x00) P-INDEP "field V17._pointer (fldOffset=0x0)" ; V29 tmp21 [V29,T19] ( 2, 1.50) int -> r9 V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)" ; V30 tmp22 [V30,T20] ( 2, 1 ) byref -> r8 V18._pointer(offs=0x00) P-INDEP "field V18._pointer (fldOffset=0x0)" ; V31 tmp23 [V31,T23] ( 2, 1 ) int -> r9 V18._length(offs=0x08) P-INDEP "field V18._length (fldOffset=0x8)" ;* V32 tmp24 [V32 ] ( 0, 0 ) byref -> zero-ref V19._pointer(offs=0x00) P-INDEP "field V19._pointer (fldOffset=0x0)" ;* V33 tmp25 [V33 ] ( 0, 0 ) int -> zero-ref V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)" ; V34 tmp26 [V34,T21] ( 2, 1 ) byref -> r8 V21._value(offs=0x00) P-INDEP "field V21._value (fldOffset=0x0)" ; V35 tmp27 [V35,T26] ( 2, 0 ) ref -> rcx "argument with side effect" ; V36 tmp28 [V36,T27] ( 2, 0 ) ref -> rdx "argument with side effect" ; V37 tmp29 [V37,T28] ( 2, 0 ) ref -> rcx "argument with side effect" ; V38 tmp30 [V38,T29] ( 2, 0 ) ref -> rdx "argument with side effect" ; V39 tmp31 [V39 ] ( 2, 4 ) struct (16) [rsp+0x30] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V40 tmp32 [V40,T02] ( 3, 6 ) byref -> rax stack-byref "BlockOp address local" ; V41 tmp33 [V41 ] ( 2, 4 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V42 tmp34 [V42,T03] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V43 tmp35 [V43,T07] ( 2, 4 ) byref -> rdi "argument with side effect" ; V44 tmp36 [V44,T09] ( 2, 4 ) long -> rax "argument with side effect" ; ; Lcl frame size = 72 G_M14961_IG01: push rdi push rsi push rbp push rbx sub rsp, 72 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 7.08 G_M14961_IG02: test rsi, rsi je SHORT G_M14961_IG04 ;; bbWeight=1 PerfScore 1.25 G_M14961_IG03: cmp dword ptr [rsi+8], 0 ja SHORT G_M14961_IG05 ;; bbWeight=0.25 PerfScore 0.75 G_M14961_IG04: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0.50 PerfScore 1.13 G_M14961_IG05: cmp dword ptr [rsi+8], 1 jne G_M14961_IG19 ;; bbWeight=1 PerfScore 3.00 G_M14961_IG06: cmp dword ptr [rsi+8], 0 jbe G_M14961_IG21 movzx rbx, word ptr [rsi+12] cmp ebx, 88 ja G_M14961_IG14 ;; bbWeight=1 PerfScore 6.25 G_M14961_IG07: cmp ebx, 68 ja SHORT G_M14961_IG12 cmp ebx, 66 je G_M14961_IG17 cmp ebx, 68 jne G_M14961_IG20 ;; bbWeight=0.50 PerfScore 1.88 G_M14961_IG08: mov ecx, 36 ;; bbWeight=0.50 PerfScore 0.13 G_M14961_IG09: call String:FastAllocateString(int):String mov rbp, rax lea rcx, bword ptr [rbp+12] mov edx, dword ptr [rbp+8] jmp G_M14961_IG18 ;; bbWeight=1 PerfScore 5.75 G_M14961_IG10: lea rax, bword ptr [rsp+30H] mov bword ptr [rax], rcx mov dword ptr [rax+8], edx lea rax, [rsp+40H] lea rcx, bword ptr [rsp+20H] mov bword ptr [rcx], r8 mov dword ptr [rcx+8], r9d mov rcx, rdi lea rdx, bword ptr [rsp+30H] mov r8, rax lea r9, bword ptr [rsp+20H] call Guid:TryFormat(Span`1,byref,ReadOnlySpan`1):bool:this mov rax, rbp ;; bbWeight=1 PerfScore 8.25 G_M14961_IG11: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M14961_IG12: cmp ebx, 78 je SHORT G_M14961_IG16 cmp ebx, 80 je SHORT G_M14961_IG17 cmp ebx, 88 jne G_M14961_IG20 ;; bbWeight=0.50 PerfScore 1.88 G_M14961_IG13: mov ecx, 68 jmp SHORT G_M14961_IG09 ;; bbWeight=0.50 PerfScore 1.13 G_M14961_IG14: cmp ebx, 100 ja SHORT G_M14961_IG15 cmp ebx, 98 je SHORT G_M14961_IG17 cmp ebx, 100 jne SHORT G_M14961_IG20 jmp G_M14961_IG08 ;; bbWeight=0.50 PerfScore 2.88 G_M14961_IG15: cmp ebx, 110 je SHORT G_M14961_IG16 cmp ebx, 112 je SHORT G_M14961_IG17 cmp ebx, 120 jne SHORT G_M14961_IG20 jmp SHORT G_M14961_IG13 ;; bbWeight=0.50 PerfScore 2.88 G_M14961_IG16: mov ecx, 32 jmp G_M14961_IG09 ;; bbWeight=0.50 PerfScore 1.13 G_M14961_IG17: mov ecx, 38 jmp G_M14961_IG09 ;; bbWeight=0.50 PerfScore 1.13 G_M14961_IG18: lea r8, bword ptr [rsi+12] mov r9d, dword ptr [rsi+8] jmp G_M14961_IG10 ;; bbWeight=0.50 PerfScore 2.25 G_M14961_IG19: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC2B9 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call FormatException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M14961_IG20: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC2B9 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call FormatException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M14961_IG21: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 433, prolog size 24, PerfScore 95.56, (MethodHash=f771c58e) for method Guid:ToString(String,IFormatProvider):String:this ; ============================================================ ; Assembly listing for method Guid:TryFormat(Span`1,byref,ReadOnlySpan`1):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 30, 16 ) byref -> rsi this ; V01 arg1 [V01,T03] ( 4, 7 ) byref -> rdx ld-addr-op ; V02 arg2 [V02,T05] ( 4, 3 ) byref -> rdi ; V03 arg3 [V03,T02] ( 4, 8 ) byref -> r9 ld-addr-op ; V04 loc0 [V04,T07] ( 7, 4 ) bool -> rbx ; V05 loc1 [V05,T31] ( 3, 2 ) bool -> r8 ; V06 loc2 [V06,T06] ( 8, 4.50) int -> rbp ; V07 loc3 [V07,T08] ( 7, 4 ) int -> r14 ; V08 loc4 [V08,T04] ( 14, 8 ) ushort -> rcx ;* V09 loc5 [V09 ] ( 0, 0 ) long -> zero-ref ; V10 loc6 [V10 ] ( 2, 1 ) byref -> [rsp+0x28] must-init pinned ; V11 loc7 [V11,T00] ( 88, 44 ) long -> registers ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V13 tmp1 [V13,T33] ( 2, 2 ) long -> rax "impSpillLclRefs" ; V14 tmp2 [V14,T10] ( 3, 3 ) long -> r8 "impSpillLclRefs" ; V15 tmp3 [V15,T11] ( 3, 3 ) long -> r8 "impSpillLclRefs" ; V16 tmp4 [V16,T12] ( 3, 3 ) long -> rdx "impSpillLclRefs" ; V17 tmp5 [V17,T13] ( 3, 3 ) long -> rdx "impSpillLclRefs" ; V18 tmp6 [V18,T14] ( 3, 3 ) long -> r8 "impSpillLclRefs" ; V19 tmp7 [V19,T15] ( 3, 3 ) long -> r8 "impSpillLclRefs" ; V20 tmp8 [V20,T16] ( 3, 3 ) long -> rdx "impSpillLclRefs" ; V21 tmp9 [V21,T17] ( 3, 3 ) long -> rdx "impSpillLclRefs" ; V22 tmp10 [V22,T18] ( 3, 3 ) long -> rdx "impSpillLclRefs" ; V23 tmp11 [V23,T19] ( 3, 3 ) long -> rdx "impSpillLclRefs" ; V24 tmp12 [V24,T20] ( 3, 3 ) long -> rdx "impSpillLclRefs" ; V25 tmp13 [V25,T21] ( 3, 3 ) long -> rdx "impSpillLclRefs" ; V26 tmp14 [V26,T22] ( 3, 3 ) long -> r8 "impSpillLclRefs" ; V27 tmp15 [V27,T23] ( 3, 3 ) long -> r8 "impSpillLclRefs" ; V28 tmp16 [V28,T24] ( 3, 3 ) long -> r8 "impSpillLclRefs" ; V29 tmp17 [V29,T25] ( 3, 3 ) long -> r8 "impSpillLclRefs" ; V30 tmp18 [V30,T26] ( 3, 3 ) long -> r8 "impSpillLclRefs" ; V31 tmp19 [V31,T27] ( 3, 3 ) long -> r8 "impSpillLclRefs" ; V32 tmp20 [V32,T28] ( 3, 3 ) long -> r15 "impSpillLclRefs" ; V33 tmp21 [V33,T48] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V34 tmp22 [V34,T49] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V35 tmp23 [V35 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V36 tmp24 [V36 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V37 tmp25 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V38 tmp26 [V38,T32] ( 2, 2 ) byref -> r8 "Inlining Arg" ;* V39 tmp27 [V39 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V40 tmp28 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V41 tmp29 [V41 ] ( 0, 0 ) byref -> zero-ref V54._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ;* V42 tmp30 [V42 ] ( 0, 0 ) int -> zero-ref V54._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ; V43 tmp31 [V43,T29] ( 3, 2.50) byref -> rax V55._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ; V44 tmp32 [V44,T09] ( 4, 3.50) int -> r8 V55._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ; V45 tmp33 [V45,T35] ( 3, 1.50) byref -> rax V35._pointer(offs=0x00) P-INDEP "field V35._pointer (fldOffset=0x0)" ; V46 tmp34 [V46,T38] ( 3, 1.50) int -> r8 V35._length(offs=0x08) P-INDEP "field V35._length (fldOffset=0x8)" ; V47 tmp35 [V47,T43] ( 2, 1 ) byref -> rax V36._pointer(offs=0x00) P-INDEP "field V36._pointer (fldOffset=0x0)" ;* V48 tmp36 [V48,T46] ( 0, 0 ) int -> zero-ref V36._length(offs=0x08) P-INDEP "field V36._length (fldOffset=0x8)" ; V49 tmp37 [V49,T44] ( 2, 1 ) byref -> rax V37._pointer(offs=0x00) P-INDEP "field V37._pointer (fldOffset=0x0)" ;* V50 tmp38 [V50,T47] ( 0, 0 ) int -> zero-ref V37._length(offs=0x08) P-INDEP "field V37._length (fldOffset=0x8)" ; V51 tmp39 [V51,T45] ( 2, 1 ) byref -> r8 V39._value(offs=0x00) P-INDEP "field V39._value (fldOffset=0x0)" ; V52 tmp40 [V52,T36] ( 3, 1.50) byref -> r15 V40._pointer(offs=0x00) P-INDEP "field V40._pointer (fldOffset=0x0)" ;* V53 tmp41 [V53 ] ( 0, 0 ) int -> zero-ref V40._length(offs=0x08) P-INDEP "field V40._length (fldOffset=0x8)" ;* V54 tmp42 [V54 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ;* V55 tmp43 [V55 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V56 tmp44 [V56,T37] ( 3, 1.50) ref -> r8 "Big Offset Morphing" ; V57 tmp45 [V57,T50] ( 2, 0 ) ref -> rcx "argument with side effect" ; V58 tmp46 [V58,T51] ( 2, 0 ) ref -> rdx "argument with side effect" ; V59 tmp47 [V59,T52] ( 2, 0 ) ref -> rcx "argument with side effect" ; V60 tmp48 [V60,T53] ( 2, 0 ) ref -> rdx "argument with side effect" ; V61 tmp49 [V61,T34] ( 2, 2 ) long -> r15 "Cast away GC" ; V62 cse0 [V62,T30] ( 4, 2 ) ref -> r8 "CSE - moderate" ; V63 cse1 [V63,T39] ( 3, 1.50) int -> r8 "CSE - conservative" ; V64 cse2 [V64,T40] ( 3, 1.50) int -> r8 "CSE - conservative" ; V65 cse3 [V65,T41] ( 3, 1.50) int -> r8 "CSE - conservative" ; V66 cse4 [V66,T42] ( 3, 1.50) int -> r8 "CSE - conservative" ; ; Lcl frame size = 48 G_M56870_IG01: push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rcx mov rdi, r8 ;; bbWeight=1 PerfScore 9.00 G_M56870_IG02: mov rax, bword ptr [r9] mov r8d, dword ptr [r9+8] ;; bbWeight=1 PerfScore 4.00 G_M56870_IG03: test r8d, r8d jne SHORT G_M56870_IG06 ;; bbWeight=1 PerfScore 1.25 G_M56870_IG04: mov rax, 0xD1FFAB1E mov r8, gword ptr [rax] test r8, r8 jne SHORT G_M56870_IG05 xor rax, rax xor r8d, r8d jmp SHORT G_M56870_IG06 ;; bbWeight=0.50 PerfScore 3.00 G_M56870_IG05: cmp dword ptr [r8], r8d cmp dword ptr [r8], r8d add r8, 12 mov rax, r8 mov r8d, 1 ;; bbWeight=0.50 PerfScore 2.38 G_M56870_IG06: cmp r8d, 1 jne G_M56870_IG31 ;; bbWeight=1 PerfScore 1.25 G_M56870_IG07: mov ebx, 1 xor r8d, r8d xor ebp, ebp movzx rcx, word ptr [rax] cmp ecx, 88 ja SHORT G_M56870_IG15 ;; bbWeight=1 PerfScore 4.00 G_M56870_IG08: cmp ecx, 68 ja SHORT G_M56870_IG13 cmp ecx, 66 je G_M56870_IG18 cmp ecx, 68 jne G_M56870_IG32 ;; bbWeight=0.50 PerfScore 1.88 G_M56870_IG09: mov r14d, 36 ;; bbWeight=0.50 PerfScore 0.13 G_M56870_IG10: cmp dword ptr [rdx+8], r14d jge G_M56870_IG20 ;; bbWeight=1 PerfScore 3.00 G_M56870_IG11: xor eax, eax mov dword ptr [rdi], eax ;; bbWeight=0.50 PerfScore 0.63 G_M56870_IG12: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.38 G_M56870_IG13: cmp ecx, 78 je SHORT G_M56870_IG17 cmp ecx, 80 je SHORT G_M56870_IG19 cmp ecx, 88 jne G_M56870_IG32 ;; bbWeight=0.50 PerfScore 1.88 G_M56870_IG14: mov ebp, 0xD1FFAB1E xor ebx, ebx mov r8d, 1 mov r14d, 68 jmp SHORT G_M56870_IG10 ;; bbWeight=0.50 PerfScore 1.50 G_M56870_IG15: cmp ecx, 100 ja SHORT G_M56870_IG16 cmp ecx, 98 je SHORT G_M56870_IG18 cmp ecx, 100 jne G_M56870_IG32 jmp SHORT G_M56870_IG09 ;; bbWeight=0.50 PerfScore 2.88 G_M56870_IG16: cmp ecx, 110 je SHORT G_M56870_IG17 cmp ecx, 112 je SHORT G_M56870_IG19 cmp ecx, 120 jne G_M56870_IG32 jmp SHORT G_M56870_IG14 ;; bbWeight=0.50 PerfScore 2.88 G_M56870_IG17: xor ebx, ebx mov r14d, 32 jmp SHORT G_M56870_IG10 ;; bbWeight=0.50 PerfScore 1.25 G_M56870_IG18: mov ebp, 0xD1FFAB1E mov r14d, 38 jmp G_M56870_IG10 ;; bbWeight=0.50 PerfScore 1.25 G_M56870_IG19: mov ebp, 0xD1FFAB1E mov r14d, 38 jmp G_M56870_IG10 ;; bbWeight=0.50 PerfScore 1.25 G_M56870_IG20: mov r15, bword ptr [rdx] mov bword ptr [rsp+28H], r15 test ebp, ebp je SHORT G_M56870_IG21 lea rdx, [r15+2] mov r12, rdx mov word ptr [r15], bp mov r15, r12 ;; bbWeight=0.50 PerfScore 3.13 G_M56870_IG21: test r8d, r8d je G_M56870_IG23 mov r8, r15 lea r15, [r8+2] mov word ptr [r8], 48 mov r8, r15 lea r15, [r8+2] mov word ptr [r8], 120 mov r8d, dword ptr [rsi] sar r8d, 16 mov edx, dword ptr [rsi] sar edx, 24 mov rcx, r15 call Guid:HexsToChars(long,int,int):int movsxd rdx, eax lea r15, [r15+2*rdx] mov edx, dword ptr [rsi] sar edx, 8 mov r8d, dword ptr [rsi] mov rcx, r15 call Guid:HexsToChars(long,int,int):int movsxd rdx, eax lea r15, [r15+2*rdx] mov rdx, r15 lea r15, [rdx+2] mov word ptr [rdx], 44 mov rdx, r15 lea r15, [rdx+2] mov word ptr [rdx], 48 mov rdx, r15 lea r15, [rdx+2] mov word ptr [rdx], 120 movsx r8, word ptr [rsi+4] mov edx, r8d sar edx, 8 mov rcx, r15 call Guid:HexsToChars(long,int,int):int movsxd rdx, eax lea r15, [r15+2*rdx] mov rdx, r15 lea r15, [rdx+2] mov word ptr [rdx], 44 mov rdx, r15 lea r15, [rdx+2] mov word ptr [rdx], 48 mov rdx, r15 lea r15, [rdx+2] mov word ptr [rdx], 120 movsx r8, word ptr [rsi+6] mov edx, r8d sar edx, 8 mov rcx, r15 call Guid:HexsToChars(long,int,int):int movsxd r8, eax lea r15, [r15+2*r8] mov r8, r15 lea r15, [r8+2] mov word ptr [r8], 44 mov r8, r15 lea r15, [r8+2] mov word ptr [r8], 123 ;; bbWeight=0.50 PerfScore 24.63 G_M56870_IG22: movzx r8, byte ptr [rsi+9] movzx rdx, byte ptr [rsi+8] mov rcx, r15 call Guid:HexsToCharsHexOutput(long,int,int):int movsxd r8, eax lea r15, [r15+2*r8] mov r8, r15 lea r15, [r8+2] mov word ptr [r8], 44 movzx r8, byte ptr [rsi+11] movzx rdx, byte ptr [rsi+10] mov rcx, r15 call Guid:HexsToCharsHexOutput(long,int,int):int movsxd r8, eax lea r15, [r15+2*r8] mov r8, r15 lea r15, [r8+2] mov word ptr [r8], 44 movzx r8, byte ptr [rsi+13] movzx rdx, byte ptr [rsi+12] mov rcx, r15 call Guid:HexsToCharsHexOutput(long,int,int):int movsxd r8, eax lea r15, [r15+2*r8] mov r8, r15 lea r15, [r8+2] mov word ptr [r8], 44 movzx r8, byte ptr [rsi+15] movzx rdx, byte ptr [rsi+14] mov rcx, r15 call Guid:HexsToCharsHexOutput(long,int,int):int movsxd r8, eax lea r15, [r15+2*r8] mov r8, r15 lea r15, [r8+2] mov word ptr [r8], 125 jmp G_M56870_IG28 ;; bbWeight=0.50 PerfScore 16.50 G_M56870_IG23: mov r8d, dword ptr [rsi] sar r8d, 16 mov edx, dword ptr [rsi] sar edx, 24 mov rcx, r15 call Guid:HexsToChars(long,int,int):int movsxd rdx, eax lea r15, [r15+2*rdx] mov edx, dword ptr [rsi] sar edx, 8 mov r8d, dword ptr [rsi] mov rcx, r15 call Guid:HexsToChars(long,int,int):int movsxd rdx, eax lea r15, [r15+2*rdx] test ebx, ebx je SHORT G_M56870_IG24 mov rdx, r15 lea r15, [rdx+2] mov word ptr [rdx], 45 ;; bbWeight=0.50 PerfScore 10.50 G_M56870_IG24: movsx r8, word ptr [rsi+4] mov edx, r8d sar edx, 8 mov rcx, r15 call Guid:HexsToChars(long,int,int):int movsxd rdx, eax lea r15, [r15+2*rdx] test ebx, ebx je SHORT G_M56870_IG25 mov rdx, r15 lea r15, [rdx+2] mov word ptr [rdx], 45 ;; bbWeight=0.50 PerfScore 4.63 G_M56870_IG25: movsx r8, word ptr [rsi+6] mov edx, r8d sar edx, 8 mov rcx, r15 call Guid:HexsToChars(long,int,int):int movsxd r8, eax lea r15, [r15+2*r8] test ebx, ebx je SHORT G_M56870_IG26 mov r8, r15 lea r15, [r8+2] mov word ptr [r8], 45 ;; bbWeight=0.50 PerfScore 4.63 G_M56870_IG26: movzx r8, byte ptr [rsi+9] movzx rdx, byte ptr [rsi+8] mov rcx, r15 call Guid:HexsToChars(long,int,int):int movsxd r8, eax lea r15, [r15+2*r8] test ebx, ebx je SHORT G_M56870_IG27 mov r8, r15 lea r15, [r8+2] mov word ptr [r8], 45 ;; bbWeight=0.50 PerfScore 4.50 G_M56870_IG27: movzx r8, byte ptr [rsi+11] movzx rdx, byte ptr [rsi+10] mov rcx, r15 call Guid:HexsToChars(long,int,int):int movsxd r8, eax lea r15, [r15+2*r8] movzx r8, byte ptr [rsi+13] movzx rdx, byte ptr [rsi+12] mov rcx, r15 call Guid:HexsToChars(long,int,int):int movsxd r8, eax lea r15, [r15+2*r8] movzx r8, byte ptr [rsi+15] movzx rdx, byte ptr [rsi+14] mov rcx, r15 call Guid:HexsToChars(long,int,int):int movsxd rax, eax lea r15, [r15+2*rax] ;; bbWeight=0.50 PerfScore 9.00 G_M56870_IG28: test ebp, ebp je SHORT G_M56870_IG29 mov rax, r15 sar ebp, 16 mov word ptr [rax], bp ;; bbWeight=0.50 PerfScore 2.25 G_M56870_IG29: xor rax, rax mov bword ptr [rsp+28H], rax mov dword ptr [rdi], r14d mov eax, 1 ;; bbWeight=0.50 PerfScore 1.25 G_M56870_IG30: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.38 G_M56870_IG31: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC2B9 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call FormatException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M56870_IG32: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xC2B9 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call FormatException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1149, prolog size 21, PerfScore 244.03, (MethodHash=3b7b21d9) for method Guid:TryFormat(Span`1,byref,ReadOnlySpan`1):bool:this ; ============================================================ ; Assembly listing for method Guid:HexsToChars(long,int,int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 6, 6 ) long -> rcx ; V01 arg1 [V01,T05] ( 4, 4 ) int -> rdx ; V02 arg2 [V02,T06] ( 4, 4 ) int -> r8 ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 9, 15 ) int -> rax "Inlining Arg" ; V05 tmp2 [V05,T02] ( 7, 11 ) int -> rdx "Inlining Arg" ; V06 tmp3 [V06,T01] ( 9, 15 ) int -> rax "Inlining Arg" ; V07 tmp4 [V07,T03] ( 7, 11 ) int -> r8 "Inlining Arg" ; ; Lcl frame size = 0 G_M33675_IG01: ;; bbWeight=1 PerfScore 0.00 G_M33675_IG02: mov eax, edx sar eax, 4 and eax, 15 add eax, 48 cmp eax, 57 jle SHORT G_M33675_IG04 ;; bbWeight=1 PerfScore 4.00 G_M33675_IG03: add eax, 39 ;; bbWeight=0.25 PerfScore 0.06 G_M33675_IG04: mov word ptr [rcx], ax and edx, 15 add edx, 48 cmp edx, 57 jle SHORT G_M33675_IG06 ;; bbWeight=1 PerfScore 2.75 G_M33675_IG05: add edx, 39 ;; bbWeight=0.25 PerfScore 0.06 G_M33675_IG06: mov word ptr [rcx+2], dx mov eax, r8d sar eax, 4 and eax, 15 add eax, 48 cmp eax, 57 jle SHORT G_M33675_IG08 ;; bbWeight=1 PerfScore 5.00 G_M33675_IG07: add eax, 39 ;; bbWeight=0.25 PerfScore 0.06 G_M33675_IG08: mov word ptr [rcx+4], ax and r8d, 15 add r8d, 48 cmp r8d, 57 jle SHORT G_M33675_IG10 ;; bbWeight=1 PerfScore 2.75 G_M33675_IG09: add r8d, 39 ;; bbWeight=0.25 PerfScore 0.06 G_M33675_IG10: mov word ptr [rcx+6], r8w mov eax, 4 ;; bbWeight=1 PerfScore 1.25 G_M33675_IG11: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 93, prolog size 0, PerfScore 26.30, (MethodHash=b95c7c74) for method Guid:HexsToChars(long,int,int):int ; ============================================================ ; Assembly listing for method String:Concat(String,String,String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 9, 5.75) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 8, 4.75) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 8, 4.75) ref -> rbx class-hnd ; V03 loc0 [V03,T05] ( 2, 1 ) int -> rcx ; V04 loc1 [V04,T03] ( 5, 2.50) ref -> r14 class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V06 tmp1 [V06,T06] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V07 tmp2 [V07,T07] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V08 tmp3 [V08,T08] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V09 cse0 [V09,T04] ( 3, 1.50) int -> rbp "CSE - moderate" ; ; Lcl frame size = 32 G_M7258_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 6.00 G_M7258_IG02: test rsi, rsi je SHORT G_M7258_IG04 ;; bbWeight=1 PerfScore 1.25 G_M7258_IG03: cmp dword ptr [rsi+8], 0 ja SHORT G_M7258_IG06 ;; bbWeight=0.25 PerfScore 0.75 G_M7258_IG04: mov rcx, rdi mov rdx, rbx ;; bbWeight=0.50 PerfScore 0.25 G_M7258_IG05: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 jmp String:Concat(String,String):String ;; bbWeight=0.50 PerfScore 2.38 G_M7258_IG06: test rdi, rdi je SHORT G_M7258_IG08 ;; bbWeight=0.50 PerfScore 0.63 G_M7258_IG07: cmp dword ptr [rdi+8], 0 ja SHORT G_M7258_IG10 ;; bbWeight=0.25 PerfScore 0.75 G_M7258_IG08: mov rcx, rsi mov rdx, rbx ;; bbWeight=0.50 PerfScore 0.25 G_M7258_IG09: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 jmp String:Concat(String,String):String ;; bbWeight=0.50 PerfScore 2.38 G_M7258_IG10: test rbx, rbx je SHORT G_M7258_IG12 ;; bbWeight=0.50 PerfScore 0.63 G_M7258_IG11: cmp dword ptr [rbx+8], 0 ja SHORT G_M7258_IG14 ;; bbWeight=0.25 PerfScore 0.75 G_M7258_IG12: mov rcx, rsi mov rdx, rdi ;; bbWeight=0.50 PerfScore 0.25 G_M7258_IG13: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 jmp String:Concat(String,String):String ;; bbWeight=0.50 PerfScore 2.38 G_M7258_IG14: mov ebp, dword ptr [rsi+8] add ebp, dword ptr [rdi+8] mov ecx, ebp add ecx, dword ptr [rbx+8] call String:FastAllocateString(int):String mov r14, rax mov rcx, r14 mov r8, rsi xor edx, edx call String:FillStringChecked(String,int,String) mov edx, dword ptr [rsi+8] mov rcx, r14 mov r8, rdi call String:FillStringChecked(String,int,String) mov edx, ebp mov rcx, r14 mov r8, rbx call String:FillStringChecked(String,int,String) mov rax, r14 ;; bbWeight=0.50 PerfScore 7.38 G_M7258_IG15: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 ; Total bytes of code 188, prolog size 19, PerfScore 46.68, (MethodHash=a565e3a5) for method String:Concat(String,String,String):String ; ============================================================ ; Assembly listing for method Characteristic`1:ResolveValueCore(CharacteristicObject,Object):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 5, 3.50) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 4, 3 ) ref -> r8 class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T09] ( 2, 2 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T03] ( 4, 3.50) ref -> rbx "inline UNBOX clone1" ; V06 tmp3 [V06,T05] ( 3, 3 ) ref -> rbp class-hnd exact "Single-def Box Helper" ; V07 tmp4 [V07,T04] ( 4, 3.50) ref -> rdi "inline UNBOX clone1" ; V08 tmp5 [V08,T06] ( 3, 3 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V09 cse0 [V09,T08] ( 3, 2.50) ref -> rdi "CSE - aggressive" ; V10 rat0 [V10,T07] ( 3, 3 ) ref -> rdi "delegate invoke call" ; ; Lcl frame size = 40 G_M41771_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rdx ;; bbWeight=1 PerfScore 4.50 G_M41771_IG02: mov rdi, gword ptr [rcx+48] test rdi, rdi jne SHORT G_M41771_IG07 ;; bbWeight=1 PerfScore 3.25 G_M41771_IG03: mov rdx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rdi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rdi], rdx je SHORT G_M41771_IG05 ;; bbWeight=0.50 PerfScore 3.50 G_M41771_IG04: mov rdx, rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41771_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rcx, qword ptr [rdi+8] mov qword ptr [rax+8], rcx ;; bbWeight=0.50 PerfScore 2.13 G_M41771_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M41771_IG07: mov rdx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rbx, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rbx], rdx je SHORT G_M41771_IG09 ;; bbWeight=0.50 PerfScore 3.50 G_M41771_IG08: mov rdx, rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41771_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov r8, qword ptr [rbx+8] mov rcx, gword ptr [rdi+8] mov rdx, rsi call qword ptr [rdi+24]Func`3:Invoke(__Canon,TimeInterval):TimeInterval:this mov qword ptr [rbp+8], rax mov rax, rbp ;; bbWeight=0.50 PerfScore 5.00 G_M41771_IG10: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 202, prolog size 8, PerfScore 46.08, (MethodHash=f6005cd4) for method Characteristic`1:ResolveValueCore(CharacteristicObject,Object):Object:this ; ============================================================ ; Assembly listing for method TimeInterval:ToString():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rsi this ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> r8 class-hnd "Inlining Arg" ; ; Lcl frame size = 48 G_M60406_IG01: push rsi sub rsp, 48 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M60406_IG02: mov rcx, 0xD1FFAB1E mov edx, 85 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r9, 0xD1FFAB1E mov r8, gword ptr [r9] xor r9, r9 mov gword ptr [rsp+20H], r9 mov r9, 0xD1FFAB1E mov r9, gword ptr [r9] mov rcx, rsi xor rdx, rdx call TimeInterval:ToString(TimeUnit,CultureInfo,String,UnitPresentation):String:this nop ;; bbWeight=1 PerfScore 9.00 G_M60406_IG03: add rsp, 48 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 79, prolog size 5, PerfScore 20.15, (MethodHash=a10d1409) for method TimeInterval:ToString():String:this ; ============================================================ ; Assembly listing for method DefaultCultureInfo:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init "argument with side effect" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init "argument with side effect" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init "virtual vtable call" ; ; Lcl frame size = 64 G_M54735_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] vxorps xmm4, xmm4 vmovdqu xmmword ptr [rbp-18H], xmm4 xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 4.33 G_M54735_IG02: call CultureInfo:get_InvariantCulture():CultureInfo mov gword ptr [rbp-18H], rax mov rcx, gword ptr [rbp-18H] mov rax, gword ptr [rbp-18H] mov rax, qword ptr [rax] mov rax, qword ptr [rax+88] call gword ptr [rax]CultureInfo:Clone():Object:this mov gword ptr [rbp-08H], rax mov rdx, gword ptr [rbp-08H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTCLASS mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-18H], rcx mov rcx, gword ptr [rbp-18H] mov rax, gword ptr [rbp-18H] mov rax, qword ptr [rax] mov rax, qword ptr [rax+80] call gword ptr [rax+16]CultureInfo:get_NumberFormat():NumberFormatInfo:this mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] cmp dword ptr [rcx], ecx call NumberFormatInfo:set_NumberDecimalSeparator(String):this nop ;; bbWeight=1 PerfScore 35.50 G_M54735_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 162, prolog size 25, PerfScore 58.23, (MethodHash=788e2a30) for method DefaultCultureInfo:.cctor() ; ============================================================ ; Assembly listing for method TimeInterval:ToString(TimeUnit,CultureInfo,String,UnitPresentation):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 4, 3.50) byref -> rbp this ; V01 arg1 [V01,T01] ( 6, 5.50) ref -> rdi class-hnd ; V02 arg2 [V02,T00] ( 8, 6 ) ref -> rsi class-hnd ; V03 arg3 [V03,T02] ( 6, 5 ) ref -> rbx class-hnd ; V04 arg4 [V04,T05] ( 4, 3.50) ref -> r14 class-hnd ; V05 loc0 [V05,T18] ( 3, 2 ) double -> [rsp+0x38] ld-addr-op ; V06 loc1 [V06,T16] ( 2, 1 ) ref -> rdi class-hnd ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T06] ( 4, 3.50) ref -> rdi ; V09 tmp2 [V09,T07] ( 4, 3.50) ref -> rsi ; V10 tmp3 [V10,T08] ( 4, 3.50) ref -> rbx ; V11 tmp4 [V11,T09] ( 4, 3.50) ref -> r14 ; V12 tmp5 [V12,T10] ( 3, 3 ) ref -> rcx class-hnd "impAppendStmt" ; V13 tmp6 [V13,T11] ( 3, 3 ) ref -> rax class-hnd exact "dup spill" ; V14 tmp7 [V14,T19] ( 2, 2 ) double -> mm0 "Strict ordering of exceptions for Array store" ; V15 tmp8 [V15,T13] ( 2, 2 ) int -> rdx "Inlining Arg" ; V16 tmp9 [V16,T20] ( 2, 2 ) double -> [rsp+0x30] "impAppendStmt" ; V17 tmp10 [V17,T14] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ; V18 tmp11 [V18,T21] ( 2, 2 ) double -> [rsp+0x28] "impAppendStmt" ; V19 tmp12 [V19,T15] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ; V20 tmp13 [V20,T04] ( 2, 4 ) ref -> rdx "argument with side effect" ; V21 tmp14 [V21,T17] ( 2, 4 ) double -> mm6 "argument with side effect" ; V22 tmp15 [V22,T12] ( 2, 2 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 80 G_M16910_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 80 vzeroupper vmovaps qword ptr [rsp+40H], xmm6 mov rbp, rcx mov rdi, rdx mov rsi, r8 mov rbx, r9 mov r14, gword ptr [rsp+A0H] ;; bbWeight=1 PerfScore 11.25 G_M16910_IG02: test rdi, rdi jne SHORT G_M16910_IG04 ;; bbWeight=1 PerfScore 1.25 G_M16910_IG03: mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_VC vmovsd xmm0, qword ptr [rbp] vmovsd qword ptr [rax+16], xmm0 mov rcx, rax call TimeUnit:GetBestTimeUnit(ref):TimeUnit mov rdi, rax ;; bbWeight=0.50 PerfScore 2.75 G_M16910_IG04: test rsi, rsi jne SHORT G_M16910_IG06 ;; bbWeight=1 PerfScore 1.25 G_M16910_IG05: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0.50 PerfScore 1.13 G_M16910_IG06: test rbx, rbx jne SHORT G_M16910_IG08 ;; bbWeight=1 PerfScore 1.25 G_M16910_IG07: mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] ;; bbWeight=0.50 PerfScore 1.13 G_M16910_IG08: test r14, r14 jne SHORT G_M16910_IG10 ;; bbWeight=1 PerfScore 1.25 G_M16910_IG09: mov rcx, 0xD1FFAB1E mov edx, 87 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r14, gword ptr [rcx] ;; bbWeight=0.50 PerfScore 1.88 G_M16910_IG10: vmovsd xmm6, qword ptr [rbp] mov rcx, 0xD1FFAB1E mov edx, 82 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] vmovaps xmm0, xmm6 mov r8, rdi call TimeUnit:Convert(double,TimeUnit,TimeUnit):double vmovsd qword ptr [rsp+38H], xmm0 cmp byte ptr [r14+12], 0 je SHORT G_M16910_IG15 ;; bbWeight=1 PerfScore 10.75 G_M16910_IG11: mov rcx, gword ptr [rdi+8] mov edx, dword ptr [r14+8] cmp dword ptr [rcx], ecx mov r8d, 32 call String:PadLeft(int,ushort):String:this mov rdi, rax vmovsd xmm0, qword ptr [rsp+38H] vmovsd qword ptr [rsp+30H], xmm0 test rsi, rsi je SHORT G_M16910_IG12 mov rcx, rsi call NumberFormatInfo:g__GetProviderNonNull|42_0(IFormatProvider):NumberFormatInfo jmp SHORT G_M16910_IG13 ;; bbWeight=0.50 PerfScore 7.25 G_M16910_IG12: call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo ;; bbWeight=0.50 PerfScore 0.50 G_M16910_IG13: vmovsd xmm0, qword ptr [rsp+30H] mov rdx, rbx mov r8, rax call Number:FormatDouble(double,String,NumberFormatInfo):String mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8, rdi call String:Concat(String,String,String):String nop ;; bbWeight=0.50 PerfScore 3.75 G_M16910_IG14: vmovaps xmm6, qword ptr [rsp+40H] add rsp, 80 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 3.88 G_M16910_IG15: vmovsd xmm0, qword ptr [rsp+38H] vmovsd qword ptr [rsp+28H], xmm0 test rsi, rsi je SHORT G_M16910_IG16 mov rcx, rsi call NumberFormatInfo:g__GetProviderNonNull|42_0(IFormatProvider):NumberFormatInfo jmp SHORT G_M16910_IG17 ;; bbWeight=0.50 PerfScore 3.50 G_M16910_IG16: call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo ;; bbWeight=0.50 PerfScore 0.50 G_M16910_IG17: vmovsd xmm0, qword ptr [rsp+28H] mov rdx, rbx mov r8, rax call Number:FormatDouble(double,String,NumberFormatInfo):String nop ;; bbWeight=0.50 PerfScore 1.88 G_M16910_IG18: vmovaps xmm6, qword ptr [rsp+40H] add rsp, 80 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 3.88 ; Total bytes of code 404, prolog size 19, PerfScore 100.80, (MethodHash=0658bdf1) for method TimeInterval:ToString(TimeUnit,CultureInfo,String,UnitPresentation):String:this ; ============================================================ ; Assembly listing for method TimeUnit:GetBestTimeUnit(ref):TimeUnit ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 4, 3.50) ref -> rcx class-hnd ; V01 loc0 [V01,T07] ( 2, 4.50) double -> mm6 ; V02 loc1 [V02,T03] ( 3, 5 ) ref -> rcx class-hnd ; V03 loc2 [V03,T00] ( 5, 16.50) int -> rax ; V04 loc3 [V04,T01] ( 3, 8.50) ref -> r9 class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T05] ( 2, 2 ) ref -> rdx "argument with side effect" ; V07 cse0 [V07,T06] ( 3, 1.50) ref -> rdx "CSE - moderate" ; V08 cse1 [V08,T04] ( 3, 5 ) int -> r8 "CSE - aggressive" ; ; Lcl frame size = 56 G_M28111_IG01: sub rsp, 56 vzeroupper vmovaps qword ptr [rsp+20H], xmm6 ;; bbWeight=1 PerfScore 4.25 G_M28111_IG02: cmp dword ptr [rcx+8], 0 jne SHORT G_M28111_IG05 ;; bbWeight=1 PerfScore 3.00 G_M28111_IG03: mov rcx, 0xD1FFAB1E mov edx, 82 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.88 G_M28111_IG04: vmovaps xmm6, qword ptr [rsp+20H] add rsp, 56 ret ;; bbWeight=0.50 PerfScore 2.63 G_M28111_IG05: call Enumerable:Min(IEnumerable`1):double vmovaps xmm6, xmm0 mov rcx, 0xD1FFAB1E mov edx, 82 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdx xor eax, eax mov r8d, dword ptr [rcx+8] test r8d, r8d jle SHORT G_M28111_IG08 ;; bbWeight=0.50 PerfScore 4.38 G_M28111_IG06: movsxd r9, eax mov r9, gword ptr [rcx+8*r9+16] imul r10, qword ptr [r9+24], 0x3E8 vxorps xmm0, xmm0 vcvtsi2sd xmm0, r10 vucomisd xmm0, xmm6 ja SHORT G_M28111_IG10 ;; bbWeight=4 PerfScore 46.33 G_M28111_IG07: inc eax cmp r8d, eax jg SHORT G_M28111_IG06 ;; bbWeight=4 PerfScore 6.00 G_M28111_IG08: mov rcx, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M28111_IG09: vmovaps xmm6, qword ptr [rsp+20H] add rsp, 56 jmp Enumerable:Last(IEnumerable`1):__Canon ;; bbWeight=0.50 PerfScore 3.13 G_M28111_IG10: mov rax, r9 ;; bbWeight=0.50 PerfScore 0.13 G_M28111_IG11: vmovaps xmm6, qword ptr [rsp+20H] add rsp, 56 ret ;; bbWeight=0.50 PerfScore 2.63 ; Total bytes of code 196, prolog size 13, PerfScore 94.76, (MethodHash=7c869230) for method TimeUnit:GetBestTimeUnit(ref):TimeUnit ; ============================================================ ; Assembly listing for method Enumerable:Min(IEnumerable`1):double ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 4 ) ref -> rcx class-hnd ; V01 loc0 [V01,T04] ( 7, 13 ) double -> mm6 ; V02 loc1 [V02,T00] ( 8, 18 ) ref -> [rbp-0x20] EH do-not-enreg[] class-hnd EH-live ; V03 loc2 [V03,T05] ( 3, 3 ) double -> [rbp-0x18] EH do-not-enreg[] EH-live ; V04 loc3 [V04,T03] ( 6, 21 ) double -> mm0 ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 PSPSym [V06 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "PSPSym" ; V07 tmp2 [V07,T02] ( 2, 2 ) ref -> rax "optAddCopies" ; ; Lcl frame size = 80 G_M27292_IG01: push rbp sub rsp, 80 vzeroupper vmovaps qword ptr [rsp+40H], xmm6 lea rbp, [rsp+50H] mov qword ptr [rbp-30H], rsp ;; bbWeight=1 PerfScore 6.75 G_M27292_IG02: test rcx, rcx je G_M27292_IG19 ;; bbWeight=1 PerfScore 1.25 G_M27292_IG03: mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-20H], rax ;; bbWeight=1 PerfScore 4.50 G_M27292_IG04: mov rcx, gword ptr [rbp-20H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M27292_IG10 ;; bbWeight=1 PerfScore 5.75 G_M27292_IG05: mov rcx, gword ptr [rbp-20H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():double:this vmovaps xmm6, xmm0 vucomisd xmm6, xmm6 jp SHORT G_M27292_IG06 je SHORT G_M27292_IG11 ;; bbWeight=1 PerfScore 7.75 G_M27292_IG06: vmovsd qword ptr [rbp-18H], xmm6 jmp SHORT G_M27292_IG13 ;; bbWeight=1 PerfScore 2.50 G_M27292_IG07: mov rcx, gword ptr [rbp-20H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():double:this vucomisd xmm6, xmm0 jbe SHORT G_M27292_IG08 vmovaps xmm6, xmm0 jmp SHORT G_M27292_IG11 ;; bbWeight=4 PerfScore 35.00 G_M27292_IG08: vucomisd xmm0, xmm0 jp SHORT G_M27292_IG09 je SHORT G_M27292_IG11 ;; bbWeight=4 PerfScore 12.00 G_M27292_IG09: vmovsd qword ptr [rbp-18H], xmm0 jmp SHORT G_M27292_IG13 ;; bbWeight=1 PerfScore 2.50 G_M27292_IG10: call ThrowHelper:ThrowNoElementsException() int3 ;; bbWeight=0 PerfScore 0.00 G_M27292_IG11: mov rcx, gword ptr [rbp-20H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M27292_IG07 ;; bbWeight=8 PerfScore 46.00 G_M27292_IG12: mov rcx, gword ptr [rbp-20H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this jmp SHORT G_M27292_IG17 ;; bbWeight=1 PerfScore 6.50 G_M27292_IG13: mov rcx, rsp call G_M27292_IG20 ;; bbWeight=1 PerfScore 1.25 G_M27292_IG14: nop ;; bbWeight=1 PerfScore 0.25 G_M27292_IG15: vmovsd xmm0, qword ptr [rbp-18H] ;; bbWeight=1 PerfScore 2.00 G_M27292_IG16: vmovaps xmm6, qword ptr [rsp+40H] lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 6.00 G_M27292_IG17: vmovaps xmm0, xmm6 ;; bbWeight=1 PerfScore 0.25 G_M27292_IG18: vmovaps xmm6, qword ptr [rsp+40H] lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 6.00 G_M27292_IG19: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M27292_IG20: push rbp sub rsp, 64 vzeroupper vmovaps qword ptr [rsp+30H], xmm6 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=1 PerfScore 8.75 G_M27292_IG21: cmp gword ptr [rbp-20H], 0 je SHORT G_M27292_IG22 mov rcx, gword ptr [rbp-20H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=1 PerfScore 6.50 G_M27292_IG22: nop ;; bbWeight=1 PerfScore 0.25 G_M27292_IG23: vmovaps xmm6, qword ptr [rsp+30H] add rsp, 64 pop rbp ret ;; bbWeight=1 PerfScore 5.75 ; Total bytes of code 376, prolog size 23, PerfScore 206.50, (MethodHash=f3eb9563) for method Enumerable:Min(IEnumerable`1):double ; ============================================================ ; Assembly listing for method SZArrayHelper:GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> rsi this class-hnd ; V01 loc0 [V01,T02] ( 2, 2 ) ref -> rcx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 4, 4 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 40 G_M16991_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M16991_IG02: mov rcx, rsi cmp dword ptr [rcx+8], 0 je SHORT G_M16991_IG05 ;; bbWeight=1 PerfScore 3.25 G_M16991_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov dword ptr [rdi+16], -1 mov rax, rdi ;; bbWeight=0.50 PerfScore 2.25 G_M16991_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M16991_IG05: mov rcx, 0xD1FFAB1E mov edx, 33 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.88 G_M16991_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 105, prolog size 6, PerfScore 22.63, (MethodHash=581dbda0) for method SZArrayHelper:GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method SZGenericArrayEnumerator`1:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5 ) ref -> rcx this class-hnd ; V01 loc0 [V01,T02] ( 3, 2.50) int -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 cse0 [V03,T01] ( 3, 2.50) ref -> rax "CSE - aggressive" ; ; Lcl frame size = 0 G_M64771_IG01: ;; bbWeight=1 PerfScore 0.00 G_M64771_IG02: mov edx, dword ptr [rcx+16] inc edx mov rax, gword ptr [rcx+8] cmp dword ptr [rax+8], edx ja SHORT G_M64771_IG05 ;; bbWeight=1 PerfScore 7.25 G_M64771_IG03: mov eax, dword ptr [rax+8] mov dword ptr [rcx+16], eax xor eax, eax ;; bbWeight=0.50 PerfScore 1.63 G_M64771_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M64771_IG05: mov dword ptr [rcx+16], edx mov eax, 1 ;; bbWeight=0.50 PerfScore 0.63 G_M64771_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 32, prolog size 0, PerfScore 13.70, (MethodHash=779f02fc) for method SZGenericArrayEnumerator`1:MoveNext():bool:this ; ============================================================ ; Assembly listing for method SZGenericArrayEnumerator`1:get_Current():double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 loc0 [V01,T01] ( 4, 3 ) int -> rax ; V02 loc1 [V02,T02] ( 3, 3 ) ref -> rcx class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 cse0 [V04,T03] ( 2, 2 ) int -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M51950_IG01: sub rsp, 40 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M51950_IG02: mov eax, dword ptr [rcx+16] mov rcx, gword ptr [rcx+8] mov edx, dword ptr [rcx+8] cmp edx, eax jbe SHORT G_M51950_IG05 ;; bbWeight=1 PerfScore 7.25 G_M51950_IG03: movsxd rax, eax vmovsd xmm0, qword ptr [rcx+8*rax+16] ;; bbWeight=1 PerfScore 2.25 G_M51950_IG04: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 G_M51950_IG05: mov ecx, eax call ThrowHelper:ThrowInvalidOperationException_EnumCurrent(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 43, prolog size 7, PerfScore 16.40, (MethodHash=d6993511) for method SZGenericArrayEnumerator`1:get_Current():double:this ; ============================================================ ; Assembly listing for method SZGenericArrayEnumerator`1:Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M27702_IG01: ;; bbWeight=1 PerfScore 0.00 G_M27702_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=799093c9) for method SZGenericArrayEnumerator`1:Dispose():this ; ============================================================ ; Assembly listing for method TimeUnit:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd exact "NewObj constructor temp" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init class-hnd exact "NewObj constructor temp" ; V05 tmp5 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] must-init class-hnd exact "NewObj constructor temp" ; V06 tmp6 [V06 ] ( 1, 1 ) ref -> [rbp-0x30] must-init class-hnd exact "NewObj constructor temp" ; V07 tmp7 [V07 ] ( 1, 1 ) ref -> [rbp-0x38] must-init class-hnd exact "NewObj constructor temp" ; V08 tmp8 [V08 ] ( 1, 1 ) ref -> [rbp-0x40] must-init class-hnd exact "dup spill" ; V09 tmp9 [V09 ] ( 1, 1 ) long -> [rbp-0x48] "argument with side effect" ; V10 tmp10 [V10 ] ( 1, 1 ) ref -> [rbp-0x50] must-init "argument with side effect" ; V11 tmp11 [V11 ] ( 1, 1 ) ref -> [rbp-0x58] must-init "argument with side effect" ; V12 tmp12 [V12 ] ( 1, 1 ) long -> [rbp-0x60] "argument with side effect" ; V13 tmp13 [V13 ] ( 1, 1 ) ref -> [rbp-0x68] must-init "argument with side effect" ; V14 tmp14 [V14 ] ( 1, 1 ) ref -> [rbp-0x70] must-init "argument with side effect" ; V15 tmp15 [V15 ] ( 1, 1 ) long -> [rbp-0x78] "argument with side effect" ; V16 tmp16 [V16 ] ( 1, 1 ) ref -> [rbp-0x80] must-init "argument with side effect" ; V17 tmp17 [V17 ] ( 1, 1 ) ref -> [rbp-0x88] must-init "argument with side effect" ; ; Lcl frame size = 176 G_M7541_IG01: push rbp sub rsp, 176 lea rbp, [rsp+B0H] xor rax, rax mov qword ptr [rbp-88H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-80H], xmm4 vmovdqa xmmword ptr [rbp-70H], xmm4 mov rax, -96 vmovdqa xmmword ptr [rax+rbp], xmm4 vmovdqa xmmword ptr [rbp+rax+10H], xmm4 vmovdqa xmmword ptr [rbp+rax+20H], xmm4 add rax, 48 jne SHORT -5 instr ;; bbWeight=1 PerfScore 9.83 G_M7541_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov r9d, 1 movsxd r9, r9d mov rcx, gword ptr [rbp-08H] call TimeUnit:.ctor(String,String,long):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov r9d, 0x3E8 movsxd r9, r9d mov rcx, gword ptr [rbp-10H] call TimeUnit:.ctor(String,String,long):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-18H], rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov r9d, 0xD1FFAB1E movsxd r9, r9d mov rcx, gword ptr [rbp-18H] call TimeUnit:.ctor(String,String,long):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-18H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-20H], rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov r9d, 0xD1FFAB1E movsxd r9, r9d mov rcx, gword ptr [rbp-20H] call TimeUnit:.ctor(String,String,long):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-20H] ;; bbWeight=1 PerfScore 45.00 G_M7541_IG03: call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-28H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-50H], rcx mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-58H], rcx mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] cmp dword ptr [rcx], ecx call TimeUnit:get_NanosecondAmount():long:this mov r9d, 60 movsxd r9, r9d imul r9, rax mov qword ptr [rbp-48H], r9 mov r9, qword ptr [rbp-48H] mov rdx, gword ptr [rbp-50H] mov r8, gword ptr [rbp-58H] mov rcx, gword ptr [rbp-28H] call TimeUnit:.ctor(String,String,long):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-28H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-30H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-68H], rcx mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-70H], rcx mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] cmp dword ptr [rcx], ecx call TimeUnit:get_NanosecondAmount():long:this mov r9d, 60 movsxd r9, r9d imul r9, rax mov qword ptr [rbp-60H], r9 mov r9, qword ptr [rbp-60H] mov rdx, gword ptr [rbp-68H] mov r8, gword ptr [rbp-70H] mov rcx, gword ptr [rbp-30H] call TimeUnit:.ctor(String,String,long):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-30H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-38H], rax mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-80H], rcx ;; bbWeight=1 PerfScore 56.00 G_M7541_IG04: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov gword ptr [rbp-88H], rcx mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] cmp dword ptr [rcx], ecx call TimeUnit:get_NanosecondAmount():long:this mov r9d, 24 movsxd r9, r9d imul r9, rax mov qword ptr [rbp-78H], r9 mov r9, qword ptr [rbp-78H] mov rdx, gword ptr [rbp-80H] mov r8, gword ptr [rbp-88H] mov rcx, gword ptr [rbp-38H] call TimeUnit:.ctor(String,String,long):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-38H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 7 call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-40H], rax mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-40H] xor edx, edx call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-40H] mov edx, 1 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-40H] mov edx, 2 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-40H] mov edx, 3 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-40H] mov edx, 4 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-40H] mov edx, 5 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-40H] mov edx, 6 call CORINFO_HELP_ARRADDR_ST ;; bbWeight=1 PerfScore 53.25 G_M7541_IG05: mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-40H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 2.50 G_M7541_IG06: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 1032, prolog size 72, PerfScore 272.38, (MethodHash=4384e28a) for method TimeUnit:.cctor() ; ============================================================ ; Assembly listing for method TimeUnit:.ctor(String,String,long):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rdi class-hnd ; V03 arg3 [V03,T03] ( 3, 3 ) long -> rbx ;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5120_IG01: push rdi push rsi push rbx mov rsi, rcx mov rdi, r8 mov rbx, r9 ;; bbWeight=1 PerfScore 3.75 G_M5120_IG02: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov qword ptr [rsi+24], rbx ;; bbWeight=1 PerfScore 4.25 G_M5120_IG03: pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.50 ; Total bytes of code 41, prolog size 3, PerfScore 14.60, (MethodHash=83f9ebff) for method TimeUnit:.ctor(String,String,long):this ; ============================================================ ; Assembly listing for method TimeUnit:get_NanosecondAmount():long:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M23301_IG01: ;; bbWeight=1 PerfScore 0.00 G_M23301_IG02: mov rax, qword ptr [rcx+24] ;; bbWeight=1 PerfScore 2.00 G_M23301_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=1223a4fa) for method TimeUnit:get_NanosecondAmount():long:this ; ============================================================ ; Assembly listing for method UnitPresentation:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M30422_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax mov qword ptr [rbp-10H], rax ;; bbWeight=1 PerfScore 4.00 G_M30422_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] mov edx, 1 xor r8d, r8d call UnitPresentation:.ctor(bool,int):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] xor edx, edx xor r8d, r8d call UnitPresentation:.ctor(bool,int):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 14.25 G_M30422_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 134, prolog size 20, PerfScore 33.65, (MethodHash=96fa8929) for method UnitPresentation:.cctor() ; ============================================================ ; Assembly listing for method UnitPresentation:.ctor(bool,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) bool -> rdx ; V02 arg2 [V02,T02] ( 3, 3 ) int -> r8 ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M6392_IG01: ;; bbWeight=1 PerfScore 0.00 G_M6392_IG02: mov byte ptr [rcx+12], dl mov dword ptr [rcx+8], r8d ;; bbWeight=1 PerfScore 2.00 G_M6392_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 8, prolog size 0, PerfScore 3.80, (MethodHash=9c42e707) for method UnitPresentation:.ctor(bool,int):this ; ============================================================ ; Assembly listing for method TimeUnit:Convert(double,TimeUnit,TimeUnit):double ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 4, 3.50) double -> [rsp+0x40] ; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T01] ( 3, 3 ) ref -> r8 class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T05] ( 2, 2 ) double -> mm6 ; V05 tmp2 [V05,T02] ( 4, 3.50) ref -> r8 ; V06 tmp3 [V06,T03] ( 3, 3 ) ref -> rax class-hnd exact "dup spill" ; ; Lcl frame size = 56 G_M54367_IG01: sub rsp, 56 vzeroupper vmovaps qword ptr [rsp+20H], xmm6 ;; bbWeight=1 PerfScore 4.25 G_M54367_IG02: vxorps xmm1, xmm1 vcvtsi2sd xmm1, qword ptr [rdx+24] vmovsd qword ptr [rsp+40H], xmm0 vmulsd xmm6, xmm0, xmm1 test r8, r8 jne SHORT G_M54367_IG04 ;; bbWeight=1 PerfScore 13.08 G_M54367_IG03: mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_VC vmovsd xmm0, qword ptr [rsp+40H] vmovsd qword ptr [rax+16], xmm0 mov rcx, rax call TimeUnit:GetBestTimeUnit(ref):TimeUnit mov r8, rax ;; bbWeight=0.50 PerfScore 2.75 G_M54367_IG04: vxorps xmm0, xmm0 vcvtsi2sd xmm0, qword ptr [r8+24] vdivsd xmm0, xmm6, xmm0 ;; bbWeight=1 PerfScore 20.33 G_M54367_IG05: vmovaps xmm6, qword ptr [rsp+20H] add rsp, 56 ret ;; bbWeight=1 PerfScore 5.25 ; Total bytes of code 105, prolog size 13, PerfScore 57.07, (MethodHash=c4512ba0) for method TimeUnit:Convert(double,TimeUnit,TimeUnit):double ; ============================================================ ; Assembly listing for method String:PadLeft(int,ushort):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 5, 4 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T03] ( 5, 4.50) int -> rdx ; V02 arg2 [V02,T01] ( 3, 6 ) ushort -> rsi ; V03 loc0 [V03,T06] ( 3, 2.50) int -> rbx ; V04 loc1 [V04,T02] ( 5, 7 ) int -> rbp ; V05 loc2 [V05,T07] ( 4, 2 ) ref -> r14 class-hnd ; V06 loc3 [V06,T05] ( 3, 5 ) long -> rcx ; V07 loc4 [V07 ] ( 3, 1.50) byref -> [rsp+0x28] must-init pinned ; V08 loc5 [V08,T00] ( 5, 16.50) int -> r8 ;* V09 loc6 [V09 ] ( 0, 0 ) long -> zero-ref ; V10 loc7 [V10 ] ( 3, 1.50) byref -> [rsp+0x20] must-init pinned ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V12 tmp1 [V12,T10] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V13 tmp2 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V14 tmp3 [V14,T11] ( 2, 0 ) ref -> rcx "argument with side effect" ; V15 tmp4 [V15,T12] ( 2, 0 ) ref -> rdi "argument with side effect" ; V16 tmp5 [V16,T13] ( 2, 0 ) ref -> r8 "argument with side effect" ; V17 tmp6 [V17,T08] ( 2, 2 ) long -> rcx "Cast away GC" ; V18 tmp7 [V18,T09] ( 2, 2 ) long -> rdx "Cast away GC" ; ; Lcl frame size = 48 G_M37713_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov qword ptr [rsp+20H], rax mov rdi, rcx mov esi, r8d ;; bbWeight=1 PerfScore 8.00 G_M37713_IG02: test edx, edx jl G_M37713_IG10 ;; bbWeight=1 PerfScore 1.25 G_M37713_IG03: mov ebx, dword ptr [rdi+8] mov ebp, edx sub ebp, ebx test ebp, ebp jg SHORT G_M37713_IG06 ;; bbWeight=1 PerfScore 3.75 G_M37713_IG04: mov rax, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M37713_IG05: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M37713_IG06: mov ecx, edx call String:FastAllocateString(int):String mov r14, rax cmp dword ptr [r14], r14d lea rcx, bword ptr [r14+12] mov bword ptr [rsp+28H], rcx mov rcx, bword ptr [rsp+28H] xor r8d, r8d test ebp, ebp jle SHORT G_M37713_IG08 ;; bbWeight=0.50 PerfScore 3.75 G_M37713_IG07: movsxd rdx, r8d mov word ptr [rcx+2*rdx], si inc r8d cmp r8d, ebp jl SHORT G_M37713_IG07 ;; bbWeight=4 PerfScore 11.00 G_M37713_IG08: add rdi, 12 mov bword ptr [rsp+20H], rdi mov rdx, bword ptr [rsp+20H] movsxd r8, ebp lea rcx, [rcx+2*r8] add ebx, ebx mov r8d, ebx call Buffer:Memmove(long,long,long) xor rax, rax mov bword ptr [rsp+20H], rax mov bword ptr [rsp+28H], rax mov rax, r14 ;; bbWeight=0.50 PerfScore 3.50 G_M37713_IG09: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M37713_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x19A6 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA085 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 261, prolog size 28, PerfScore 61.23, (MethodHash=30926cae) for method String:PadLeft(int,ushort):String:this ; ============================================================ ; Assembly listing for method Number:FormatDouble(double,String,NumberFormatInfo):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T26] ( 3, 3 ) double -> mm0 ; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rdx class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> r9 class-hnd ; V03 loc0 [V03 ] ( 4, 3.50) struct (32) [rbp+0x20] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ;* V04 loc1 [V04 ] ( 0, 0 ) struct (16) zero-ref ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V08 tmp3 [V08,T04] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V09 tmp4 [V09,T07] ( 4, 3.50) ref -> rax ; V10 tmp5 [V10,T05] ( 2, 4 ) long -> rcx "Inlining Arg" ;* V11 tmp6 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V16 tmp11 [V16,T10] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V18 tmp13 [V18,T16] ( 2, 2 ) int -> r8 "Inlining Arg" ; V19 tmp14 [V19,T11] ( 2, 2 ) byref -> rcx V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ;* V20 tmp15 [V20,T17] ( 0, 0 ) int -> zero-ref V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V21 tmp16 [V21,T12] ( 2, 2 ) byref -> rcx V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ;* V22 tmp17 [V22,T23] ( 0, 0 ) int -> zero-ref V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V23 tmp18 [V23,T13] ( 2, 2 ) byref -> rcx V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V24 tmp19 [V24,T18] ( 2, 2 ) int -> r8 V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V25 tmp20 [V25,T14] ( 2, 2 ) byref -> rcx V11._value(offs=0x00) P-INDEP "field V11._value (fldOffset=0x0)" ; V26 tmp21 [V26,T15] ( 2, 2 ) byref -> rcx V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ;* V27 tmp22 [V27,T24] ( 0, 0 ) int -> zero-ref V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ; V28 tmp23 [V28,T08] ( 3, 2 ) byref -> rcx V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ; V29 tmp24 [V29,T09] ( 3, 2 ) int -> r8 V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V30 tmp25 [V30,T19] ( 2, 1 ) byref -> rcx V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ; V31 tmp26 [V31,T22] ( 2, 1 ) int -> r8 V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ; V32 tmp27 [V32,T20] ( 2, 1 ) byref -> rcx V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ;* V33 tmp28 [V33,T25] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ; V34 tmp29 [V34,T21] ( 2, 1 ) byref -> rcx V17._value(offs=0x00) P-INDEP "field V17._value (fldOffset=0x0)" ; V35 tmp30 [V35,T01] ( 3, 6 ) byref -> r8 stack-byref "BlockOp address local" ; V36 tmp31 [V36 ] ( 2, 4 ) struct (16) [rbp+0x10] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V37 tmp32 [V37,T02] ( 3, 6 ) byref -> rdx stack-byref "BlockOp address local" ; V38 tmp33 [V38,T06] ( 2, 4 ) long -> rax "argument with side effect" ; V39 tmp34 [V39,T27] ( 2, 4 ) double -> mm0 "argument with side effect" ; V40 GsCookie [V40 ] ( 1, 1 ) long -> [rbp+0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; ; Lcl frame size = 96 G_M341_IG01: push rbp sub rsp, 96 vzeroupper lea rbp, [rsp+20H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp+10H], xmm4 vmovdqa xmmword ptr [rbp+20H], xmm4 vmovdqa xmmword ptr [rbp+30H], xmm4 mov rax, 0xD1FFAB1E mov qword ptr [rbp+08H], rax mov r9, r8 ;; bbWeight=1 PerfScore 7.58 G_M341_IG02: add rsp, 32 test dword ptr [rsp], esp sub rsp, 64 sub rsp, 32 lea rcx, [rsp+20H] lea r8, bword ptr [rbp+30H] mov bword ptr [r8], rcx mov dword ptr [r8+8], 32 xor ecx, ecx mov dword ptr [rbp+28H], ecx test rdx, rdx jne SHORT G_M341_IG04 ;; bbWeight=1 PerfScore 8.25 G_M341_IG03: xor rcx, rcx xor r8d, r8d jmp SHORT G_M341_IG05 ;; bbWeight=0.50 PerfScore 1.25 G_M341_IG04: lea rcx, bword ptr [rdx+12] mov r8d, dword ptr [rdx+8] ;; bbWeight=0.50 PerfScore 1.25 G_M341_IG05: lea rax, [rbp+20H] lea rdx, bword ptr [rbp+10H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], r8d mov rcx, rax vmovaps xmm1, xmm0 lea r8, bword ptr [rbp+10H] call Number:FormatDouble(byref,double,ReadOnlySpan`1,NumberFormatInfo):String test rax, rax jne SHORT G_M341_IG07 ;; bbWeight=1 PerfScore 6.25 G_M341_IG06: lea rcx, bword ptr [rbp+20H] call ValueStringBuilder:ToString():String:this ;; bbWeight=0.50 PerfScore 0.75 G_M341_IG07: mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+08H], rcx je SHORT G_M341_IG08 call CORINFO_HELP_FAIL_FAST ;; bbWeight=1 PerfScore 3.25 G_M341_IG08: nop ;; bbWeight=1 PerfScore 0.25 G_M341_IG09: lea rsp, [rbp+40H] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 182, prolog size 46, PerfScore 49.53, (MethodHash=9eb7feaa) for method Number:FormatDouble(double,String,NumberFormatInfo):String ; ============================================================ ; Assembly listing for method Number:FormatDouble(byref,double,ReadOnlySpan`1,NumberFormatInfo):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 4, 3 ) byref -> rbx ; V01 arg1 [V01,T19] ( 10, 6.50) double -> mm6 ; V02 arg2 [V02,T00] ( 4, 6 ) byref -> rsi ; V03 arg3 [V03,T01] ( 8, 5 ) ref -> rdi class-hnd ; V04 loc0 [V04,T07] ( 5, 2.50) ushort -> r15 ; V05 loc1 [V05 ] ( 6, 3 ) int -> [rbp+0x48] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc2 [V06,T15] ( 2, 1 ) long -> r9 ; V07 loc3 [V07 ] ( 13, 6.50) struct (32) [rbp+0x28] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ; V08 loc4 [V08,T11] ( 3, 1.50) int -> r14 ; V09 loc5 [V09 ] ( 3, 1.50) bool -> [rbp+0x20] do-not-enreg[X] addr-exposed ld-addr-op ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ;* V11 tmp1 [V11 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ; V12 tmp2 [V12,T09] ( 2, 2 ) long -> rax "Inline return value spill temp" ;* V13 tmp3 [V13 ] ( 0, 0 ) double -> zero-ref ld-addr-op "Inlining Arg" ; V14 tmp4 [V14,T20] ( 2, 2 ) simd16 -> mm0 "Inline stloc first use temp" ; V15 tmp5 [V15,T16] ( 2, 1 ) long -> r14 "Inline return value spill temp" ;* V16 tmp6 [V16 ] ( 0, 0 ) double -> zero-ref ld-addr-op "Inlining Arg" ;* V17 tmp7 [V17,T21] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" ;* V18 tmp8 [V18 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V19 tmp9 [V19,T04] ( 3, 3 ) byref -> r9 "Span.get_Item ptrToSpan" ;* V20 tmp10 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V21 tmp11 [V21,T17] ( 2, 1 ) long -> r9 "Inline return value spill temp" ;* V22 tmp12 [V22 ] ( 0, 0 ) double -> zero-ref ld-addr-op "Inlining Arg" ;* V23 tmp13 [V23,T22] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" ; V24 tmp14 [V24,T12] ( 3, 1.50) int -> rsi "Inline return value spill temp" ; V25 tmp15 [V25,T06] ( 3, 3 ) int -> r14 "Inlining Arg" ;* V26 tmp16 [V26 ] ( 0, 0 ) byref -> zero-ref V31._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ;* V27 tmp17 [V27 ] ( 0, 0 ) int -> zero-ref V31._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V28 tmp18 [V28,T13] ( 2, 1 ) byref -> r9 V18._pointer(offs=0x00) P-INDEP "field V18._pointer (fldOffset=0x0)" ;* V29 tmp19 [V29,T18] ( 0, 0 ) int -> zero-ref V18._length(offs=0x08) P-INDEP "field V18._length (fldOffset=0x8)" ; V30 tmp20 [V30,T14] ( 2, 1 ) byref -> r9 V20._value(offs=0x00) P-INDEP "field V20._value (fldOffset=0x0)" ;* V31 tmp21 [V31 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V32 tmp22 [V32 ] ( 4, 4 ) struct (16) [rbp+0x10] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V33 tmp23 [V33,T05] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V34 tmp24 [V34,T08] ( 2, 2 ) byref -> rcx "argument with side effect" ; V35 tmp25 [V35,T10] ( 2, 2 ) long -> rdx "argument with side effect" ; V36 GsCookie [V36 ] ( 1, 1 ) long -> [rbp+0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V37 cse0 [V37,T03] ( 4, 3 ) long -> r14 "CSE - aggressive" ; ; Lcl frame size = 152 G_M13309_IG01: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 152 vzeroupper vmovaps qword ptr [rsp+80H], xmm6 lea rbp, [rsp+30H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp+10H], xmm4 vmovdqa xmmword ptr [rbp+20H], xmm4 vmovdqa xmmword ptr [rbp+30H], xmm4 xor rax, rax mov qword ptr [rbp+40H], rax mov rax, 0xD1FFAB1E mov qword ptr [rbp+08H], rax mov rbx, rcx mov rsi, r8 mov rdi, r9 vmovaps xmm6, xmm1 ;; bbWeight=1 PerfScore 17.58 G_M13309_IG02: vmovaps xmm0, xmm6 vmovd r14, xmm0 mov rax, r14 mov rcx, 0xD1FFAB1E and rax, rcx mov rcx, 0xD1FFAB1E cmp rax, rcx jl G_M13309_IG13 ;; bbWeight=1 PerfScore 3.50 G_M13309_IG03: vucomisd xmm6, xmm6 jp SHORT G_M13309_IG04 je SHORT G_M13309_IG07 ;; bbWeight=0.50 PerfScore 1.50 G_M13309_IG04: mov rax, gword ptr [rdi+88] mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+08H], rcx je SHORT G_M13309_IG05 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 2.63 G_M13309_IG05: nop ;; bbWeight=0.50 PerfScore 0.13 G_M13309_IG06: vmovaps xmm6, qword ptr [rbp+50H] lea rsp, [rbp+68H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 4.25 G_M13309_IG07: test r14, r14 jl SHORT G_M13309_IG10 mov rax, gword ptr [rdi+96] mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+08H], rcx je SHORT G_M13309_IG08 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 3.25 G_M13309_IG08: nop ;; bbWeight=0.50 PerfScore 0.13 G_M13309_IG09: vmovaps xmm6, qword ptr [rbp+50H] lea rsp, [rbp+68H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 4.25 G_M13309_IG10: mov rax, gword ptr [rdi+104] mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+08H], rcx je SHORT G_M13309_IG11 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 2.63 G_M13309_IG11: nop ;; bbWeight=0.50 PerfScore 0.13 G_M13309_IG12: vmovaps xmm6, qword ptr [rbp+50H] lea rsp, [rbp+68H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 4.25 G_M13309_IG13: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rbp+10H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M13309_IG14: lea rcx, bword ptr [rbp+10H] lea rdx, [rbp+48H] call Number:ParseFormatSpecifier(ReadOnlySpan`1,byref):ushort mov r15d, eax add rsp, 48 test dword ptr [rsp], esp sub rsp, 784 sub rsp, 48 lea r9, [rsp+30H] test r15d, r15d jne SHORT G_M13309_IG15 mov dword ptr [rbp+48H], 15 ;; bbWeight=0.50 PerfScore 3.88 G_M13309_IG15: xor edx, edx mov dword ptr [rbp+28H], edx mov dword ptr [rbp+2CH], edx mov byte ptr [rbp+30H], 0 mov byte ptr [rbp+31H], 0 mov byte ptr [rbp+32H], 3 lea rdx, bword ptr [rbp+38H] mov bword ptr [rdx], r9 mov dword ptr [rdx+8], 769 lea r9, bword ptr [rbp+38H] cmp dword ptr [r9+8], 0 jbe G_M13309_IG28 mov r9, bword ptr [r9] mov byte ptr [r9], 0 vmovaps xmm0, xmm6 mov r9, r14 test r9, r9 setl r9b movzx r9, r9b mov byte ptr [rbp+30H], r9b lea r9, [rbp+20H] lea rdx, [rbp+48H] mov ecx, r15d mov r8, rdi call Number:GetFloatingPointMaxDigitsAndPrecision(ushort,byref,NumberFormatInfo,byref):int mov r14d, eax vxorps xmm0, xmm0 vucomisd xmm6, xmm0 jp SHORT G_M13309_IG16 je SHORT G_M13309_IG18 ;; bbWeight=0.50 PerfScore 11.67 G_M13309_IG16: cmp byte ptr [rbp+20H], 0 je SHORT G_M13309_IG17 lea r8, [rbp+28H] vmovaps xmm0, xmm6 mov edx, dword ptr [rbp+48H] call Grisu3:TryRunDouble(double,int,byref):bool test eax, eax jne SHORT G_M13309_IG18 ;; bbWeight=0.50 PerfScore 3.00 G_M13309_IG17: mov r8d, dword ptr [rbp+20H] movzx r8, r8b lea r9, [rbp+28H] vmovaps xmm0, xmm6 mov edx, dword ptr [rbp+48H] call Number:Dragon4Double(double,int,bool,byref) ;; bbWeight=0.50 PerfScore 2.00 G_M13309_IG18: test r15d, r15d je SHORT G_M13309_IG22 cmp dword ptr [rbp+48H], -1 jne SHORT G_M13309_IG21 mov r14d, dword ptr [rbp+28H] cmp r14d, 17 jge SHORT G_M13309_IG19 mov esi, 17 jmp SHORT G_M13309_IG20 ;; bbWeight=0.50 PerfScore 3.88 G_M13309_IG19: mov esi, r14d ;; bbWeight=0.50 PerfScore 0.13 G_M13309_IG20: mov r14d, esi ;; bbWeight=0.50 PerfScore 0.13 G_M13309_IG21: mov gword ptr [rsp+20H], rdi lea rdx, [rbp+28H] mov rcx, rbx mov r8d, r15d mov r9d, r14d call Number:NumberToString(byref,byref,ushort,int,NumberFormatInfo) jmp SHORT G_M13309_IG25 ;; bbWeight=0.50 PerfScore 2.63 G_M13309_IG22: mov rcx, rbx lea rdx, [rbp+28H] ;; bbWeight=0.50 PerfScore 0.38 G_M13309_IG23: vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rbp+10H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M13309_IG24: lea r8, bword ptr [rbp+10H] mov r9, rdi call Number:NumberToStringFormat(byref,byref,ReadOnlySpan`1,NumberFormatInfo) ;; bbWeight=0.50 PerfScore 0.88 G_M13309_IG25: xor rax, rax mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+08H], rcx je SHORT G_M13309_IG26 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.75 G_M13309_IG26: nop ;; bbWeight=0.50 PerfScore 0.13 G_M13309_IG27: vmovaps xmm6, qword ptr [rbp+50H] lea rsp, [rbp+68H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 4.25 G_M13309_IG28: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 630, prolog size 71, PerfScore 146.98, (MethodHash=7ff8cc02) for method Number:FormatDouble(byref,double,ReadOnlySpan`1,NumberFormatInfo):String ; ============================================================ ; Assembly listing for method Number:GetFloatingPointMaxDigitsAndPrecision(ushort,byref,NumberFormatInfo,byref):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 3 ) ushort -> rcx ; V01 arg1 [V01,T00] ( 14, 8 ) byref -> rdx ; V02 arg2 [V02,T02] ( 5, 3.50) ref -> r8 class-hnd ; V03 arg3 [V03,T01] ( 9, 5.50) byref -> r9 ; V04 loc0 [V04,T10] ( 2, 1 ) int -> rax ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T11] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T12] ( 2, 0 ) ref -> rcx "argument with side effect" ; V08 tmp3 [V08,T13] ( 2, 0 ) ref -> rdx "argument with side effect" ; V09 cse0 [V09,T05] ( 7, 3.50) int -> r10 "CSE - aggressive" ; V10 cse1 [V10,T04] ( 7, 4.50) int -> rcx "CSE - aggressive" ; V11 rat0 [V11,T06] ( 3, 3 ) int -> r11 "ReplaceWithLclVar is creating a new local variable" ; V12 rat1 [V12,T07] ( 3, 3 ) int -> rcx "ReplaceWithLclVar is creating a new local variable" ; V13 rat2 [V13,T08] ( 3, 3 ) int -> rsi "ReplaceWithLclVar is creating a new local variable" ; V14 rat3 [V14,T09] ( 3, 3 ) int -> rcx "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 32 G_M39177_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M39177_IG02: movzx rcx, cx test ecx, ecx jne SHORT G_M39177_IG05 ;; bbWeight=1 PerfScore 1.50 G_M39177_IG03: mov byte ptr [r9], 1 mov eax, dword ptr [rdx] ;; bbWeight=0.50 PerfScore 1.50 G_M39177_IG04: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M39177_IG05: mov r10d, dword ptr [rdx] mov eax, r10d cmp ecx, 82 ja SHORT G_M39177_IG07 lea r11d, [rcx-67] cmp r11d, 4 ja SHORT G_M39177_IG06 mov ecx, r11d lea r11, [reloc @RWD00] mov r11d, dword ptr [r11+4*rcx] lea rsi, G_M39177_IG02 add r11, rsi jmp r11 ;; bbWeight=0.50 PerfScore 5.63 G_M39177_IG06: add ecx, -78 cmp ecx, 4 ja G_M39177_IG21 mov ecx, ecx lea r11, [reloc @RWD20] mov r11d, dword ptr [r11+4*rcx] lea rsi, G_M39177_IG02 add r11, rsi jmp r11 ;; bbWeight=0.50 PerfScore 3.75 G_M39177_IG07: lea esi, [rcx-99] cmp esi, 4 ja SHORT G_M39177_IG08 mov ecx, esi lea r11, [reloc @RWD40] mov r11d, dword ptr [r11+4*rcx] lea rsi, G_M39177_IG02 add r11, rsi jmp r11 ;; bbWeight=0.50 PerfScore 3.88 G_M39177_IG08: add ecx, -110 cmp ecx, 4 ja G_M39177_IG21 mov ecx, ecx lea r11, [reloc @RWD60] mov r11d, dword ptr [r11+4*rcx] lea rsi, G_M39177_IG02 add r11, rsi jmp r11 ;; bbWeight=0.50 PerfScore 3.75 G_M39177_IG09: cmp r10d, -1 jne SHORT G_M39177_IG10 mov r10d, dword ptr [r8+156] mov dword ptr [rdx], r10d ;; bbWeight=0.50 PerfScore 2.13 G_M39177_IG10: mov byte ptr [r9], 0 jmp SHORT G_M39177_IG20 ;; bbWeight=0.50 PerfScore 1.50 G_M39177_IG11: cmp r10d, -1 jne SHORT G_M39177_IG12 mov dword ptr [rdx], 6 ;; bbWeight=0.50 PerfScore 1.13 G_M39177_IG12: inc dword ptr [rdx] mov byte ptr [r9], 1 jmp SHORT G_M39177_IG20 ;; bbWeight=0.50 PerfScore 4.00 G_M39177_IG13: cmp r10d, -1 jne SHORT G_M39177_IG14 mov ecx, dword ptr [r8+152] mov dword ptr [rdx], ecx ;; bbWeight=0.50 PerfScore 2.13 G_M39177_IG14: mov byte ptr [r9], 0 jmp SHORT G_M39177_IG20 ;; bbWeight=0.50 PerfScore 1.50 G_M39177_IG15: test r10d, r10d jne SHORT G_M39177_IG16 mov dword ptr [rdx], -1 ;; bbWeight=0.50 PerfScore 1.13 G_M39177_IG16: mov byte ptr [r9], 1 jmp SHORT G_M39177_IG20 ;; bbWeight=0.50 PerfScore 1.50 G_M39177_IG17: cmp r10d, -1 jne SHORT G_M39177_IG18 mov r10d, dword ptr [r8+180] mov dword ptr [rdx], r10d ;; bbWeight=0.50 PerfScore 2.13 G_M39177_IG18: add dword ptr [rdx], 2 mov byte ptr [r9], 0 jmp SHORT G_M39177_IG20 ;; bbWeight=0.50 PerfScore 4.00 G_M39177_IG19: mov dword ptr [rdx], -1 mov byte ptr [r9], 1 ;; bbWeight=0.50 PerfScore 1.00 G_M39177_IG20: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M39177_IG21: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x5C75 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call FormatException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M39177_IG09 - G_M39177_IG02 dd G_M39177_IG21 - G_M39177_IG02 dd G_M39177_IG11 - G_M39177_IG02 dd G_M39177_IG13 - G_M39177_IG02 dd G_M39177_IG15 - G_M39177_IG02 RWD20 dd G_M39177_IG13 - G_M39177_IG02 dd G_M39177_IG21 - G_M39177_IG02 dd G_M39177_IG17 - G_M39177_IG02 dd G_M39177_IG21 - G_M39177_IG02 dd G_M39177_IG19 - G_M39177_IG02 RWD40 dd G_M39177_IG09 - G_M39177_IG02 dd G_M39177_IG21 - G_M39177_IG02 dd G_M39177_IG11 - G_M39177_IG02 dd G_M39177_IG13 - G_M39177_IG02 dd G_M39177_IG15 - G_M39177_IG02 RWD60 dd G_M39177_IG13 - G_M39177_IG02 dd G_M39177_IG21 - G_M39177_IG02 dd G_M39177_IG17 - G_M39177_IG02 dd G_M39177_IG21 - G_M39177_IG02 dd G_M39177_IG19 - G_M39177_IG02 ; Total bytes of code 371, prolog size 5, PerfScore 82.23, (MethodHash=93de66f6) for method Number:GetFloatingPointMaxDigitsAndPrecision(ushort,byref,NumberFormatInfo,byref):int ; ============================================================ ; Assembly listing for method Number:Dragon4Double(double,int,bool,byref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T17] ( 4, 4 ) double -> mm0 ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi ; V02 arg2 [V02,T03] ( 3, 3 ) bool -> rbx ; V03 arg3 [V03,T00] ( 6, 6 ) byref -> rsi ;* V04 loc0 [V04 ] ( 0, 0 ) double -> zero-ref ; V05 loc1 [V05,T04] ( 5, 4 ) long -> rcx ; V06 loc2 [V06 ] ( 2, 2 ) int -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op ; V07 loc3 [V07,T13] ( 3, 2 ) int -> r8 ; V08 loc4 [V08,T12] ( 3, 2.50) bool -> r9 ; V09 loc5 [V09,T05] ( 4, 4 ) int -> rax ; V10 loc6 [V10 ] ( 2, 2 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (64) [rsp+0x00] "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) double -> zero-ref ; V13 tmp2 [V13,T01] ( 3, 6 ) byref -> rdx "Span.get_Item ptrToSpan" ;* V14 tmp3 [V14,T14] ( 0, 0 ) long -> zero-ref "Inline return value spill temp" ;* V15 tmp4 [V15 ] ( 0, 0 ) double -> zero-ref ld-addr-op "Inlining Arg" ; V16 tmp5 [V16,T18] ( 2, 2 ) simd16 -> mm1 "Inline stloc first use temp" ; V17 tmp6 [V17,T16] ( 2, 1 ) int -> r8 "Inline return value spill temp" ; V18 tmp7 [V18,T15] ( 2, 2 ) long -> r8 "Inlining Arg" ; V19 tmp8 [V19 ] ( 2, 4 ) struct (16) [rbp-0x38] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V20 tmp9 [V20,T06] ( 2, 4 ) long -> rcx "argument with side effect" ; V21 tmp10 [V21,T07] ( 2, 4 ) int -> rdx "argument with side effect" ; V22 tmp11 [V22,T08] ( 2, 4 ) int -> r8 "argument with side effect" ; V23 tmp12 [V23,T09] ( 2, 4 ) int -> r9 "argument with side effect" ; V24 tmp13 [V24,T10] ( 2, 4 ) int -> rdi "argument with side effect" ; V25 tmp14 [V25,T11] ( 2, 4 ) int -> rax "argument with side effect" ; ; Lcl frame size = 104 G_M36412_IG01: push rbp push rdi push rsi push rbx sub rsp, 104 vzeroupper lea rbp, [rsp+80H] xor rax, rax mov qword ptr [rbp-38H], rax mov edi, edx mov ebx, r8d mov rsi, r9 ;; bbWeight=1 PerfScore 7.75 G_M36412_IG02: vmovaps xmm1, xmm0 vmovd rdx, xmm1 lea rdx, [rbp-20H] call Number:ExtractFractionAndBiasedExponent(double,byref):long mov rcx, rax xor r9d, r9d mov rdx, rcx shr rdx, 52 test rdx, rdx je SHORT G_M36412_IG04 ;; bbWeight=1 PerfScore 6.75 G_M36412_IG03: mov r8d, 52 mov r9, 0xD1FFAB1E cmp rcx, r9 sete r9b movzx r9, r9b jmp SHORT G_M36412_IG05 ;; bbWeight=0.50 PerfScore 2.00 G_M36412_IG04: mov r8, rcx or r8, 1 xor edx, edx lzcnt rdx, r8 mov r8d, edx xor r8d, 63 ;; bbWeight=0.50 PerfScore 1.63 G_M36412_IG05: mov edx, dword ptr [rbp-20H] movzx rax, bl ;; bbWeight=1 PerfScore 1.25 G_M36412_IG06: vmovdqu xmm0, xmmword ptr [rsi+16] vmovdqu xmmword ptr [rbp-38H], xmm0 ;; bbWeight=1 PerfScore 3.00 G_M36412_IG07: lea r10, [rbp-28H] mov qword ptr [rsp+38H], r10 mov dword ptr [rsp+20H], edi mov dword ptr [rsp+28H], eax lea rax, bword ptr [rbp-38H] mov bword ptr [rsp+30H], rax call Number:Dragon4(long,int,int,bool,int,bool,Span`1,byref):int mov edx, dword ptr [rbp-28H] inc edx mov dword ptr [rsi+4], edx lea rdx, bword ptr [rsi+16] cmp eax, dword ptr [rdx+8] jae SHORT G_M36412_IG09 mov rdx, bword ptr [rdx] movsxd rcx, eax mov byte ptr [rdx+rcx], 0 mov dword ptr [rsi], eax ;; bbWeight=1 PerfScore 16.00 G_M36412_IG08: lea rsp, [rbp-18H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.50 G_M36412_IG09: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 210, prolog size 25, PerfScore 63.18, (MethodHash=ced271c3) for method Number:Dragon4Double(double,int,bool,byref) ; ============================================================ ; Assembly listing for method Number:ExtractFractionAndBiasedExponent(double,byref):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 3, 3 ) double -> mm0 ; V01 arg1 [V01,T00] ( 6, 5 ) byref -> rdx ;* V02 loc0 [V02 ] ( 0, 0 ) long -> zero-ref ; V03 loc1 [V03,T01] ( 4, 3 ) long -> rcx ;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 3, 3 ) long -> rax "Inline return value spill temp" ;* V06 tmp2 [V06 ] ( 0, 0 ) double -> zero-ref ld-addr-op "Inlining Arg" ; V07 tmp3 [V07,T05] ( 2, 2 ) simd16 -> mm0 "Inline stloc first use temp" ; V08 cse0 [V08,T03] ( 3, 2.50) int -> rax "CSE - aggressive" ; ; Lcl frame size = 0 G_M9766_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M9766_IG02: vmovd rax, xmm0 mov rcx, 0xD1FFAB1E and rcx, rax shr rax, 52 and eax, 0x7FF mov dword ptr [rdx], eax mov eax, dword ptr [rdx] test eax, eax je SHORT G_M9766_IG04 ;; bbWeight=1 PerfScore 8.00 G_M9766_IG03: mov r8, 0xD1FFAB1E or rcx, r8 add eax, -0x433 mov dword ptr [rdx], eax jmp SHORT G_M9766_IG05 ;; bbWeight=0.50 PerfScore 1.88 G_M9766_IG04: mov dword ptr [rdx], -0x432 ;; bbWeight=0.50 PerfScore 0.50 G_M9766_IG05: mov rax, rcx ;; bbWeight=1 PerfScore 0.25 G_M9766_IG06: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 70, prolog size 3, PerfScore 19.63, (MethodHash=61afd9d9) for method Number:ExtractFractionAndBiasedExponent(double,byref):long ; ============================================================ ; Assembly listing for method Number:Dragon4(long,int,int,bool,int,bool,Span`1,byref):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T11] ( 7, 5 ) long -> rsi ; V01 arg1 [V01,T15] ( 3, 3 ) int -> rdx ; V02 arg2 [V02,T16] ( 3, 3 ) int -> r8 ; V03 arg3 [V03,T17] ( 3, 3 ) bool -> r9 ; V04 arg4 [V04,T34] ( 1, 1 ) int -> [rsp+0x10F0] ptr ; V05 arg5 [V05,T35] ( 1, 0.50) bool -> [rsp+0x10F8] ; V06 arg6 [V06,T28] ( 1, 2 ) byref -> rdi ld-addr-op ; V07 arg7 [V07,T33] ( 1, 1 ) byref -> [rsp+0x1108] ptr ; V08 loc0 [V08,T00] ( 28, 60 ) int -> r12 ; V09 loc1 [V09 ] ( 17, 20 ) struct (464) [rsp+0xEA0] do-not-enreg[XSF] addr-exposed ld-addr-op ptr unsafe-buffer ; V10 loc2 [V10 ] ( 23, 36 ) struct (464) [rsp+0xCD0] do-not-enreg[XSF] addr-exposed ld-addr-op unsafe-buffer ; V11 loc3 [V11 ] ( 21, 22.50) struct (464) [rsp+0xB00] do-not-enreg[XSF] addr-exposed ld-addr-op unsafe-buffer ; V12 loc4 [V12,T04] ( 12, 14.50) long -> r13 ; V13 loc5 [V13 ] ( 4, 2 ) struct (464) [rsp+0x930] do-not-enreg[XSF] addr-exposed ld-addr-op unsafe-buffer ; V14 loc6 [V14,T01] ( 19, 33.50) int -> r14 ; V15 loc7 [V15,T13] ( 3, 5.50) bool -> rsi ; V16 loc8 [V16,T22] ( 4, 2 ) bool -> r15 ; V17 loc9 [V17,T05] ( 6, 10.50) int -> r15 ; V18 loc10 [V18,T21] ( 4, 3 ) int -> rax ; V19 loc11 [V19,T06] ( 5, 9 ) bool -> registers ; V20 loc12 [V20,T07] ( 5, 9 ) bool -> registers ; V21 loc13 [V21,T03] ( 13, 20.50) int -> rbp ; V22 loc14 [V22,T20] ( 6, 3 ) bool -> rdx ;* V23 loc15 [V23 ] ( 0, 0 ) int -> zero-ref ptr ; V24 loc16 [V24 ] ( 3, 1.50) struct (464) [rsp+0x760] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer ; V25 loc17 [V25 ] ( 2, 1 ) struct (464) [rsp+0x590] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer ; V26 loc18 [V26,T29] ( 3, 1.50) int -> rax ; V27 loc19 [V27,T23] ( 4, 2 ) int -> rdx ;* V28 loc20 [V28 ] ( 0, 0 ) int -> zero-ref ptr ; V29 loc21 [V29,T24] ( 4, 2 ) int -> [rsp+0x107C] ptr ; V30 loc22 [V30 ] ( 2, 8 ) struct (464) [rsp+0x3C0] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer ; V31 loc23 [V31,T09] ( 3, 8 ) int -> [rsp+0x1078] ; V32 loc24 [V32,T10] ( 3, 8 ) int -> rax ; V33 loc25 [V33,T30] ( 3, 1.50) int -> rax ; V34 tmp0 [V34 ] ( 1, 1 ) int -> [rsp+0x1074] do-not-enreg[X] addr-exposed "GSCookie dummy" ; V35 OutArgs [V35 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V36 tmp2 [V36,T19] ( 2, 4 ) int -> r14 "dup spill" ; V37 tmp3 [V37,T25] ( 2, 2 ) byref -> rdx "dup spill" ; V38 tmp4 [V38,T31] ( 3, 1.50) int -> rcx ; V39 tmp5 [V39 ] ( 2, 1 ) struct (464) [rsp+0x1F0] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "Inline ldloca(s) first use temp" ; V40 tmp6 [V40 ] ( 2, 1 ) struct (464) [rsp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "Inline ldloca(s) first use temp" ; V41 tmp7 [V41,T32] ( 2, 1 ) int -> rcx "Inline return value spill temp" ; V42 tmp8 [V42,T26] ( 2, 2 ) int -> rax "Inlining Arg" ; V43 GsCookie [V43 ] ( 1, 1 ) long -> [rsp+0x1080] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V44 tmp10 [V44,T12] ( 11, 6.50) int -> r15 "shadowVar" ; V45 tmp11 [V45,T27] ( 2, 2 ) int -> r14 "shadowVar" ; V46 tmp12 [V46,T14] ( 6, 5 ) int -> rbp "shadowVar" ; V47 tmp13 [V47,T02] ( 18, 31 ) byref -> rdi "shadowVar" ; V48 tmp14 [V48,T18] ( 6, 4 ) byref -> rbx "shadowVar" ; V49 cse0 [V49,T08] ( 3, 8.50) int -> rax "CSE - aggressive" ; ; Lcl frame size = 4232 G_M16044_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx test qword ptr [rsp-1000H], rax sub rsp, 0x1088 vzeroupper mov rax, 0xD1FFAB1E mov qword ptr [rsp+1080H], rax mov rsi, rcx mov rdi, bword ptr [rsp+1100H] ;; bbWeight=1 PerfScore 13.75 G_M16044_IG02: mov rbx, bword ptr [rsp+1108H] mov ebp, dword ptr [rsp+10F0H] mov r14d, r8d mov r15d, edx ;; bbWeight=1 PerfScore 2.50 G_M16044_IG03: xor r12d, r12d test r9b, r9b je G_M16044_IG07 ;; bbWeight=1 PerfScore 1.50 G_M16044_IG04: test r15d, r15d jle SHORT G_M16044_IG05 mov rdx, rsi shl rdx, 2 lea rcx, [rsp+CD0H] call BigInteger:SetUInt64(byref,long) lea rcx, bword ptr [rsp+CD0H] mov edx, r15d call BigInteger:ShiftLeft(int):this mov dword ptr [rsp+EA4H], 4 mov dword ptr [rsp+EA0H], 1 lea rdx, [rsp+B00H] mov ecx, r15d call BigInteger:Pow2(int,byref) lea ecx, [r15+1] lea rdx, [rsp+930H] call BigInteger:Pow2(int,byref) jmp SHORT G_M16044_IG06 ;; bbWeight=0.50 PerfScore 7.25 G_M16044_IG05: mov rdx, rsi shl rdx, 2 lea rcx, [rsp+CD0H] call BigInteger:SetUInt64(byref,long) mov ecx, r15d neg ecx add ecx, 2 lea rdx, [rsp+EA0H] call BigInteger:Pow2(int,byref) mov dword ptr [rsp+B04H], 1 mov dword ptr [rsp+B00H], 1 mov dword ptr [rsp+934H], 2 mov dword ptr [rsp+930H], 1 ;; bbWeight=0.50 PerfScore 5.00 G_M16044_IG06: lea r13, [rsp+930H] jmp G_M16044_IG10 ;; bbWeight=0.50 PerfScore 1.25 G_M16044_IG07: test r15d, r15d jle SHORT G_M16044_IG08 lea rdx, [rsi+rsi] lea rcx, [rsp+CD0H] call BigInteger:SetUInt64(byref,long) lea rcx, bword ptr [rsp+CD0H] mov edx, r15d call BigInteger:ShiftLeft(int):this mov dword ptr [rsp+EA4H], 2 mov dword ptr [rsp+EA0H], 1 lea rdx, [rsp+B00H] mov ecx, r15d call BigInteger:Pow2(int,byref) jmp SHORT G_M16044_IG09 ;; bbWeight=0.50 PerfScore 5.38 G_M16044_IG08: lea rdx, [rsi+rsi] lea rcx, [rsp+CD0H] call BigInteger:SetUInt64(byref,long) mov ecx, r15d neg ecx inc ecx lea rdx, [rsp+EA0H] call BigInteger:Pow2(int,byref) mov dword ptr [rsp+B04H], 1 mov dword ptr [rsp+B00H], 1 ;; bbWeight=0.50 PerfScore 3.13 G_M16044_IG09: lea r13, [rsp+B00H] ;; bbWeight=0.50 PerfScore 0.25 G_M16044_IG10: add r14d, r15d vxorps xmm0, xmm0 vcvtsi2sd xmm0, r14d vmulsd xmm0, xmm0, qword ptr [reloc @RWD08] vsubsd xmm0, xmm0, qword ptr [reloc @RWD24] vroundsd xmm0, xmm0, 10 vcvttsd2si r14d, xmm0 test r14d, r14d jle SHORT G_M16044_IG12 ;; bbWeight=1 PerfScore 28.83 G_M16044_IG11: lea rcx, bword ptr [rsp+EA0H] mov edx, r14d call BigInteger:MultiplyPow10(int):this jmp G_M16044_IG13 ;; bbWeight=0.50 PerfScore 1.88 G_M16044_IG12: test r14d, r14d jge G_M16044_IG13 mov ecx, r14d neg ecx lea rdx, [rsp+760H] call BigInteger:Pow10(int,byref) lea rcx, [rsp+1F0H] lea rdx, [rsp+CD0H] call BigInteger:SetValue(byref,byref) lea rcx, [rsp+1F0H] lea rdx, [rsp+760H] lea r8, [rsp+CD0H] call BigInteger:Multiply(byref,byref,byref) lea rcx, [rsp+20H] lea rdx, [rsp+B00H] call BigInteger:SetValue(byref,byref) lea rcx, [rsp+20H] lea rdx, [rsp+760H] lea r8, [rsp+B00H] call BigInteger:Multiply(byref,byref,byref) lea rcx, bword ptr [rsp+B00H] cmp r13, rcx je SHORT G_M16044_IG13 lea rcx, [rsp+B00H] mov r8, r13 mov edx, 2 call BigInteger:Multiply(byref,int,byref) ;; bbWeight=0.50 PerfScore 8.00 G_M16044_IG13: test sil, 1 sete sil movzx rsi, sil cmp ebp, -1 jne SHORT G_M16044_IG17 ;; bbWeight=1 PerfScore 2.75 G_M16044_IG14: lea rcx, [rsp+CD0H] lea r8, [rsp+590H] mov rdx, r13 call BigInteger:Add(byref,byref,byref) lea rcx, [rsp+590H] lea rdx, [rsp+EA0H] call BigInteger:Compare(byref,byref):int test esi, esi jne SHORT G_M16044_IG15 test eax, eax setg cl movzx rcx, cl jmp SHORT G_M16044_IG16 ;; bbWeight=0.50 PerfScore 4.50 G_M16044_IG15: test eax, eax setge cl movzx rcx, cl ;; bbWeight=0.50 PerfScore 0.75 G_M16044_IG16: movzx r15, cl jmp SHORT G_M16044_IG18 ;; bbWeight=0.50 PerfScore 1.13 G_M16044_IG17: lea rcx, [rsp+CD0H] lea rdx, [rsp+EA0H] call BigInteger:Compare(byref,byref):int test eax, eax setge r15b movzx r15, r15b test r15d, r15d je SHORT G_M16044_IG20 jmp SHORT G_M16044_IG19 ;; bbWeight=0.50 PerfScore 3.38 G_M16044_IG18: test r15d, r15d je SHORT G_M16044_IG20 ;; bbWeight=0.50 PerfScore 0.63 G_M16044_IG19: inc r14d jmp SHORT G_M16044_IG21 ;; bbWeight=0.50 PerfScore 1.13 G_M16044_IG20: lea rcx, bword ptr [rsp+CD0H] call BigInteger:Multiply10():this lea rcx, bword ptr [rsp+B00H] call BigInteger:Multiply10():this lea rcx, bword ptr [rsp+B00H] cmp r13, rcx je SHORT G_M16044_IG21 lea rcx, [rsp+B00H] mov r8, r13 mov edx, 2 call BigInteger:Multiply(byref,int,byref) ;; bbWeight=0.50 PerfScore 3.38 G_M16044_IG21: mov r15d, r14d sub r15d, dword ptr [rdi+8] cmp ebp, -1 je SHORT G_M16044_IG25 ;; bbWeight=1 PerfScore 3.50 G_M16044_IG22: cmp byte ptr [rsp+10F8H], 0 je SHORT G_M16044_IG23 mov edx, r14d sub edx, ebp jmp SHORT G_M16044_IG24 ;; bbWeight=0.50 PerfScore 2.25 G_M16044_IG23: mov edx, ebp neg edx ;; bbWeight=0.50 PerfScore 0.25 G_M16044_IG24: cmp edx, r15d jle SHORT G_M16044_IG25 mov r15d, edx ;; bbWeight=0.50 PerfScore 0.75 G_M16044_IG25: dec r14d mov dword ptr [rbx], r14d mov edx, dword ptr [rsp+EA0H] dec edx lea rcx, bword ptr [rsp+EA0H] call BigInteger:GetBlock(int):int:this cmp eax, 8 jb SHORT G_M16044_IG27 ;; bbWeight=1 PerfScore 5.25 G_M16044_IG26: cmp eax, 0xD1FFAB1E jbe SHORT G_M16044_IG28 ;; bbWeight=0.50 PerfScore 0.63 G_M16044_IG27: or eax, 1 xor ecx, ecx lzcnt ecx, eax xor ecx, 31 mov eax, ecx neg eax add eax, 59 and eax, 31 lea rcx, bword ptr [rsp+EA0H] mov dword ptr [rsp+107CH], eax mov edx, eax call BigInteger:ShiftLeft(int):this lea rcx, bword ptr [rsp+CD0H] mov edx, dword ptr [rsp+107CH] call BigInteger:ShiftLeft(int):this lea rcx, bword ptr [rsp+B00H] mov edx, dword ptr [rsp+107CH] call BigInteger:ShiftLeft(int):this lea rcx, bword ptr [rsp+B00H] cmp r13, rcx je SHORT G_M16044_IG28 lea rcx, [rsp+B00H] mov r8, r13 mov edx, 2 call BigInteger:Multiply(byref,int,byref) ;; bbWeight=0.50 PerfScore 7.63 G_M16044_IG28: cmp ebp, -1 jne G_M16044_IG35 ;; bbWeight=1 PerfScore 1.25 G_M16044_IG29: lea rcx, [rsp+CD0H] lea rdx, [rsp+EA0H] call BigInteger:HeuristicDivide(byref,byref):int mov ebp, eax lea rcx, [rsp+CD0H] lea r8, [rsp+3C0H] mov rdx, r13 call BigInteger:Add(byref,byref,byref) lea rcx, [rsp+CD0H] lea rdx, [rsp+B00H] call BigInteger:Compare(byref,byref):int mov dword ptr [rsp+1078H], eax lea rcx, [rsp+3C0H] lea rdx, [rsp+EA0H] call BigInteger:Compare(byref,byref):int test esi, esi je SHORT G_M16044_IG31 ;; bbWeight=4 PerfScore 43.00 G_M16044_IG30: cmp dword ptr [rsp+1078H], 0 setle dl movzx rdx, dl test eax, eax setge r8b movzx r8, r8b jmp SHORT G_M16044_IG32 ;; bbWeight=2 PerfScore 11.50 G_M16044_IG31: cmp dword ptr [rsp+1078H], 0 setl dl movzx rdx, dl test eax, eax setg r8b movzx r8, r8b ;; bbWeight=2 PerfScore 7.50 G_M16044_IG32: mov ecx, edx or ecx, r8d jne G_M16044_IG44 cmp r14d, r15d je G_M16044_IG44 cmp r12d, dword ptr [rdi+8] jae G_M16044_IG56 mov rcx, bword ptr [rdi] movsxd rax, r12d add ebp, 48 mov byte ptr [rcx+rax], bpl inc r12d lea rcx, bword ptr [rsp+CD0H] call BigInteger:Multiply10():this lea rcx, bword ptr [rsp+B00H] call BigInteger:Multiply10():this lea rcx, bword ptr [rsp+B00H] cmp r13, rcx je SHORT G_M16044_IG34 ;; bbWeight=4 PerfScore 57.00 G_M16044_IG33: lea rcx, [rsp+B00H] mov r8, r13 mov edx, 2 call BigInteger:Multiply(byref,int,byref) ;; bbWeight=2 PerfScore 4.00 G_M16044_IG34: dec r14d jmp G_M16044_IG29 ;; bbWeight=4 PerfScore 9.00 G_M16044_IG35: cmp r14d, r15d jl SHORT G_M16044_IG39 xor edx, edx xor esi, esi xor r13d, r13d ;; bbWeight=0.50 PerfScore 1.00 G_M16044_IG36: lea rcx, [rsp+CD0H] lea rdx, [rsp+EA0H] call BigInteger:HeuristicDivide(byref,byref):int mov ebp, eax cmp dword ptr [rsp+CD0H], 0 je SHORT G_M16044_IG38 cmp r14d, r15d jle SHORT G_M16044_IG37 cmp r12d, dword ptr [rdi+8] jae G_M16044_IG56 mov rcx, bword ptr [rdi] movsxd rax, r12d lea edx, [rbp+48] mov byte ptr [rcx+rax], dl inc r12d lea rcx, bword ptr [rsp+CD0H] call BigInteger:Multiply10():this dec r14d jmp SHORT G_M16044_IG36 ;; bbWeight=4 PerfScore 65.00 G_M16044_IG37: mov edx, esi mov r8d, r13d jmp G_M16044_IG44 ;; bbWeight=2 PerfScore 5.00 G_M16044_IG38: mov edx, esi mov r8d, r13d jmp SHORT G_M16044_IG44 ;; bbWeight=2 PerfScore 5.00 G_M16044_IG39: lea rcx, [rsp+CD0H] lea rdx, [rsp+EA0H] call BigInteger:HeuristicDivide(byref,byref):int mov ebp, eax cmp ebp, 5 ja SHORT G_M16044_IG40 cmp ebp, 5 jne SHORT G_M16044_IG41 cmp dword ptr [rsp+CD0H], 0 je SHORT G_M16044_IG41 ;; bbWeight=0.50 PerfScore 3.38 G_M16044_IG40: inc dword ptr [rbx] mov ebp, 1 ;; bbWeight=0.50 PerfScore 2.63 G_M16044_IG41: cmp dword ptr [rdi+8], 0 jbe G_M16044_IG56 mov rax, bword ptr [rdi] lea ecx, [rbp+48] mov byte ptr [rax], cl mov eax, 1 mov rcx, 0xD1FFAB1E cmp qword ptr [rsp+1080H], rcx je SHORT G_M16044_IG42 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 5.00 G_M16044_IG42: nop ;; bbWeight=0.50 PerfScore 0.13 G_M16044_IG43: add rsp, 0x1088 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M16044_IG44: cmp edx, r8d jne SHORT G_M16044_IG45 lea rcx, bword ptr [rsp+CD0H] mov edx, 1 call BigInteger:ShiftLeft(int):this lea rcx, [rsp+CD0H] lea rdx, [rsp+EA0H] call BigInteger:Compare(byref,byref):int test eax, eax setl dl movzx rdx, dl test eax, eax jne SHORT G_M16044_IG45 test bpl, 1 sete dl movzx rdx, dl test edx, edx je SHORT G_M16044_IG47 jmp SHORT G_M16044_IG46 ;; bbWeight=0.50 PerfScore 6.25 G_M16044_IG45: test edx, edx je SHORT G_M16044_IG47 ;; bbWeight=0.50 PerfScore 0.63 G_M16044_IG46: cmp r12d, dword ptr [rdi+8] jae G_M16044_IG56 mov rax, bword ptr [rdi] movsxd rdx, r12d lea ecx, [rbp+48] mov byte ptr [rax+rdx], cl inc r12d jmp SHORT G_M16044_IG53 ;; bbWeight=0.50 PerfScore 4.50 G_M16044_IG47: cmp ebp, 9 jne SHORT G_M16044_IG52 ;; bbWeight=0.50 PerfScore 0.63 G_M16044_IG48: test r12d, r12d je SHORT G_M16044_IG51 ;; bbWeight=4 PerfScore 5.00 G_M16044_IG49: dec r12d cmp r12d, dword ptr [rdi+8] jae G_M16044_IG56 mov rax, bword ptr [rdi] movsxd rdx, r12d movzx rax, byte ptr [rax+rdx] cmp eax, 57 je SHORT G_M16044_IG48 ;; bbWeight=4 PerfScore 35.00 G_M16044_IG50: cmp r12d, dword ptr [rdi+8] jae SHORT G_M16044_IG56 movsxd rdx, r12d add rdx, bword ptr [rdi] inc eax mov byte ptr [rdx], al inc r12d jmp SHORT G_M16044_IG53 ;; bbWeight=0.50 PerfScore 4.38 G_M16044_IG51: cmp dword ptr [rdi+8], 0 jbe SHORT G_M16044_IG56 mov rax, bword ptr [rdi] mov byte ptr [rax], 49 mov r12d, 1 inc dword ptr [rbx] jmp SHORT G_M16044_IG53 ;; bbWeight=0.50 PerfScore 6.63 G_M16044_IG52: cmp r12d, dword ptr [rdi+8] jae SHORT G_M16044_IG56 mov rax, bword ptr [rdi] movsxd rdx, r12d lea ecx, [rbp+49] mov byte ptr [rax+rdx], cl inc r12d ;; bbWeight=0.50 PerfScore 3.50 G_M16044_IG53: mov eax, r12d mov rcx, 0xD1FFAB1E cmp qword ptr [rsp+1080H], rcx je SHORT G_M16044_IG54 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.75 G_M16044_IG54: nop ;; bbWeight=0.50 PerfScore 0.13 G_M16044_IG55: add rsp, 0x1088 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M16044_IG56: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 3FD34413509F79FFh RWD16 dq 0000000000000000h RWD24 dq 3FE6147AE147AE14h ; Total bytes of code 1811, prolog size 59, PerfScore 592.08, (MethodHash=f484c153) for method Number:Dragon4(long,int,int,bool,int,bool,Span`1,byref):int ; ============================================================ ; Assembly listing for method BigInteger:SetUInt64(byref,long) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 5 ) byref -> rcx ; V01 arg1 [V01,T01] ( 6, 4.50) long -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) int -> rdx "Inlining Arg" ; ; Lcl frame size = 0 G_M12385_IG01: ;; bbWeight=1 PerfScore 0.00 G_M12385_IG02: mov eax, 0xD1FFAB1E cmp rdx, rax ja SHORT G_M12385_IG06 ;; bbWeight=1 PerfScore 1.50 G_M12385_IG03: test edx, edx jne SHORT G_M12385_IG04 xor edx, edx mov dword ptr [rcx], edx jmp SHORT G_M12385_IG05 ;; bbWeight=0.50 PerfScore 2.25 G_M12385_IG04: mov dword ptr [rcx+4], edx mov dword ptr [rcx], 1 ;; bbWeight=0.50 PerfScore 1.00 G_M12385_IG05: ret ;; bbWeight=0.50 PerfScore 0.50 G_M12385_IG06: mov dword ptr [rcx+4], edx mov rax, rdx shr rax, 32 mov dword ptr [rcx+8], eax mov dword ptr [rcx], 2 ;; bbWeight=0.50 PerfScore 2.63 G_M12385_IG07: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 50, prolog size 0, PerfScore 13.38, (MethodHash=252acf9e) for method BigInteger:SetUInt64(byref,long) ; ============================================================ ; Assembly listing for method BigInteger:Pow2(int,byref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 4 ) int -> rcx ; V01 arg1 [V01,T00] ( 5, 4.50) byref -> rsi ; V02 loc0 [V02,T02] ( 5, 4.50) int -> rbx ; V03 loc1 [V03,T06] ( 2, 2 ) int -> rdi ld-addr-op ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V08 tmp4 [V08,T03] ( 5, 4.50) long -> [rsp+0x28] "Inlining Arg" ; V09 tmp5 [V09,T04] ( 3, 3 ) byref -> rcx "Inlining Arg" ;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V11 tmp7 [V11,T07] ( 2, 2 ) long -> rcx "Cast away GC" ; ; Lcl frame size = 48 G_M55844_IG01: push rdi push rsi push rbx sub rsp, 48 mov rsi, rdx ;; bbWeight=1 PerfScore 3.50 G_M55844_IG02: mov edi, ecx and edi, 31 mov ebx, ecx shr ebx, 5 lea edx, [rbx+1] mov dword ptr [rsi], edx test ebx, ebx je SHORT G_M55844_IG07 ;; bbWeight=1 PerfScore 5.50 G_M55844_IG03: lea rcx, bword ptr [rsi+4] mov edx, ebx shl edx, 2 test rdx, rdx je SHORT G_M55844_IG07 ;; bbWeight=0.50 PerfScore 2.00 G_M55844_IG04: mov qword ptr [rsp+28H], rdx cmp rdx, 768 ja SHORT G_M55844_IG06 ;; bbWeight=0.25 PerfScore 0.56 G_M55844_IG05: xor edx, edx mov r8, qword ptr [rsp+28H] call CORINFO_HELP_MEMSET jmp SHORT G_M55844_IG07 ;; bbWeight=0.50 PerfScore 2.13 G_M55844_IG06: mov rdx, qword ptr [rsp+28H] call Buffer:_ZeroMemory(byref,long) ;; bbWeight=0.50 PerfScore 1.00 G_M55844_IG07: mov eax, ebx mov edx, 1 mov ecx, edi shl edx, cl mov dword ptr [rsi+4*rax+4], edx ;; bbWeight=1 PerfScore 3.75 G_M55844_IG08: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 104, prolog size 7, PerfScore 31.59, (MethodHash=619925db) for method BigInteger:Pow2(int,byref) ; ============================================================ ; Assembly listing for method BigInteger:MultiplyPow10(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rcx this ; V01 arg1 [V01,T01] ( 3, 2.50) int -> rax ; V02 loc0 [V02 ] ( 4, 2 ) struct (464) [rsp+0x1F0] do-not-enreg[XSF] addr-exposed ld-addr-op unsafe-buffer ; V03 tmp0 [V03 ] ( 1, 1 ) int -> [rsp+0x3C4] do-not-enreg[X] addr-exposed "GSCookie dummy" ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp2 [V05,T03] ( 2, 2 ) int -> rdx "Inlining Arg" ; V06 tmp3 [V06 ] ( 2, 1 ) struct (464) [rsp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "Inline ldloca(s) first use temp" ; V07 GsCookie [V07 ] ( 1, 1 ) long -> [rsp+0x3C8] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V08 tmp5 [V08,T02] ( 6, 4 ) byref -> rsi this "shadowVar" ; ; Lcl frame size = 976 G_M30913_IG01: push rsi sub rsp, 976 mov rax, 0xD1FFAB1E mov qword ptr [rsp+3C8H], rax mov eax, edx ;; bbWeight=1 PerfScore 2.75 G_M30913_IG02: mov rsi, rcx ;; bbWeight=1 PerfScore 0.25 G_M30913_IG03: cmp dword ptr [rsi], 0 jne SHORT G_M30913_IG07 ;; bbWeight=1 PerfScore 3.00 G_M30913_IG04: mov rcx, 0xD1FFAB1E cmp qword ptr [rsp+3C8H], rcx je SHORT G_M30913_IG05 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.63 G_M30913_IG05: nop ;; bbWeight=0.50 PerfScore 0.13 G_M30913_IG06: add rsp, 976 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M30913_IG07: lea rdx, [rsp+1F0H] mov ecx, eax call BigInteger:Pow10(int,byref) cmp dword ptr [rsp+1F0H], 1 jne SHORT G_M30913_IG10 mov edx, dword ptr [rsp+1F4H] mov rcx, rsi mov r8, rsi call BigInteger:Multiply(byref,int,byref) mov rcx, 0xD1FFAB1E cmp qword ptr [rsp+3C8H], rcx je SHORT G_M30913_IG08 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 4.75 G_M30913_IG08: nop ;; bbWeight=0.50 PerfScore 0.13 G_M30913_IG09: add rsp, 976 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M30913_IG10: lea rcx, [rsp+20H] mov rdx, rsi call BigInteger:SetValue(byref,byref) lea rcx, [rsp+20H] lea rdx, [rsp+1F0H] mov r8, rsi call BigInteger:Multiply(byref,byref,byref) mov rcx, 0xD1FFAB1E cmp qword ptr [rsp+3C8H], rcx je SHORT G_M30913_IG11 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 3.63 G_M30913_IG11: nop ;; bbWeight=0.50 PerfScore 0.13 G_M30913_IG12: add rsp, 976 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 218, prolog size 26, PerfScore 40.80, (MethodHash=0246873e) for method BigInteger:MultiplyPow10(int):this ; ============================================================ ; Assembly listing for method BigInteger:Pow10(int,byref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T10] ( 3, 3 ) int -> rcx ; V01 arg1 [V01,T09] ( 3, 3 ) byref -> rdx ; V02 loc0 [V02 ] ( 4, 2.50) struct (464) [rsp+0x1F8] do-not-enreg[XSF] addr-exposed ld-addr-op ptr unsafe-buffer ; V03 loc1 [V03,T05] ( 5, 8 ) byref -> registers ptr ; V04 loc2 [V04 ] ( 2, 2 ) struct (464) [rsp+0x28] do-not-enreg[XSF] addr-exposed ld-addr-op unsafe-buffer ; V05 loc3 [V05,T07] ( 4, 7 ) byref -> registers ptr ; V06 loc4 [V06,T01] ( 5, 13 ) int -> r14 ; V07 loc5 [V07,T12] ( 2, 4 ) byref -> rbp ;* V08 loc6 [V08 ] ( 0, 0 ) long -> zero-ref ptr ; V09 loc7 [V09 ] ( 3, 6 ) byref -> [rsp+0x3D0] must-init pinned ptr ; V10 loc8 [V10,T13] ( 2, 4 ) byref -> rdx ; V11 tmp0 [V11 ] ( 1, 1 ) int -> [rsp+0x3CC] do-not-enreg[X] addr-exposed "GSCookie dummy" ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V13 tmp2 [V13,T11] ( 3, 5 ) int -> rcx "Inlining Arg" ; V14 tmp3 [V14,T08] ( 3, 6 ) ref -> rcx "arr expr" ; V15 tmp4 [V15,T02] ( 3, 12 ) ref -> rcx "arr expr" ; V16 tmp5 [V16,T04] ( 3, 12 ) int -> rdx "index expr" ; V17 tmp6 [V17,T03] ( 3, 12 ) ref -> rdx "arr expr" ; V18 tmp7 [V18,T06] ( 2, 8 ) long -> rdx "Cast away GC" ; V19 GsCookie [V19 ] ( 1, 1 ) long -> [rsp+0x3D8] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V20 tmp9 [V20,T00] ( 9, 21 ) int -> rdi "shadowVar" ; V21 tmp10 [V21,T15] ( 2, 2 ) byref -> rsi "shadowVar" ;* V22 cse0 [V22,T16] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; V23 cse1 [V23,T14] ( 3, 3 ) int -> rdx "CSE - moderate" ; ; Lcl frame size = 992 G_M44791_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 992 xor rax, rax mov qword ptr [rsp+3D0H], rax mov rax, 0xD1FFAB1E mov qword ptr [rsp+3D8H], rax ;; bbWeight=1 PerfScore 7.75 G_M44791_IG02: mov rsi, rdx mov edi, ecx ;; bbWeight=1 PerfScore 0.50 G_M44791_IG03: mov rcx, 0xD1FFAB1E mov edx, 359 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov edx, edi and edx, 7 cmp edx, dword ptr [rcx+8] jae G_M44791_IG13 movsxd rdx, edx mov ecx, dword ptr [rcx+4*rdx+16] test ecx, ecx jne SHORT G_M44791_IG05 ;; bbWeight=1 PerfScore 10.75 G_M44791_IG04: xor ecx, ecx mov dword ptr [rsp+1F8H], ecx jmp SHORT G_M44791_IG06 ;; bbWeight=0.50 PerfScore 1.63 G_M44791_IG05: mov dword ptr [rsp+1FCH], ecx mov dword ptr [rsp+1F8H], 1 ;; bbWeight=0.50 PerfScore 1.00 G_M44791_IG06: lea rbx, bword ptr [rsp+1F8H] xor ecx, ecx mov dword ptr [rsp+28H], ecx lea rbp, bword ptr [rsp+28H] shr edi, 3 xor r14d, r14d test edi, edi je SHORT G_M44791_IG10 ;; bbWeight=1 PerfScore 5.75 G_M44791_IG07: test dil, 1 je SHORT G_M44791_IG09 ;; bbWeight=4 PerfScore 5.00 G_M44791_IG08: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] cmp r14d, dword ptr [rdx+8] jae SHORT G_M44791_IG13 movsxd r8, r14d mov edx, dword ptr [rdx+4*r8+16] cmp edx, dword ptr [rcx+8] jae SHORT G_M44791_IG13 movsxd rdx, edx lea rcx, bword ptr [rcx+4*rdx+16] mov bword ptr [rsp+3D0H], rcx mov rdx, bword ptr [rsp+3D0H] mov rcx, rbx mov r8, rbp call BigInteger:Multiply(byref,byref,byref) xor rcx, rcx mov bword ptr [rsp+3D0H], rcx xchg rbx, rbp ;; bbWeight=2 PerfScore 39.50 G_M44791_IG09: inc r14d shr edi, 1 jne SHORT G_M44791_IG07 ;; bbWeight=4 PerfScore 7.00 G_M44791_IG10: mov rcx, rsi mov rdx, rbx call BigInteger:SetValue(byref,byref) mov rcx, 0xD1FFAB1E cmp qword ptr [rsp+3D8H], rcx je SHORT G_M44791_IG11 call CORINFO_HELP_FAIL_FAST ;; bbWeight=1 PerfScore 4.75 G_M44791_IG11: nop ;; bbWeight=1 PerfScore 0.25 G_M44791_IG12: add rsp, 992 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M44791_IG13: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 325, prolog size 41, PerfScore 120.13, (MethodHash=3e435108) for method BigInteger:Pow10(int,byref) ; ============================================================ ; Assembly listing for method BigInteger:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "dup spill" ; V02 tmp2 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[SB] must-init "struct address for call/obj" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd exact "dup spill" ; V04 tmp4 [V04 ] ( 1, 1 ) struct ( 8) [rbp-0x20] do-not-enreg[SB] must-init "struct address for call/obj" ; V05 tmp5 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] must-init class-hnd exact "dup spill" ; V06 tmp6 [V06 ] ( 1, 1 ) struct ( 8) [rbp-0x30] do-not-enreg[SB] must-init "struct address for call/obj" ; ; Lcl frame size = 80 G_M25100_IG01: push rbp sub rsp, 80 lea rbp, [rsp+50H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-30H], xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 5.08 G_M25100_IG02: mov rcx, 0xD1FFAB1E mov edx, 8 call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rbp-08H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_FIELDDESC_TO_STUBRUNTIMEFIELD mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-08H] mov rdx, gword ptr [rbp-10H] call RuntimeHelpers:InitializeArray(Array,RuntimeFieldHandle) mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 8 call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rbp-18H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_FIELDDESC_TO_STUBRUNTIMEFIELD mov gword ptr [rbp-20H], rax mov rcx, gword ptr [rbp-18H] mov rdx, gword ptr [rbp-20H] call RuntimeHelpers:InitializeArray(Array,RuntimeFieldHandle) mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-18H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 233 call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rbp-28H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_FIELDDESC_TO_STUBRUNTIMEFIELD mov gword ptr [rbp-30H], rax mov rcx, gword ptr [rbp-28H] mov rdx, gword ptr [rbp-30H] call RuntimeHelpers:InitializeArray(Array,RuntimeFieldHandle) mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-28H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 30.25 G_M25100_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 261, prolog size 29, PerfScore 63.83, (MethodHash=bfe29df3) for method BigInteger:.cctor() ; ============================================================ ; Assembly listing for method BigInteger:SetValue(byref,byref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) byref -> rcx ; V01 arg1 [V01,T01] ( 4, 4 ) byref -> rdx ; V02 loc0 [V02,T08] ( 3, 3 ) int -> r8 ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ; V05 tmp2 [V05,T02] ( 2, 4 ) byref -> rcx "Inlining Arg" ; V06 tmp3 [V06,T03] ( 2, 4 ) byref -> rdx "Inlining Arg" ;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V09 tmp6 [V09,T04] ( 2, 4 ) long -> rcx "Cast away GC" ; V10 tmp7 [V10,T05] ( 2, 4 ) long -> rdx "Cast away GC" ; V11 tmp8 [V11,T06] ( 2, 4 ) long -> rcx "argument with side effect" ; V12 tmp9 [V12,T07] ( 2, 4 ) long -> rdx "argument with side effect" ; ; Lcl frame size = 0 G_M38030_IG01: ;; bbWeight=1 PerfScore 0.00 G_M38030_IG02: mov r8d, dword ptr [rdx] mov dword ptr [rcx], r8d add rcx, 4 add rdx, 4 shl r8d, 2 movsxd r8, r8d ;; bbWeight=1 PerfScore 5.75 G_M38030_IG03: jmp Buffer:Memmove(long,long,long) ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 26, prolog size 0, PerfScore 10.35, (MethodHash=82976b71) for method BigInteger:SetValue(byref,byref) ; ============================================================ ; Assembly listing for method BigInteger:Multiply(byref,int,byref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 5, 7.50) byref -> [rsp+0x10] ; V01 arg1 [V01,T07] ( 5, 3.50) int -> rdx ; V02 arg2 [V02,T01] ( 10, 13 ) byref -> r8 ; V03 loc0 [V03,T06] ( 5, 6 ) int -> rsi ; V04 loc1 [V04,T00] ( 6, 17 ) int -> rax ; V05 loc2 [V05,T05] ( 5, 9.50) int -> r9 ; V06 loc3 [V06,T02] ( 3, 12 ) long -> r9 ;# V07 OutArgs [V07 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V08 cse0 [V08,T09] ( 3, 2.50) int -> rsi "CSE - aggressive" ; V09 cse1 [V09,T08] ( 2, 4.50) long -> rdx "CSE - aggressive" ; V10 cse2 [V10,T03] ( 3, 12 ) long -> r10 "CSE - aggressive" ; ; Lcl frame size = 0 G_M40404_IG01: push rsi ;; bbWeight=1 PerfScore 1.00 G_M40404_IG02: mov bword ptr [rsp+10H], rcx mov esi, dword ptr [rcx] test esi, esi je SHORT G_M40404_IG04 ;; bbWeight=1 PerfScore 4.25 G_M40404_IG03: cmp edx, 1 jne SHORT G_M40404_IG06 ;; bbWeight=0.50 PerfScore 0.63 G_M40404_IG04: mov rcx, r8 mov rdx, bword ptr [rsp+10H] ;; bbWeight=0.50 PerfScore 0.63 G_M40404_IG05: pop rsi jmp BigInteger:SetValue(byref,byref) ;; bbWeight=0.50 PerfScore 1.25 G_M40404_IG06: test edx, edx jne SHORT G_M40404_IG08 xor edx, edx mov dword ptr [r8], edx ;; bbWeight=0.50 PerfScore 1.25 G_M40404_IG07: pop rsi ret ;; bbWeight=0.50 PerfScore 0.75 G_M40404_IG08: xor eax, eax xor r9d, r9d test esi, esi jle SHORT G_M40404_IG10 mov edx, edx ;; bbWeight=0.50 PerfScore 1.00 G_M40404_IG09: movsxd r10, eax mov rcx, bword ptr [rsp+10H] mov r11d, dword ptr [rcx+4*r10+4] imul r11, rdx mov r9d, r9d add r9, r11 cmp dword ptr [r8], r8d mov dword ptr [r8+4*r10+4], r9d shr r9, 32 inc eax cmp eax, esi mov bword ptr [rsp+10H], rcx jl SHORT G_M40404_IG09 ;; bbWeight=4 PerfScore 53.00 G_M40404_IG10: test r9d, r9d je SHORT G_M40404_IG12 cmp dword ptr [r8], r8d movsxd rdx, eax mov dword ptr [r8+4*rdx+4], r9d inc esi mov dword ptr [r8], esi ;; bbWeight=0.50 PerfScore 2.88 G_M40404_IG11: pop rsi ret ;; bbWeight=0.50 PerfScore 0.75 G_M40404_IG12: mov dword ptr [r8], esi ;; bbWeight=0.50 PerfScore 0.50 G_M40404_IG13: pop rsi ret ;; bbWeight=0.50 PerfScore 0.75 ; Total bytes of code 127, prolog size 1, PerfScore 81.33, (MethodHash=1269622b) for method BigInteger:Multiply(byref,int,byref) ; ============================================================ ; Assembly listing for method BigInteger:Compare(byref,byref):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 4, 7 ) byref -> rcx ; V01 arg1 [V01,T03] ( 4, 7 ) byref -> rdx ; V02 loc0 [V02,T05] ( 4, 3 ) int -> rax ; V03 loc1 [V03,T07] ( 2, 2 ) int -> r8 ; V04 loc2 [V04,T06] ( 3, 2.50) int -> r9 ; V05 loc3 [V05,T00] ( 6, 17 ) int -> rax ; V06 loc4 [V06,T04] ( 3, 8.50) long -> r8 ;# V07 OutArgs [V07 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T08] ( 2, 2 ) int -> r9 "Single return block return value" ; V09 cse0 [V09,T01] ( 3, 12 ) long -> r9 "CSE - aggressive" ; ; Lcl frame size = 0 G_M58601_IG01: ;; bbWeight=1 PerfScore 0.00 G_M58601_IG02: mov eax, dword ptr [rcx] mov r8d, dword ptr [rdx] mov r9d, eax sub r9d, r8d je SHORT G_M58601_IG04 ;; bbWeight=1 PerfScore 5.50 G_M58601_IG03: jmp SHORT G_M58601_IG14 ;; bbWeight=0.50 PerfScore 1.00 G_M58601_IG04: test eax, eax je SHORT G_M58601_IG08 ;; bbWeight=0.50 PerfScore 0.63 G_M58601_IG05: dec eax test eax, eax jl SHORT G_M58601_IG08 ;; bbWeight=0.50 PerfScore 0.75 G_M58601_IG06: movsxd r9, eax mov r8d, dword ptr [rcx+4*r9+4] mov r9d, dword ptr [rdx+4*r9+4] sub r8, r9 jne SHORT G_M58601_IG10 ;; bbWeight=4 PerfScore 22.00 G_M58601_IG07: dec eax test eax, eax jge SHORT G_M58601_IG06 ;; bbWeight=4 PerfScore 6.00 G_M58601_IG08: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M58601_IG09: ret ;; bbWeight=0.50 PerfScore 0.50 G_M58601_IG10: test r8, r8 jg SHORT G_M58601_IG12 mov eax, -1 ;; bbWeight=0.50 PerfScore 0.75 G_M58601_IG11: ret ;; bbWeight=0.50 PerfScore 0.50 G_M58601_IG12: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M58601_IG13: ret ;; bbWeight=0.50 PerfScore 0.50 G_M58601_IG14: mov eax, r9d ;; bbWeight=0.50 PerfScore 0.13 G_M58601_IG15: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 73, prolog size 0, PerfScore 46.30, (MethodHash=00d01b16) for method BigInteger:Compare(byref,byref):int ; ============================================================ ; Assembly listing for method BigInteger:GetBlock(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) byref -> rcx this ; V01 arg1 [V01,T01] ( 3, 3 ) int -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M40754_IG01: ;; bbWeight=1 PerfScore 0.00 G_M40754_IG02: cmp dword ptr [rcx], ecx mov eax, edx mov eax, dword ptr [rcx+4*rax+4] ;; bbWeight=1 PerfScore 4.25 G_M40754_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 9, prolog size 0, PerfScore 6.15, (MethodHash=126b60cd) for method BigInteger:GetBlock(int):int:this ; ============================================================ ; Assembly listing for method BigInteger:HeuristicDivide(byref,byref):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 13, 29 ) byref -> rsi ; V01 arg1 [V01,T06] ( 7, 12 ) byref -> rdi ; V02 loc0 [V02,T00] ( 13, 31.50) int -> rbx ; V03 loc1 [V03,T18] ( 2, 1 ) int -> rax ; V04 loc2 [V04,T16] ( 6, 3 ) int -> rbp ; V05 loc3 [V05,T02] ( 5, 16.50) int -> rcx ; V06 loc4 [V06,T12] ( 3, 8.50) long -> rdx ; V07 loc5 [V07,T13] ( 3, 8.50) long -> rax ; V08 loc6 [V08,T07] ( 3, 12 ) long -> r10 ; V09 loc7 [V09,T08] ( 3, 12 ) long -> r11 ; V10 loc8 [V10,T03] ( 5, 16.50) int -> rax ; V11 loc9 [V11,T14] ( 3, 8.50) long -> rdx ; V12 loc10 [V12,T09] ( 3, 12 ) long -> r8 ; V13 OutArgs [V13 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V14 cse0 [V14,T17] ( 3, 1.50) long -> [rsp+0x20] "CSE - moderate" ; V15 cse1 [V15,T10] ( 3, 10 ) int -> rcx "CSE - aggressive" ; V16 cse2 [V16,T11] ( 3, 10 ) int -> rax "CSE - aggressive" ; V17 cse3 [V17,T04] ( 4, 16 ) long -> r9 "CSE - aggressive" ; V18 cse4 [V18,T05] ( 4, 16 ) long -> rcx "CSE - aggressive" ; V19 cse5 [V19,T15] ( 2, 4.50) long -> r8 "CSE - aggressive" ; ; Lcl frame size = 40 G_M14547_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 4.75 G_M14547_IG02: mov ebx, dword ptr [rdi] cmp dword ptr [rsi], ebx jge SHORT G_M14547_IG05 ;; bbWeight=1 PerfScore 5.00 G_M14547_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M14547_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M14547_IG05: lea eax, [rbx-1] movsxd rax, eax mov qword ptr [rsp+20H], rax mov eax, dword ptr [rsi+4*rax+4] mov rdx, qword ptr [rsp+20H] mov ecx, dword ptr [rdi+4*rdx+4] inc ecx xor rdx, rdx div edx:eax, ecx mov ebp, eax test ebp, ebp je SHORT G_M14547_IG11 xor ecx, ecx xor rdx, rdx xor rax, rax mov r8d, ebp ;; bbWeight=0.50 PerfScore 17.88 G_M14547_IG06: movsxd r9, ecx mov r10d, dword ptr [rdi+4*r9+4] imul r10, r8 add r10, rax mov rax, r10 shr rax, 32 mov r11d, dword ptr [rsi+4*r9+4] mov r10d, r10d sub r11, r10 sub r11, rdx mov rdx, r11 shr rdx, 32 and rdx, 1 mov dword ptr [rsi+4*r9+4], r11d inc ecx cmp ecx, ebx jl SHORT G_M14547_IG06 ;; bbWeight=4 PerfScore 58.00 G_M14547_IG07: jmp SHORT G_M14547_IG09 ;; bbWeight=0.50 PerfScore 1.00 G_M14547_IG08: mov ebx, ecx ;; bbWeight=2 PerfScore 0.50 G_M14547_IG09: test ebx, ebx jle SHORT G_M14547_IG10 lea ecx, [rbx-1] movsxd rdx, ecx cmp dword ptr [rsi+4*rdx+4], 0 je SHORT G_M14547_IG08 ;; bbWeight=4 PerfScore 20.00 G_M14547_IG10: mov dword ptr [rsi], ebx ;; bbWeight=0.50 PerfScore 0.50 G_M14547_IG11: mov rcx, rsi mov rdx, rdi call BigInteger:Compare(byref,byref):int test eax, eax jl SHORT G_M14547_IG17 inc ebp xor eax, eax xor rdx, rdx ;; bbWeight=0.50 PerfScore 1.75 G_M14547_IG12: movsxd rcx, eax mov r8d, dword ptr [rsi+4*rcx+4] mov r9d, dword ptr [rdi+4*rcx+4] sub r8, r9 sub r8, rdx mov rdx, r8 shr rdx, 32 and rdx, 1 mov dword ptr [rsi+4*rcx+4], r8d inc eax cmp eax, ebx jl SHORT G_M14547_IG12 ;; bbWeight=4 PerfScore 39.00 G_M14547_IG13: jmp SHORT G_M14547_IG15 ;; bbWeight=0.50 PerfScore 1.00 G_M14547_IG14: mov ebx, eax ;; bbWeight=2 PerfScore 0.50 G_M14547_IG15: test ebx, ebx jle SHORT G_M14547_IG16 lea eax, [rbx-1] movsxd rdx, eax cmp dword ptr [rsi+4*rdx+4], 0 je SHORT G_M14547_IG14 ;; bbWeight=4 PerfScore 20.00 G_M14547_IG16: mov dword ptr [rsi], ebx ;; bbWeight=0.50 PerfScore 0.50 G_M14547_IG17: mov eax, ebp ;; bbWeight=0.50 PerfScore 0.13 G_M14547_IG18: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 253, prolog size 14, PerfScore 199.18, (MethodHash=87afc72c) for method BigInteger:HeuristicDivide(byref,byref):int ; ============================================================ ; Assembly listing for method BigInteger:Multiply10():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 8, 12.50) byref -> rcx this ; V01 loc0 [V01,T00] ( 6, 17 ) int -> rdx ; V02 loc1 [V02,T06] ( 3, 5 ) int -> rax ; V03 loc2 [V03,T05] ( 5, 9.50) long -> r8 ; V04 loc3 [V04,T02] ( 3, 12 ) long -> r10 ; V05 loc4 [V05,T03] ( 3, 12 ) long -> r10 ;# V06 OutArgs [V06 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V07 cse0 [V07,T07] ( 3, 2.50) int -> rax "CSE - aggressive" ; V08 cse1 [V08,T04] ( 3, 12 ) long -> r9 "CSE - aggressive" ; ; Lcl frame size = 0 G_M63418_IG01: ;; bbWeight=1 PerfScore 0.00 G_M63418_IG02: mov eax, dword ptr [rcx] test eax, eax jne SHORT G_M63418_IG04 ;; bbWeight=1 PerfScore 3.25 G_M63418_IG03: ret ;; bbWeight=0.50 PerfScore 0.50 G_M63418_IG04: xor edx, edx xor r8, r8 test eax, eax jle SHORT G_M63418_IG06 ;; bbWeight=0.50 PerfScore 0.88 G_M63418_IG05: movsxd r9, edx mov r10d, dword ptr [rcx+4*r9+4] mov r11, r10 shl r11, 3 add r10, r10 add r10, r11 add r10, r8 mov r8, r10 shr r8, 32 mov dword ptr [rcx+4*r9+4], r10d inc edx cmp edx, eax jl SHORT G_M63418_IG05 ;; bbWeight=4 PerfScore 40.00 G_M63418_IG06: test r8, r8 je SHORT G_M63418_IG07 movsxd rax, edx mov dword ptr [rcx+4*rax+4], r8d inc dword ptr [rcx] ;; bbWeight=0.50 PerfScore 3.75 G_M63418_IG07: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 74, prolog size 0, PerfScore 56.28, (MethodHash=0b3b0845) for method BigInteger:Multiply10():this ; ============================================================ ; Assembly listing for method BigInteger:ShiftLeft(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 18, 24.50) byref -> rsi this ; V01 arg1 [V01,T06] ( 5, 3.50) int -> rdx ; V02 loc0 [V02,T15] ( 3, 2.50) int -> r8 ; V03 loc1 [V03,T13] ( 5, 2.50) int -> rdx ; V04 loc2 [V04,T14] ( 5, 2.50) int -> rdi ld-addr-op ; V05 loc3 [V05,T00] ( 13, 34.50) int -> r8 ; V06 loc4 [V06,T01] ( 12, 27 ) int -> rbx ; V07 loc5 [V07,T21] ( 2, 1 ) int -> rax ; V08 loc6 [V08,T04] ( 4, 9 ) int -> rbp ; V09 loc7 [V09,T03] ( 6, 13.50) int -> r14 ; V10 loc8 [V10,T05] ( 4, 9 ) int -> r15 ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V12 tmp1 [V12,T16] ( 2, 2 ) byref -> rsi "Inlining Arg" ;* V13 tmp2 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V15 tmp4 [V15,T09] ( 5, 4.50) long -> [rsp+0x30] "Inlining Arg" ; V16 tmp5 [V16,T11] ( 3, 3 ) byref -> rcx "Inlining Arg" ;* V17 tmp6 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V18 tmp7 [V18,T17] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V19 tmp8 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V21 tmp10 [V21,T10] ( 5, 4.50) long -> [rsp+0x28] "Inlining Arg" ; V22 tmp11 [V22,T12] ( 3, 3 ) byref -> rcx "Inlining Arg" ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V24 tmp13 [V24,T18] ( 2, 2 ) long -> rcx "Cast away GC" ; V25 tmp14 [V25,T19] ( 2, 2 ) long -> rcx "Cast away GC" ; V26 cse0 [V26,T20] ( 3, 1.50) int -> rcx "CSE - moderate" ; V27 cse1 [V27,T08] ( 3, 5 ) int -> rax "CSE - aggressive" ; V28 cse2 [V28,T07] ( 4, 5.50) int -> [rsp+0x24] "CSE - aggressive" ; ; Lcl frame size = 56 G_M19039_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 mov rsi, rcx ;; bbWeight=1 PerfScore 6.50 G_M19039_IG02: mov r8d, dword ptr [rsi] test r8d, r8d je SHORT G_M19039_IG04 ;; bbWeight=1 PerfScore 3.25 G_M19039_IG03: test edx, edx jne SHORT G_M19039_IG05 ;; bbWeight=0.50 PerfScore 0.63 G_M19039_IG04: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M19039_IG05: mov edi, edx and edi, 31 shr edx, 5 dec r8d lea ebx, [r8+rdx] test edi, edi jne SHORT G_M19039_IG13 test r8d, r8d jl SHORT G_M19039_IG07 ;; bbWeight=0.50 PerfScore 2.88 G_M19039_IG06: movsxd rcx, ebx movsxd rax, r8d mov eax, dword ptr [rsi+4*rax+4] mov dword ptr [rsi+4*rcx+4], eax dec r8d dec ebx test r8d, r8d jge SHORT G_M19039_IG06 ;; bbWeight=4 PerfScore 21.00 G_M19039_IG07: add dword ptr [rsi], edx add rsi, 4 mov rcx, rsi shl edx, 2 test rdx, rdx je SHORT G_M19039_IG11 ;; bbWeight=0.50 PerfScore 4.38 G_M19039_IG08: mov qword ptr [rsp+30H], rdx cmp rdx, 768 ja SHORT G_M19039_IG10 ;; bbWeight=0.25 PerfScore 0.56 G_M19039_IG09: xor edx, edx mov r8, qword ptr [rsp+30H] call CORINFO_HELP_MEMSET jmp SHORT G_M19039_IG11 ;; bbWeight=0.50 PerfScore 2.13 G_M19039_IG10: mov rdx, qword ptr [rsp+30H] call Buffer:_ZeroMemory(byref,long) ;; bbWeight=0.50 PerfScore 1.00 G_M19039_IG11: nop ;; bbWeight=0.50 PerfScore 0.13 G_M19039_IG12: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M19039_IG13: inc ebx lea ecx, [rbx+1] mov dword ptr [rsi], ecx mov eax, edi neg eax add eax, 32 xor ebp, ebp movsxd rcx, r8d mov r14d, dword ptr [rsi+4*rcx+4] and eax, 31 mov ecx, eax mov r15d, r14d shr r15d, cl test r8d, r8d jle SHORT G_M19039_IG15 mov ecx, edi and ecx, 31 ;; bbWeight=0.50 PerfScore 4.75 G_M19039_IG14: movsxd r9, ebx mov r10d, ebp or r10d, r15d mov dword ptr [rsi+4*r9+4], r10d mov dword ptr [rsp+24H], ecx mov ebp, r14d shl ebp, cl dec r8d dec ebx movsxd rcx, r8d mov r14d, dword ptr [rsi+4*rcx+4] mov ecx, eax mov r15d, r14d shr r15d, cl test r8d, r8d mov ecx, dword ptr [rsp+24H] jg SHORT G_M19039_IG14 ;; bbWeight=4 PerfScore 50.00 G_M19039_IG15: movsxd rcx, ebx or ebp, r15d mov dword ptr [rsi+4*rcx+4], ebp lea ecx, [rbx-1] movsxd r8, ecx and edi, 31 mov ecx, edi shl r14d, cl mov dword ptr [rsi+4*r8+4], r14d lea rcx, bword ptr [rsi+4] shl edx, 2 test rdx, rdx je SHORT G_M19039_IG19 ;; bbWeight=0.50 PerfScore 4.75 G_M19039_IG16: mov qword ptr [rsp+28H], rdx cmp rdx, 768 ja SHORT G_M19039_IG18 ;; bbWeight=0.25 PerfScore 0.56 G_M19039_IG17: xor edx, edx mov r8, qword ptr [rsp+28H] call CORINFO_HELP_MEMSET jmp SHORT G_M19039_IG19 ;; bbWeight=0.50 PerfScore 2.13 G_M19039_IG18: mov rdx, qword ptr [rsp+28H] call Buffer:_ZeroMemory(byref,long) ;; bbWeight=0.50 PerfScore 1.00 G_M19039_IG19: mov ecx, dword ptr [rsi] dec ecx movsxd rax, ecx cmp dword ptr [rsi+4*rax+4], 0 jne SHORT G_M19039_IG20 mov dword ptr [rsi], ecx ;; bbWeight=0.50 PerfScore 3.25 G_M19039_IG20: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 ; Total bytes of code 363, prolog size 15, PerfScore 151.55, (MethodHash=3abcb5a0) for method BigInteger:ShiftLeft(int):this ; ============================================================ ; Assembly listing for method Number:NumberToString(byref,byref,ushort,int,NumberFormatInfo) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 20, 9.50) byref -> rbx ; V01 arg1 [V01,T01] ( 25, 14 ) byref -> rdi ; V02 arg2 [V02,T04] ( 5, 4 ) ushort -> r14 ; V03 arg3 [V03,T00] ( 29, 15.50) int -> rsi ; V04 arg4 [V04,T03] ( 13, 6.50) ref -> rbp class-hnd ; V05 loc0 [V05,T09] ( 7, 4 ) bool -> r8 ; V06 loc1 [V06,T25] ( 3, 1.50) bool -> r13 ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T12] ( 3, 3 ) byref -> rdx "dup spill" ; V09 tmp2 [V09,T13] ( 3, 3 ) byref -> rcx "Span.get_Item ptrToSpan" ; V10 tmp3 [V10,T35] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V11 tmp4 [V11,T06] ( 5, 4.50) ref -> rdx class-hnd "Inlining Arg" ; V12 tmp5 [V12,T22] ( 4, 1.50) int -> rcx "Inline stloc first use temp" ; V13 tmp6 [V13,T18] ( 2, 2 ) byref -> r14 "Span.get_Item ptrToSpan" ; V14 tmp7 [V14,T29] ( 2, 1 ) byref -> r8 "Inlining Arg" ; V15 tmp8 [V15,T07] ( 5, 4.50) ref -> rdx class-hnd "Inlining Arg" ; V16 tmp9 [V16,T23] ( 4, 1.50) int -> rcx "Inline stloc first use temp" ; V17 tmp10 [V17,T19] ( 2, 2 ) byref -> r8 "Span.get_Item ptrToSpan" ; V18 tmp11 [V18,T30] ( 2, 1 ) byref -> r8 "Inlining Arg" ; V19 tmp12 [V19,T08] ( 5, 4.50) ref -> rdx class-hnd "Inlining Arg" ; V20 tmp13 [V20,T24] ( 4, 1.50) int -> rcx "Inline stloc first use temp" ; V21 tmp14 [V21,T20] ( 2, 2 ) byref -> r8 "Span.get_Item ptrToSpan" ; V22 tmp15 [V22,T31] ( 2, 1 ) byref -> r9 "Inlining Arg" ; V23 tmp16 [V23,T36] ( 2, 0 ) ref -> rcx "argument with side effect" ; V24 tmp17 [V24,T37] ( 2, 0 ) ref -> rdx "argument with side effect" ; V25 cse0 [V25,T32] ( 2, 0.50) int -> r8 "CSE - moderate" ; V26 cse1 [V26,T33] ( 2, 0.50) int -> r8 "CSE - moderate" ; V27 cse2 [V27,T34] ( 2, 0.50) int -> r9 "CSE - moderate" ; V28 cse3 [V28,T11] ( 4, 3 ) int -> r15 "CSE - moderate" ; V29 cse4 [V29,T05] ( 8, 5 ) int -> r12 "CSE - aggressive" ; V30 cse5 [V30,T10] ( 9, 3 ) byref -> registers "CSE - moderate" ; V31 cse6 [V31,T26] ( 3, 1 ) int -> rax "CSE - conservative" ; V32 cse7 [V32,T27] ( 3, 1 ) int -> rax "CSE - conservative" ; V33 cse8 [V33,T28] ( 3, 1 ) int -> rax "CSE - conservative" ; V34 rat0 [V34,T14] ( 3, 3 ) int -> rdx "ReplaceWithLclVar is creating a new local variable" ; V35 rat1 [V35,T15] ( 3, 3 ) int -> r13 "ReplaceWithLclVar is creating a new local variable" ; V36 rat2 [V36,T16] ( 3, 3 ) int -> rax "ReplaceWithLclVar is creating a new local variable" ; V37 rat3 [V37,T17] ( 3, 3 ) int -> r9 "ReplaceWithLclVar is creating a new local variable" ; V38 rat4 [V38,T21] ( 2, 2 ) ref -> rbp "Fast tail call lowering is creating a new local variable" ; ; Lcl frame size = 56 G_M26869_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 mov rbx, rcx mov rdi, rdx mov r14d, r8d mov esi, r9d mov rbp, gword ptr [rsp+A0H] ;; bbWeight=1 PerfScore 10.25 G_M26869_IG02: movzx r15, byte ptr [rdi+10] cmp r15d, 3 sete r8b movzx r8, r8b movzx r12, r14w cmp r12d, 82 ja SHORT G_M26869_IG05 ;; bbWeight=1 PerfScore 5.00 G_M26869_IG03: lea edx, [r12-67] cmp edx, 4 ja SHORT G_M26869_IG04 mov edx, edx lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rax, G_M26869_IG02 add rcx, rax jmp rcx ;; bbWeight=0.50 PerfScore 3.88 G_M26869_IG04: lea r13d, [r12-78] cmp r13d, 4 ja G_M26869_IG39 mov edx, r13d lea rcx, [reloc @RWD20] mov ecx, dword ptr [rcx+4*rdx] lea rax, G_M26869_IG02 add rcx, rax jmp rcx ;; bbWeight=0.50 PerfScore 3.88 G_M26869_IG05: lea eax, [r12-99] cmp eax, 4 ja SHORT G_M26869_IG06 mov ecx, eax lea rax, [reloc @RWD40] mov eax, dword ptr [rax+4*rcx] lea rdx, G_M26869_IG02 add rax, rdx jmp rax ;; bbWeight=0.50 PerfScore 3.88 G_M26869_IG06: lea r9d, [r12-110] cmp r9d, 4 ja G_M26869_IG39 mov ecx, r9d lea rax, [reloc @RWD60] mov eax, dword ptr [rax+4*rcx] lea rdx, G_M26869_IG02 add rax, rdx jmp rax ;; bbWeight=0.50 PerfScore 3.88 G_M26869_IG07: test esi, esi jge SHORT G_M26869_IG08 mov esi, dword ptr [rbp+156] ;; bbWeight=0.50 PerfScore 1.63 G_M26869_IG08: mov edx, esi add edx, dword ptr [rdi+4] mov rcx, rdi call Number:RoundNumber(byref,int,bool) mov rcx, rbx mov rdx, rdi mov r8d, esi mov r9, rbp ;; bbWeight=0.50 PerfScore 2.25 G_M26869_IG09: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 jmp Number:FormatCurrency(byref,byref,int,NumberFormatInfo) ;; bbWeight=0.50 PerfScore 3.13 G_M26869_IG10: test esi, esi jge SHORT G_M26869_IG11 mov esi, dword ptr [rbp+152] ;; bbWeight=0.50 PerfScore 1.63 G_M26869_IG11: mov edx, esi add edx, dword ptr [rdi+4] mov rcx, rdi call Number:RoundNumber(byref,int,bool) cmp byte ptr [rdi+8], 0 je SHORT G_M26869_IG15 mov rdx, gword ptr [rbp+40] test rdx, rdx je SHORT G_M26869_IG15 ;; bbWeight=0.50 PerfScore 4.88 G_M26869_IG12: mov ecx, dword ptr [rbx+8] mov eax, dword ptr [rdx+8] cmp eax, 1 jne SHORT G_M26869_IG14 lea r14, bword ptr [rbx+16] mov r8, r14 mov r8d, dword ptr [r8+8] cmp ecx, r8d jae SHORT G_M26869_IG14 ;; bbWeight=0.25 PerfScore 2.31 G_M26869_IG13: mov r8, bword ptr [r14] movsxd r9, ecx cmp eax, 0 jbe G_M26869_IG40 movzx rdx, word ptr [rdx+12] mov word ptr [r8+2*r9], dx inc ecx mov dword ptr [rbx+8], ecx jmp SHORT G_M26869_IG15 ;; bbWeight=0.50 PerfScore 4.88 G_M26869_IG14: mov rcx, rbx call ValueStringBuilder:AppendSlow(String):this ;; bbWeight=0.50 PerfScore 0.63 G_M26869_IG15: mov rcx, gword ptr [rbp+48] mov gword ptr [rsp+20H], rcx xor rcx, rcx mov gword ptr [rsp+28H], rcx mov rcx, rbx mov rdx, rdi mov r8d, esi xor r9, r9 call Number:FormatFixed(byref,byref,int,ref,String,String) jmp G_M26869_IG38 ;; bbWeight=0.50 PerfScore 4.13 G_M26869_IG16: test esi, esi jge SHORT G_M26869_IG17 mov esi, dword ptr [rbp+152] ;; bbWeight=0.50 PerfScore 1.63 G_M26869_IG17: mov edx, esi add edx, dword ptr [rdi+4] mov rcx, rdi call Number:RoundNumber(byref,int,bool) mov rcx, rbx mov rdx, rdi mov r8d, esi mov r9, rbp ;; bbWeight=0.50 PerfScore 2.25 G_M26869_IG18: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 jmp Number:FormatNumber(byref,byref,int,NumberFormatInfo) ;; bbWeight=0.50 PerfScore 3.13 G_M26869_IG19: test esi, esi jge SHORT G_M26869_IG20 mov esi, 6 ;; bbWeight=0.50 PerfScore 0.75 G_M26869_IG20: inc esi mov rcx, rdi mov edx, esi call Number:RoundNumber(byref,int,bool) cmp byte ptr [rdi+8], 0 je SHORT G_M26869_IG24 mov rdx, gword ptr [rbp+40] test rdx, rdx je SHORT G_M26869_IG24 ;; bbWeight=0.50 PerfScore 4.00 G_M26869_IG21: mov ecx, dword ptr [rbx+8] mov eax, dword ptr [rdx+8] cmp eax, 1 jne SHORT G_M26869_IG23 lea r14, bword ptr [rbx+16] mov r8, r14 mov r8d, dword ptr [r8+8] cmp ecx, r8d jae SHORT G_M26869_IG23 ;; bbWeight=0.25 PerfScore 2.31 G_M26869_IG22: mov r8, r14 mov r8, bword ptr [r8] movsxd r9, ecx cmp eax, 0 jbe G_M26869_IG40 movzx rdx, word ptr [rdx+12] mov word ptr [r8+2*r9], dx inc ecx mov dword ptr [rbx+8], ecx jmp SHORT G_M26869_IG24 ;; bbWeight=0.50 PerfScore 5.00 G_M26869_IG23: mov rcx, rbx call ValueStringBuilder:AppendSlow(String):this ;; bbWeight=0.50 PerfScore 0.63 G_M26869_IG24: mov dword ptr [rsp+A0H], r12d mov rcx, rbx mov rdx, rdi mov r8d, esi mov r9, rbp ;; bbWeight=0.50 PerfScore 1.00 G_M26869_IG25: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 jmp Number:FormatScientific(byref,byref,int,NumberFormatInfo,ushort) ;; bbWeight=0.50 PerfScore 3.13 G_M26869_IG26: xor r13d, r13d test esi, esi jg SHORT G_M26869_IG28 cmp r15d, 2 jne SHORT G_M26869_IG27 cmp esi, -1 jne SHORT G_M26869_IG27 mov r13d, 1 lea rcx, bword ptr [rdi+16] cmp dword ptr [rcx+8], 0 jbe G_M26869_IG40 mov rcx, bword ptr [rcx] cmp byte ptr [rcx], 0 jne SHORT G_M26869_IG29 jmp SHORT G_M26869_IG33 ;; bbWeight=0.50 PerfScore 7.38 G_M26869_IG27: mov esi, dword ptr [rdi] ;; bbWeight=0.50 PerfScore 1.00 G_M26869_IG28: mov rcx, rdi mov edx, esi call Number:RoundNumber(byref,int,bool) ;; bbWeight=0.50 PerfScore 0.75 G_M26869_IG29: cmp byte ptr [rdi+8], 0 je SHORT G_M26869_IG33 mov rdx, gword ptr [rbp+40] test rdx, rdx je SHORT G_M26869_IG33 ;; bbWeight=0.50 PerfScore 3.13 G_M26869_IG30: mov ecx, dword ptr [rbx+8] mov eax, dword ptr [rdx+8] cmp eax, 1 jne SHORT G_M26869_IG32 lea r8, bword ptr [rbx+16] mov r9, r8 mov r9d, dword ptr [r9+8] cmp ecx, r9d jae SHORT G_M26869_IG32 ;; bbWeight=0.25 PerfScore 2.31 G_M26869_IG31: mov r8, bword ptr [r8] movsxd r9, ecx cmp eax, 0 jbe G_M26869_IG40 movzx rdx, word ptr [rdx+12] mov word ptr [r8+2*r9], dx inc ecx mov dword ptr [rbx+8], ecx jmp SHORT G_M26869_IG33 ;; bbWeight=0.50 PerfScore 4.88 G_M26869_IG32: mov rcx, rbx call ValueStringBuilder:AppendSlow(String):this ;; bbWeight=0.50 PerfScore 0.63 G_M26869_IG33: movzx rcx, r14w add ecx, -2 movzx rcx, cx mov dword ptr [rsp+20H], ecx mov dword ptr [rsp+28H], r13d mov rcx, rbx mov rdx, rdi mov r8d, esi mov r9, rbp call Number:FormatGeneral(byref,byref,int,NumberFormatInfo,ushort,bool) jmp SHORT G_M26869_IG38 ;; bbWeight=0.50 PerfScore 3.38 G_M26869_IG34: test esi, esi jge SHORT G_M26869_IG35 mov esi, dword ptr [rbp+180] ;; bbWeight=0.50 PerfScore 1.63 G_M26869_IG35: lea rdx, bword ptr [rdi+4] add dword ptr [rdx], 2 mov edx, esi add edx, dword ptr [rdi+4] mov rcx, rdi call Number:RoundNumber(byref,int,bool) mov rcx, rbx mov rdx, rdi mov r8d, esi mov r9, rbp ;; bbWeight=0.50 PerfScore 5.00 G_M26869_IG36: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 jmp Number:FormatPercent(byref,byref,int,NumberFormatInfo) ;; bbWeight=0.50 PerfScore 3.13 G_M26869_IG37: cmp r15d, 3 jne SHORT G_M26869_IG39 add r12d, -11 movzx r14, r12w jmp G_M26869_IG26 ;; bbWeight=0.50 PerfScore 1.88 G_M26869_IG38: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M26869_IG39: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x5C75 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call FormatException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M26869_IG40: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M26869_IG07 - G_M26869_IG02 dd G_M26869_IG39 - G_M26869_IG02 dd G_M26869_IG19 - G_M26869_IG02 dd G_M26869_IG10 - G_M26869_IG02 dd G_M26869_IG26 - G_M26869_IG02 RWD20 dd G_M26869_IG16 - G_M26869_IG02 dd G_M26869_IG39 - G_M26869_IG02 dd G_M26869_IG34 - G_M26869_IG02 dd G_M26869_IG39 - G_M26869_IG02 dd G_M26869_IG37 - G_M26869_IG02 RWD40 dd G_M26869_IG07 - G_M26869_IG02 dd G_M26869_IG39 - G_M26869_IG02 dd G_M26869_IG19 - G_M26869_IG02 dd G_M26869_IG10 - G_M26869_IG02 dd G_M26869_IG26 - G_M26869_IG02 RWD60 dd G_M26869_IG16 - G_M26869_IG02 dd G_M26869_IG39 - G_M26869_IG02 dd G_M26869_IG34 - G_M26869_IG02 dd G_M26869_IG39 - G_M26869_IG02 dd G_M26869_IG37 - G_M26869_IG02 ; Total bytes of code 963, prolog size 16, PerfScore 213.99, (MethodHash=83b9970a) for method Number:NumberToString(byref,byref,ushort,int,NumberFormatInfo) ; ============================================================ ; Assembly listing for method Number:RoundNumber(byref,int,bool) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 8, 6 ) byref -> rcx ; V01 arg1 [V01,T02] ( 4, 11 ) int -> rdx ; V02 arg2 [V02,T06] ( 3, 2.50) bool -> r8 ; V03 loc0 [V03,T01] ( 8, 15.50) long -> rax ; V04 loc1 [V04,T00] ( 20, 44.50) int -> r9 ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T09] ( 3, 3 ) byref -> r9 "dup spill" ; V07 tmp2 [V07,T10] ( 3, 3 ) long -> rdx "dup spill" ; V08 tmp3 [V08,T05] ( 3, 6 ) byref -> rax "Span.get_Item ptrToSpan" ; V09 tmp4 [V09,T07] ( 2, 4 ) byref -> rax "Inlining Arg" ; V10 tmp5 [V10,T11] ( 2, 1 ) bool -> rdx "Inline return value spill temp" ; V11 tmp6 [V11,T12] ( 3, 1.50) ubyte -> rdx "Inline stloc first use temp" ; V12 tmp7 [V12,T08] ( 2, 4 ) long -> rax "Cast away GC" ; V13 cse0 [V13,T03] ( 3, 10 ) int -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M43924_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M43924_IG02: lea rax, bword ptr [rcx+16] cmp dword ptr [rax+8], 0 jbe G_M43924_IG21 mov rax, bword ptr [rax] xor r9d, r9d jmp SHORT G_M43924_IG04 ;; bbWeight=1 PerfScore 7.75 G_M43924_IG03: inc r9d ;; bbWeight=2 PerfScore 0.50 G_M43924_IG04: cmp r9d, edx jge SHORT G_M43924_IG06 ;; bbWeight=8 PerfScore 10.00 G_M43924_IG05: movsxd r10, r9d cmp byte ptr [rax+r10], 0 jne SHORT G_M43924_IG03 ;; bbWeight=4 PerfScore 13.00 G_M43924_IG06: cmp r9d, edx jne SHORT G_M43924_IG15 ;; bbWeight=1 PerfScore 1.25 G_M43924_IG07: movsxd rdx, r9d movzx rdx, byte ptr [rax+rdx] test edx, edx sete r10b movzx r10, r10b movzx r8, r8b or r8d, r10d jne SHORT G_M43924_IG15 ;; bbWeight=0.50 PerfScore 2.63 G_M43924_IG08: cmp edx, 53 setge dl movzx rdx, dl test edx, edx je SHORT G_M43924_IG15 ;; bbWeight=0.50 PerfScore 1.38 G_M43924_IG09: jmp SHORT G_M43924_IG11 ;; bbWeight=0.50 PerfScore 1.00 G_M43924_IG10: dec r9d ;; bbWeight=2 PerfScore 0.50 G_M43924_IG11: test r9d, r9d jle SHORT G_M43924_IG12 lea edx, [r9-1] movsxd rdx, edx cmp byte ptr [rax+rdx], 57 je SHORT G_M43924_IG10 ;; bbWeight=4 PerfScore 20.00 G_M43924_IG12: test r9d, r9d jle SHORT G_M43924_IG13 lea edx, [r9-1] movsxd rdx, edx add rdx, rax inc byte ptr [rdx] jmp SHORT G_M43924_IG16 ;; bbWeight=0.50 PerfScore 4.63 G_M43924_IG13: lea r9, bword ptr [rcx+4] inc dword ptr [r9] mov byte ptr [rax], 49 mov r9d, 1 jmp SHORT G_M43924_IG19 ;; bbWeight=0.50 PerfScore 4.38 G_M43924_IG14: mov r9d, edx ;; bbWeight=2 PerfScore 0.50 G_M43924_IG15: test r9d, r9d jle SHORT G_M43924_IG16 lea edx, [r9-1] movsxd r8, edx cmp byte ptr [rax+r8], 48 je SHORT G_M43924_IG14 ;; bbWeight=4 PerfScore 20.00 G_M43924_IG16: test r9d, r9d jne SHORT G_M43924_IG19 ;; bbWeight=0.50 PerfScore 0.63 G_M43924_IG17: cmp byte ptr [rcx+10], 3 je SHORT G_M43924_IG18 mov byte ptr [rcx+8], 0 ;; bbWeight=0.50 PerfScore 2.00 G_M43924_IG18: xor edx, edx mov dword ptr [rcx+4], edx ;; bbWeight=0.50 PerfScore 0.63 G_M43924_IG19: movsxd rdx, r9d mov byte ptr [rax+rdx], 0 mov dword ptr [rcx], r9d ;; bbWeight=1 PerfScore 2.25 G_M43924_IG20: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 G_M43924_IG21: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 211, prolog size 4, PerfScore 115.60, (MethodHash=d2b6546b) for method Number:RoundNumber(byref,int,bool) ; ============================================================ ; Assembly listing for method Number:FormatNumber(byref,byref,int,NumberFormatInfo) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 11, 18 ) byref -> rsi ; V01 arg1 [V01,T14] ( 4, 5 ) byref -> rbx ; V02 arg2 [V02,T16] ( 3, 4 ) int -> rbp ; V03 arg3 [V03,T04] ( 7, 10.50) ref -> rdi class-hnd ;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V05 loc1 [V05,T15] ( 3, 6 ) ref -> r14 class-hnd ; V06 loc2 [V06,T02] ( 5, 17 ) int -> r15 ; V07 loc3 [V07,T03] ( 5, 14 ) ushort -> rdx ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T20] ( 3, 3 ) ref -> rcx class-hnd "impAppendStmt" ; V10 tmp2 [V10,T22] ( 3, 2 ) ref -> r14 ; V11 tmp3 [V11,T09] ( 2, 8 ) ref -> r9 class-hnd "impAppendStmt" ; V12 tmp4 [V12,T10] ( 2, 8 ) ref -> rcx class-hnd "impAppendStmt" ; V13 tmp5 [V13,T01] ( 5, 18 ) ref -> rdx class-hnd "Inlining Arg" ; V14 tmp6 [V14,T08] ( 5, 8 ) int -> rcx "Inline stloc first use temp" ; V15 tmp7 [V15,T11] ( 2, 8 ) byref -> r13 "Span.get_Item ptrToSpan" ; V16 tmp8 [V16,T19] ( 2, 4 ) byref -> r8 "Inlining Arg" ; V17 tmp9 [V17,T07] ( 5, 10 ) int -> rcx "Inline stloc first use temp" ; V18 tmp10 [V18,T12] ( 2, 8 ) byref -> rax "Span.get_Item ptrToSpan" ; V19 tmp11 [V19,T13] ( 2, 8 ) byref -> rax "Inlining Arg" ; V20 tmp12 [V20,T21] ( 3, 3 ) int -> rdx "index expr" ; V21 cse0 [V21,T06] ( 6, 10 ) int -> r8 "CSE - aggressive" ; V22 cse1 [V22,T17] ( 3, 6 ) int -> r12 "CSE - aggressive" ; V23 cse2 [V23,T05] ( 6, 10 ) byref -> r13 "CSE - aggressive" ; V24 cse3 [V24,T18] ( 3, 4 ) int -> rax "CSE - moderate" ; ; Lcl frame size = 56 G_M56179_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 mov rsi, rcx mov rbx, rdx mov ebp, r8d mov rdi, r9 ;; bbWeight=1 PerfScore 9.25 G_M56179_IG02: cmp byte ptr [rbx+8], 0 jne SHORT G_M56179_IG04 ;; bbWeight=1 PerfScore 3.00 G_M56179_IG03: mov rcx, 0xD1FFAB1E mov r14, gword ptr [rcx] jmp SHORT G_M56179_IG05 ;; bbWeight=0.50 PerfScore 2.13 G_M56179_IG04: mov rcx, 0xD1FFAB1E mov edx, 358 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov edx, dword ptr [rdi+168] cmp edx, dword ptr [rcx+8] jae G_M56179_IG17 movsxd rdx, edx mov r14, gword ptr [rcx+8*rdx+16] ;; bbWeight=0.50 PerfScore 5.50 G_M56179_IG05: xor r15d, r15d mov r12d, dword ptr [r14+8] test r12d, r12d jle G_M56179_IG16 ;; bbWeight=1 PerfScore 3.50 G_M56179_IG06: movsxd rcx, r15d movzx rdx, word ptr [r14+2*rcx+12] cmp edx, 35 je SHORT G_M56179_IG08 ;; bbWeight=4 PerfScore 14.00 G_M56179_IG07: cmp edx, 45 je SHORT G_M56179_IG09 jmp SHORT G_M56179_IG13 ;; bbWeight=2 PerfScore 6.50 G_M56179_IG08: mov r9, gword ptr [rdi+8] mov rcx, gword ptr [rdi+48] mov gword ptr [rsp+20H], rcx mov rcx, gword ptr [rdi+56] mov gword ptr [rsp+28H], rcx mov rcx, rsi mov rdx, rbx mov r8d, ebp call Number:FormatFixed(byref,byref,int,ref,String,String) jmp G_M56179_IG15 ;; bbWeight=2 PerfScore 23.50 G_M56179_IG09: mov rdx, gword ptr [rdi+40] test rdx, rdx je SHORT G_M56179_IG15 ;; bbWeight=2 PerfScore 6.50 G_M56179_IG10: mov ecx, dword ptr [rsi+8] mov eax, dword ptr [rdx+8] cmp eax, 1 jne SHORT G_M56179_IG12 lea r13, bword ptr [rsi+16] mov r8, r13 mov r8d, dword ptr [r8+8] cmp ecx, r8d jae SHORT G_M56179_IG12 ;; bbWeight=1 PerfScore 9.25 G_M56179_IG11: cmp ecx, r8d jae SHORT G_M56179_IG17 mov r8, bword ptr [r13] movsxd r9, ecx cmp eax, 0 jbe SHORT G_M56179_IG17 movzx rdx, word ptr [rdx+12] mov word ptr [r8+2*r9], dx inc ecx mov dword ptr [rsi+8], ecx jmp SHORT G_M56179_IG15 ;; bbWeight=2 PerfScore 22.00 G_M56179_IG12: mov rcx, rsi call ValueStringBuilder:AppendSlow(String):this jmp SHORT G_M56179_IG15 ;; bbWeight=2 PerfScore 6.50 G_M56179_IG13: mov ecx, dword ptr [rsi+8] lea r13, bword ptr [rsi+16] mov rax, r13 mov r8d, dword ptr [rax+8] cmp ecx, r8d jae SHORT G_M56179_IG14 mov rax, r13 cmp ecx, r8d jae SHORT G_M56179_IG17 mov rax, bword ptr [rax] movsxd r8, ecx mov word ptr [rax+2*r8], dx inc ecx mov dword ptr [rsi+8], ecx jmp SHORT G_M56179_IG15 ;; bbWeight=2 PerfScore 28.00 G_M56179_IG14: mov rcx, rsi call ValueStringBuilder:GrowAndAppend(ushort):this ;; bbWeight=2 PerfScore 2.50 G_M56179_IG15: inc r15d cmp r12d, r15d jg G_M56179_IG06 ;; bbWeight=4 PerfScore 6.00 G_M56179_IG16: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M56179_IG17: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 350, prolog size 28, PerfScore 188.38, (MethodHash=06bf248c) for method Number:FormatNumber(byref,byref,int,NumberFormatInfo) ; ============================================================ ; Assembly listing for method Number:FormatFixed(byref,byref,int,ref,String,String) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 28, 33.25) byref -> rsi ; V01 arg1 [V01,T33] ( 5, 4.50) byref -> rdx ; V02 arg2 [V02,T17] ( 11, 13.50) int -> [rsp+0xA0] ; V03 arg3 [V03,T18] ( 8, 13.50) ref -> rbp class-hnd ; V04 arg4 [V04,T58] ( 4, 1.75) ref -> [rsp+0xB0] class-hnd ; V05 arg5 [V05,T07] ( 3, 22 ) ref -> rdi class-hnd ; V06 loc0 [V06,T08] ( 12, 21 ) int -> r15 ; V07 loc1 [V07,T10] ( 10, 18 ) long -> r12 ; V08 loc2 [V08,T04] ( 14, 35 ) int -> r13 ; V09 loc3 [V09,T19] ( 10, 15.25) int -> [rsp+0x44] ; V10 loc4 [V10,T13] ( 7, 17 ) int -> [rsp+0x40] ; V11 loc5 [V11,T24] ( 5, 8.50) int -> [rsp+0x3C] ; V12 loc6 [V12,T60] ( 3, 1.50) int -> r11 ; V13 loc7 [V13,T37] ( 3, 5 ) int -> [rsp+0x38] ; V14 loc8 [V14,T12] ( 7, 17.50) int -> r10 ;* V15 loc9 [V15 ] ( 0, 0 ) long -> zero-ref ; V16 loc10 [V16 ] ( 2, 1 ) byref -> [rsp+0x30] must-init pinned ; V17 loc11 [V17,T03] ( 5, 40.50) long -> registers ; V18 loc12 [V18,T09] ( 8, 21 ) int -> r14 ; V19 loc13 [V19,T01] ( 7, 84 ) int -> rbx ;* V20 loc14 [V20 ] ( 0, 0 ) int -> zero-ref ; V21 OutArgs [V21 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V22 tmp1 [V22,T57] ( 0, 0 ) byref -> zero-ref ; V23 tmp2 [V23,T32] ( 2, 8 ) long -> r12 "impSpillLclRefs" ;* V24 tmp3 [V24,T38] ( 0, 0 ) byref -> zero-ref ; V25 tmp4 [V25,T35] ( 3, 6 ) int -> rdx ;* V26 tmp5 [V26,T43] ( 0, 0 ) byref -> zero-ref ; V27 tmp6 [V27,T22] ( 3, 12 ) long -> rcx "impSpillLclRefs" ;* V28 tmp7 [V28,T39] ( 0, 0 ) byref -> zero-ref ; V29 tmp8 [V29,T26] ( 3, 8 ) int -> rcx ; V30 tmp9 [V30,T16] ( 2, 16 ) int -> r15 "dup spill" ; V31 tmp10 [V31,T61] ( 3, 1.50) int -> r11 ;* V32 tmp11 [V32 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V33 tmp12 [V33,T06] ( 3, 24 ) long -> rbx "impSpillLclRefs" ; V34 tmp13 [V34,T27] ( 3, 8 ) long -> rbx ; V35 tmp14 [V35,T28] ( 3, 8 ) long -> rbx ; V36 tmp15 [V36,T29] ( 3, 8 ) int -> rdx ; V37 tmp16 [V37,T00] ( 3, 96 ) long -> rdx "impSpillLclRefs" ; V38 tmp17 [V38,T70] ( 8, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V39 tmp18 [V39,T62] ( 3, 1.50) int -> r8 ; V40 tmp19 [V40,T34] ( 3, 6 ) byref -> rcx "Span.get_Item ptrToSpan" ; V41 tmp20 [V41,T40] ( 2, 4 ) byref -> r12 "Inlining Arg" ; V42 tmp21 [V42,T71] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V43 tmp22 [V43,T47] ( 5, 2.50) int -> [rsp+0x2C] "Inline stloc first use temp" ; V44 tmp23 [V44,T51] ( 2, 2 ) byref -> rcx "Inlining Arg" ; V45 tmp24 [V45,T45] ( 3, 3 ) byref -> rcx "Inlining Arg" ;* V46 tmp25 [V46 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V47 tmp26 [V47,T52] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V48 tmp27 [V48 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V49 tmp28 [V49 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V50 tmp29 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V51 tmp30 [V51,T20] ( 5, 14 ) int -> rcx "Inline stloc first use temp" ; V52 tmp31 [V52,T14] ( 3, 16 ) ushort -> rdx "Inlining Arg" ; V53 tmp32 [V53,T21] ( 3, 12 ) byref -> rax "Span.get_Item ptrToSpan" ; V54 tmp33 [V54,T15] ( 2, 16 ) byref -> rax "Inlining Arg" ; V55 tmp34 [V55,T48] ( 5, 2.50) int -> rcx "Inline stloc first use temp" ; V56 tmp35 [V56,T53] ( 2, 2 ) byref -> rax "Span.get_Item ptrToSpan" ; V57 tmp36 [V57,T54] ( 2, 2 ) byref -> rdx "Inlining Arg" ; V58 tmp37 [V58,T59] ( 4, 1.50) int -> rcx "Inline stloc first use temp" ; V59 tmp38 [V59,T55] ( 2, 2 ) byref -> rax "Span.get_Item ptrToSpan" ; V60 tmp39 [V60,T65] ( 2, 1 ) byref -> rax "Inlining Arg" ; V61 tmp40 [V61,T50] ( 4, 2 ) int -> rbp "Inline return value spill temp" ; V62 tmp41 [V62,T46] ( 3, 3 ) int -> r13 "Inlining Arg" ; V63 tmp42 [V63,T25] ( 4, 8 ) int -> rcx "Inline stloc first use temp" ; V64 tmp43 [V64,T23] ( 3, 12 ) ushort -> rdx "Inlining Arg" ; V65 tmp44 [V65,T30] ( 2, 8 ) byref -> rax "Span.get_Item ptrToSpan" ; V66 tmp45 [V66,T31] ( 2, 8 ) byref -> rax "Inlining Arg" ;* V67 tmp46 [V67,T67] ( 0, 0 ) byref -> zero-ref V32._pointer(offs=0x00) P-INDEP "field V32._pointer (fldOffset=0x0)" ;* V68 tmp47 [V68 ] ( 0, 0 ) int -> zero-ref V32._length(offs=0x08) P-INDEP "field V32._length (fldOffset=0x8)" ;* V69 tmp48 [V69,T68] ( 0, 0 ) byref -> zero-ref V46._pointer(offs=0x00) P-INDEP "field V46._pointer (fldOffset=0x0)" ;* V70 tmp49 [V70 ] ( 0, 0 ) int -> zero-ref V46._length(offs=0x08) P-INDEP "field V46._length (fldOffset=0x8)" ; V71 tmp50 [V71,T44] ( 3, 1.50) byref -> rcx V49._value(offs=0x00) P-INDEP "field V49._value (fldOffset=0x0)" ;* V72 tmp51 [V72,T69] ( 0, 0 ) byref -> zero-ref V50._pointer(offs=0x00) P-INDEP "field V50._pointer (fldOffset=0x0)" ;* V73 tmp52 [V73 ] ( 0, 0 ) int -> zero-ref V50._length(offs=0x08) P-INDEP "field V50._length (fldOffset=0x8)" ; V74 tmp53 [V74,T41] ( 2, 4 ) long -> r12 "Cast away GC" ; V75 tmp54 [V75,T72] ( 2, 0 ) ref -> rcx "argument with side effect" ; V76 tmp55 [V76,T56] ( 2, 2 ) long -> rcx "Cast away GC" ; V77 cse0 [V77,T63] ( 3, 1.50) int -> r8 "CSE - conservative" ; V78 cse1 [V78,T66] ( 2, 0.50) int -> rax "CSE - conservative" ; V79 cse2 [V79,T49] ( 5, 2.50) int -> registers "CSE - conservative" ; V80 cse3 [V80,T64] ( 3, 1 ) int -> rdx "CSE - conservative" ; V81 cse4 [V81,T36] ( 3, 6 ) int -> rcx "CSE - moderate" ; V82 cse5 [V82,T42] ( 2, 4 ) int -> rax "CSE - moderate" ; V83 cse6 [V83,T05] ( 5, 28 ) int -> registers "CSE - aggressive" ; V84 cse7 [V84,T11] ( 8, 17.50) int -> [rsp+0x28] "CSE - moderate" ; ; Lcl frame size = 72 G_M42905_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 72 xor rax, rax mov qword ptr [rsp+30H], rax mov dword ptr [rsp+A0H], r8d mov rsi, rcx mov rbp, r9 mov rdi, gword ptr [rsp+B8H] ;; bbWeight=1 PerfScore 12.00 G_M42905_IG02: mov r15d, dword ptr [rdx+4] lea rcx, bword ptr [rdx+16] cmp dword ptr [rcx+8], 0 jbe G_M42905_IG57 mov r12, bword ptr [rcx] test r15d, r15d jle G_M42905_IG38 ;; bbWeight=1 PerfScore 8.75 G_M42905_IG03: test rbp, rbp je G_M42905_IG30 xor r13d, r13d mov eax, r15d xor r8d, r8d mov r9d, dword ptr [rbp+8] test r9d, r9d je G_M42905_IG11 mov dword ptr [rsp+28H], r9d cmp r9d, 0 jbe G_M42905_IG57 mov r8d, dword ptr [rbp+16] mov r10d, r8d cmp eax, r10d jle SHORT G_M42905_IG08 ;; bbWeight=0.50 PerfScore 5.50 G_M42905_IG04: mov r9d, dword ptr [rsp+28H] cmp r13d, r9d jae G_M42905_IG57 movsxd rcx, r13d mov ecx, dword ptr [rbp+4*rcx+16] test ecx, ecx mov dword ptr [rsp+28H], r9d je SHORT G_M42905_IG08 mov ecx, dword ptr [rdi+8] add eax, ecx mov r9d, dword ptr [rsp+28H] lea ecx, [r9-1] cmp ecx, r13d jle SHORT G_M42905_IG06 ;; bbWeight=4 PerfScore 47.00 G_M42905_IG05: inc r13d ;; bbWeight=2 PerfScore 0.50 G_M42905_IG06: cmp r13d, r9d jae G_M42905_IG57 movsxd rcx, r13d add r10d, dword ptr [rbp+4*rcx+16] test r10d, r10d jl G_M42905_IG55 test eax, eax jl G_M42905_IG55 ;; bbWeight=4 PerfScore 24.00 G_M42905_IG07: cmp r15d, r10d mov dword ptr [rsp+28H], r9d jg SHORT G_M42905_IG04 ;; bbWeight=4 PerfScore 9.00 G_M42905_IG08: test r10d, r10d je SHORT G_M42905_IG09 jmp SHORT G_M42905_IG10 ;; bbWeight=0.50 PerfScore 1.63 G_M42905_IG09: xor r8d, r8d ;; bbWeight=0.50 PerfScore 0.13 G_M42905_IG10: mov dword ptr [rsp+40H], r8d mov r8d, dword ptr [rsp+40H] mov r9d, dword ptr [rsp+28H] ;; bbWeight=0.50 PerfScore 1.50 G_M42905_IG11: xor r13d, r13d xor r10d, r10d mov dword ptr [rsp+3CH], r10d mov r11d, dword ptr [rdx] cmp r15d, r11d jl SHORT G_M42905_IG12 jmp SHORT G_M42905_IG13 ;; bbWeight=0.50 PerfScore 3.38 G_M42905_IG12: mov r11d, r15d ;; bbWeight=0.50 PerfScore 0.13 G_M42905_IG13: mov dword ptr [rsp+38H], r11d mov edx, dword ptr [rsi+8] lea rcx, bword ptr [rsi+16] mov ecx, dword ptr [rcx+8] sub ecx, eax mov dword ptr [rsp+2CH], edx cmp ecx, edx jge SHORT G_M42905_IG15 ;; bbWeight=0.50 PerfScore 4.00 G_M42905_IG14: mov dword ptr [rsp+28H], r9d mov dword ptr [rsp+40H], r8d mov rcx, rsi mov dword ptr [rsp+44H], eax mov edx, eax call ValueStringBuilder:Grow(int):this mov eax, dword ptr [rsp+44H] mov r8d, dword ptr [rsp+40H] mov r9d, dword ptr [rsp+28H] ;; bbWeight=0.25 PerfScore 1.88 G_M42905_IG15: mov edx, dword ptr [rsp+2CH] lea ecx, [rdx+rax] mov dword ptr [rsi+8], ecx lea rcx, bword ptr [rsi+16] mov r14d, edx mov ebx, eax add rbx, r14 mov r14d, dword ptr [rcx+8] cmp rbx, r14 ja G_M42905_IG56 ;; bbWeight=0.50 PerfScore 3.50 G_M42905_IG16: mov rcx, bword ptr [rcx] movsxd rdx, edx lea rcx, bword ptr [rcx+2*rdx] mov bword ptr [rsp+30H], rcx movsxd rdx, eax lea rbx, [rcx+2*rdx-2] lea r14d, [r15-1] test r14d, r14d jl SHORT G_M42905_IG19 ;; bbWeight=0.50 PerfScore 3.38 G_M42905_IG17: lea rcx, [rbx-2] mov r11d, dword ptr [rsp+38H] cmp r14d, r11d jl SHORT G_M42905_IG20 ;; bbWeight=4 PerfScore 11.00 G_M42905_IG18: mov edx, 48 jmp SHORT G_M42905_IG21 ;; bbWeight=2 PerfScore 4.50 G_M42905_IG19: mov r11d, dword ptr [rsp+38H] jmp G_M42905_IG27 ;; bbWeight=0.25 PerfScore 0.75 G_M42905_IG20: movsxd rdx, r14d movzx rdx, byte ptr [r12+rdx] ;; bbWeight=2 PerfScore 4.50 G_M42905_IG21: mov word ptr [rbx], dx test r8d, r8d jle SHORT G_M42905_IG26 ;; bbWeight=4 PerfScore 9.00 G_M42905_IG22: mov r10d, dword ptr [rsp+3CH] inc r10d cmp r10d, r8d jne G_M42905_IG29 test r14d, r14d mov dword ptr [rsp+3CH], r10d je SHORT G_M42905_IG26 mov ebx, dword ptr [rdi+8] mov eax, ebx lea ebx, [rax-1] test ebx, ebx jl SHORT G_M42905_IG24 ;; bbWeight=2 PerfScore 17.50 G_M42905_IG23: mov rdx, rcx lea rcx, [rdx-2] cmp ebx, eax jae G_M42905_IG57 movsxd r10, ebx movzx r10, word ptr [rdi+2*r10+12] mov word ptr [rdx], r10w dec ebx test ebx, ebx jge SHORT G_M42905_IG23 ;; bbWeight=16 PerfScore 108.00 G_M42905_IG24: lea r10d, [r9-1] cmp r10d, r13d jle SHORT G_M42905_IG25 inc r13d cmp r13d, r9d jae G_M42905_IG57 movsxd r8, r13d mov r8d, dword ptr [rbp+4*r8+16] ;; bbWeight=2 PerfScore 11.00 G_M42905_IG25: xor r10d, r10d xor ebx, ebx mov dword ptr [rsp+3CH], ebx ;; bbWeight=2 PerfScore 3.00 G_M42905_IG26: dec r14d test r14d, r14d mov rbx, rcx jge SHORT G_M42905_IG28 ;; bbWeight=4 PerfScore 7.00 G_M42905_IG27: movsxd rcx, r11d add r12, rcx xor rcx, rcx mov bword ptr [rsp+30H], rcx jmp G_M42905_IG40 ;; bbWeight=0.50 PerfScore 1.88 G_M42905_IG28: mov dword ptr [rsp+38H], r11d jmp G_M42905_IG17 ;; bbWeight=2 PerfScore 6.00 G_M42905_IG29: mov dword ptr [rsp+3CH], r10d jmp SHORT G_M42905_IG26 ;; bbWeight=1 PerfScore 3.00 G_M42905_IG30: cmp byte ptr [r12], 0 jne SHORT G_M42905_IG32 ;; bbWeight=4 PerfScore 12.00 G_M42905_IG31: mov ecx, 48 jmp SHORT G_M42905_IG33 ;; bbWeight=2 PerfScore 4.50 G_M42905_IG32: mov rcx, r12 lea r12, [rcx+1] movzx rcx, byte ptr [rcx] ;; bbWeight=2 PerfScore 5.50 G_M42905_IG33: movzx rdx, cx mov ecx, dword ptr [rsi+8] lea rax, bword ptr [rsi+16] cmp ecx, dword ptr [rax+8] jae SHORT G_M42905_IG35 ;; bbWeight=4 PerfScore 23.00 G_M42905_IG34: lea rax, bword ptr [rsi+16] cmp ecx, dword ptr [rax+8] jae G_M42905_IG57 mov rax, bword ptr [rax] movsxd r8, ecx mov word ptr [rax+2*r8], dx inc ecx mov dword ptr [rsi+8], ecx jmp SHORT G_M42905_IG36 ;; bbWeight=2 PerfScore 20.00 G_M42905_IG35: mov rcx, rsi call ValueStringBuilder:GrowAndAppend(ushort):this ;; bbWeight=2 PerfScore 2.50 G_M42905_IG36: dec r15d test r15d, r15d jg SHORT G_M42905_IG30 ;; bbWeight=4 PerfScore 6.00 G_M42905_IG37: jmp SHORT G_M42905_IG40 ;; bbWeight=0.50 PerfScore 1.00 G_M42905_IG38: mov ecx, dword ptr [rsi+8] lea rdx, bword ptr [rsi+16] mov edx, dword ptr [rdx+8] cmp ecx, edx jae SHORT G_M42905_IG39 lea rax, bword ptr [rsi+16] cmp ecx, edx jae G_M42905_IG57 mov rdx, bword ptr [rax] movsxd rax, ecx mov word ptr [rdx+2*rax], 48 inc ecx mov dword ptr [rsi+8], ecx jmp SHORT G_M42905_IG40 ;; bbWeight=0.50 PerfScore 7.00 G_M42905_IG39: mov rcx, rsi mov edx, 48 call ValueStringBuilder:GrowAndAppend(ushort):this ;; bbWeight=0.50 PerfScore 0.75 G_M42905_IG40: mov ebx, dword ptr [rsp+A0H] test ebx, ebx jle G_M42905_IG54 ;; bbWeight=1 PerfScore 2.25 G_M42905_IG41: mov r14, gword ptr [rsp+B0H] test r14, r14 je SHORT G_M42905_IG45 ;; bbWeight=0.50 PerfScore 1.13 G_M42905_IG42: mov ecx, dword ptr [rsi+8] mov edx, dword ptr [r14+8] cmp edx, 1 jne SHORT G_M42905_IG44 lea rax, bword ptr [rsi+16] mov eax, dword ptr [rax+8] cmp ecx, eax jae SHORT G_M42905_IG44 ;; bbWeight=0.25 PerfScore 2.25 G_M42905_IG43: lea rax, bword ptr [rsi+16] mov rax, bword ptr [rax] movsxd r8, ecx cmp edx, 0 jbe G_M42905_IG57 movzx rdx, word ptr [r14+12] mov word ptr [rax+2*r8], dx inc ecx mov dword ptr [rsi+8], ecx jmp SHORT G_M42905_IG45 ;; bbWeight=0.50 PerfScore 5.13 G_M42905_IG44: mov rcx, rsi mov rdx, r14 call ValueStringBuilder:AppendSlow(String):this ;; bbWeight=0.50 PerfScore 0.75 G_M42905_IG45: test r15d, r15d jge SHORT G_M42905_IG53 mov r13d, r15d neg r13d cmp r13d, ebx jle SHORT G_M42905_IG46 mov ebp, ebx jmp SHORT G_M42905_IG47 ;; bbWeight=0.50 PerfScore 2.63 G_M42905_IG46: mov ebp, r13d ;; bbWeight=0.50 PerfScore 0.13 G_M42905_IG47: mov rcx, rsi mov r8d, ebp mov edx, 48 call ValueStringBuilder:Append(ushort,int):this sub ebx, ebp test ebx, ebx jle SHORT G_M42905_IG54 ;; bbWeight=0.50 PerfScore 1.63 G_M42905_IG48: movzx rcx, byte ptr [r12] test ecx, ecx jne SHORT G_M42905_IG49 mov edx, 48 jmp SHORT G_M42905_IG50 ;; bbWeight=2 PerfScore 11.00 G_M42905_IG49: inc r12 mov edx, ecx ;; bbWeight=2 PerfScore 1.00 G_M42905_IG50: movzx rdx, dx mov ecx, dword ptr [rsi+8] lea rax, bword ptr [rsi+16] mov eax, dword ptr [rax+8] cmp ecx, eax jae SHORT G_M42905_IG51 lea rax, bword ptr [rsi+16] mov rax, bword ptr [rax] movsxd r8, ecx mov word ptr [rax+2*r8], dx inc ecx mov dword ptr [rsi+8], ecx jmp SHORT G_M42905_IG52 ;; bbWeight=2 PerfScore 26.00 G_M42905_IG51: mov rcx, rsi call ValueStringBuilder:GrowAndAppend(ushort):this ;; bbWeight=2 PerfScore 2.50 G_M42905_IG52: dec ebx ;; bbWeight=2 PerfScore 0.50 G_M42905_IG53: test ebx, ebx jg SHORT G_M42905_IG48 ;; bbWeight=4 PerfScore 5.00 G_M42905_IG54: add rsp, 72 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M42905_IG55: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x3669 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M42905_IG56: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 G_M42905_IG57: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1107, prolog size 45, PerfScore 573.45, (MethodHash=a3f15866) for method Number:FormatFixed(byref,byref,int,ref,String,String) ; ============================================================ ; Assembly listing for method Characteristic`1:ResolveValueCore(CharacteristicObject,Object):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 5, 3.50) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 4, 3 ) ref -> r8 class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T09] ( 2, 2 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T03] ( 4, 3.50) ref -> rbx "inline UNBOX clone1" ; V06 tmp3 [V06,T05] ( 3, 3 ) ref -> rbp class-hnd exact "Single-def Box Helper" ; V07 tmp4 [V07,T04] ( 4, 3.50) ref -> rdi "inline UNBOX clone1" ; V08 tmp5 [V08,T06] ( 3, 3 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V09 cse0 [V09,T08] ( 3, 2.50) ref -> rdi "CSE - aggressive" ; V10 rat0 [V10,T07] ( 3, 3 ) ref -> rdi "delegate invoke call" ; ; Lcl frame size = 40 G_M41771_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rdx ;; bbWeight=1 PerfScore 4.50 G_M41771_IG02: mov rdi, gword ptr [rcx+48] test rdi, rdi jne SHORT G_M41771_IG07 ;; bbWeight=1 PerfScore 3.25 G_M41771_IG03: mov rdx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rdi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rdi], rdx je SHORT G_M41771_IG05 ;; bbWeight=0.50 PerfScore 3.50 G_M41771_IG04: mov rdx, rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41771_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov ecx, dword ptr [rdi+8] mov dword ptr [rax+8], ecx ;; bbWeight=0.50 PerfScore 2.13 G_M41771_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M41771_IG07: mov rdx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rbx, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rbx], rdx je SHORT G_M41771_IG09 ;; bbWeight=0.50 PerfScore 3.50 G_M41771_IG08: mov rdx, rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41771_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov r8d, dword ptr [rbx+8] mov rcx, gword ptr [rdi+8] mov rdx, rsi call qword ptr [rdi+24]Func`3:Invoke(__Canon,int):int:this mov dword ptr [rbp+8], eax mov rax, rbp ;; bbWeight=0.50 PerfScore 5.00 G_M41771_IG10: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 199, prolog size 8, PerfScore 45.78, (MethodHash=f6005cd4) for method Characteristic`1:ResolveValueCore(CharacteristicObject,Object):Object:this ; ============================================================ ; Assembly listing for method Int32:ToString(String,IFormatProvider):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rcx this ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r8 class-hnd ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M37244_IG01: ;; bbWeight=1 PerfScore 0.00 G_M37244_IG02: mov ecx, dword ptr [rcx] mov r9, r8 mov r8, rdx mov edx, -1 ;; bbWeight=1 PerfScore 2.75 G_M37244_IG03: jmp Number:FormatInt32(int,int,String,IFormatProvider):String ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 18, prolog size 0, PerfScore 6.55, (MethodHash=7a566e83) for method Int32:ToString(String,IFormatProvider):String:this ; ============================================================ ; Assembly listing for method Number:FormatInt32(int,int,String,IFormatProvider):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 4 ) int -> rsi ; V01 arg1 [V01,T03] ( 3, 2.50) int -> rdx ; V02 arg2 [V02,T01] ( 5, 3.75) ref -> r8 class-hnd ; V03 arg3 [V03,T02] ( 5, 3.50) ref -> r9 class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05,T05] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V06 tmp2 [V06,T04] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ; ; Lcl frame size = 32 G_M6894_IG01: push rsi sub rsp, 32 mov esi, ecx ;; bbWeight=1 PerfScore 1.50 G_M6894_IG02: test r8, r8 je SHORT G_M6894_IG04 ;; bbWeight=1 PerfScore 1.25 G_M6894_IG03: cmp dword ptr [r8+8], 0 ja SHORT G_M6894_IG10 ;; bbWeight=0.25 PerfScore 0.75 G_M6894_IG04: test esi, esi jge SHORT G_M6894_IG08 test r9, r9 je SHORT G_M6894_IG05 mov rcx, r9 call NumberFormatInfo:g__GetProviderNonNull|42_0(IFormatProvider):NumberFormatInfo jmp SHORT G_M6894_IG06 ;; bbWeight=0.50 PerfScore 2.88 G_M6894_IG05: call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo ;; bbWeight=0.50 PerfScore 0.50 G_M6894_IG06: mov r8, gword ptr [rax+40] mov ecx, esi mov edx, -1 ;; bbWeight=0.50 PerfScore 1.25 G_M6894_IG07: add rsp, 32 pop rsi jmp Number:NegativeInt32ToDecStr(int,int,String):String ;; bbWeight=0.50 PerfScore 1.38 G_M6894_IG08: mov ecx, esi ;; bbWeight=0.50 PerfScore 0.13 G_M6894_IG09: add rsp, 32 pop rsi jmp Number:UInt32ToDecStr(int):String ;; bbWeight=0.50 PerfScore 1.38 G_M6894_IG10: mov ecx, esi ;; bbWeight=0.50 PerfScore 0.13 G_M6894_IG11: add rsp, 32 pop rsi jmp Number:g__FormatInt32Slow|38_0(int,int,String,IFormatProvider):String ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 88, prolog size 7, PerfScore 21.30, (MethodHash=1b0ae511) for method Number:FormatInt32(int,int,String,IFormatProvider):String ; ============================================================ ; Assembly listing for method Number:UInt32ToDecStr(int):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 11, 20.50) int -> registers ; V01 loc0 [V01,T07] ( 4, 3 ) int -> rdi ; V02 loc1 [V02,T09] ( 4, 2 ) ref -> rcx class-hnd ;* V03 loc2 [V03 ] ( 0, 0 ) long -> zero-ref ; V04 loc3 [V04 ] ( 3, 1.50) byref -> [rsp+0x20] must-init pinned ; V05 loc4 [V05,T02] ( 4, 12.50) long -> r8 ; V06 loc5 [V06,T04] ( 2, 8 ) int -> rsi ld-addr-op ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T11] ( 3, 1.50) long -> rax ; V09 tmp2 [V09,T01] ( 2, 16 ) long -> r8 "dup spill" ; V10 tmp3 [V10,T06] ( 11, 4.25) int -> r8 "Inline stloc first use temp" ; V11 tmp4 [V11,T05] ( 7, 7 ) int -> rcx "Inlining Arg" ; V12 tmp5 [V12,T03] ( 3, 12 ) int -> rdx "Inline stloc first use temp" ; V13 tmp6 [V13,T08] ( 3, 3 ) ref -> rax "arr expr" ; V14 tmp7 [V14,T10] ( 2, 2 ) long -> rax "Cast away GC" ; V15 rat0 [V15,T12] ( 3, 1.50) int -> rdx "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 40 G_M18645_IG01: push rdi push rsi sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov esi, ecx ;; bbWeight=1 PerfScore 3.75 G_M18645_IG02: mov ecx, esi mov r8d, 1 cmp ecx, 0x186A0 jb SHORT G_M18645_IG04 ;; bbWeight=1 PerfScore 1.75 G_M18645_IG03: mov edx, 0xD1FFAB1E mov eax, esi mul edx:eax, edx mov ecx, esi sub ecx, edx shr ecx, 1 add ecx, edx shr ecx, 16 mov r8d, 6 ;; bbWeight=0.25 PerfScore 1.50 G_M18645_IG04: cmp ecx, 10 jb SHORT G_M18645_IG09 ;; bbWeight=0.50 PerfScore 0.63 G_M18645_IG05: cmp ecx, 100 jae SHORT G_M18645_IG06 inc r8d jmp SHORT G_M18645_IG09 ;; bbWeight=0.25 PerfScore 0.88 G_M18645_IG06: cmp ecx, 0x3E8 jae SHORT G_M18645_IG07 add r8d, 2 jmp SHORT G_M18645_IG09 ;; bbWeight=0.25 PerfScore 0.88 G_M18645_IG07: cmp ecx, 0x2710 jae SHORT G_M18645_IG08 add r8d, 3 jmp SHORT G_M18645_IG09 ;; bbWeight=0.25 PerfScore 0.88 G_M18645_IG08: add r8d, 4 ;; bbWeight=0.25 PerfScore 0.06 G_M18645_IG09: mov edi, r8d cmp edi, 1 jne SHORT G_M18645_IG12 ;; bbWeight=1 PerfScore 1.50 G_M18645_IG10: mov rcx, 0xD1FFAB1E mov edx, 358 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] cmp esi, dword ptr [rax+8] jae SHORT G_M18645_IG18 movsxd rcx, esi mov rax, gword ptr [rax+8*rcx+16] ;; bbWeight=0.50 PerfScore 4.50 G_M18645_IG11: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M18645_IG12: mov ecx, edi call String:FastAllocateString(int):String mov rcx, rax test rcx, rcx jne SHORT G_M18645_IG13 xor rax, rax jmp SHORT G_M18645_IG14 ;; bbWeight=0.50 PerfScore 2.50 G_M18645_IG13: lea rax, bword ptr [rcx+12] mov bword ptr [rsp+20H], rax mov rax, bword ptr [rsp+20H] ;; bbWeight=0.50 PerfScore 1.25 G_M18645_IG14: movsxd rdx, edi lea r8, [rax+2*rdx] ;; bbWeight=0.50 PerfScore 0.38 G_M18645_IG15: mov edx, 0xD1FFAB1E mov eax, esi mul edx:eax, edx shr edx, 3 lea eax, [rdx+4*rdx] add eax, eax sub esi, eax mov edi, edx add r8, -2 add esi, 48 mov word ptr [r8], si test edi, edi mov esi, edi jne SHORT G_M18645_IG15 ;; bbWeight=4 PerfScore 35.00 G_M18645_IG16: xor rax, rax mov bword ptr [rsp+20H], rax mov rax, rcx ;; bbWeight=0.50 PerfScore 0.75 G_M18645_IG17: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M18645_IG18: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 266, prolog size 15, PerfScore 85.04, (MethodHash=d694b72a) for method Number:UInt32ToDecStr(int):String ; ============================================================ ; Assembly listing for method Number:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "dup spill" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "dup spill" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd exact "dup spill" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init class-hnd exact "dup spill" ; V05 tmp5 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] must-init class-hnd exact "dup spill" ; V06 tmp6 [V06 ] ( 1, 1 ) ref -> [rbp-0x30] must-init class-hnd exact "dup spill" ; V07 tmp7 [V07 ] ( 1, 1 ) ref -> [rbp-0x38] must-init class-hnd exact "dup spill" ; V08 tmp8 [V08 ] ( 1, 1 ) struct ( 8) [rbp-0x40] do-not-enreg[SB] must-init "struct address for call/obj" ; V09 tmp9 [V09 ] ( 1, 1 ) ref -> [rbp-0x48] must-init class-hnd exact "dup spill" ; V10 tmp10 [V10 ] ( 1, 1 ) struct ( 8) [rbp-0x50] do-not-enreg[SB] must-init "struct address for call/obj" ; ; Lcl frame size = 112 G_M63781_IG01: push rbp sub rsp, 112 lea rbp, [rsp+70H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 vmovdqa xmmword ptr [rbp-40H], xmm4 vmovdqa xmmword ptr [rbp-30H], xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 7.08 G_M63781_IG02: mov rcx, 0xD1FFAB1E mov edx, 10 call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-08H], rax mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-08H] xor edx, edx call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-08H] mov edx, 1 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-08H] mov edx, 2 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-08H] mov edx, 3 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-08H] mov edx, 4 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-08H] mov edx, 5 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-08H] mov edx, 6 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-08H] mov edx, 7 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-08H] mov edx, 8 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-08H] mov edx, 9 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 50.00 G_M63781_IG03: mov edx, 4 call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-10H], rax mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-10H] xor edx, edx call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-10H] mov edx, 1 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-10H] mov edx, 2 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-10H] mov edx, 3 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 17 call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-18H], rax mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] xor edx, edx call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 1 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 2 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 3 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 4 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 5 ;; bbWeight=1 PerfScore 51.00 G_M63781_IG04: call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 6 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 7 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 8 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 9 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 10 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 11 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 12 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 13 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 14 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 15 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-18H] mov edx, 16 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-18H] ;; bbWeight=1 PerfScore 51.75 G_M63781_IG05: call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 4 call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-20H], rax mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-20H] xor edx, edx call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-20H] mov edx, 1 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-20H] mov edx, 2 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-20H] mov edx, 3 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-20H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 12 call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-28H], rax mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-28H] xor edx, edx call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-28H] mov edx, 1 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-28H] mov edx, 2 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-28H] mov edx, 3 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-28H] mov edx, 4 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E ;; bbWeight=1 PerfScore 49.00 G_M63781_IG06: mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-28H] mov edx, 5 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-28H] mov edx, 6 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-28H] mov edx, 7 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-28H] mov edx, 8 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-28H] mov edx, 9 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-28H] mov edx, 10 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-28H] mov edx, 11 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-28H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 5 call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-30H], rax mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-30H] xor edx, edx call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-30H] mov edx, 1 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-30H] mov edx, 2 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] ;; bbWeight=1 PerfScore 51.75 G_M63781_IG07: mov rcx, gword ptr [rbp-30H] mov edx, 3 call CORINFO_HELP_ARRADDR_ST mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rcx, gword ptr [rbp-30H] mov edx, 4 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-30H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 11 call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rbp-38H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_FIELDDESC_TO_STUBRUNTIMEFIELD mov gword ptr [rbp-40H], rax mov rcx, gword ptr [rbp-38H] mov rdx, gword ptr [rbp-40H] call RuntimeHelpers:InitializeArray(Array,RuntimeFieldHandle) mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-38H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 23 call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rbp-48H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_FIELDDESC_TO_STUBRUNTIMEFIELD mov gword ptr [rbp-50H], rax mov rcx, gword ptr [rbp-48H] mov rdx, gword ptr [rbp-50H] call RuntimeHelpers:InitializeArray(Array,RuntimeFieldHandle) mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-48H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 29.25 G_M63781_IG08: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 1840, prolog size 39, PerfScore 476.43, (MethodHash=067f06da) for method Number:.cctor() ; ============================================================ ; Assembly listing for method Job:get_ResolvedId():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4.50) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd exact "Inlining Arg" ; V03 tmp2 [V03,T03] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V04 tmp3 [V04,T04] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V05 tmp4 [V05,T01] ( 5, 3.74) ref -> registers class-hnd "spilling QMark2" ; ; Lcl frame size = 32 G_M35361_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M35361_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rsi call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax jne SHORT G_M35361_IG05 ;; bbWeight=1 PerfScore 4.75 G_M35361_IG03: mov rcx, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M35361_IG04: add rsp, 32 pop rsi jmp JobIdGenerator:GenerateRandomId(Job):String ;; bbWeight=0.50 PerfScore 1.38 G_M35361_IG05: mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rcx] cmp dword ptr [rdx], edx cmp dword ptr [rsi], esi mov rcx, rsi call CharacteristicObject:GetValue(Characteristic):Object:this mov r8, rax test r8, r8 je SHORT G_M35361_IG08 ;; bbWeight=0.50 PerfScore 4.50 G_M35361_IG06: mov rcx, 0xD1FFAB1E cmp qword ptr [r8], rcx je SHORT G_M35361_IG08 ;; bbWeight=0.25 PerfScore 0.81 G_M35361_IG07: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov r8, rax ;; bbWeight=0.12 PerfScore 0.18 G_M35361_IG08: mov rax, r8 ;; bbWeight=0.50 PerfScore 0.13 G_M35361_IG09: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 114, prolog size 5, PerfScore 25.64, (MethodHash=a93275de) for method Job:get_ResolvedId():String:this ; ============================================================ ; Assembly listing for method JobIdGenerator:GenerateRandomId(Job):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T05] ( 3, 3 ) ref -> rdx class-hnd ; V01 loc0 [V01,T07] ( 5, 3.50) ref -> rsi class-hnd ; V02 loc1 [V02,T06] ( 2, 4.50) ref -> rbp class-hnd exact ; V03 loc2 [V03,T02] ( 4, 9 ) ref -> rsi class-hnd ; V04 loc3 [V04,T00] ( 4, 12.50) int -> rdi ; V05 loc4 [V05,T04] ( 2, 8 ) ushort -> rbx ld-addr-op ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T08] ( 3, 3 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V08 tmp2 [V08,T11] ( 3, 1.50) long -> rdi "Inline stloc first use temp" ; V09 tmp3 [V09,T09] ( 2, 2 ) byref -> rbx "Inlining Arg" ;* V10 tmp4 [V10 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ; V11 tmp5 [V11,T03] ( 2, 8 ) ref -> rdx class-hnd "Inline return value spill temp" ; V12 tmp6 [V12,T01] ( 3, 12 ) ref -> rdx class-hnd "Inline stloc first use temp" ; V13 tmp7 [V13,T10] ( 2, 2 ) int -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M30989_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rdx, rcx ;; bbWeight=1 PerfScore 4.50 G_M30989_IG02: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rax, 0xD1FFAB1E call gword ptr [rax]DisplayPresenter:ToPresentation(CharacteristicObject):String:this mov rsi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rsi call String:Equals(String,String):bool test eax, eax je SHORT G_M30989_IG05 ;; bbWeight=1 PerfScore 10.50 G_M30989_IG03: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M30989_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M30989_IG05: cmp dword ptr [rsi], esi mov rcx, 0xD1FFAB1E mov edx, 341 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rdi, qword ptr [rcx] lea rbx, bword ptr [rsi+12] mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov edx, dword ptr [rsi+8] add edx, edx mov r9, rdi shr r9, 32 mov rcx, rbx mov r8d, edi call Marvin:ComputeHash32(byref,int,int,int):int mov edx, eax mov rcx, rbp call Random:.ctor(int):this mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] xor edi, edi ;; bbWeight=0.50 PerfScore 8.88 G_M30989_IG06: mov rcx, rbp mov edx, 26 mov rax, 0xD1FFAB1E call qword ptr [rax]Random:Next(int):int:this add eax, 65 movzx rbx, ax mov ecx, 1 call String:FastAllocateString(int):String mov rdx, rax mov word ptr [rdx+12], bx mov rcx, rsi call String:Concat(String,String):String mov rsi, rax inc edi cmp edi, 6 jl SHORT G_M30989_IG06 ;; bbWeight=4 PerfScore 39.00 G_M30989_IG07: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, rsi call String:Concat(String,String):String nop ;; bbWeight=0.50 PerfScore 1.88 G_M30989_IG08: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 283, prolog size 8, PerfScore 97.43, (MethodHash=d91986f2) for method JobIdGenerator:GenerateRandomId(Job):String ; ============================================================ ; Assembly listing for method Marvin:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M52201_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M52201_IG02: call Marvin:GenerateSeed():long mov rdx, 0xD1FFAB1E mov qword ptr [rdx], rax ;; bbWeight=1 PerfScore 2.25 G_M52201_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 34, prolog size 10, PerfScore 9.40, (MethodHash=f9a43416) for method Marvin:.cctor() ; ============================================================ ; Assembly listing for method Marvin:GenerateSeed():long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00 ] ( 2, 2 ) long -> [rsp+0x20] do-not-enreg[X] addr-exposed ld-addr-op ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M50626_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M50626_IG02: lea rcx, [rsp+20H] mov edx, 8 call Interop:GetRandomBytes(long,int) mov rax, qword ptr [rsp+20H] ;; bbWeight=1 PerfScore 2.75 G_M50626_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 29, prolog size 4, PerfScore 7.15, (MethodHash=05243a3d) for method Marvin:GenerateSeed():long ; ============================================================ ; Assembly listing for method Interop:GetRandomBytes(long,int) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) long -> rsi ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi ; V02 loc0 [V02,T03] ( 3, 2 ) int -> rax ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 FramesRoot [V06,T00] ( 6, 6 ) long -> rbx "Pinvoke FrameListRoot" ; V07 PInvokeFrame [V07 ] ( 8, 8 ) blk (72) [rbp-0x80] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 104 G_M5339_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 104 lea rbp, [rsp+A0H] mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 9.25 G_M5339_IG02: lea rcx, [rbp-78H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rbx, rax mov r8, rsp mov qword ptr [rbp-58H], r8 mov r8, rbp mov qword ptr [rbp-48H], r8 mov r8d, edi mov rdx, rsi xor rcx, rcx mov r9d, 2 mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M5339_IG05 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [rbx+16], rax mov byte ptr [rbx+12], 0 ;; bbWeight=1 PerfScore 11.25 G_M5339_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M5339_IG04: call qword ptr [rax]BCrypt:BCryptGenRandom(long,long,int,int):int ;; bbWeight=1 PerfScore 3.00 G_M5339_IG05: mov byte ptr [rbx+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M5339_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M5339_IG06: mov rcx, bword ptr [rbp-70H] mov qword ptr [rbx+16], rcx test eax, eax jne SHORT G_M5339_IG08 ;; bbWeight=1 PerfScore 3.25 G_M5339_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 G_M5339_IG08: cmp eax, 0xD1FFAB1E jne SHORT G_M5339_IG09 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call OutOfMemoryException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M5339_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call InvalidOperationException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 257, prolog size 24, PerfScore 65.70, (MethodHash=ba2eeb24) for method Interop:GetRandomBytes(long,int) ; ============================================================ ; Assembly listing for method Marvin:ComputeHash32(byref,int,int,int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T05] ( 10, 20 ) byref -> rcx ; V01 arg1 [V01,T09] ( 13, 8 ) int -> rdx ; V02 arg2 [V02,T00] ( 19, 40.50) int -> r8 ld-addr-op ; V03 arg3 [V03,T07] ( 7, 12 ) int -> r9 ld-addr-op ; V04 loc0 [V04,T08] ( 4, 12.50) int -> rax ; V05 loc1 [V05,T14] ( 16, 8.50) int -> r10 ; V06 loc2 [V06,T15] ( 2, 8 ) int -> r10 ;# V07 OutArgs [V07 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V09 tmp2 [V09,T06] ( 2, 16 ) int -> rax "dup spill" ;* V10 tmp3 [V10 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V14 tmp7 [V14 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V15 tmp8 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V16 tmp9 [V16,T03] ( 9, 36 ) int -> r8 "Inline stloc first use temp" ; V17 tmp10 [V17,T01] ( 10, 40 ) int -> r9 "Inline stloc first use temp" ; V18 tmp11 [V18,T04] ( 9, 36 ) int -> r8 "Inline stloc first use temp" ; V19 tmp12 [V19,T02] ( 10, 40 ) int -> r9 "Inline stloc first use temp" ;* V20 tmp13 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp14 [V21 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V22 tmp15 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V23 tmp16 [V23 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V24 tmp17 [V24,T17] ( 9, 4.50) int -> r8 "Inline stloc first use temp" ; V25 tmp18 [V25,T16] ( 10, 5 ) int -> r9 "Inline stloc first use temp" ;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V27 tmp20 [V27,T18] ( 2, 2 ) long -> rax ld-addr-op "Inlining Arg" ;* V28 tmp21 [V28 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V29 tmp22 [V29 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ;* V30 tmp23 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V31 tmp24 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V32 tmp25 [V32,T10] ( 10, 10 ) int -> r10 "Inline stloc first use temp" ; V33 tmp26 [V33,T11] ( 10, 10 ) int -> rax "Inline stloc first use temp" ; V34 tmp27 [V34,T13] ( 9, 9 ) int -> rdx "Inline stloc first use temp" ; V35 tmp28 [V35,T12] ( 10, 10 ) int -> rax "Inline stloc first use temp" ;* V36 tmp29 [V36 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V37 tmp30 [V37,T19] ( 2, 2 ) long -> r10 ld-addr-op "Inlining Arg" ;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V39 tmp32 [V39 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; ; Lcl frame size = 0 G_M49652_IG01: ;; bbWeight=1 PerfScore 0.00 G_M49652_IG02: cmp edx, 8 jae SHORT G_M49652_IG04 ;; bbWeight=1 PerfScore 1.25 G_M49652_IG03: cmp edx, 4 jb G_M49652_IG11 jmp SHORT G_M49652_IG07 ;; bbWeight=0.50 PerfScore 1.63 G_M49652_IG04: mov eax, edx shr eax, 3 ;; bbWeight=0.50 PerfScore 1.13 G_M49652_IG05: add r8d, dword ptr [rcx] mov r10d, dword ptr [rcx+4] xor r9d, r8d rol r8d, 20 add r8d, r9d rol r9d, 9 xor r9d, r8d rol r8d, 27 add r8d, r9d rol r9d, 19 add r8d, r10d xor r9d, r8d rol r8d, 20 add r8d, r9d rol r9d, 9 xor r9d, r8d rol r8d, 27 add r8d, r9d rol r9d, 19 add rcx, 8 dec eax jne SHORT G_M49652_IG05 ;; bbWeight=4 PerfScore 95.00 G_M49652_IG06: test dl, 4 je SHORT G_M49652_IG08 ;; bbWeight=0.50 PerfScore 0.63 G_M49652_IG07: add r8d, dword ptr [rcx] xor r9d, r8d rol r8d, 20 add r8d, r9d rol r9d, 9 xor r9d, r8d rol r8d, 27 add r8d, r9d rol r9d, 19 ;; bbWeight=0.50 PerfScore 5.50 G_M49652_IG08: mov eax, edx and rax, 7 mov r10d, dword ptr [rcx+rax-4] not edx shl edx, 3 shr r10d, 8 or r10d, 0xD1FFAB1E mov ecx, edx shr r10d, cl ;; bbWeight=0.50 PerfScore 4.63 G_M49652_IG09: add r8d, r10d mov eax, r9d xor eax, r8d mov r10d, r8d rol r10d, 20 add r10d, eax rol eax, 9 xor eax, r10d rol r10d, 27 add r10d, eax rol eax, 19 xor eax, r10d mov edx, r10d rol edx, 20 add edx, eax rol eax, 9 xor eax, edx rol edx, 27 add edx, eax rol eax, 19 xor eax, edx ;; bbWeight=1 PerfScore 19.25 G_M49652_IG10: ret ;; bbWeight=1 PerfScore 1.00 G_M49652_IG11: mov r10d, 128 test dl, 1 je SHORT G_M49652_IG12 mov r10d, edx and r10, 2 movzx r10, byte ptr [rcx+r10] or r10d, 0x8000 ;; bbWeight=0.50 PerfScore 2.13 G_M49652_IG12: test dl, 2 je SHORT G_M49652_IG09 shl r10d, 16 movzx rax, word ptr [rcx] or r10d, eax jmp SHORT G_M49652_IG09 ;; bbWeight=0.50 PerfScore 3.75 ; Total bytes of code 272, prolog size 0, PerfScore 163.08, (MethodHash=4a583e0b) for method Marvin:ComputeHash32(byref,int,int,int):int ; ============================================================ ; Assembly listing for method Random:.ctor(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T21] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T23] ( 4, 3.50) int -> rdi ; V02 loc0 [V02,T12] ( 9, 29 ) int -> rax ; V03 loc1 [V03,T20] ( 4, 10 ) int -> rdx ; V04 loc2 [V04,T13] ( 7, 21 ) int -> r8 ;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref ; V06 loc4 [V06,T18] ( 4, 13 ) int -> r10 ; V07 loc5 [V07,T19] ( 4, 13 ) int -> rax ; V08 loc6 [V08,T00] ( 7,100 ) int -> rdx ; V09 loc7 [V09,T03] ( 5, 64 ) int -> r8 ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T25] ( 3, 2 ) int -> rdi ; V12 tmp2 [V12,T16] ( 2, 16 ) int -> rax "dup spill" ; V13 tmp3 [V13,T01] ( 3, 96 ) byref -> rdi "dup spill" ; V14 tmp4 [V14,T07] ( 3, 48 ) byref -> r10 "dup spill" ; V15 tmp5 [V15,T24] ( 6, 4.50) int -> rdi "Inlining Arg" ; V16 tmp6 [V16,T22] ( 3, 6 ) ref -> r8 "arr expr" ; V17 tmp7 [V17,T14] ( 2, 16 ) ref -> r11 "arr expr" ; V18 tmp8 [V18,T15] ( 2, 16 ) ref -> rdx "arr expr" ; V19 tmp9 [V19,T04] ( 2, 64 ) ref -> r10 "arr expr" ; V20 tmp10 [V20,T05] ( 2, 64 ) ref -> rbx "arr expr" ; V21 tmp11 [V21,T06] ( 2, 64 ) ref -> r8 "arr expr" ;* V22 tmp12 [V22,T17] ( 0, 0 ) ref -> zero-ref "arr expr" ; V23 cse0 [V23,T10] ( 3, 40 ) byref -> r10 "CSE - aggressive" ; V24 cse1 [V24,T02] ( 7, 58 ) ref -> rcx "CSE - aggressive" ; V25 cse2 [V25,T11] ( 5, 38 ) int -> r9 "CSE - aggressive" ; V26 cse3 [V26,T08] ( 3, 48 ) int -> r8 "CSE - aggressive" ; V27 cse4 [V27,T09] ( 3, 48 ) long -> r11 "CSE - aggressive" ; ; Lcl frame size = 32 G_M64433_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M64433_IG02: mov rcx, 0xD1FFAB1E mov edx, 56 call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF xor eax, eax cmp edi, 0xD1FFAB1E je SHORT G_M64433_IG06 ;; bbWeight=1 PerfScore 4.75 G_M64433_IG03: test edi, edi jge SHORT G_M64433_IG05 ;; bbWeight=0.50 PerfScore 0.63 G_M64433_IG04: neg edi test edi, edi jl G_M64433_IG23 ;; bbWeight=0.25 PerfScore 0.38 G_M64433_IG05: jmp SHORT G_M64433_IG07 ;; bbWeight=0.50 PerfScore 1.00 G_M64433_IG06: mov edi, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M64433_IG07: mov edx, edi neg edx add edx, 0xD1FFAB1E mov rcx, gword ptr [rsi+8] mov r8, rcx mov r9d, dword ptr [r8+8] cmp r9d, 55 jbe G_M64433_IG24 mov dword ptr [r8+236], edx mov r8d, 1 mov r10d, 1 ;; bbWeight=1 PerfScore 7.75 G_M64433_IG08: add eax, 21 cmp eax, 55 jl SHORT G_M64433_IG10 ;; bbWeight=4 PerfScore 6.00 G_M64433_IG09: add eax, -55 ;; bbWeight=2 PerfScore 0.50 G_M64433_IG10: mov r11, rcx cmp eax, r9d jae G_M64433_IG24 movsxd rdi, eax mov dword ptr [r11+4*rdi+16], r8d sub edx, r8d mov r8d, edx test r8d, r8d jge SHORT G_M64433_IG12 ;; bbWeight=4 PerfScore 18.00 G_M64433_IG11: add r8d, 0xD1FFAB1E ;; bbWeight=2 PerfScore 0.50 G_M64433_IG12: mov rdx, rcx movsxd r11, eax mov edx, dword ptr [rdx+4*r11+16] inc r10d cmp r10d, 55 jl SHORT G_M64433_IG08 ;; bbWeight=4 PerfScore 16.00 G_M64433_IG13: mov eax, 1 ;; bbWeight=1 PerfScore 0.25 G_M64433_IG14: mov edx, 1 ;; bbWeight=4 PerfScore 1.00 G_M64433_IG15: lea r8d, [rdx+30] cmp r8d, 55 jl SHORT G_M64433_IG17 ;; bbWeight=16 PerfScore 28.00 G_M64433_IG16: add r8d, -55 ;; bbWeight=8 PerfScore 2.00 G_M64433_IG17: mov r10, rcx cmp edx, r9d jae SHORT G_M64433_IG24 movsxd r11, edx lea r10, bword ptr [r10+4*r11+16] mov rdi, r10 mov rbx, rcx inc r8d cmp r8d, r9d jae SHORT G_M64433_IG24 movsxd r8, r8d mov r8d, dword ptr [rbx+4*r8+16] sub dword ptr [rdi], r8d mov r8, rcx cmp dword ptr [r8+4*r11+16], 0 jge SHORT G_M64433_IG19 ;; bbWeight=16 PerfScore 244.00 G_M64433_IG18: add dword ptr [r10], 0xD1FFAB1E ;; bbWeight=8 PerfScore 40.00 G_M64433_IG19: inc edx cmp edx, 56 jl SHORT G_M64433_IG15 ;; bbWeight=16 PerfScore 24.00 G_M64433_IG20: inc eax cmp eax, 5 jl SHORT G_M64433_IG14 ;; bbWeight=4 PerfScore 6.00 G_M64433_IG21: mov dword ptr [rsi+20], 21 ;; bbWeight=1 PerfScore 1.00 G_M64433_IG22: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M64433_IG23: call Math:ThrowAbsOverflow() int3 ;; bbWeight=0 PerfScore 0.00 G_M64433_IG24: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 318, prolog size 12, PerfScore 440.18, (MethodHash=9508044e) for method Random:.ctor(int):this ; ============================================================ ; Assembly listing for method Random:Next(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) int -> rsi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 2, 0 ) ref -> rcx "argument with side effect" ; V05 tmp3 [V05,T04] ( 2, 0 ) ref -> rbx "argument with side effect" ; V06 tmp4 [V06,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; V07 tmp5 [V07,T06] ( 2, 0 ) ref -> rdi "argument with side effect" ; V08 tmp6 [V08,T07] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 32 G_M10843_IG01: push rdi push rsi push rbx sub rsp, 32 vzeroupper mov esi, edx ;; bbWeight=1 PerfScore 4.50 G_M10843_IG02: test esi, esi jl SHORT G_M10843_IG05 ;; bbWeight=1 PerfScore 1.25 G_M10843_IG03: mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+32]Random:Sample():double:this vxorps xmm1, xmm1 vcvtsi2sd xmm1, esi vmulsd xmm0, xmm0, xmm1 vcvttsd2si eax, xmm0 ;; bbWeight=1 PerfScore 20.33 G_M10843_IG04: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M10843_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x2F9C mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA041 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov ecx, 0x2F9C mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rbx call SR:Format(String,Object):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 178, prolog size 10, PerfScore 47.03, (MethodHash=dfa7d5a4) for method Random:Next(int):int:this ; ============================================================ ; Assembly listing for method Random:Sample():double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M35663_IG01: sub rsp, 40 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M35663_IG02: call Random:InternalSample():int:this vxorps xmm0, xmm0 vcvtsi2sd xmm0, eax vmulsd xmm0, xmm0, qword ptr [reloc @RWD08] ;; bbWeight=1 PerfScore 11.33 G_M35663_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 RWD00 dq 0000000000000000h RWD08 dq 3E00000000200000h ; Total bytes of code 33, prolog size 7, PerfScore 17.43, (MethodHash=353c74b0) for method Random:Sample():double:this ; ============================================================ ; Assembly listing for method Random:InternalSample():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) ref -> rcx this class-hnd ; V01 loc0 [V01,T03] ( 8, 6.50) int -> r9 ; V02 loc1 [V02,T01] ( 8, 7.50) int -> rax ; V03 loc2 [V03,T02] ( 8, 7.50) int -> rdx ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T08] ( 2, 4 ) int -> rax "dup spill" ; V06 tmp2 [V06,T09] ( 2, 4 ) int -> rdx "dup spill" ; V07 tmp3 [V07,T04] ( 3, 6 ) ref -> r9 "arr expr" ; V08 tmp4 [V08,T06] ( 2, 4 ) ref -> rsi "arr expr" ; V09 tmp5 [V09,T07] ( 2, 4 ) ref -> r8 "arr expr" ; V10 cse0 [V10,T05] ( 4, 4 ) ref -> r8 "CSE - aggressive" ; V11 cse1 [V11,T10] ( 3, 3 ) int -> r10 "CSE - aggressive" ; V12 cse2 [V12,T11] ( 3, 3 ) long -> r11 "CSE - aggressive" ; ; Lcl frame size = 32 G_M4910_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M4910_IG02: mov eax, dword ptr [rcx+16] mov edx, dword ptr [rcx+20] inc eax cmp eax, 56 jl SHORT G_M4910_IG04 ;; bbWeight=1 PerfScore 5.50 G_M4910_IG03: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M4910_IG04: inc edx cmp edx, 56 jl SHORT G_M4910_IG06 ;; bbWeight=1 PerfScore 1.50 G_M4910_IG05: mov edx, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M4910_IG06: mov r8, gword ptr [rcx+8] mov r9, r8 mov r10d, dword ptr [r9+8] cmp eax, r10d jae SHORT G_M4910_IG12 movsxd r11, eax mov r9d, dword ptr [r9+4*r11+16] mov rsi, r8 cmp edx, r10d jae SHORT G_M4910_IG12 movsxd r10, edx sub r9d, dword ptr [rsi+4*r10+16] cmp r9d, 0xD1FFAB1E jne SHORT G_M4910_IG08 ;; bbWeight=1 PerfScore 12.75 G_M4910_IG07: mov r9d, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M4910_IG08: test r9d, r9d jge SHORT G_M4910_IG10 ;; bbWeight=1 PerfScore 1.25 G_M4910_IG09: add r9d, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M4910_IG10: mov dword ptr [r8+4*r11+16], r9d mov dword ptr [rcx+16], eax mov dword ptr [rcx+20], edx mov eax, r9d ;; bbWeight=1 PerfScore 3.25 G_M4910_IG11: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M4910_IG12: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 128, prolog size 5, PerfScore 40.55, (MethodHash=430fecd1) for method Random:InternalSample():int:this ; ============================================================ // Job: Job-OBZCKV(PowerPlanMode=00000000-0000-0000-0000-000000000000, IterationTime=250.0000 ms, MaxIterationCount=20, MinIterationCount=15, WarmupCount=1) ; Assembly listing for method ValidationErrorReporter:ReportIfAny(IEnumerable`1,IHost):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 3, 6 ) ref -> rsi class-hnd ; V02 loc0 [V02,T03] ( 3, 6 ) bool -> rdi ; V03 loc1 [V03,T00] ( 7, 11 ) ref -> [rbp-0x18] EH do-not-enreg[] class-hnd EH-live ; V04 loc2 [V04,T02] ( 2, 8 ) ref -> rax class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 PSPSym [V06 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 48 G_M6235_IG01: push rbp push rdi push rsi sub rsp, 48 lea rbp, [rsp+40H] mov qword ptr [rbp-20H], rsp mov rsi, rdx ;; bbWeight=1 PerfScore 5.00 G_M6235_IG02: xor edi, edi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-18H], rax ;; bbWeight=1 PerfScore 4.75 G_M6235_IG03: mov rcx, gword ptr [rbp-18H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M6235_IG05 ;; bbWeight=1 PerfScore 5.75 G_M6235_IG04: mov rcx, gword ptr [rbp-18H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerator`1:get_Current():__Canon:this mov rdx, gword ptr [rax+8] mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IHost:SendError(String):this mov edi, 1 mov rcx, gword ptr [rbp-18H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M6235_IG04 ;; bbWeight=4 PerfScore 65.00 G_M6235_IG05: mov rcx, gword ptr [rbp-18H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this mov eax, edi ;; bbWeight=1 PerfScore 4.75 G_M6235_IG06: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 G_M6235_IG07: push rbp push rdi push rsi sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+40H] ;; bbWeight=0 PerfScore 0.00 G_M6235_IG08: cmp gword ptr [rbp-18H], 0 je SHORT G_M6235_IG09 mov rcx, gword ptr [rbp-18H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M6235_IG09: nop ;; bbWeight=0 PerfScore 0.00 G_M6235_IG10: add rsp, 48 pop rsi pop rdi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 265, prolog size 19, PerfScore 114.75, (MethodHash=7ed2e7a4) for method ValidationErrorReporter:ReportIfAny(IEnumerable`1,IHost):bool ; ============================================================ ; Assembly listing for method d__50:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5.50) ref -> rsi this class-hnd ; V01 loc0 [V01,T02] ( 4, 3 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 4, 4 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T05] ( 2, 2 ) int -> rdi "impAppendStmt" ; V05 tmp3 [V05,T03] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V06 tmp4 [V06,T06] ( 4, 1.75) ref -> rcx ; V07 tmp5 [V07,T04] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V08 tmp6 [V08,T07] ( 4, 1.75) ref -> rcx ; ; Lcl frame size = 40 G_M2225_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M2225_IG02: cmp dword ptr [rsi+32], -2 jne SHORT G_M2225_IG06 ;; bbWeight=1 PerfScore 3.00 G_M2225_IG03: mov edi, dword ptr [rsi+36] mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M2225_IG05 ;; bbWeight=0.50 PerfScore 3.38 G_M2225_IG04: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M2225_IG05: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this cmp eax, edi jne SHORT G_M2225_IG06 xor ecx, ecx mov dword ptr [rsi+32], ecx mov rdi, rsi jmp SHORT G_M2225_IG09 ;; bbWeight=0.50 PerfScore 3.88 G_M2225_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax xor ecx, ecx mov dword ptr [rdi+32], ecx mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M2225_IG08 ;; bbWeight=0.50 PerfScore 3.75 G_M2225_IG07: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M2225_IG08: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rdi+36], eax ;; bbWeight=0.50 PerfScore 2.00 G_M2225_IG09: mov rdx, gword ptr [rsi+24] lea rcx, bword ptr [rdi+16] call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=1 PerfScore 3.75 G_M2225_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 169, prolog size 6, PerfScore 42.03, (MethodHash=3897f74e) for method d__50:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method d__50:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 12, 7.50) ref -> rsi this class-hnd ; V01 loc0 [V01,T14] ( 3, 3 ) int -> rcx ; V02 loc1 [V02,T19] ( 3, 1.50) ref -> rdi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 5, 5 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T02] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp3 [V06,T08] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ; V07 tmp4 [V07,T09] ( 3, 3 ) ref -> rdx class-hnd exact "Inlining Arg" ; V08 tmp5 [V08,T15] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V09 tmp6 [V09,T21] ( 3, 1.24) long -> rdx "fgInsertCommaFormTemp is creating a new local variable" ; V10 tmp7 [V10,T04] ( 6, 4.74) ref -> rcx class-hnd "spilling QMark2" ; V11 tmp8 [V11,T10] ( 3, 3 ) ref -> rdx class-hnd exact "Inlining Arg" ; V12 tmp9 [V12,T06] ( 4, 3.50) ref -> rdi "inline UNBOX clone1" ; V13 tmp10 [V13,T11] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ; V14 tmp11 [V14,T12] ( 3, 3 ) ref -> rdx class-hnd exact "Inlining Arg" ; V15 tmp12 [V15,T16] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V16 tmp13 [V16,T22] ( 3, 1.24) long -> rdx "fgInsertCommaFormTemp is creating a new local variable" ; V17 tmp14 [V17,T05] ( 6, 4.74) ref -> rcx class-hnd "spilling QMark2" ; V18 tmp15 [V18,T13] ( 3, 3 ) ref -> rdx class-hnd exact "Inlining Arg" ; V19 tmp16 [V19,T07] ( 4, 3.50) ref -> rbx "inline UNBOX clone1" ;* V20 tmp17 [V20 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ; V21 tmp18 [V21,T17] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ; V22 tmp19 [V22,T23] ( 2, 1 ) ref -> rdi V20._arg0(offs=0x00) P-INDEP "field V20._arg0 (fldOffset=0x0)" ;* V23 tmp20 [V23,T25] ( 0, 0 ) ref -> zero-ref V20._arg1(offs=0x08) P-INDEP "field V20._arg1 (fldOffset=0x8)" ; V24 tmp21 [V24,T20] ( 3, 1.50) ref -> rbx V20._arg2(offs=0x10) P-INDEP "field V20._arg2 (fldOffset=0x10)" ; V25 tmp22 [V25,T24] ( 2, 1 ) ref -> rbp V20._args(offs=0x18) P-INDEP "field V20._args (fldOffset=0x18)" ; V26 tmp23 [V26 ] ( 2, 2 ) struct (32) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V27 tmp24 [V27,T03] ( 5, 5 ) byref -> r8 stack-byref "BlockOp address local" ; V28 tmp25 [V28,T18] ( 2, 2 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 64 G_M21082_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 64 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 mov rsi, rcx ;; bbWeight=1 PerfScore 7.83 G_M21082_IG02: mov ecx, dword ptr [rsi+32] cmp ecx, 2 ja SHORT G_M21082_IG03 mov ecx, ecx lea rdx, [reloc @RWD00] mov edx, dword ptr [rdx+4*rcx] lea rax, G_M21082_IG02 add rdx, rax jmp rdx ;; bbWeight=1 PerfScore 9.25 G_M21082_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M21082_IG04: add rsp, 64 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M21082_IG05: mov dword ptr [rsi+32], -1 mov rcx, gword ptr [rsi+16] cmp dword ptr [rcx], ecx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] cmp dword ptr [rdx], edx call CharacteristicObject:GetValue(Characteristic):Object:this mov rcx, rax test rcx, rcx je SHORT G_M21082_IG08 ;; bbWeight=0.50 PerfScore 5.88 G_M21082_IG06: mov rdx, 0xD1FFAB1E cmp qword ptr [rcx], rdx je SHORT G_M21082_IG08 ;; bbWeight=0.25 PerfScore 0.81 G_M21082_IG07: mov rcx, rdx mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rcx, rax ;; bbWeight=0.12 PerfScore 0.21 G_M21082_IG08: cmp dword ptr [rcx], ecx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] cmp dword ptr [rdx], edx call CharacteristicObject:GetValue(Characteristic):Object:this mov rdi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rdi], rdx je SHORT G_M21082_IG10 ;; bbWeight=0.50 PerfScore 5.38 G_M21082_IG09: mov rdx, rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M21082_IG10: cmp dword ptr [rdi+8], 2 jne SHORT G_M21082_IG13 call RuntimeInformation:HasRyuJit():bool test eax, eax jne SHORT G_M21082_IG13 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov byte ptr [rdi+24], 1 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF xor rdx, rdx mov gword ptr [rdi+16], rdx lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+32], 1 mov eax, 1 ;; bbWeight=0.50 PerfScore 7.88 G_M21082_IG11: add rsp, 64 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M21082_IG12: mov dword ptr [rsi+32], -1 ;; bbWeight=0.50 PerfScore 0.50 G_M21082_IG13: call RuntimeInformation:GetCurrentRuntime():Runtime mov rdi, rax mov rcx, gword ptr [rsi+16] cmp dword ptr [rcx], ecx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] cmp dword ptr [rdx], edx call CharacteristicObject:GetValue(Characteristic):Object:this mov rcx, rax test rcx, rcx je SHORT G_M21082_IG16 ;; bbWeight=0.50 PerfScore 6.00 G_M21082_IG14: mov rdx, 0xD1FFAB1E cmp qword ptr [rcx], rdx je SHORT G_M21082_IG16 ;; bbWeight=0.25 PerfScore 0.81 G_M21082_IG15: mov rcx, rdx mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rcx, rax ;; bbWeight=0.12 PerfScore 0.21 G_M21082_IG16: cmp dword ptr [rcx], ecx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] cmp dword ptr [rdx], edx call CharacteristicObject:GetValue(Characteristic):Object:this mov rbx, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rbx], rdx je SHORT G_M21082_IG18 ;; bbWeight=0.50 PerfScore 5.38 G_M21082_IG17: mov rdx, rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M21082_IG18: cmp dword ptr [rbx+8], 1 jne G_M21082_IG21 mov rdx, rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax jne G_M21082_IG21 xor rbx, rbx mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov r8, 0xD1FFAB1E mov rdx, gword ptr [r8] lea r8, bword ptr [rsp+20H] mov gword ptr [r8], rdi mov gword ptr [r8+8], rbx mov gword ptr [r8+16], rbx mov gword ptr [r8+24], rbp lea r8, bword ptr [rsp+20H] xor rcx, rcx call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov byte ptr [r14+24], 1 lea rcx, bword ptr [r14+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF xor rdx, rdx mov gword ptr [r14+16], rdx lea rcx, bword ptr [rsi+8] mov rdx, r14 call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+32], 2 mov eax, 1 ;; bbWeight=0.50 PerfScore 12.63 G_M21082_IG19: add rsp, 64 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M21082_IG20: mov dword ptr [rsi+32], -1 ;; bbWeight=0.50 PerfScore 0.50 G_M21082_IG21: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M21082_IG22: add rsp, 64 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 RWD00 dd G_M21082_IG05 - G_M21082_IG02 dd G_M21082_IG12 - G_M21082_IG02 dd G_M21082_IG20 - G_M21082_IG02 ; Total bytes of code 631, prolog size 26, PerfScore 135.15, (MethodHash=eb33ada5) for method d__50:MoveNext():bool:this ; ============================================================ ; Assembly listing for method Characteristic`1:ResolveValueCore(CharacteristicObject,Object):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 5, 3.50) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 4, 3 ) ref -> r8 class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T09] ( 2, 2 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T03] ( 4, 3.50) ref -> rbx "inline UNBOX clone1" ; V06 tmp3 [V06,T05] ( 3, 3 ) ref -> rbp class-hnd exact "Single-def Box Helper" ; V07 tmp4 [V07,T04] ( 4, 3.50) ref -> rdi "inline UNBOX clone1" ; V08 tmp5 [V08,T06] ( 3, 3 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V09 cse0 [V09,T08] ( 3, 2.50) ref -> rdi "CSE - aggressive" ; V10 rat0 [V10,T07] ( 3, 3 ) ref -> rdi "delegate invoke call" ; ; Lcl frame size = 40 G_M41771_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rdx ;; bbWeight=1 PerfScore 4.50 G_M41771_IG02: mov rdi, gword ptr [rcx+48] test rdi, rdi jne SHORT G_M41771_IG07 ;; bbWeight=1 PerfScore 3.25 G_M41771_IG03: mov rdx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rdi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rdi], rdx je SHORT G_M41771_IG05 ;; bbWeight=0.50 PerfScore 3.50 G_M41771_IG04: mov rdx, rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41771_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov ecx, dword ptr [rdi+8] mov dword ptr [rax+8], ecx ;; bbWeight=0.50 PerfScore 2.13 G_M41771_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M41771_IG07: mov rdx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rbx, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rbx], rdx je SHORT G_M41771_IG09 ;; bbWeight=0.50 PerfScore 3.50 G_M41771_IG08: mov rdx, rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41771_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov r8d, dword ptr [rbx+8] mov rcx, gword ptr [rdi+8] mov rdx, rsi call qword ptr [rdi+24]Func`3:Invoke(__Canon,int):int:this mov dword ptr [rbp+8], eax mov rax, rbp ;; bbWeight=0.50 PerfScore 5.00 G_M41771_IG10: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 199, prolog size 8, PerfScore 45.78, (MethodHash=f6005cd4) for method Characteristic`1:ResolveValueCore(CharacteristicObject,Object):Object:this ; ============================================================ ; Assembly listing for method RuntimeInformation:GetCurrentRuntime():Runtime ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02,T01] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M24116_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M24116_IG02: call RuntimeInformation:get_IsFullFramework():bool test eax, eax je SHORT G_M24116_IG04 ;; bbWeight=1 PerfScore 2.25 G_M24116_IG03: add rsp, 32 pop rsi jmp ClrRuntime:GetCurrentVersion():ClrRuntime ;; bbWeight=0.50 PerfScore 1.38 G_M24116_IG04: call RuntimeInformation:get_IsNetCore():bool test eax, eax je SHORT G_M24116_IG06 ;; bbWeight=0.50 PerfScore 1.13 G_M24116_IG05: add rsp, 32 pop rsi jmp CoreRuntime:GetCurrentVersion():CoreRuntime ;; bbWeight=0.50 PerfScore 1.38 G_M24116_IG06: call RuntimeInformation:get_IsCoreRT():bool test eax, eax je SHORT G_M24116_IG08 ;; bbWeight=0.50 PerfScore 1.13 G_M24116_IG07: add rsp, 32 pop rsi jmp CoreRtRuntime:GetCurrentVersion():CoreRtRuntime ;; bbWeight=0.50 PerfScore 1.38 G_M24116_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x9159 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call NotSupportedException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 120, prolog size 5, PerfScore 21.88, (MethodHash=8269a1cb) for method RuntimeInformation:GetCurrentRuntime():Runtime ; ============================================================ ; Assembly listing for method CoreRuntime:GetCurrentVersion():CoreRuntime ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00 ] ( 2, 2 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T01] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp3 [V04,T02] ( 2, 0 ) ref -> rdx "argument with side effect" ; V05 tmp4 [V05,T03] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 48 G_M13534_IG01: push rsi sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax ;; bbWeight=1 PerfScore 2.50 G_M13534_IG02: call RuntimeInformation:get_IsNetCore():bool test eax, eax je SHORT G_M13534_IG06 ;; bbWeight=1 PerfScore 2.25 G_M13534_IG03: lea rcx, [rsp+28H] call CoreRuntime:TryGetVersion(byref):bool test eax, eax je SHORT G_M13534_IG07 ;; bbWeight=1 PerfScore 2.75 G_M13534_IG04: mov rcx, gword ptr [rsp+28H] call CoreRuntime:FromVersion(Version):CoreRuntime nop ;; bbWeight=1 PerfScore 2.25 G_M13534_IG05: add rsp, 48 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M13534_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xECB7 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call NotSupportedException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M13534_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xED86 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call NotSupportedException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 167, prolog size 12, PerfScore 28.20, (MethodHash=faa8cb21) for method CoreRuntime:GetCurrentVersion():CoreRuntime ; ============================================================ ; Assembly listing for method CoreRuntime:FromVersion(Version):CoreRuntime ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 14, 8.50) ref -> rsi class-hnd ; V01 loc0 [V01,T14] ( 2, 1 ) ref -> rcx class-hnd ;* V02 loc1 [V02,T23] ( 0, 0 ) ref -> zero-ref class-hnd ;* V03 loc2 [V03,T24] ( 0, 0 ) ref -> zero-ref class-hnd ;* V04 loc3 [V04,T25] ( 0, 0 ) ref -> zero-ref class-hnd ;* V05 loc4 [V05,T26] ( 0, 0 ) ref -> zero-ref class-hnd ;* V06 loc5 [V06,T27] ( 0, 0 ) ref -> zero-ref class-hnd ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T05] ( 3, 3 ) ref -> rbx class-hnd exact "Single-def Box Helper" ; V09 tmp2 [V09,T06] ( 3, 3 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V10 tmp3 [V10,T09] ( 2, 2 ) ref -> rdi class-hnd "impAppendStmt" ; V11 tmp4 [V11,T07] ( 3, 3 ) ref -> rbx class-hnd exact "Single-def Box Helper" ; V12 tmp5 [V12,T08] ( 3, 3 ) ref -> rax class-hnd exact "Single-def Box Helper" ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ;* V21 tmp14 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V22 tmp15 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V23 tmp16 [V23,T01] ( 8, 9 ) ref -> rax "Single return block return value" ; V24 tmp17 [V24,T15] ( 2, 1 ) ref -> rbx V15._arg0(offs=0x00) P-INDEP "field V15._arg0 (fldOffset=0x0)" ; V25 tmp18 [V25,T16] ( 2, 1 ) ref -> rax V15._arg1(offs=0x08) P-INDEP "field V15._arg1 (fldOffset=0x8)" ; V26 tmp19 [V26,T17] ( 2, 1 ) ref -> r8 V15._arg2(offs=0x10) P-INDEP "field V15._arg2 (fldOffset=0x10)" ; V27 tmp20 [V27,T18] ( 2, 1 ) ref -> rdx V15._args(offs=0x18) P-INDEP "field V15._args (fldOffset=0x18)" ; V28 tmp21 [V28,T19] ( 2, 1 ) ref -> rbx V20._arg0(offs=0x00) P-INDEP "field V20._arg0 (fldOffset=0x0)" ; V29 tmp22 [V29,T20] ( 2, 1 ) ref -> rax V20._arg1(offs=0x08) P-INDEP "field V20._arg1 (fldOffset=0x8)" ; V30 tmp23 [V30,T21] ( 2, 1 ) ref -> r8 V20._arg2(offs=0x10) P-INDEP "field V20._arg2 (fldOffset=0x10)" ; V31 tmp24 [V31,T22] ( 2, 1 ) ref -> rdx V20._args(offs=0x18) P-INDEP "field V20._args (fldOffset=0x18)" ; V32 tmp25 [V32 ] ( 4, 4 ) struct (32) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V33 tmp26 [V33,T02] ( 5, 5 ) byref -> r9 stack-byref "BlockOp address local" ; V34 tmp27 [V34,T10] ( 2, 2 ) ref -> rcx "argument with side effect" ; V35 tmp28 [V35,T03] ( 5, 5 ) byref -> r9 stack-byref "BlockOp address local" ; V36 tmp29 [V36,T11] ( 2, 2 ) ref -> rcx "argument with side effect" ; V37 tmp30 [V37,T12] ( 2, 2 ) ref -> rdx "argument with side effect" ; V38 tmp31 [V38,T13] ( 2, 2 ) ref -> rdi "argument with side effect" ; V39 cse0 [V39,T04] ( 9, 4.50) int -> rdi "CSE - aggressive" ; ; Lcl frame size = 64 G_M39181_IG01: push rdi push rsi push rbx sub rsp, 64 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 mov rsi, rcx ;; bbWeight=1 PerfScore 5.83 G_M39181_IG02: test rsi, rsi je G_M39181_IG09 ;; bbWeight=1 PerfScore 1.25 G_M39181_IG03: mov rcx, rsi mov edi, dword ptr [rcx+8] cmp edi, 2 jne SHORT G_M39181_IG04 cmp dword ptr [rsi+12], 0 jne SHORT G_M39181_IG04 mov rcx, 0xD1FFAB1E mov edx, 368 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp G_M39181_IG10 ;; bbWeight=0.50 PerfScore 6.13 G_M39181_IG04: cmp edi, 2 jne SHORT G_M39181_IG05 cmp dword ptr [rsi+12], 1 jne SHORT G_M39181_IG05 mov rcx, 0xD1FFAB1E mov edx, 368 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp G_M39181_IG10 ;; bbWeight=0.50 PerfScore 5.00 G_M39181_IG05: cmp edi, 2 jne SHORT G_M39181_IG06 cmp dword ptr [rsi+12], 2 jne SHORT G_M39181_IG06 mov rcx, 0xD1FFAB1E mov edx, 368 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp G_M39181_IG10 ;; bbWeight=0.50 PerfScore 5.00 G_M39181_IG06: cmp edi, 3 jne SHORT G_M39181_IG07 cmp dword ptr [rsi+12], 0 jne SHORT G_M39181_IG07 mov rcx, 0xD1FFAB1E mov edx, 368 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp G_M39181_IG10 ;; bbWeight=0.50 PerfScore 5.00 G_M39181_IG07: cmp edi, 3 jne SHORT G_M39181_IG08 cmp dword ptr [rsi+12], 1 jne SHORT G_M39181_IG08 mov rcx, 0xD1FFAB1E mov edx, 368 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp G_M39181_IG10 ;; bbWeight=0.50 PerfScore 5.00 G_M39181_IG08: cmp edi, 5 jne SHORT G_M39181_IG09 cmp dword ptr [rsi+12], 0 jne SHORT G_M39181_IG09 mov rcx, 0xD1FFAB1E mov edx, 368 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp G_M39181_IG10 ;; bbWeight=0.50 PerfScore 5.00 G_M39181_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov edi, dword ptr [rsi+8] mov dword ptr [rbx+8], edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r8d, dword ptr [rsi+12] mov dword ptr [rax+8], r8d xor r8, r8 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] lea r9, bword ptr [rsp+20H] mov gword ptr [r9], rbx mov gword ptr [r9+8], rax mov gword ptr [r9+16], r8 mov gword ptr [r9+24], rdx lea r8, bword ptr [rsp+20H] mov rdx, rcx xor rcx, rcx call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov ecx, dword ptr [rsi+8] mov dword ptr [rbx+8], ecx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r8d, dword ptr [rsi+12] mov dword ptr [rax+8], r8d xor r8, r8 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] lea r9, bword ptr [rsp+20H] mov gword ptr [r9], rbx mov gword ptr [r9+8], rax mov gword ptr [r9+16], r8 mov gword ptr [r9+24], rdx lea r8, bword ptr [rsp+20H] mov rdx, rcx xor rcx, rcx call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rdx, rax mov rcx, rdi call CoreRuntime:CreateForNewVersion(String,String):CoreRuntime ;; bbWeight=0.50 PerfScore 20.88 G_M39181_IG10: nop ;; bbWeight=1 PerfScore 0.25 G_M39181_IG11: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 580, prolog size 23, PerfScore 120.38, (MethodHash=820666f2) for method CoreRuntime:FromVersion(Version):CoreRuntime ; ============================================================ ; Assembly listing for method CoreRuntime:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd exact "NewObj constructor temp" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init class-hnd exact "NewObj constructor temp" ; V05 tmp5 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] must-init class-hnd exact "NewObj constructor temp" ; V06 tmp6 [V06 ] ( 1, 1 ) ref -> [rbp-0x30] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 80 G_M3905_IG01: push rbp sub rsp, 80 lea rbp, [rsp+50H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-30H], xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 5.08 G_M3905_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov r9, 0xD1FFAB1E mov r9, gword ptr [r9] mov rcx, gword ptr [rbp-08H] mov edx, 9 call CoreRuntime:.ctor(int,String,String):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov r9, 0xD1FFAB1E mov r9, gword ptr [r9] mov rcx, gword ptr [rbp-10H] mov edx, 10 call CoreRuntime:.ctor(int,String,String):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-18H], rax mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov r9, 0xD1FFAB1E mov r9, gword ptr [r9] mov rcx, gword ptr [rbp-18H] mov edx, 11 call CoreRuntime:.ctor(int,String,String):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-18H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-20H], rax mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov r9, 0xD1FFAB1E mov r9, gword ptr [r9] mov rcx, gword ptr [rbp-20H] mov edx, 12 call CoreRuntime:.ctor(int,String,String):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-20H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST ;; bbWeight=1 PerfScore 46.25 G_M3905_IG03: mov gword ptr [rbp-28H], rax mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov r9, 0xD1FFAB1E mov r9, gword ptr [r9] mov rcx, gword ptr [rbp-28H] mov edx, 13 call CoreRuntime:.ctor(int,String,String):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-28H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-30H], rax mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov r9, 0xD1FFAB1E mov r9, gword ptr [r9] mov rcx, gword ptr [rbp-30H] mov edx, 14 call CoreRuntime:.ctor(int,String,String):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-30H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 21.50 G_M3905_IG04: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 504, prolog size 29, PerfScore 125.63, (MethodHash=339af0be) for method CoreRuntime:.cctor() ; ============================================================ ; Assembly listing for method CoreRuntime:.ctor(int,String,String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) int -> rdx ; V02 arg2 [V02,T01] ( 3, 3 ) ref -> r8 class-hnd ; V03 arg3 [V03,T02] ( 3, 3 ) ref -> r9 class-hnd ;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M8589_IG01: ;; bbWeight=1 PerfScore 0.00 G_M8589_IG02: jmp Runtime:.ctor(int,String,String):this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 5, prolog size 0, PerfScore 2.50, (MethodHash=b13bde72) for method CoreRuntime:.ctor(int,String,String):this ; ============================================================ ; Assembly listing for method Runtime:.ctor(int,String,String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) int -> rdx ; V02 arg2 [V02,T02] ( 5, 3.75) ref -> r8 class-hnd ; V03 arg3 [V03,T01] ( 5, 4.25) ref -> rdi class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T07] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V07 tmp3 [V07,T04] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V08 tmp4 [V08,T05] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M34358_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov rdi, r9 ;; bbWeight=1 PerfScore 2.75 G_M34358_IG02: test rdi, rdi je SHORT G_M34358_IG09 ;; bbWeight=1 PerfScore 1.25 G_M34358_IG03: cmp dword ptr [rdi+8], 0 jbe SHORT G_M34358_IG09 ;; bbWeight=0.25 PerfScore 0.75 G_M34358_IG04: test r8, r8 je SHORT G_M34358_IG08 ;; bbWeight=0.50 PerfScore 0.63 G_M34358_IG05: cmp dword ptr [r8+8], 0 jbe SHORT G_M34358_IG08 ;; bbWeight=0.25 PerfScore 0.75 G_M34358_IG06: mov dword ptr [rsi+24], edx lea rcx, bword ptr [rsi+16] mov rdx, r8 call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 4.75 G_M34358_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M34358_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xEC99 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M34358_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x9231 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 185, prolog size 6, PerfScore 31.63, (MethodHash=06aa79c9) for method Runtime:.ctor(int,String,String):this ; ============================================================ ; Assembly listing for method d__50:System.IDisposable.Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M21499_IG01: ;; bbWeight=1 PerfScore 0.00 G_M21499_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=61daac04) for method d__50:System.IDisposable.Dispose():this ; ============================================================ ; Assembly listing for method JobMode`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00 ] ( 1, 1 ) long -> [rbp+0x10] ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02 ] ( 1, 1 ) long -> [rbp-0x10] "spilling Runtime Lookup tree" ; TEMP_01 byref -> [rbp-0x18] ; ; Lcl frame size = 64 G_M48083_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] xor rax, rax mov qword ptr [rbp-18H], rax mov qword ptr [rbp-08H], rcx mov qword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 5.00 G_M48083_IG02: mov rcx, qword ptr [rbp+10H] mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx+8] cmp qword ptr [rcx+16], 0 je SHORT G_M48083_IG04 ;; bbWeight=1 PerfScore 8.00 G_M48083_IG03: mov rcx, qword ptr [rbp+10H] mov rcx, qword ptr [rcx+48] mov rcx, qword ptr [rcx+8] mov rcx, qword ptr [rcx+16] mov qword ptr [rbp-10H], rcx jmp SHORT G_M48083_IG05 ;; bbWeight=0.50 PerfScore 5.00 G_M48083_IG04: mov rcx, qword ptr [rbp+10H] mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov qword ptr [rbp-10H], rax ;; bbWeight=0.50 PerfScore 1.63 G_M48083_IG05: mov rcx, qword ptr [rbp+10H] call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE mov bword ptr [rbp-18H], rax mov rcx, qword ptr [rbp-10H] call Activator:CreateInstance():__Canon mov rcx, rax cmp dword ptr [rcx], ecx call CharacteristicObject`1:Freeze():__Canon:this mov rcx, bword ptr [rbp-18H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 10.75 G_M48083_IG06: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 139, prolog size 20, PerfScore 46.28, (MethodHash=5951442c) for method JobMode`1:.cctor() ; ============================================================ ; Assembly listing for method Activator:CreateInstance():__Canon ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rcx "argument with side effect" ; V03 tmp2 [V03,T02] ( 2, 4 ) ref -> rdx "argument with side effect" ; V04 cse0 [V04,T03] ( 3, 3 ) long -> rsi "CSE - aggressive" ; ; Lcl frame size = 48 G_M3898_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rcx ;; bbWeight=1 PerfScore 2.25 G_M3898_IG02: mov rsi, qword ptr [rcx+16] mov rcx, qword ptr [rsi] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax mov dword ptr [rsp+20H], 1 mov edx, 1 mov r8d, 1 mov r9d, 1 call RuntimeType:CreateInstanceDefaultCtor(bool,bool,bool,bool):Object:this mov rdx, rax mov rcx, qword ptr [rsi] call CORINFO_HELP_CHKCASTANY nop ;; bbWeight=1 PerfScore 11.50 G_M3898_IG03: add rsp, 48 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 73, prolog size 10, PerfScore 22.80, (MethodHash=48f5f0c5) for method Activator:CreateInstance():__Canon ; ============================================================ ; Assembly listing for method Job:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M37214_IG01: ;; bbWeight=1 PerfScore 0.00 G_M37214_IG02: xor rdx, rdx ;; bbWeight=1 PerfScore 0.25 G_M37214_IG03: jmp Job:.ctor(String):this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 7, prolog size 0, PerfScore 2.95, (MethodHash=0faf6ea1) for method Job:.ctor():this ; ============================================================ ; Assembly listing for method EngineFactory:CreateReadyToRun(EngineParameters):IEngine:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 26, 19 ) ref -> rsi class-hnd ;* V02 loc0 [V02,T27] ( 0, 0 ) int -> zero-ref ; V03 loc1 [V03,T07] ( 4, 2 ) ref -> rdi class-hnd ; V04 loc2 [V04,T25] ( 3, 1.50) struct ( 8) [rsp+0x60] do-not-enreg[SB] must-init ; V05 loc3 [V05,T08] ( 4, 2 ) int -> rbx ; V06 loc4 [V06,T33] ( 3, 1.50) double -> mm0 ; V07 loc5 [V07,T26] ( 2, 1 ) ref -> rdx class-hnd ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T02] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V10 tmp2 [V10,T06] ( 3, 2.50) ref -> rax ; V11 tmp3 [V11,T03] ( 3, 3 ) ref -> rdi class-hnd "dup spill" ;* V12 tmp4 [V12,T28] ( 0, 0 ) int -> zero-ref "dup spill" ; V13 tmp5 [V13,T15] ( 2, 2 ) int -> rbx "impAppendStmt" ; V14 tmp6 [V14,T16] ( 2, 2 ) struct ( 8) [rsp+0x58] do-not-enreg[SB] "struct address for call/obj" ;* V15 tmp7 [V15,T29] ( 0, 0 ) int -> zero-ref "dup spill" ; V16 tmp8 [V16,T17] ( 2, 2 ) struct ( 8) [rsp+0x50] do-not-enreg[SB] "struct address for call/obj" ; V17 tmp9 [V17,T18] ( 2, 2 ) struct ( 8) [rsp+0x48] do-not-enreg[SB] "struct address for call/obj" ; V18 tmp10 [V18,T04] ( 3, 3 ) ref -> rsi class-hnd "dup spill" ;* V19 tmp11 [V19,T30] ( 0, 0 ) int -> zero-ref "dup spill" ; V20 tmp12 [V20,T19] ( 2, 2 ) struct ( 8) [rsp+0x40] do-not-enreg[SB] "struct address for call/obj" ; V21 tmp13 [V21,T09] ( 2, 2 ) ref -> r8 class-hnd "impAppendStmt" ; V22 tmp14 [V22,T34] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V23 tmp15 [V23,T35] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V24 tmp16 [V24,T36] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V25 tmp17 [V25,T37] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V26 tmp18 [V26,T38] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V27 tmp19 [V27,T39] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V28 tmp20 [V28,T40] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V29 tmp21 [V29,T41] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V30 tmp22 [V30,T20] ( 2, 2 ) struct ( 8) [rsp+0x38] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V31 tmp23 [V31,T21] ( 2, 2 ) struct ( 8) [rsp+0x30] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V32 tmp24 [V32,T31] ( 2, 2 ) double -> mm0 "impAppendStmt" ; V33 tmp25 [V33,T22] ( 2, 2 ) struct ( 8) [rsp+0x28] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V34 tmp26 [V34,T23] ( 2, 2 ) struct ( 8) [rsp+0x20] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V35 tmp27 [V35,T32] ( 2, 2 ) double -> mm0 "impAppendStmt" ; V36 tmp28 [V36,T01] ( 7, 8 ) ref -> rax "Single return block return value" ; V37 tmp29 [V37,T42] ( 2, 0 ) ref -> rdx "argument with side effect" ; V38 tmp30 [V38,T43] ( 2, 0 ) ref -> rdx "argument with side effect" ; V39 tmp31 [V39,T44] ( 2, 0 ) ref -> rdx "argument with side effect" ; V40 tmp32 [V40,T45] ( 2, 0 ) ref -> rdx "argument with side effect" ; V41 tmp33 [V41,T46] ( 2, 0 ) ref -> rdx "argument with side effect" ; V42 tmp34 [V42,T47] ( 2, 0 ) ref -> rdx "argument with side effect" ; V43 tmp35 [V43,T48] ( 2, 0 ) ref -> rdx "argument with side effect" ; V44 tmp36 [V44,T49] ( 2, 0 ) ref -> rdx "argument with side effect" ; V45 tmp37 [V45,T24] ( 2, 2 ) int -> r9 "argument with side effect" ; V46 tmp38 [V46,T10] ( 2, 2 ) ref -> r8 "argument with side effect" ; V47 tmp39 [V47,T11] ( 2, 2 ) ref -> rbp "argument with side effect" ; V48 tmp40 [V48,T12] ( 2, 2 ) ref -> rbx "argument with side effect" ; V49 tmp41 [V49,T13] ( 2, 2 ) ref -> rcx "argument with side effect" ; V50 tmp42 [V50,T14] ( 2, 2 ) ref -> rcx "argument with side effect" ; V51 rat0 [V51,T05] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 104 G_M36083_IG01: push rdi push rsi push rbp push rbx sub rsp, 104 vzeroupper xor rax, rax mov qword ptr [rsp+60H], rax mov rsi, rdx ;; bbWeight=1 PerfScore 6.75 G_M36083_IG02: cmp gword ptr [rsi+16], 0 je G_M36083_IG21 ;; bbWeight=1 PerfScore 3.00 G_M36083_IG03: cmp gword ptr [rsi+24], 0 je G_M36083_IG22 ;; bbWeight=1 PerfScore 3.00 G_M36083_IG04: cmp gword ptr [rsi+32], 0 je G_M36083_IG23 ;; bbWeight=1 PerfScore 3.00 G_M36083_IG05: cmp gword ptr [rsi+40], 0 je G_M36083_IG24 ;; bbWeight=1 PerfScore 3.00 G_M36083_IG06: cmp gword ptr [rsi+48], 0 je G_M36083_IG25 ;; bbWeight=1 PerfScore 3.00 G_M36083_IG07: cmp gword ptr [rsi+56], 0 je G_M36083_IG26 ;; bbWeight=1 PerfScore 3.00 G_M36083_IG08: cmp gword ptr [rsi+64], 0 je G_M36083_IG27 ;; bbWeight=1 PerfScore 3.00 G_M36083_IG09: cmp gword ptr [rsi+72], 0 je G_M36083_IG28 ;; bbWeight=1 PerfScore 3.00 G_M36083_IG10: mov rax, gword ptr [rsi+80] test rax, rax je SHORT G_M36083_IG12 ;; bbWeight=1 PerfScore 3.25 G_M36083_IG11: mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Action:Invoke():this ;; bbWeight=0.50 PerfScore 2.50 G_M36083_IG12: mov rcx, rsi call EngineParameters:get_NeedsJitting():bool:this test eax, eax jne SHORT G_M36083_IG14 ;; bbWeight=1 PerfScore 2.50 G_M36083_IG13: mov rcx, rsi call EngineFactory:CreateMultiActionEngine(EngineParameters):Engine jmp G_M36083_IG20 ;; bbWeight=0.50 PerfScore 1.63 G_M36083_IG14: mov rcx, gword ptr [rsi+72] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] cmp dword ptr [rcx], ecx call CharacteristicObject:HasValue(Characteristic):bool:this test al, al jne SHORT G_M36083_IG15 mov rcx, gword ptr [rsi+72] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] cmp dword ptr [rcx], ecx call CharacteristicObject:HasValue(Characteristic):bool:this test al, al je SHORT G_M36083_IG16 ;; bbWeight=0.50 PerfScore 8.50 G_M36083_IG15: mov rcx, rsi call EngineFactory:CreateMultiActionEngine(EngineParameters):Engine mov rdi, rax mov rcx, rsi call EngineParameters:get_UnrollFactor():int:this mov ebx, eax mov rcx, rsi call EngineParameters:get_UnrollFactor():int:this mov r9d, eax mov edx, 1 mov r8d, ebx mov rcx, rdi call EngineFactory:Jit(Engine,int,int,int):TimeInterval mov qword ptr [rsp+58H], rax mov rcx, qword ptr [rsp+58H] call DeadCodeEliminationHelper:KeepAliveWithoutBoxing(TimeInterval) mov rax, rdi jmp G_M36083_IG20 ;; bbWeight=0.50 PerfScore 5.75 G_M36083_IG16: mov rcx, rsi call EngineFactory:CreateSingleActionEngine(EngineParameters):Engine mov rdi, rax mov rcx, rdi mov edx, 1 mov r8d, 1 mov r9d, 1 call EngineFactory:Jit(Engine,int,int,int):TimeInterval mov qword ptr [rsp+60H], rax mov rcx, rsi call EngineParameters:get_IterationTime():TimeInterval:this mov qword ptr [rsp+50H], rax mov rcx, qword ptr [rsp+60H] mov qword ptr [rsp+38H], rcx mov rcx, qword ptr [rsp+50H] mov qword ptr [rsp+30H], rcx vmovsd xmm0, qword ptr [rsp+38H] vucomisd xmm0, qword ptr [rsp+30H] jbe SHORT G_M36083_IG17 mov rax, rdi jmp G_M36083_IG20 ;; bbWeight=0.50 PerfScore 8.50 G_M36083_IG17: mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov edx, 379 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rdx, rbp mov rcx, rbx cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this mov ebx, eax mov rcx, rsi call EngineParameters:get_IterationTime():TimeInterval:this mov qword ptr [rsp+48H], rax mov rcx, qword ptr [rsp+48H] mov qword ptr [rsp+28H], rcx mov rcx, qword ptr [rsp+60H] mov qword ptr [rsp+20H], rcx vmovsd xmm0, qword ptr [rsp+28H] vdivsd xmm0, xmm0, qword ptr [rsp+20H] vmovsd xmm1, qword ptr [reloc @RWD08] vucomisd xmm1, xmm0 jbe SHORT G_M36083_IG18 mov rax, rdi jmp SHORT G_M36083_IG20 ;; bbWeight=0.50 PerfScore 20.25 G_M36083_IG18: vroundsd xmm0, xmm0, 10 vcvttsd2si ecx, xmm0 cmp ecx, ebx jge SHORT G_M36083_IG19 mov rcx, gword ptr [rsi+72] mov edx, 1 call JobExtensions:WithUnrollFactor(Job,int):Job mov rcx, rax mov edx, 2 call JobExtensions:WithMinInvokeCount(Job,int):Job mov rcx, rax xor edx, edx call JobExtensions:WithEvaluateOverhead(Job,bool):Job mov rdx, rax mov r8, gword ptr [rsi+56] mov r9, gword ptr [rsi+16] mov rcx, rsi call EngineFactory:CreateEngine(EngineParameters,Job,Action`1,Action`1):Engine jmp SHORT G_M36083_IG20 ;; bbWeight=0.50 PerfScore 13.50 G_M36083_IG19: mov rcx, rsi call EngineFactory:CreateMultiActionEngine(EngineParameters):Engine mov rsi, rax mov rcx, rsi mov edx, 2 mov r8d, ebx mov r9d, ebx call EngineFactory:Jit(Engine,int,int,int):TimeInterval mov qword ptr [rsp+40H], rax mov rcx, qword ptr [rsp+40H] call DeadCodeEliminationHelper:KeepAliveWithoutBoxing(TimeInterval) mov rax, rsi ;; bbWeight=0.50 PerfScore 3.38 G_M36083_IG20: add rsp, 104 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M36083_IG21: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x368B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M36083_IG22: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x3661 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M36083_IG23: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xEFCF mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M36083_IG24: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xEFE9 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M36083_IG25: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xF003 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M36083_IG26: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x361D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M36083_IG27: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x35F3 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M36083_IG28: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xF01D mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 3FF8000000000000h ; Total bytes of code 1097, prolog size 18, PerfScore 214.15, (MethodHash=25dd730c) for method EngineFactory:CreateReadyToRun(EngineParameters):IEngine:this ; ============================================================ ; Assembly listing for method Span`1:SetupIndexOf():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 9, 9 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 3, 6 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" ; V03 tmp2 [V03,T03] ( 3, 6 ) int -> rdx "Strict ordering of exceptions for Array store" ; V04 tmp3 [V04,T06] ( 2, 4 ) int -> rcx "Strict ordering of exceptions for Array store" ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" ; V06 tmp5 [V06,T07] ( 2, 4 ) ushort -> rdi "Inlining Arg" ; V07 tmp6 [V07,T01] ( 5, 10 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V08 tmp7 [V08,T05] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V09 tmp8 [V09,T08] ( 4, 3.25) ref -> rcx ; V10 cse0 [V10,T04] ( 4, 4 ) int -> rdi "CSE - aggressive" ; ; Lcl frame size = 32 G_M42128_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M42128_IG02: call ValuesGenerator:GetNonDefaultValue():ushort mov word ptr [rsi+44], ax movzx rdi, word ptr [rsi+44] mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M42128_IG04 ;; bbWeight=1 PerfScore 10.25 G_M42128_IG03: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M42128_IG04: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbx+8], eax mov word ptr [rbx+16], di mov dword ptr [rbx+20], 4 mov rcx, rbx call Enumerable:ToArray(IEnumerable`1):ref lea rcx, bword ptr [rsi+32] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov edi, dword ptr [rsi+40] movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsi+24] mov edx, edi shr edx, 31 add edx, edi sar edx, 1 movzx rcx, word ptr [rsi+44] cmp edx, dword ptr [rax+8] jae SHORT G_M42128_IG06 movsxd rdx, edx mov word ptr [rax+2*rdx+16], cx ;; bbWeight=1 PerfScore 25.50 G_M42128_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M42128_IG06: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 196, prolog size 7, PerfScore 61.91, (MethodHash=9bb65b6f) for method Span`1:SetupIndexOf():this ; ============================================================ ; Assembly listing for method ValuesGenerator:GetNonDefaultValue():ushort ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T01] ( 2, 4 ) ref -> rdx class-hnd "dup spill" ; V02 tmp2 [V02,T02] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ; V03 tmp3 [V03,T05] ( 2, 2 ) ref -> rsi ; V04 tmp4 [V04,T03] ( 4, 3.50) ref -> rdx ; V05 tmp5 [V05,T00] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp6 [V06,T04] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V07 tmp7 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V08 cse0 [V08,T06] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 40 G_M7694_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M7694_IG02: mov ecx, 2 call ValuesGenerator:ArrayOfUniqueValues(int):ref mov rsi, rax mov rcx, 0xD1FFAB1E xor edx, edx call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rcx] test rdx, rdx jne SHORT G_M7694_IG05 ;; bbWeight=1 PerfScore 6.50 G_M7694_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je SHORT G_M7694_IG07 ;; bbWeight=0.50 PerfScore 2.50 G_M7694_IG04: lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, rdi ;; bbWeight=0.50 PerfScore 2.25 G_M7694_IG05: mov rcx, rsi ;; bbWeight=1 PerfScore 0.25 G_M7694_IG06: add rsp, 40 pop rsi pop rdi jmp Enumerable:First(IEnumerable`1,Func`2):ushort ;; bbWeight=1 PerfScore 3.25 G_M7694_IG07: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 154, prolog size 6, PerfScore 32.40, (MethodHash=0d3ae1f1) for method ValuesGenerator:GetNonDefaultValue():ushort ; ============================================================ ; Assembly listing for method ValuesGenerator:ArrayOfUniqueValues(int):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 4, 7 ) int -> rsi ; V01 loc0 [V01,T05] ( 2, 5 ) ref -> rdi class-hnd exact ; V02 loc1 [V02,T00] ( 8, 18 ) ref -> rbx class-hnd exact ; V03 loc2 [V03,T01] ( 3, 10 ) ushort -> rbp ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T04] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07 ] ( 1, 2 ) int -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; ; Lcl frame size = 40 G_M29897_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov esi, ecx ;; bbWeight=1 PerfScore 5.75 G_M29897_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov edx, 0x3039 call Random:.ctor(int):this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, rbx xor rdx, rdx call HashSet`1:.ctor(IEqualityComparer`1):this mov ecx, dword ptr [rbx+48] sub ecx, dword ptr [rbx+56] cmp ecx, esi je SHORT G_M29897_IG06 ;; bbWeight=1 PerfScore 11.25 G_M29897_IG03: mov rcx, rdi call ValuesGenerator:GenerateValue(Random):ushort mov ebp, eax mov rcx, rbx mov edx, ebp call HashSet`1:FindItemIndex(ushort):int:this test eax, eax jge SHORT G_M29897_IG05 ;; bbWeight=4 PerfScore 17.00 G_M29897_IG04: lea r8, [rsp+20H] mov rcx, rbx mov edx, ebp call HashSet`1:AddIfNotPresent(ushort,byref):bool:this ;; bbWeight=2 PerfScore 4.00 G_M29897_IG05: mov ecx, dword ptr [rbx+48] sub ecx, dword ptr [rbx+56] cmp ecx, esi jne SHORT G_M29897_IG03 ;; bbWeight=4 PerfScore 21.00 G_M29897_IG06: mov rcx, rbx call Enumerable:ToArray(IEnumerable`1):ref nop ;; bbWeight=1 PerfScore 1.50 G_M29897_IG07: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 153, prolog size 15, PerfScore 79.05, (MethodHash=75c88b36) for method ValuesGenerator:ArrayOfUniqueValues(int):ref ; ============================================================ ; Assembly listing for method HashSet`1:.ctor(IEqualityComparer`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M38813_IG01: push rdi push rsi sub rsp, 40 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.75 G_M38813_IG02: test rsi, rsi je SHORT G_M38813_IG04 ;; bbWeight=1 PerfScore 1.25 G_M38813_IG03: mov rcx, 0xD1FFAB1E mov edx, 34 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rdx, 0xD1FFAB1E cmp rsi, gword ptr [rdx] je SHORT G_M38813_IG04 lea rcx, bword ptr [rdi+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 3.25 G_M38813_IG04: nop ;; bbWeight=1 PerfScore 0.25 G_M38813_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 72, prolog size 6, PerfScore 16.95, (MethodHash=501a6862) for method HashSet`1:.ctor(IEqualityComparer`1):this ; ============================================================ ; Assembly listing for method ValuesGenerator:GenerateValue(Random):ushort ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rcx class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M63980_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M63980_IG02: xor edx, edx mov r8d, 0xFFFF mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+48]Random:Next(int,int):int:this movzx rax, ax ;; bbWeight=1 PerfScore 7.75 G_M63980_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 30, prolog size 4, PerfScore 12.25, (MethodHash=223d0613) for method ValuesGenerator:GenerateValue(Random):ushort ; ============================================================ ; Assembly listing for method Random:Next(int,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 3.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 6, 5 ) int -> rsi ; V02 arg2 [V02,T01] ( 4, 4 ) int -> r8 ; V03 loc0 [V03,T03] ( 4, 3 ) long -> rdi ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T05] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp3 [V07,T06] ( 2, 0 ) ref -> rbx "argument with side effect" ; V08 tmp4 [V08,T07] ( 2, 0 ) ref -> rbp "argument with side effect" ; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> r8 "argument with side effect" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> rdi "argument with side effect" ; V11 tmp7 [V11,T10] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M27652_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 vzeroupper mov esi, edx ;; bbWeight=1 PerfScore 5.50 G_M27652_IG02: cmp esi, r8d jg SHORT G_M27652_IG08 ;; bbWeight=1 PerfScore 1.25 G_M27652_IG03: movsxd rdi, r8d movsxd rax, esi sub rdi, rax cmp rdi, 0xD1FFAB1E jg SHORT G_M27652_IG06 ;; bbWeight=1 PerfScore 2.00 G_M27652_IG04: mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+32]Random:Sample():double:this vxorps xmm1, xmm1 vcvtsi2sd xmm1, rdi vmulsd xmm0, xmm0, xmm1 vcvttsd2si eax, xmm0 add eax, esi ;; bbWeight=0.50 PerfScore 10.29 G_M27652_IG05: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M27652_IG06: call Random:GetSampleForLargeRange():double:this vxorps xmm1, xmm1 vcvtsi2sd xmm1, rdi vmulsd xmm0, xmm0, xmm1 vcvttsd2si rax, xmm0 add eax, esi ;; bbWeight=0.50 PerfScore 7.29 G_M27652_IG07: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M27652_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x2F8A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x7D0F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rbx, rax mov ecx, 0x2F8A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbp, rax mov ecx, 0x2F9C mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rcx, rbx mov rdx, rbp call SR:Format(String,Object,Object):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 262, prolog size 11, PerfScore 56.28, (MethodHash=c60b93fb) for method Random:Next(int,int):int:this ; ============================================================ ; Assembly listing for method HashSet`1:FindItemIndex(ushort):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T07] ( 9, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T10] ( 6, 5.50) ushort -> [rsp+0x78] do-not-enreg[F] ld-addr-op ; V02 loc0 [V02,T16] ( 2, 2 ) ref -> rdx class-hnd ; V03 loc1 [V03,T06] ( 5, 13 ) ref -> rdi class-hnd ; V04 loc2 [V04,T00] ( 7, 24.50) int -> rbx ; V05 loc3 [V05,T15] ( 4, 3.50) ref -> rbp class-hnd ; V06 loc4 [V06,T12] ( 3, 5 ) int -> rax ; V07 loc5 [V07,T02] ( 7, 17.50) int -> rdx ; V08 loc6 [V08,T04] ( 4, 14 ) byref -> rcx ;* V09 loc7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd ;* V10 loc8 [V10 ] ( 0, 0 ) int -> zero-ref ;* V11 loc9 [V11 ] ( 0, 0 ) byref -> zero-ref ; V12 loc10 [V12,T13] ( 3, 5 ) int -> r15 ; V13 loc11 [V13,T03] ( 7, 17.50) int -> rsi ; V14 loc12 [V14,T05] ( 4, 14 ) byref -> r13 ; V15 OutArgs [V15 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V16 tmp1 [V16,T29] ( 2, 1 ) int -> r15 ; V17 tmp2 [V17,T30] ( 2, 1 ) int -> rax ; V18 tmp3 [V18,T27] ( 2, 1 ) byref -> rdx "Inline return value spill temp" ; V19 tmp4 [V19,T21] ( 3, 1.50) ref -> rdx class-hnd "Inline stloc first use temp" ; V20 tmp5 [V20,T17] ( 2, 2 ) long -> r8 "Inlining Arg" ; V21 tmp6 [V21,T18] ( 2, 2 ) int -> r11 "Inlining Arg" ; V22 tmp7 [V22,T23] ( 3, 1.50) int -> r11 "Inline stloc first use temp" ; V23 tmp8 [V23,T14] ( 2, 4 ) bool -> r8 "Inline return value spill temp" ; V24 tmp9 [V24,T08] ( 2, 8 ) ushort -> r8 ld-addr-op "Inlining Arg" ; V25 tmp10 [V25,T09] ( 2, 8 ) ushort -> r14 "Inlining Arg" ; V26 tmp11 [V26,T28] ( 2, 1 ) byref -> rdx "Inline return value spill temp" ; V27 tmp12 [V27,T22] ( 3, 1.50) ref -> rdx class-hnd "Inline stloc first use temp" ; V28 tmp13 [V28,T19] ( 2, 2 ) long -> r11 "Inlining Arg" ; V29 tmp14 [V29,T20] ( 2, 2 ) int -> rcx "Inlining Arg" ; V30 tmp15 [V30,T24] ( 3, 1.50) int -> rcx "Inline stloc first use temp" ; V31 cse0 [V31,T25] ( 3, 1.50) int -> rcx "CSE - moderate" ; V32 cse1 [V32,T26] ( 3, 1.50) int -> r8 "CSE - moderate" ; V33 cse2 [V33,T11] ( 5, 7 ) int -> r14 "CSE - aggressive" ; V34 cse3 [V34,T01] ( 6, 20.50) int -> r12 "CSE - aggressive" ; ; Lcl frame size = 40 G_M29916_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 40 mov dword ptr [rsp+78H], edx mov rsi, rcx ;; bbWeight=1 PerfScore 9.50 G_M29916_IG02: mov rdx, gword ptr [rsi+8] test rdx, rdx je G_M29916_IG16 ;; bbWeight=1 PerfScore 3.25 G_M29916_IG03: mov rdi, gword ptr [rsi+16] xor ebx, ebx mov rbp, gword ptr [rsi+24] test rbp, rbp jne G_M29916_IG11 movzx rax, word ptr [rsp+78H] movzx r8, word ptr [rsp+78H] shl r8d, 16 or eax, r8d mov rdx, gword ptr [rsi+8] mov ecx, dword ptr [rdx+8] mov r11d, ecx mov r8, qword ptr [rsi+40] mov r9d, eax imul r8, r9 shr r8, 32 inc r8 mov r11d, r11d imul r11, r8 shr r11, 32 cmp r11d, ecx jae G_M29916_IG21 movsxd rcx, r11d lea rdx, bword ptr [rdx+4*rcx+16] mov edx, dword ptr [rdx] dec edx test edx, edx jl G_M29916_IG16 mov r12d, dword ptr [rdi+8] ;; bbWeight=0.50 PerfScore 16.38 G_M29916_IG04: cmp edx, r12d jae G_M29916_IG21 movsxd rcx, edx lea rcx, [rcx+2*rcx] lea rcx, bword ptr [rdi+4*rcx+16] cmp dword ptr [rcx], eax jne SHORT G_M29916_IG06 ;; bbWeight=4 PerfScore 24.00 G_M29916_IG05: movzx r8, word ptr [rcx+8] mov r9d, dword ptr [rsp+78H] movzx r14, r9w cmp r8d, r14d sete r8b movzx r8, r8b test r8d, r8d jne SHORT G_M29916_IG09 ;; bbWeight=2 PerfScore 12.00 G_M29916_IG06: mov edx, dword ptr [rcx+4] inc ebx cmp r12d, ebx jb G_M29916_IG20 ;; bbWeight=4 PerfScore 14.00 G_M29916_IG07: test edx, edx jge SHORT G_M29916_IG04 ;; bbWeight=4 PerfScore 5.00 G_M29916_IG08: jmp G_M29916_IG16 ;; bbWeight=0.50 PerfScore 1.00 G_M29916_IG09: mov eax, edx ;; bbWeight=0.50 PerfScore 0.13 G_M29916_IG10: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M29916_IG11: mov edx, dword ptr [rsp+78H] movzx r14, dx mov edx, r14d mov rcx, rbp mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEqualityComparer`1:GetHashCode(ushort):int:this mov r15d, eax mov rdx, gword ptr [rsi+8] mov r8d, dword ptr [rdx+8] mov ecx, r8d mov r11, qword ptr [rsi+40] mov eax, r15d imul r11, rax shr r11, 32 inc r11 mov ecx, ecx imul rcx, r11 shr rcx, 32 cmp ecx, r8d jae G_M29916_IG21 movsxd r8, ecx lea rdx, bword ptr [rdx+4*r8+16] mov esi, dword ptr [rdx] dec esi test esi, esi jl SHORT G_M29916_IG16 ;; bbWeight=0.50 PerfScore 13.25 G_M29916_IG12: mov r12d, dword ptr [rdi+8] cmp esi, r12d jae SHORT G_M29916_IG21 movsxd rdx, esi lea rdx, [rdx+2*rdx] lea r13, bword ptr [rdi+4*rdx+16] cmp dword ptr [r13], r15d jne SHORT G_M29916_IG14 ;; bbWeight=4 PerfScore 32.00 G_M29916_IG13: movzx rdx, word ptr [r13+8] mov r8d, r14d mov rcx, rbp mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEqualityComparer`1:Equals(ushort,ushort):bool:this test eax, eax jne SHORT G_M29916_IG18 ;; bbWeight=2 PerfScore 14.50 G_M29916_IG14: mov esi, dword ptr [r13+4] inc ebx cmp r12d, ebx jb SHORT G_M29916_IG20 ;; bbWeight=4 PerfScore 14.00 G_M29916_IG15: test esi, esi jge SHORT G_M29916_IG12 ;; bbWeight=4 PerfScore 5.00 G_M29916_IG16: mov eax, -1 ;; bbWeight=0.50 PerfScore 0.13 G_M29916_IG17: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M29916_IG18: mov eax, esi ;; bbWeight=0.50 PerfScore 0.13 G_M29916_IG19: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M29916_IG20: call ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() int3 ;; bbWeight=0 PerfScore 0.00 G_M29916_IG21: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 477, prolog size 23, PerfScore 219.83, (MethodHash=ea018b23) for method HashSet`1:FindItemIndex(ushort):int:this ; ============================================================ ; Assembly listing for method HashSet`1:AddIfNotPresent(ushort,byref):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T05] ( 22, 13.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T09] ( 7, 6 ) ushort -> [rsp+0x88] do-not-enreg[F] ld-addr-op ; V02 arg2 [V02,T13] ( 5, 3.50) byref -> [rsp+0x90] ; V03 loc0 [V03,T04] ( 11, 16.50) ref -> rbx class-hnd ; V04 loc1 [V04,T14] ( 4, 4.50) ref -> rbp class-hnd ; V05 loc2 [V05,T08] ( 8, 11 ) int -> r15 ; V06 loc3 [V06,T00] ( 7, 25 ) int -> r14 ; V07 loc4 [V07,T16] ( 7, 3.50) byref -> r12 ; V08 loc5 [V08,T17] ( 7, 3.50) int -> r13 ; V09 loc6 [V09,T02] ( 7, 17.50) int -> rax ; V10 loc7 [V10,T06] ( 4, 14 ) byref -> rdx ;* V11 loc8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd ;* V12 loc9 [V12 ] ( 0, 0 ) byref -> zero-ref ; V13 loc10 [V13,T03] ( 7, 17.50) int -> [rsp+0x34] ; V14 loc11 [V14,T07] ( 4, 14 ) byref -> [rsp+0x28] ; V15 loc12 [V15,T30] ( 3, 1.50) int -> r13 ; V16 loc13 [V16,T19] ( 4, 2 ) byref -> rax ; V17 OutArgs [V17 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V18 tmp1 [V18,T43] ( 2, 1 ) int -> r15 ; V19 tmp2 [V19,T44] ( 2, 1 ) int -> r15 ; V20 tmp3 [V20,T40] ( 2, 1 ) byref -> r12 "Inline return value spill temp" ; V21 tmp4 [V21,T27] ( 3, 1.50) ref -> rdx class-hnd "Inline stloc first use temp" ; V22 tmp5 [V22,T20] ( 2, 2 ) long -> rax "Inlining Arg" ; V23 tmp6 [V23,T21] ( 2, 2 ) int -> r11 "Inlining Arg" ; V24 tmp7 [V24,T31] ( 3, 1.50) int -> r11 "Inline stloc first use temp" ; V25 tmp8 [V25,T15] ( 2, 4 ) bool -> rcx "Inline return value spill temp" ; V26 tmp9 [V26,T10] ( 2, 8 ) ushort -> rcx ld-addr-op "Inlining Arg" ; V27 tmp10 [V27,T11] ( 2, 8 ) ushort -> r13 "Inlining Arg" ; V28 tmp11 [V28,T41] ( 2, 1 ) byref -> r12 "Inline return value spill temp" ; V29 tmp12 [V29,T28] ( 3, 1.50) ref -> rdx class-hnd "Inline stloc first use temp" ; V30 tmp13 [V30,T22] ( 2, 2 ) long -> r11 "Inlining Arg" ; V31 tmp14 [V31,T23] ( 2, 2 ) int -> rcx "Inlining Arg" ; V32 tmp15 [V32,T32] ( 3, 1.50) int -> rcx "Inline stloc first use temp" ; V33 tmp16 [V33,T42] ( 2, 1 ) byref -> r12 "Inline return value spill temp" ; V34 tmp17 [V34,T29] ( 3, 1.50) ref -> rax class-hnd "Inline stloc first use temp" ; V35 tmp18 [V35,T24] ( 2, 2 ) long -> r8 "Inlining Arg" ; V36 tmp19 [V36,T25] ( 2, 2 ) int -> rcx "Inlining Arg" ; V37 tmp20 [V37,T33] ( 3, 1.50) int -> rcx "Inline stloc first use temp" ; V38 tmp21 [V38,T18] ( 3, 3 ) int -> rax "index expr" ; V39 tmp22 [V39,T26] ( 2, 2 ) int -> rdx "argument with side effect" ; V40 cse0 [V40,T34] ( 3, 1.50) int -> rcx "CSE - moderate" ; V41 cse1 [V41,T35] ( 3, 1.50) int -> r8 "CSE - moderate" ; V42 cse2 [V42,T36] ( 3, 1.50) int -> rdx "CSE - moderate" ; V43 cse3 [V43,T12] ( 5, 7 ) int -> r13 "CSE - aggressive" ; V44 cse4 [V44,T37] ( 3, 1.50) int -> r9 "CSE - moderate" ; V45 cse5 [V45,T38] ( 3, 1.50) int -> rax "CSE - moderate" ; V46 cse6 [V46,T39] ( 3, 1.50) int -> rcx "CSE - moderate" ; V47 cse7 [V47,T01] ( 10, 22.50) int -> [rsp+0x30] "CSE - aggressive" ; ; Lcl frame size = 56 G_M40889_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 mov dword ptr [rsp+88H], edx mov bword ptr [rsp+90H], r8 mov rsi, rcx ;; bbWeight=1 PerfScore 10.50 G_M40889_IG02: cmp gword ptr [rsi+8], 0 jne SHORT G_M40889_IG04 ;; bbWeight=1 PerfScore 3.00 G_M40889_IG03: mov rcx, rsi xor edx, edx call HashSet`1:Initialize(int):int:this ;; bbWeight=0.50 PerfScore 0.75 G_M40889_IG04: mov rbx, gword ptr [rsi+16] mov rbp, gword ptr [rsi+24] xor r14d, r14d test rbp, rbp jne G_M40889_IG13 ;; bbWeight=1 PerfScore 5.50 G_M40889_IG05: movzx r15, word ptr [rsp+88H] movzx r12, word ptr [rsp+88H] shl r12d, 16 or r15d, r12d mov rdx, gword ptr [rsi+8] mov ecx, dword ptr [rdx+8] mov r11d, ecx mov rax, qword ptr [rsi+40] mov r8d, r15d imul rax, r8 shr rax, 32 inc rax mov r11d, r11d imul r11, rax shr r11, 32 cmp r11d, ecx jae G_M40889_IG26 movsxd rcx, r11d lea r12, bword ptr [rdx+4*rcx+16] mov eax, dword ptr [r12] dec eax test eax, eax jl G_M40889_IG18 mov r9d, dword ptr [rbx+8] mov ebp, r9d ;; bbWeight=0.50 PerfScore 13.75 G_M40889_IG06: cmp eax, ebp jae G_M40889_IG26 movsxd rdx, eax lea rdx, [rdx+2*rdx] lea rdx, bword ptr [rbx+4*rdx+16] cmp dword ptr [rdx], r15d jne SHORT G_M40889_IG08 ;; bbWeight=4 PerfScore 24.00 G_M40889_IG07: movzx rcx, word ptr [rdx+8] mov r8d, dword ptr [rsp+88H] movzx r13, r8w cmp ecx, r13d sete cl movzx rcx, cl test ecx, ecx jne SHORT G_M40889_IG11 ;; bbWeight=2 PerfScore 12.00 G_M40889_IG08: mov eax, dword ptr [rdx+4] inc r14d cmp ebp, r14d jb G_M40889_IG25 ;; bbWeight=4 PerfScore 14.00 G_M40889_IG09: test eax, eax jge SHORT G_M40889_IG06 ;; bbWeight=4 PerfScore 5.00 G_M40889_IG10: jmp G_M40889_IG18 ;; bbWeight=0.50 PerfScore 1.00 G_M40889_IG11: mov rdi, bword ptr [rsp+90H] mov dword ptr [rdi], eax xor eax, eax ;; bbWeight=0.50 PerfScore 1.13 G_M40889_IG12: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M40889_IG13: mov edx, dword ptr [rsp+88H] movzx r13, dx mov edx, r13d mov rcx, rbp mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEqualityComparer`1:GetHashCode(ushort):int:this mov r15d, eax mov rdx, gword ptr [rsi+8] mov r8d, dword ptr [rdx+8] mov ecx, r8d mov r11, qword ptr [rsi+40] mov eax, r15d imul r11, rax shr r11, 32 inc r11 mov ecx, ecx imul rcx, r11 shr rcx, 32 cmp ecx, r8d jae G_M40889_IG26 movsxd r8, ecx lea r12, bword ptr [rdx+4*r8+16] mov eax, dword ptr [r12] dec eax test eax, eax jl SHORT G_M40889_IG18 ;; bbWeight=0.50 PerfScore 13.25 G_M40889_IG14: mov r9d, dword ptr [rbx+8] mov dword ptr [rsp+30H], r9d cmp eax, r9d jae G_M40889_IG26 mov dword ptr [rsp+34H], eax movsxd rdx, eax lea rdx, [rdx+2*rdx] lea r10, bword ptr [rbx+4*rdx+16] cmp dword ptr [r10], r15d jne SHORT G_M40889_IG16 ;; bbWeight=4 PerfScore 40.00 G_M40889_IG15: mov bword ptr [rsp+28H], r10 movzx rdx, word ptr [r10+8] mov r8d, r13d mov rcx, rbp mov r11, 0xD1FFAB1E mov rdi, 0xD1FFAB1E call qword ptr [rdi]IEqualityComparer`1:Equals(ushort,ushort):bool:this test eax, eax mov r10, bword ptr [rsp+28H] jne SHORT G_M40889_IG19 ;; bbWeight=2 PerfScore 18.50 G_M40889_IG16: mov eax, dword ptr [r10+4] inc r14d cmp dword ptr [rsp+30H], r14d jb G_M40889_IG25 ;; bbWeight=4 PerfScore 17.00 G_M40889_IG17: test eax, eax jge SHORT G_M40889_IG14 ;; bbWeight=4 PerfScore 5.00 G_M40889_IG18: mov r9d, dword ptr [rsi+56] test r9d, r9d jle SHORT G_M40889_IG21 mov eax, dword ptr [rsi+52] mov r13d, eax dec r9d mov dword ptr [rsi+56], r9d mov r9d, dword ptr [rbx+8] cmp eax, r9d jae G_M40889_IG26 movsxd rax, eax lea rax, [rax+2*rax] mov eax, dword ptr [rbx+4*rax+20] neg eax add eax, -3 mov dword ptr [rsi+52], eax jmp G_M40889_IG23 ;; bbWeight=0.50 PerfScore 8.13 G_M40889_IG19: mov rdi, bword ptr [rsp+90H] mov eax, dword ptr [rsp+34H] mov dword ptr [rdi], eax xor eax, eax ;; bbWeight=0.50 PerfScore 1.63 G_M40889_IG20: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M40889_IG21: mov ecx, dword ptr [rsi+48] mov r13d, ecx mov r9d, dword ptr [rbx+8] cmp r9d, r13d jne SHORT G_M40889_IG22 call HashHelpers:ExpandPrime(int):int mov edx, eax mov rcx, rsi xor r8d, r8d call HashSet`1:Resize(int,bool):this mov rax, gword ptr [rsi+8] mov edx, dword ptr [rax+8] mov ecx, edx mov r8, qword ptr [rsi+40] mov r9d, r15d imul r8, r9 shr r8, 32 inc r8 mov ecx, ecx imul rcx, r8 shr rcx, 32 cmp ecx, edx jae SHORT G_M40889_IG26 movsxd rdx, ecx lea r12, bword ptr [rax+4*rdx+16] ;; bbWeight=0.50 PerfScore 12.88 G_M40889_IG22: lea eax, [r13+1] mov dword ptr [rsi+48], eax mov rbx, gword ptr [rsi+16] ;; bbWeight=0.50 PerfScore 1.75 G_M40889_IG23: cmp r13d, dword ptr [rbx+8] jae SHORT G_M40889_IG26 movsxd rax, r13d lea rax, [rax+2*rax] lea rax, bword ptr [rbx+4*rax+16] mov dword ptr [rax], r15d mov edx, dword ptr [r12] dec edx mov dword ptr [rax+4], edx mov edx, dword ptr [rsp+88H] mov word ptr [rax+8], dx lea eax, [r13+1] mov dword ptr [r12], eax inc dword ptr [rsi+60] mov rdi, bword ptr [rsp+90H] mov dword ptr [rdi], r13d mov eax, 1 ;; bbWeight=0.50 PerfScore 9.88 G_M40889_IG24: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M40889_IG25: call ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() int3 ;; bbWeight=0 PerfScore 0.00 G_M40889_IG26: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 778, prolog size 34, PerfScore 304.30, (MethodHash=1f4f6046) for method HashSet`1:AddIfNotPresent(ushort,byref):bool:this ; ============================================================ ; Assembly listing for method HashSet`1:Initialize(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdx ; V02 loc0 [V02,T01] ( 5, 5 ) int -> rdi ; V03 loc1 [V03,T03] ( 2, 2 ) ref -> rbx class-hnd exact ; V04 loc2 [V04,T04] ( 2, 2 ) ref -> rbp class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M55982_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 4.50 G_M55982_IG02: mov ecx, edx call HashHelpers:GetPrime(int):int mov edi, eax movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbx, rax movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbp, rax mov dword ptr [rsi+52], -1 lea rcx, bword ptr [rsi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rax, -1 mov ecx, edi xor rdx, rdx div rdx:rax, rcx inc rax mov qword ptr [rsi+40], rax mov eax, edi ;; bbWeight=1 PerfScore 72.75 G_M55982_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 128, prolog size 8, PerfScore 93.30, (MethodHash=25162551) for method HashSet`1:Initialize(int):int:this ; ============================================================ ; Assembly listing for method HashSet`1:get_Count():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M34655_IG01: ;; bbWeight=1 PerfScore 0.00 G_M34655_IG02: mov eax, dword ptr [rcx+48] sub eax, dword ptr [rcx+56] ;; bbWeight=1 PerfScore 4.00 G_M34655_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 7, prolog size 0, PerfScore 5.70, (MethodHash=cf2078a0) for method HashSet`1:get_Count():int:this ; ============================================================ ; Assembly listing for method HashSet`1:CopyTo(ref,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) int -> r8 ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M54476_IG01: ;; bbWeight=1 PerfScore 0.00 G_M54476_IG02: mov r9d, dword ptr [rcx+48] sub r9d, dword ptr [rcx+56] ;; bbWeight=1 PerfScore 4.00 G_M54476_IG03: jmp HashSet`1:CopyTo(ref,int,int):this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 13, prolog size 0, PerfScore 7.30, (MethodHash=f93d2b33) for method HashSet`1:CopyTo(ref,int):this ; ============================================================ ; Assembly listing for method HashSet`1:CopyTo(ref,int,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 4, 11 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T05] ( 5, 6 ) ref -> rdx class-hnd ; V02 arg2 [V02,T04] ( 8, 9 ) int -> registers ; V03 arg3 [V03,T02] ( 8, 12 ) int -> rsi ; V04 loc0 [V04,T09] ( 3, 5 ) ref -> r8 class-hnd ; V05 loc1 [V05,T00] ( 6, 17 ) int -> r9 ; V06 loc2 [V06,T07] ( 3, 6 ) byref -> r10 ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 4, 16 ) int -> rdi "impSpillLclRefs" ; V09 tmp2 [V09,T06] ( 2, 8 ) int -> r10 "Strict ordering of exceptions for Array store" ; V10 tmp3 [V10,T10] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V11 tmp4 [V11,T11] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V12 tmp5 [V12,T12] ( 3, 0 ) ref -> rsi class-hnd exact "Single-def Box Helper" ; V13 tmp6 [V13,T13] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V14 tmp7 [V14,T14] ( 2, 0 ) ref -> rcx "argument with side effect" ; V15 tmp8 [V15,T15] ( 2, 0 ) ref -> rbx "argument with side effect" ; V16 tmp9 [V16,T16] ( 2, 0 ) ref -> r9 "argument with side effect" ; V17 tmp10 [V17,T17] ( 2, 0 ) ref -> rcx "argument with side effect" ; V18 tmp11 [V18,T18] ( 2, 0 ) ref -> rbx "argument with side effect" ; V19 tmp12 [V19,T19] ( 2, 0 ) ref -> r9 "argument with side effect" ; V20 cse0 [V20,T08] ( 4, 5 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 32 G_M64851_IG01: push rdi push rsi push rbx sub rsp, 32 mov edi, r8d mov esi, r9d ;; bbWeight=1 PerfScore 3.75 G_M64851_IG02: test rdx, rdx je G_M64851_IG12 ;; bbWeight=1 PerfScore 1.25 G_M64851_IG03: test edi, edi jl G_M64851_IG13 ;; bbWeight=1 PerfScore 1.25 G_M64851_IG04: test esi, esi jl G_M64851_IG14 ;; bbWeight=1 PerfScore 1.25 G_M64851_IG05: mov eax, dword ptr [rdx+8] cmp eax, edi jl G_M64851_IG15 mov r8d, eax sub r8d, edi cmp r8d, esi jl G_M64851_IG15 ;; bbWeight=1 PerfScore 5.00 G_M64851_IG06: mov r8, gword ptr [rcx+16] xor r9d, r9d jmp SHORT G_M64851_IG09 ;; bbWeight=1 PerfScore 4.25 G_M64851_IG07: cmp r9d, dword ptr [r8+8] jae G_M64851_IG16 movsxd r10, r9d lea r10, [r10+2*r10] lea r10, bword ptr [r8+4*r10+16] cmp dword ptr [r10+4], -1 jl SHORT G_M64851_IG08 lea r11d, [rdi+1] mov ebx, r11d movzx r10, word ptr [r10+8] cmp edi, eax jae G_M64851_IG16 movsxd r11, edi mov word ptr [rdx+2*r11+16], r10w dec esi mov edi, ebx ;; bbWeight=2 PerfScore 27.00 G_M64851_IG08: inc r9d ;; bbWeight=2 PerfScore 0.50 G_M64851_IG09: cmp r9d, dword ptr [rcx+48] jge SHORT G_M64851_IG11 ;; bbWeight=8 PerfScore 24.00 G_M64851_IG10: test esi, esi jne SHORT G_M64851_IG07 ;; bbWeight=4 PerfScore 5.00 G_M64851_IG11: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M64851_IG12: mov ecx, 2 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M64851_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov dword ptr [rsi+8], edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x1328A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov ecx, 0xA085 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r9, rax mov rdx, rbx mov r8, rsi mov rcx, rdi call ArgumentOutOfRangeException:.ctor(String,Object,String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M64851_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov dword ptr [rdi+8], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 467 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov ecx, 0xA085 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r9, rax mov rdx, rbx mov r8, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,Object,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M64851_IG15: mov ecx, 5 call ThrowHelper:ThrowArgumentException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M64851_IG16: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 418, prolog size 13, PerfScore 117.80, (MethodHash=ad5d02ac) for method HashSet`1:CopyTo(ref,int,int):this ; ============================================================ ; Assembly listing for method <>c__1`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M5959_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M5959_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c__1`1:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M5959_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=498de8b8) for method <>c__1`1:.cctor() ; ============================================================ ; Assembly listing for method <>c__1`1:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M24920_IG01: ;; bbWeight=1 PerfScore 0.00 G_M24920_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=e35c9ea7) for method <>c__1`1:.ctor():this ; ============================================================ ; Assembly listing for method Enumerable:First(IEnumerable`1,Func`2):ushort ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 loc0 [V02,T02] ( 2, 2 ) ushort -> rax ; V03 loc1 [V03 ] ( 2, 2 ) bool -> [rsp+0x20] do-not-enreg[X] addr-exposed ld-addr-op ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M8478_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M8478_IG02: lea r8, [rsp+20H] call Enumerable:TryGetFirst(IEnumerable`1,Func`2,byref):ushort cmp byte ptr [rsp+20H], 0 je SHORT G_M8478_IG04 ;; bbWeight=1 PerfScore 3.50 G_M8478_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 G_M8478_IG04: call ThrowHelper:ThrowNoMatchException() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 32, prolog size 4, PerfScore 8.20, (MethodHash=9f98dee1) for method Enumerable:First(IEnumerable`1,Func`2):ushort ; ============================================================ ; Assembly listing for method Enumerable:TryGetFirst(IEnumerable`1,Func`2,byref):ushort ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 4, 4 ) ref -> rcx class-hnd ; V01 arg1 [V01,T03] ( 4, 11 ) ref -> rsi class-hnd ; V02 arg2 [V02,T05] ( 4, 4 ) byref -> rdi ; V03 loc0 [V03,T01] ( 7, 21 ) ref -> [rbp-0x28] EH do-not-enreg[] class-hnd EH-live ; V04 loc1 [V04,T02] ( 3, 17 ) ushort -> rbx ; V05 loc2 [V05,T07] ( 2, 2 ) ushort -> [rbp-0x1C] EH do-not-enreg[] EH-live ;* V06 loc3 [V06,T08] ( 0, 0 ) ushort -> zero-ref ld-addr-op ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 PSPSym [V08 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "PSPSym" ; V09 tmp2 [V09,T06] ( 2, 2 ) ref -> rax "optAddCopies" ; V10 rat0 [V10,T00] ( 3, 48 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 56 G_M34897_IG01: push rbp push rdi push rsi push rbx sub rsp, 56 lea rbp, [rsp+50H] mov qword ptr [rbp-30H], rsp mov rsi, rdx mov rdi, r8 ;; bbWeight=1 PerfScore 6.25 G_M34897_IG02: test rcx, rcx je G_M34897_IG17 ;; bbWeight=1 PerfScore 1.25 G_M34897_IG03: test rsi, rsi je G_M34897_IG18 ;; bbWeight=1 PerfScore 1.25 G_M34897_IG04: mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-28H], rax ;; bbWeight=1 PerfScore 4.50 G_M34897_IG05: mov rcx, gword ptr [rbp-28H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M34897_IG10 ;; bbWeight=1 PerfScore 5.75 G_M34897_IG06: mov rcx, gword ptr [rbp-28H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():ushort:this mov ebx, eax mov rax, rsi mov rcx, gword ptr [rax+8] mov edx, ebx call qword ptr [rax+24]Func`2:Invoke(ushort):bool:this test eax, eax jne SHORT G_M34897_IG09 ;; bbWeight=8 PerfScore 92.00 G_M34897_IG07: mov rcx, gword ptr [rbp-28H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M34897_IG06 ;; bbWeight=8 PerfScore 46.00 G_M34897_IG08: jmp SHORT G_M34897_IG10 ;; bbWeight=1 PerfScore 2.00 G_M34897_IG09: mov byte ptr [rdi], 1 mov dword ptr [rbp-1CH], ebx jmp SHORT G_M34897_IG11 ;; bbWeight=1 PerfScore 4.00 G_M34897_IG10: mov rcx, gword ptr [rbp-28H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this jmp SHORT G_M34897_IG15 ;; bbWeight=1 PerfScore 6.50 G_M34897_IG11: mov rcx, rsp call G_M34897_IG19 ;; bbWeight=1 PerfScore 1.25 G_M34897_IG12: nop ;; bbWeight=1 PerfScore 0.25 G_M34897_IG13: mov eax, dword ptr [rbp-1CH] ;; bbWeight=1 PerfScore 1.00 G_M34897_IG14: lea rsp, [rbp-18H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.50 G_M34897_IG15: mov byte ptr [rdi], 0 xor eax, eax ;; bbWeight=1 PerfScore 1.25 G_M34897_IG16: lea rsp, [rbp-18H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.50 G_M34897_IG17: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M34897_IG18: mov ecx, 12 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M34897_IG19: push rbp push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=1 PerfScore 7.75 G_M34897_IG20: cmp gword ptr [rbp-28H], 0 je SHORT G_M34897_IG21 mov rcx, gword ptr [rbp-28H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=1 PerfScore 6.50 G_M34897_IG21: nop ;; bbWeight=1 PerfScore 0.25 G_M34897_IG22: add rsp, 40 pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 330, prolog size 23, PerfScore 231.00, (MethodHash=193e77ae) for method Enumerable:TryGetFirst(IEnumerable`1,Func`2,byref):ushort ; ============================================================ ; Assembly listing for method SZArrayHelper:GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> rsi this class-hnd ; V01 loc0 [V01,T02] ( 2, 2 ) ref -> rcx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 4, 4 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 40 G_M16991_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M16991_IG02: mov rcx, rsi cmp dword ptr [rcx+8], 0 je SHORT G_M16991_IG05 ;; bbWeight=1 PerfScore 3.25 G_M16991_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov dword ptr [rdi+16], -1 mov rax, rdi ;; bbWeight=0.50 PerfScore 2.25 G_M16991_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M16991_IG05: mov rcx, 0xD1FFAB1E mov edx, 35 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.88 G_M16991_IG06: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 105, prolog size 6, PerfScore 22.63, (MethodHash=581dbda0) for method SZArrayHelper:GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method SZGenericArrayEnumerator`1:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5 ) ref -> rcx this class-hnd ; V01 loc0 [V01,T02] ( 3, 2.50) int -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 cse0 [V03,T01] ( 3, 2.50) ref -> rax "CSE - aggressive" ; ; Lcl frame size = 0 G_M64771_IG01: ;; bbWeight=1 PerfScore 0.00 G_M64771_IG02: mov edx, dword ptr [rcx+16] inc edx mov rax, gword ptr [rcx+8] cmp dword ptr [rax+8], edx ja SHORT G_M64771_IG05 ;; bbWeight=1 PerfScore 7.25 G_M64771_IG03: mov eax, dword ptr [rax+8] mov dword ptr [rcx+16], eax xor eax, eax ;; bbWeight=0.50 PerfScore 1.63 G_M64771_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M64771_IG05: mov dword ptr [rcx+16], edx mov eax, 1 ;; bbWeight=0.50 PerfScore 0.63 G_M64771_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 32, prolog size 0, PerfScore 13.70, (MethodHash=779f02fc) for method SZGenericArrayEnumerator`1:MoveNext():bool:this ; ============================================================ ; Assembly listing for method SZGenericArrayEnumerator`1:get_Current():ushort:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 loc0 [V01,T01] ( 4, 3 ) int -> rdx ; V02 loc1 [V02,T02] ( 3, 3 ) ref -> rax class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 cse0 [V04,T03] ( 2, 2 ) int -> rcx "CSE - aggressive" ; ; Lcl frame size = 40 G_M16188_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M16188_IG02: mov edx, dword ptr [rcx+16] mov rax, gword ptr [rcx+8] mov ecx, dword ptr [rax+8] cmp ecx, edx jbe SHORT G_M16188_IG05 ;; bbWeight=1 PerfScore 7.25 G_M16188_IG03: movsxd rdx, edx movzx rax, word ptr [rax+2*rdx+16] ;; bbWeight=1 PerfScore 2.25 G_M16188_IG04: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 G_M16188_IG05: mov ecx, edx call ThrowHelper:ThrowInvalidOperationException_EnumCurrent(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 39, prolog size 4, PerfScore 14.90, (MethodHash=af7cc0c3) for method SZGenericArrayEnumerator`1:get_Current():ushort:this ; ============================================================ ; Assembly listing for method <>c__1`1:b__1_1(ushort):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) ushort -> zero-ref do-not-enreg[F] ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03,T00] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" ;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; ; Lcl frame size = 0 G_M14825_IG01: ;; bbWeight=1 PerfScore 0.00 G_M14825_IG02: mov eax, 1 ;; bbWeight=1 PerfScore 0.25 G_M14825_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 6, prolog size 0, PerfScore 1.85, (MethodHash=5acac616) for method <>c__1`1:b__1_1(ushort):bool:this ; ============================================================ ; Assembly listing for method SZGenericArrayEnumerator`1:Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M27702_IG01: ;; bbWeight=1 PerfScore 0.00 G_M27702_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=799093c9) for method SZGenericArrayEnumerator`1:Dispose():this ; ============================================================ ; Assembly listing for method RepeatIterator`1:ToArray():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T01] ( 3, 3 ) ref -> rdi class-hnd exact ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" ; V04 cse0 [V04,T02] ( 2, 2 ) int -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M17232_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M17232_IG02: mov edx, dword ptr [rsi+20] movsxd rdx, edx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rdi, rax movzx rdx, word ptr [rsi+16] mov rcx, rdi call Array:Fill(ref,ushort) mov rax, rdi ;; bbWeight=1 PerfScore 7.25 G_M17232_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 55, prolog size 6, PerfScore 17.50, (MethodHash=eefebcaf) for method RepeatIterator`1:ToArray():ref:this ; ============================================================ ; Assembly listing for method Array:Fill(ref,ushort) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 8 ) ref -> rcx class-hnd ; V01 arg1 [V01,T02] ( 3, 6 ) ushort -> rdx ; V02 loc0 [V02,T00] ( 5, 17 ) int -> rax ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 cse0 [V04,T03] ( 3, 6 ) int -> r8 "CSE - aggressive" ; ; Lcl frame size = 40 G_M11469_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M11469_IG02: test rcx, rcx je SHORT G_M11469_IG06 ;; bbWeight=1 PerfScore 1.25 G_M11469_IG03: xor eax, eax mov r8d, dword ptr [rcx+8] test r8d, r8d jle SHORT G_M11469_IG05 ;; bbWeight=1 PerfScore 3.50 G_M11469_IG04: movsxd r9, eax mov word ptr [rcx+2*r9+16], dx inc eax cmp r8d, eax jg SHORT G_M11469_IG04 ;; bbWeight=4 PerfScore 11.00 G_M11469_IG05: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 G_M11469_IG06: mov ecx, 2 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 52, prolog size 4, PerfScore 22.45, (MethodHash=1f75d332) for method Array:Fill(ref,ushort) ; ============================================================ ; Assembly listing for method EngineParameters:get_NeedsJitting():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T04] ( 2, 4 ) int -> rax "Inlining Arg" ; V03 tmp2 [V03,T01] ( 2, 4 ) ref -> r8 "argument with side effect" ; V04 tmp3 [V04,T02] ( 2, 4 ) ref -> rdi "argument with side effect" ; V05 tmp4 [V05,T03] ( 2, 4 ) ref -> rsi "argument with side effect" ; ; Lcl frame size = 40 G_M58222_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M58222_IG02: mov rsi, gword ptr [rcx+72] mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov edx, 379 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rdx, rdi mov rcx, rsi cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this test eax, eax sete al movzx rax, al ;; bbWeight=1 PerfScore 13.00 G_M58222_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 84, prolog size 6, PerfScore 25.90, (MethodHash=1d061c91) for method EngineParameters:get_NeedsJitting():bool:this ; ============================================================ ; Assembly listing for method EngineParameters:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "dup spill" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init "argument with side effect" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init "argument with side effect" ; ; Lcl frame size = 64 G_M37906_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 4.08 G_M37906_IG02: mov rcx, 0xD1FFAB1E mov edx, 2 call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-08H], rax mov rcx, 0xD1FFAB1E mov edx, 187 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-18H], r8 mov r8, gword ptr [rbp-18H] mov rcx, gword ptr [rbp-08H] xor edx, edx call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E mov edx, 381 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-20H], r8 mov r8, gword ptr [rbp-20H] mov rcx, gword ptr [rbp-08H] mov edx, 1 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] mov rdx, gword ptr [rbp-08H] call CompositeResolver:.ctor(ref):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 26.25 G_M37906_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 213, prolog size 24, PerfScore 53.93, (MethodHash=402e6bed) for method EngineParameters:.cctor() ; ============================================================ ; Assembly listing for method BenchmarkRunnerClean:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "dup spill" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init "argument with side effect" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init "argument with side effect" ; ; Lcl frame size = 64 G_M42692_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 4.08 G_M42692_IG02: mov rcx, 0xD1FFAB1E mov edx, 2 call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-08H], rax mov rcx, 0xD1FFAB1E mov edx, 357 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-18H], r8 mov r8, gword ptr [rbp-18H] mov rcx, gword ptr [rbp-08H] xor edx, edx call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E mov edx, 360 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-20H], r8 mov r8, gword ptr [rbp-20H] mov rcx, gword ptr [rbp-08H] mov edx, 1 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] mov rdx, gword ptr [rbp-08H] call CompositeResolver:.ctor(ref):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 26.25 G_M42692_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 213, prolog size 24, PerfScore 53.93, (MethodHash=6c99593b) for method BenchmarkRunnerClean:.cctor() ; ============================================================ ; Assembly listing for method EnvironmentResolver:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "dup spill" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd exact "NewObj constructor temp" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init "argument with side effect" ; ; Lcl frame size = 64 G_M24693_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 4.08 G_M24693_IG02: mov rcx, 0xD1FFAB1E mov edx, 2 call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-08H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] call EnvironmentResolver:.ctor():this mov rcx, gword ptr [rbp-08H] mov r8, gword ptr [rbp-10H] xor edx, edx call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E mov edx, 358 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov gword ptr [rbp-20H], r8 mov r8, gword ptr [rbp-20H] mov rcx, gword ptr [rbp-08H] mov edx, 1 call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-18H], rax mov rcx, gword ptr [rbp-18H] mov rdx, gword ptr [rbp-08H] call CompositeResolver:.ctor(ref):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-18H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 25.75 G_M24693_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 204, prolog size 24, PerfScore 52.53, (MethodHash=354c9f8a) for method EnvironmentResolver:.cctor() ; ============================================================ ; Assembly listing for method EnvironmentResolver:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 12, 12 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 6, 12 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T11] ( 2, 4 ) ref -> rbx class-hnd exact "impAppendStmt" ; V04 tmp3 [V04,T02] ( 6, 12 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V05 tmp4 [V05,T12] ( 2, 4 ) ref -> rbx class-hnd exact "impAppendStmt" ; V06 tmp5 [V06,T03] ( 6, 12 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V07 tmp6 [V07,T13] ( 2, 4 ) ref -> rbx class-hnd exact "impAppendStmt" ; V08 tmp7 [V08,T04] ( 6, 12 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V09 tmp8 [V09,T14] ( 2, 4 ) ref -> rbx class-hnd exact "impAppendStmt" ; V10 tmp9 [V10,T05] ( 6, 12 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V11 tmp10 [V11,T15] ( 2, 4 ) ref -> rbx class-hnd exact "impAppendStmt" ; V12 tmp11 [V12,T16] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V13 tmp12 [V13,T17] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V14 tmp13 [V14,T36] ( 0, 0 ) ref -> zero-ref ; V15 tmp14 [V15,T32] ( 2, 2 ) ref -> rdi ; V16 tmp15 [V16,T24] ( 4, 3.50) ref -> r8 ; V17 tmp16 [V17,T18] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V18 tmp17 [V18,T19] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V19 tmp18 [V19,T37] ( 0, 0 ) ref -> zero-ref ; V20 tmp19 [V20,T33] ( 2, 2 ) ref -> rdi ; V21 tmp20 [V21,T25] ( 4, 3.50) ref -> r8 ; V22 tmp21 [V22,T20] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V23 tmp22 [V23,T21] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V24 tmp23 [V24,T38] ( 0, 0 ) ref -> zero-ref ; V25 tmp24 [V25,T34] ( 2, 2 ) ref -> rdi ; V26 tmp25 [V26,T26] ( 4, 3.50) ref -> r8 ; V27 tmp26 [V27,T22] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V28 tmp27 [V28,T23] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V29 tmp28 [V29,T39] ( 0, 0 ) ref -> zero-ref ; V30 tmp29 [V30,T35] ( 2, 2 ) ref -> rdi ; V31 tmp30 [V31,T27] ( 4, 3.50) ref -> r8 ; V32 tmp31 [V32,T07] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V33 tmp32 [V33,T08] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V34 tmp33 [V34,T09] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V35 tmp34 [V35,T10] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V36 tmp35 [V36,T06] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ;* V37 tmp36 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V38 tmp37 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V39 tmp38 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V40 tmp39 [V40 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V41 tmp40 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V42 tmp41 [V42,T28] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V43 tmp42 [V43 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V44 tmp43 [V44,T29] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V45 tmp44 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V46 tmp45 [V46,T30] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V47 tmp46 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V48 tmp47 [V48,T31] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V49 tmp48 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V50 cse0 [V50,T40] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 32 G_M32490_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M32490_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi xor edx, edx xor r8, r8 call Dictionary`2:.ctor(int,IEqualityComparer`1):this lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rbx, gword ptr [rdx] lea rcx, bword ptr [rdi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, 0xD1FFAB1E mov qword ptr [rdi+32], rcx mov rcx, rsi mov rdx, rbx mov r8, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rbx, gword ptr [rdx] lea rcx, bword ptr [rdi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, 0xD1FFAB1E mov qword ptr [rdi+32], rcx mov rcx, rsi mov r9, rdi mov r8, rbx mov rdx, 0xD1FFAB1E call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rbx, gword ptr [rdx] lea rcx, bword ptr [rdi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, 0xD1FFAB1E mov qword ptr [rdi+32], rcx mov rcx, rsi mov rdx, rbx mov r8, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 34.75 G_M32490_IG03: call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rbx, gword ptr [rdx] lea rcx, bword ptr [rdi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, 0xD1FFAB1E mov qword ptr [rdi+32], rcx mov rcx, rsi mov rdx, rbx mov r8, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rbx, gword ptr [rdx] lea rcx, bword ptr [rdi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, 0xD1FFAB1E mov qword ptr [rdi+32], rcx mov rcx, rsi mov r9, rdi mov r8, rbx mov rdx, 0xD1FFAB1E call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov edx, 942 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M32490_IG06 ;; bbWeight=1 PerfScore 26.75 G_M32490_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M32490_IG17 ;; bbWeight=0.50 PerfScore 2.50 G_M32490_IG05: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M32490_IG06: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M32490_IG09 ;; bbWeight=1 PerfScore 7.25 G_M32490_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M32490_IG17 ;; bbWeight=0.50 PerfScore 2.50 G_M32490_IG08: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M32490_IG09: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M32490_IG12 ;; bbWeight=1 PerfScore 7.25 G_M32490_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M32490_IG17 ;; bbWeight=0.50 PerfScore 2.50 G_M32490_IG11: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M32490_IG12: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`2):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M32490_IG15 ;; bbWeight=1 PerfScore 7.25 G_M32490_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je SHORT G_M32490_IG17 ;; bbWeight=0.50 PerfScore 2.50 G_M32490_IG14: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M32490_IG15: mov rcx, rsi mov rdx, rdi ;; bbWeight=1 PerfScore 0.50 G_M32490_IG16: add rsp, 32 pop rbx pop rsi pop rdi jmp Resolver:Register(Characteristic`1,Func`1):this ;; bbWeight=1 PerfScore 3.75 G_M32490_IG17: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1031, prolog size 7, PerfScore 213.10, (MethodHash=ba978115) for method EnvironmentResolver:.ctor():this ; ============================================================ ; Assembly listing for method Resolver:Register(Characteristic`1,Func`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T06] ( 3, 3 ) ref -> rbp class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T01] ( 3, 6 ) ref -> rsi class-hnd "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M21629_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M21629_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rbx+24], rcx cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=1 PerfScore 14.00 G_M21629_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 127, prolog size 8, PerfScore 34.95, (MethodHash=0a64ab82) for method Resolver:Register(Characteristic`1,Func`1):this ; ============================================================ ; Assembly listing for method Resolver:Register(Characteristic`1,Func`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 3 ) ref -> rsi this class-hnd ; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rdx ; V02 arg1 [V02,T04] ( 3, 3 ) ref -> rdi class-hnd ; V03 arg2 [V03,T05] ( 3, 3 ) ref -> rbx class-hnd ; V04 loc0 [V04,T07] ( 3, 3 ) ref -> rbp class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T08] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ; V08 tmp3 [V08,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V09 tmp4 [V09,T02] ( 3, 6 ) ref -> rsi class-hnd "impAppendStmt" ;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V11 tmp6 [V11 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; V12 cse0 [V12,T09] ( 3, 2.25) long -> rcx "CSE - aggressive" ; ; Lcl frame size = 40 G_M21629_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rdx mov rsi, rcx mov rdi, r8 mov rbx, r9 ;; bbWeight=1 PerfScore 6.00 G_M21629_IG02: mov rcx, qword ptr [rdx+16] mov rcx, qword ptr [rcx+16] test rcx, rcx je SHORT G_M21629_IG04 ;; bbWeight=1 PerfScore 5.25 G_M21629_IG03: jmp SHORT G_M21629_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M21629_IG04: mov rcx, rdx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M21629_IG05: call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rbx+24], rcx cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=1 PerfScore 13.75 G_M21629_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 158, prolog size 13, PerfScore 44.99, (MethodHash=0a64ab82) for method Resolver:Register(Characteristic`1,Func`1):this ; ============================================================ ; Assembly listing for method Resolver:Register(Characteristic`1,Func`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T06] ( 3, 3 ) ref -> rbp class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T01] ( 3, 6 ) ref -> rsi class-hnd "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M21629_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M21629_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rbx+24], rcx cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=1 PerfScore 14.00 G_M21629_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 127, prolog size 8, PerfScore 34.95, (MethodHash=0a64ab82) for method Resolver:Register(Characteristic`1,Func`1):this ; ============================================================ ; Assembly listing for method Resolver:Register(Characteristic`1,Func`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T06] ( 3, 3 ) ref -> rbp class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T01] ( 3, 6 ) ref -> rsi class-hnd "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M21629_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M21629_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rbx+24], rcx cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=1 PerfScore 14.00 G_M21629_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 127, prolog size 8, PerfScore 34.95, (MethodHash=0a64ab82) for method Resolver:Register(Characteristic`1,Func`1):this ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method Resolver:Register(Characteristic`1,Func`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T06] ( 3, 3 ) ref -> rbp class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T01] ( 3, 6 ) ref -> rsi class-hnd "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M21629_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M21629_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rbx+24], rcx cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=1 PerfScore 14.00 G_M21629_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 127, prolog size 8, PerfScore 34.95, (MethodHash=0a64ab82) for method Resolver:Register(Characteristic`1,Func`1):this ; ============================================================ ; Assembly listing for method Resolver:Register(Characteristic`1,Func`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T06] ( 3, 3 ) ref -> rbp class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T01] ( 3, 6 ) ref -> rsi class-hnd "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M21629_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M21629_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rbx+24], rcx cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=1 PerfScore 14.00 G_M21629_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 127, prolog size 8, PerfScore 34.95, (MethodHash=0a64ab82) for method Resolver:Register(Characteristic`1,Func`1):this ; ============================================================ ; Assembly listing for method Resolver:Register(Characteristic`1,Func`2):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T06] ( 3, 3 ) ref -> rbp class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T01] ( 3, 6 ) ref -> rsi class-hnd "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M12158_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M12158_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rbx+24], rcx cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=1 PerfScore 14.00 G_M12158_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 127, prolog size 8, PerfScore 34.95, (MethodHash=bd91d081) for method Resolver:Register(Characteristic`1,Func`2):this ; ============================================================ ; Assembly listing for method Resolver:Register(Characteristic`1,Func`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T06] ( 3, 3 ) ref -> rbp class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T01] ( 3, 6 ) ref -> rsi class-hnd "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M21629_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M21629_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rbx+24], rcx cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=1 PerfScore 14.00 G_M21629_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 127, prolog size 8, PerfScore 34.95, (MethodHash=0a64ab82) for method Resolver:Register(Characteristic`1,Func`1):this ; ============================================================ ; Assembly listing for method GcResolver:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M31364_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M31364_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call GcResolver:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M31364_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=46ef857b) for method GcResolver:.cctor() ; ============================================================ ; Assembly listing for method GcResolver:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 10 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T09] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V03 tmp2 [V03,T10] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V04 tmp3 [V04,T44] ( 0, 0 ) ref -> zero-ref ; V05 tmp4 [V05,T37] ( 2, 2 ) ref -> rdi ; V06 tmp5 [V06,T23] ( 4, 3.50) ref -> r8 ; V07 tmp6 [V07,T11] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V08 tmp7 [V08,T12] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V09 tmp8 [V09,T45] ( 0, 0 ) ref -> zero-ref ; V10 tmp9 [V10,T38] ( 2, 2 ) ref -> rdi ; V11 tmp10 [V11,T24] ( 4, 3.50) ref -> r8 ; V12 tmp11 [V12,T13] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V13 tmp12 [V13,T14] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V14 tmp13 [V14,T46] ( 0, 0 ) ref -> zero-ref ; V15 tmp14 [V15,T39] ( 2, 2 ) ref -> rdi ; V16 tmp15 [V16,T25] ( 4, 3.50) ref -> r8 ; V17 tmp16 [V17,T15] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V18 tmp17 [V18,T16] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V19 tmp18 [V19,T47] ( 0, 0 ) ref -> zero-ref ; V20 tmp19 [V20,T40] ( 2, 2 ) ref -> rdi ; V21 tmp20 [V21,T26] ( 4, 3.50) ref -> r8 ; V22 tmp21 [V22,T17] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V23 tmp22 [V23,T18] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V24 tmp23 [V24,T48] ( 0, 0 ) ref -> zero-ref ; V25 tmp24 [V25,T41] ( 2, 2 ) ref -> rdi ; V26 tmp25 [V26,T27] ( 4, 3.50) ref -> r8 ; V27 tmp26 [V27,T19] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V28 tmp27 [V28,T20] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V29 tmp28 [V29,T49] ( 0, 0 ) ref -> zero-ref ; V30 tmp29 [V30,T42] ( 2, 2 ) ref -> rdi ; V31 tmp30 [V31,T28] ( 4, 3.50) ref -> r8 ; V32 tmp31 [V32,T21] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V33 tmp32 [V33,T22] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V34 tmp33 [V34,T50] ( 0, 0 ) ref -> zero-ref ; V35 tmp34 [V35,T43] ( 2, 2 ) ref -> rdi ; V36 tmp35 [V36,T29] ( 4, 3.50) ref -> r8 ; V37 tmp36 [V37,T02] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V38 tmp37 [V38,T03] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V39 tmp38 [V39,T04] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V40 tmp39 [V40,T05] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V41 tmp40 [V41,T06] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V42 tmp41 [V42,T07] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V43 tmp42 [V43,T08] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V44 tmp43 [V44,T01] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V45 tmp44 [V45,T30] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V46 tmp45 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V47 tmp46 [V47,T31] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V48 tmp47 [V48 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V49 tmp48 [V49,T32] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V50 tmp49 [V50 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V51 tmp50 [V51,T33] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V52 tmp51 [V52 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V53 tmp52 [V53,T34] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V54 tmp53 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V55 tmp54 [V55,T35] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V56 tmp55 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V57 tmp56 [V57,T36] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V58 tmp57 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V59 cse0 [V59,T51] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 32 G_M33819_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M33819_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi xor edx, edx xor r8, r8 call Dictionary`2:.ctor(int,IEqualityComparer`1):this lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov edx, 943 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M33819_IG05 ;; bbWeight=1 PerfScore 12.25 G_M33819_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M33819_IG25 ;; bbWeight=0.50 PerfScore 2.50 G_M33819_IG04: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M33819_IG05: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M33819_IG08 ;; bbWeight=1 PerfScore 7.25 G_M33819_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M33819_IG25 ;; bbWeight=0.50 PerfScore 2.50 G_M33819_IG07: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M33819_IG08: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M33819_IG11 ;; bbWeight=1 PerfScore 7.25 G_M33819_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M33819_IG25 ;; bbWeight=0.50 PerfScore 2.50 G_M33819_IG10: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M33819_IG11: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M33819_IG14 ;; bbWeight=1 PerfScore 7.25 G_M33819_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M33819_IG25 ;; bbWeight=0.50 PerfScore 2.50 G_M33819_IG13: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M33819_IG14: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M33819_IG17 ;; bbWeight=1 PerfScore 7.25 G_M33819_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M33819_IG25 ;; bbWeight=0.50 PerfScore 2.50 G_M33819_IG16: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M33819_IG17: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M33819_IG20 ;; bbWeight=1 PerfScore 7.25 G_M33819_IG18: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M33819_IG25 ;; bbWeight=0.50 PerfScore 2.50 G_M33819_IG19: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M33819_IG20: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M33819_IG23 ;; bbWeight=1 PerfScore 7.25 G_M33819_IG21: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je SHORT G_M33819_IG25 ;; bbWeight=0.50 PerfScore 2.50 G_M33819_IG22: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M33819_IG23: mov rcx, rsi mov rdx, rdi ;; bbWeight=1 PerfScore 0.50 G_M33819_IG24: add rsp, 32 pop rbx pop rsi pop rdi jmp Resolver:Register(Characteristic`1,Func`1):this ;; bbWeight=1 PerfScore 3.75 G_M33819_IG25: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 964, prolog size 7, PerfScore 193.15, (MethodHash=0d2a7be4) for method GcResolver:.ctor():this ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method CompositeResolver:.ctor(ref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M35099_IG01: ;; bbWeight=1 PerfScore 0.00 G_M35099_IG02: lea rcx, bword ptr [rcx+8] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M35099_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 11, prolog size 0, PerfScore 3.85, (MethodHash=0bcd76e4) for method CompositeResolver:.ctor(ref):this ; ============================================================ ; Assembly listing for method InfrastructureResolver:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M22375_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M22375_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call InfrastructureResolver:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M22375_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=4e1aa898) for method InfrastructureResolver:.cctor() ; ============================================================ ; Assembly listing for method InfrastructureResolver:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 8 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T07] ( 2, 4 ) ref -> r9 class-hnd "dup spill" ; V03 tmp2 [V03,T08] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V04 tmp3 [V04,T24] ( 0, 0 ) ref -> zero-ref ; V05 tmp4 [V05,T21] ( 2, 2 ) ref -> rdi ; V06 tmp5 [V06,T15] ( 4, 3.50) ref -> r9 ; V07 tmp6 [V07,T09] ( 2, 4 ) ref -> r9 class-hnd "dup spill" ; V08 tmp7 [V08,T10] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V09 tmp8 [V09,T25] ( 0, 0 ) ref -> zero-ref ; V10 tmp9 [V10,T22] ( 2, 2 ) ref -> rdi ; V11 tmp10 [V11,T16] ( 4, 3.50) ref -> r9 ; V12 tmp11 [V12,T11] ( 2, 4 ) ref -> r9 class-hnd "dup spill" ; V13 tmp12 [V13,T12] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V14 tmp13 [V14,T26] ( 0, 0 ) ref -> zero-ref ; V15 tmp14 [V15,T23] ( 2, 2 ) ref -> rdi ; V16 tmp15 [V16,T17] ( 4, 3.50) ref -> r9 ; V17 tmp16 [V17,T01] ( 6, 12 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V18 tmp17 [V18,T13] ( 2, 4 ) ref -> rbx class-hnd exact "impAppendStmt" ; V19 tmp18 [V19,T02] ( 6, 12 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V20 tmp19 [V20,T14] ( 2, 4 ) ref -> rbx class-hnd exact "impAppendStmt" ; V21 tmp20 [V21,T04] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V22 tmp21 [V22,T05] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V23 tmp22 [V23,T06] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V24 tmp23 [V24,T03] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V25 tmp24 [V25,T18] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V26 tmp25 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V27 tmp26 [V27,T19] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V28 tmp27 [V28 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V29 tmp28 [V29,T20] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V30 tmp29 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V31 tmp30 [V31 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V32 tmp31 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V33 cse0 [V33,T27] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 32 G_M61304_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M61304_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi xor edx, edx xor r8, r8 call Dictionary`2:.ctor(int,IEqualityComparer`1):this lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov edx, 946 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r9, gword ptr [rcx] test r9, r9 jne SHORT G_M61304_IG05 ;; bbWeight=1 PerfScore 12.25 G_M61304_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M61304_IG13 ;; bbWeight=0.50 PerfScore 2.50 G_M61304_IG04: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r9, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M61304_IG05: mov rcx, rsi mov r8, rdi mov rdx, 0xD1FFAB1E call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r9, gword ptr [rcx] test r9, r9 jne SHORT G_M61304_IG08 ;; bbWeight=1 PerfScore 7.50 G_M61304_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M61304_IG13 ;; bbWeight=0.50 PerfScore 2.50 G_M61304_IG07: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r9, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M61304_IG08: mov rcx, rsi mov r8, rdi mov rdx, 0xD1FFAB1E call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r9, gword ptr [rcx] test r9, r9 jne SHORT G_M61304_IG11 ;; bbWeight=1 PerfScore 7.50 G_M61304_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M61304_IG13 ;; bbWeight=0.50 PerfScore 2.50 G_M61304_IG10: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r9, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M61304_IG11: mov rcx, rsi mov r8, rdi mov rdx, 0xD1FFAB1E call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rbx, gword ptr [rdx] lea rcx, bword ptr [rdi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, 0xD1FFAB1E mov qword ptr [rdi+32], rcx mov rcx, rsi mov r9, rdi mov r8, rbx mov rdx, 0xD1FFAB1E call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rbx, gword ptr [rdx] lea rcx, bword ptr [rdi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, 0xD1FFAB1E mov qword ptr [rdi+32], rcx mov rcx, rsi mov r9, rdi mov r8, rbx mov rdx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 20.75 G_M61304_IG12: add rsp, 32 pop rbx pop rsi pop rdi jmp Resolver:Register(Characteristic`1,Func`1):this ;; bbWeight=1 PerfScore 3.75 G_M61304_IG13: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 684, prolog size 7, PerfScore 137.90, (MethodHash=d7311087) for method InfrastructureResolver:.ctor():this ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method EngineResolver:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M39086_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M39086_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call EngineResolver:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M39086_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=19076751) for method EngineResolver:.cctor() ; ============================================================ ; Assembly listing for method EngineResolver:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 15, 15 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T13] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V03 tmp2 [V03,T14] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V04 tmp3 [V04,T64] ( 0, 0 ) ref -> zero-ref ; V05 tmp4 [V05,T54] ( 2, 2 ) ref -> rdi ; V06 tmp5 [V06,T34] ( 4, 3.50) ref -> r8 ; V07 tmp6 [V07,T15] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V08 tmp7 [V08,T16] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V09 tmp8 [V09,T65] ( 0, 0 ) ref -> zero-ref ; V10 tmp9 [V10,T55] ( 2, 2 ) ref -> rdi ; V11 tmp10 [V11,T35] ( 4, 3.50) ref -> r8 ; V12 tmp11 [V12,T17] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V13 tmp12 [V13,T18] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V14 tmp13 [V14,T66] ( 0, 0 ) ref -> zero-ref ; V15 tmp14 [V15,T56] ( 2, 2 ) ref -> rdi ; V16 tmp15 [V16,T36] ( 4, 3.50) ref -> r8 ; V17 tmp16 [V17,T19] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V18 tmp17 [V18,T20] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V19 tmp18 [V19,T67] ( 0, 0 ) ref -> zero-ref ; V20 tmp19 [V20,T57] ( 2, 2 ) ref -> rdi ; V21 tmp20 [V21,T37] ( 4, 3.50) ref -> r8 ; V22 tmp21 [V22,T21] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V23 tmp22 [V23,T22] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V24 tmp23 [V24,T68] ( 0, 0 ) ref -> zero-ref ; V25 tmp24 [V25,T58] ( 2, 2 ) ref -> rdi ; V26 tmp25 [V26,T38] ( 4, 3.50) ref -> r8 ; V27 tmp26 [V27,T23] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V28 tmp27 [V28,T24] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V29 tmp28 [V29,T69] ( 0, 0 ) ref -> zero-ref ; V30 tmp29 [V30,T59] ( 2, 2 ) ref -> rdi ; V31 tmp30 [V31,T39] ( 4, 3.50) ref -> r8 ; V32 tmp31 [V32,T25] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V33 tmp32 [V33,T26] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V34 tmp33 [V34,T70] ( 0, 0 ) ref -> zero-ref ; V35 tmp34 [V35,T60] ( 2, 2 ) ref -> rdi ; V36 tmp35 [V36,T40] ( 4, 3.50) ref -> r8 ; V37 tmp36 [V37,T27] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V38 tmp37 [V38,T28] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V39 tmp38 [V39,T71] ( 0, 0 ) ref -> zero-ref ; V40 tmp39 [V40,T61] ( 2, 2 ) ref -> rdi ; V41 tmp40 [V41,T41] ( 4, 3.50) ref -> r8 ; V42 tmp41 [V42,T29] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V43 tmp42 [V43,T30] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V44 tmp43 [V44,T72] ( 0, 0 ) ref -> zero-ref ; V45 tmp44 [V45,T62] ( 2, 2 ) ref -> rdi ; V46 tmp45 [V46,T42] ( 4, 3.50) ref -> r8 ; V47 tmp46 [V47,T31] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V48 tmp47 [V48,T32] ( 2, 4 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V49 tmp48 [V49,T73] ( 0, 0 ) ref -> zero-ref ; V50 tmp49 [V50,T63] ( 2, 2 ) ref -> rdi ; V51 tmp50 [V51,T43] ( 4, 3.50) ref -> r8 ; V52 tmp51 [V52,T01] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V53 tmp52 [V53,T33] ( 2, 4 ) ref -> rbx class-hnd exact "impAppendStmt" ; V54 tmp53 [V54,T03] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V55 tmp54 [V55,T04] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V56 tmp55 [V56,T05] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V57 tmp56 [V57,T06] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V58 tmp57 [V58,T07] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V59 tmp58 [V59,T08] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V60 tmp59 [V60,T09] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V61 tmp60 [V61,T10] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V62 tmp61 [V62,T11] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V63 tmp62 [V63,T12] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V64 tmp63 [V64,T02] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V65 tmp64 [V65,T44] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V66 tmp65 [V66 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V67 tmp66 [V67,T45] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V68 tmp67 [V68 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V69 tmp68 [V69,T46] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V70 tmp69 [V70 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V71 tmp70 [V71,T47] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V72 tmp71 [V72 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V73 tmp72 [V73,T48] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V74 tmp73 [V74 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V75 tmp74 [V75,T49] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V76 tmp75 [V76 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V77 tmp76 [V77,T50] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V78 tmp77 [V78 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V79 tmp78 [V79,T51] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V80 tmp79 [V80 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V81 tmp80 [V81,T52] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V82 tmp81 [V82 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V83 tmp82 [V83,T53] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V84 tmp83 [V84 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V85 tmp84 [V85 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V86 cse0 [V86,T74] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 32 G_M46001_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M46001_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi xor edx, edx xor r8, r8 call Dictionary`2:.ctor(int,IEqualityComparer`1):this lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov edx, 956 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M46001_IG05 ;; bbWeight=1 PerfScore 12.25 G_M46001_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M46001_IG34 ;; bbWeight=0.50 PerfScore 2.50 G_M46001_IG04: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M46001_IG05: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M46001_IG08 ;; bbWeight=1 PerfScore 7.25 G_M46001_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M46001_IG34 ;; bbWeight=0.50 PerfScore 2.50 G_M46001_IG07: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M46001_IG08: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M46001_IG11 ;; bbWeight=1 PerfScore 7.25 G_M46001_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M46001_IG34 ;; bbWeight=0.50 PerfScore 2.50 G_M46001_IG10: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M46001_IG11: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M46001_IG14 ;; bbWeight=1 PerfScore 7.25 G_M46001_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M46001_IG34 ;; bbWeight=0.50 PerfScore 2.50 G_M46001_IG13: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M46001_IG14: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M46001_IG17 ;; bbWeight=1 PerfScore 7.25 G_M46001_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M46001_IG34 ;; bbWeight=0.50 PerfScore 2.50 G_M46001_IG16: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M46001_IG17: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M46001_IG20 ;; bbWeight=1 PerfScore 7.25 G_M46001_IG18: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M46001_IG34 ;; bbWeight=0.50 PerfScore 2.50 G_M46001_IG19: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M46001_IG20: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M46001_IG23 ;; bbWeight=1 PerfScore 7.25 G_M46001_IG21: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M46001_IG34 ;; bbWeight=0.50 PerfScore 2.50 G_M46001_IG22: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M46001_IG23: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M46001_IG26 ;; bbWeight=1 PerfScore 7.25 G_M46001_IG24: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M46001_IG34 ;; bbWeight=0.50 PerfScore 2.50 G_M46001_IG25: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M46001_IG26: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M46001_IG29 ;; bbWeight=1 PerfScore 7.25 G_M46001_IG27: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M46001_IG34 ;; bbWeight=0.50 PerfScore 2.50 G_M46001_IG28: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M46001_IG29: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M46001_IG32 ;; bbWeight=1 PerfScore 7.25 G_M46001_IG30: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M46001_IG34 ;; bbWeight=0.50 PerfScore 2.50 G_M46001_IG31: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M46001_IG32: mov rcx, rsi mov rdx, rdi call Resolver:Register(Characteristic`1,Func`1):this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rbx, gword ptr [rdx] lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, rsi mov rdx, rbx mov r8, rdi ;; bbWeight=1 PerfScore 9.00 G_M46001_IG33: add rsp, 32 pop rbx pop rsi pop rdi jmp Resolver:Register(Characteristic`1,Func`2):this ;; bbWeight=1 PerfScore 3.75 G_M46001_IG34: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1417, prolog size 7, PerfScore 282.95, (MethodHash=9eee4c4e) for method EngineResolver:.ctor():this ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method Resolver:Register(Characteristic`1,Func`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T06] ( 3, 3 ) ref -> rbp class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T01] ( 3, 6 ) ref -> rsi class-hnd "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M21629_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M21629_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rbx+24], rcx cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=1 PerfScore 14.00 G_M21629_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 127, prolog size 8, PerfScore 34.95, (MethodHash=0a64ab82) for method Resolver:Register(Characteristic`1,Func`1):this ; ============================================================ ; Assembly listing for method Resolver:Register(Characteristic`1,Func`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T06] ( 3, 3 ) ref -> rbp class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T01] ( 3, 6 ) ref -> rsi class-hnd "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M21629_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M21629_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rbx+24], rcx cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=1 PerfScore 14.00 G_M21629_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 127, prolog size 8, PerfScore 34.95, (MethodHash=0a64ab82) for method Resolver:Register(Characteristic`1,Func`1):this ; ============================================================ ; Assembly listing for method Resolver:Register(Characteristic`1,Func`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T06] ( 3, 3 ) ref -> rbp class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T01] ( 3, 6 ) ref -> rsi class-hnd "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M21629_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M21629_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rbx+24], rcx cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=1 PerfScore 14.00 G_M21629_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 127, prolog size 8, PerfScore 34.95, (MethodHash=0a64ab82) for method Resolver:Register(Characteristic`1,Func`1):this ; ============================================================ ; Assembly listing for method Resolver:Register(Characteristic`1,Func`2):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T06] ( 3, 3 ) ref -> rbp class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T01] ( 3, 6 ) ref -> rsi class-hnd "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 40 G_M12158_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M12158_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rbx+24], rcx cmp dword ptr [rsi], esi mov rcx, rsi mov rdx, rdi mov r8, rbx mov r9d, 1 call Dictionary`2:TryInsert(__Canon,__Canon,ubyte):bool:this nop ;; bbWeight=1 PerfScore 14.00 G_M12158_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 127, prolog size 8, PerfScore 34.95, (MethodHash=bd91d081) for method Resolver:Register(Characteristic`1,Func`2):this ; ============================================================ ; Assembly listing for method CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd ; V02 arg2 [V02,T00] ( 4, 4 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ; ; Lcl frame size = 32 G_M12108_IG01: push rdi push rsi push rbx sub rsp, 32 mov rdi, rcx mov rbx, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 4.00 G_M12108_IG02: mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov rcx, rsi mov rdx, rdi mov r8, rbx ;; bbWeight=1 PerfScore 2.50 G_M12108_IG03: add rsp, 32 pop rbx pop rsi pop rdi rex.jmp rax ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 63, prolog size 16, PerfScore 16.55, (MethodHash=1d1cd0b3) for method CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this ; ============================================================ ; Assembly listing for method CompositeResolver:Resolve(CharacteristicObject,Characteristic`1):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T04] ( 5, 4 ) ref -> rbp class-hnd exact ; V04 loc1 [V04,T05] ( 4, 4 ) ref -> rsi class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V08 tmp3 [V08,T07] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ; V09 tmp4 [V09,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp5 [V10,T08] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V12 tmp7 [V12 ] ( 1, 1 ) bool -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V13 tmp8 [V13,T10] ( 2, 0 ) ref -> rdi "argument with side effect" ; V14 tmp9 [V14,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; V15 tmp10 [V15,T12] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M33051_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 6.25 G_M33051_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov r9, 0xD1FFAB1E mov qword ptr [rbx+24], r9 lea r9, [rsp+20H] mov rdx, rsi mov r8, rbx mov rcx, 0xD1FFAB1E call Enumerable:TryGetFirst(IEnumerable`1,Func`2,byref):__Canon mov rsi, rax test rsi, rsi je SHORT G_M33051_IG04 mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov r8, gword ptr [rbp+8] mov rcx, rsi mov rdx, rdi call rax nop ;; bbWeight=1 PerfScore 21.00 G_M33051_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M33051_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x139B1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rcx, gword ptr [rbp+8] cmp dword ptr [rcx], ecx call Characteristic:get_FullId():String:this mov rdx, rax mov rcx, rdi call String:Concat(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 269, prolog size 15, PerfScore 57.40, (MethodHash=37f27ee4) for method CompositeResolver:Resolve(CharacteristicObject,Characteristic`1):int:this ; ============================================================ ; Assembly listing for method Enumerable:TryGetFirst(IEnumerable`1,Func`2,byref):__Canon ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T07] ( 6, 6.50) long -> rdi ; V01 arg0 [V01,T08] ( 4, 4 ) ref -> rbx class-hnd ; V02 arg1 [V02,T05] ( 4, 11 ) ref -> rsi class-hnd ; V03 arg2 [V03,T09] ( 4, 4 ) byref -> r14 ; V04 loc0 [V04,T02] ( 7, 21 ) ref -> [rbp-0x38] EH do-not-enreg[] class-hnd EH-live ; V05 loc1 [V05,T04] ( 3, 17 ) ref -> rbx class-hnd ; V06 loc2 [V06,T12] ( 2, 2 ) ref -> [rbp-0x40] EH do-not-enreg[] must-init class-hnd EH-live ;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T10] ( 4, 6 ) long -> r11 "spilling Runtime Lookup tree" ;* V10 tmp2 [V10 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V11 tmp3 [V11,T01] ( 4, 40 ) long -> r11 "spilling Runtime Lookup tree" ;* V12 tmp4 [V12 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V13 PSPSym [V13 ] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "PSPSym" ; V14 tmp6 [V14,T13] ( 2, 2 ) ref -> rax "optAddCopies" ; V15 cse0 [V15,T03] ( 3, 18 ) long -> r11 "CSE - aggressive" ; V16 cse1 [V16,T11] ( 3, 2.50) long -> r11 "CSE - aggressive" ; V17 cse2 [V17,T06] ( 3, 10 ) long -> r15 "CSE - aggressive" ; V18 rat0 [V18,T00] ( 3, 48 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 72 G_M21051_IG01: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 72 lea rbp, [rsp+70H] xor rax, rax mov qword ptr [rbp-40H], rax mov qword ptr [rbp-50H], rsp mov qword ptr [rbp-30H], rcx mov rdi, rcx mov rbx, rdx mov rsi, r8 mov r14, r9 ;; bbWeight=1 PerfScore 11.00 G_M21051_IG02: test rbx, rbx je G_M21051_IG23 ;; bbWeight=1 PerfScore 1.25 G_M21051_IG03: test rsi, rsi je G_M21051_IG24 ;; bbWeight=1 PerfScore 1.25 G_M21051_IG04: mov r15, qword ptr [rdi+16] mov r11, qword ptr [r15+16] test r11, r11 je SHORT G_M21051_IG06 ;; bbWeight=1 PerfScore 5.25 G_M21051_IG05: jmp SHORT G_M21051_IG07 ;; bbWeight=0.50 PerfScore 1.00 G_M21051_IG06: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=0.50 PerfScore 0.88 G_M21051_IG07: mov rcx, rbx call gword ptr [r11] mov gword ptr [rbp-38H], rax ;; bbWeight=1 PerfScore 4.25 G_M21051_IG08: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M21051_IG16 ;; bbWeight=1 PerfScore 5.75 G_M21051_IG09: mov r11, qword ptr [r15+24] test r11, r11 je SHORT G_M21051_IG11 ;; bbWeight=8 PerfScore 26.00 G_M21051_IG10: jmp SHORT G_M21051_IG12 ;; bbWeight=2 PerfScore 4.00 G_M21051_IG11: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=2 PerfScore 3.50 G_M21051_IG12: mov rcx, gword ptr [rbp-38H] call gword ptr [r11] mov rbx, rax mov rax, rsi mov rcx, gword ptr [rax+8] mov rdx, rbx call qword ptr [rax+24]Func`2:Invoke(__Canon):bool:this test eax, eax jne SHORT G_M21051_IG15 ;; bbWeight=8 PerfScore 88.00 G_M21051_IG13: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M21051_IG09 ;; bbWeight=8 PerfScore 46.00 G_M21051_IG14: jmp SHORT G_M21051_IG16 ;; bbWeight=1 PerfScore 2.00 G_M21051_IG15: mov byte ptr [r14], 1 mov gword ptr [rbp-40H], rbx jmp SHORT G_M21051_IG17 ;; bbWeight=1 PerfScore 4.00 G_M21051_IG16: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this jmp SHORT G_M21051_IG21 ;; bbWeight=1 PerfScore 6.50 G_M21051_IG17: mov rcx, rsp call G_M21051_IG25 ;; bbWeight=1 PerfScore 1.25 G_M21051_IG18: nop ;; bbWeight=1 PerfScore 0.25 G_M21051_IG19: mov rax, gword ptr [rbp-40H] ;; bbWeight=1 PerfScore 1.00 G_M21051_IG20: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 4.50 G_M21051_IG21: mov byte ptr [r14], 0 xor rax, rax ;; bbWeight=1 PerfScore 1.25 G_M21051_IG22: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 4.50 G_M21051_IG23: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M21051_IG24: mov ecx, 12 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M21051_IG25: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+70H] ;; bbWeight=1 PerfScore 9.75 G_M21051_IG26: cmp gword ptr [rbp-38H], 0 je SHORT G_M21051_IG27 mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=1 PerfScore 6.50 G_M21051_IG27: nop ;; bbWeight=1 PerfScore 0.25 G_M21051_IG28: add rsp, 40 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 4.25 ; Total bytes of code 405, prolog size 43, PerfScore 284.63, (MethodHash=9b5aadc4) for method Enumerable:TryGetFirst(IEnumerable`1,Func`2,byref):__Canon ; ============================================================ ; Assembly listing for method <>c__DisplayClass4_0`1:b__0(IResolver):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r11 class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M57629_IG01: mov r11, rdx ;; bbWeight=1 PerfScore 0.25 G_M57629_IG02: mov rdx, gword ptr [rcx+8] mov rcx, r11 mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=1 PerfScore 4.75 G_M57629_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 36, prolog size 3, PerfScore 10.60, (MethodHash=91711ee2) for method <>c__DisplayClass4_0`1:b__0(IResolver):bool:this ; ============================================================ ; Assembly listing for method CompositeResolver:CanResolve(Characteristic):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 loc0 [V02,T05] ( 3, 3 ) ref -> rbx class-hnd exact ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T00] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp3 [V06,T04] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 32 G_M37279_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M37279_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax lea rcx, bword ptr [rbx+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rdi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov r8, 0xD1FFAB1E mov qword ptr [rdi+24], r8 mov r8, rdi mov rdx, rsi mov rcx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 10.50 G_M37279_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp Enumerable:Any(IEnumerable`1,Func`2):bool ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 119, prolog size 13, PerfScore 29.90, (MethodHash=81a16e60) for method CompositeResolver:CanResolve(Characteristic):bool:this ; ============================================================ ; Assembly listing for method Enumerable:Any(IEnumerable`1,Func`2):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T07] ( 6, 6.50) long -> rdi ; V01 arg0 [V01,T08] ( 4, 4 ) ref -> rbx class-hnd ; V02 arg1 [V02,T05] ( 4, 11 ) ref -> rsi class-hnd ; V03 loc0 [V03,T02] ( 7, 21 ) ref -> [rbp-0x38] EH do-not-enreg[] class-hnd EH-live ; V04 loc1 [V04,T04] ( 2, 16 ) ref -> rdx class-hnd ; V05 loc2 [V05,T12] ( 2, 2 ) bool -> [rbp-0x2C] EH do-not-enreg[] EH-live ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T09] ( 4, 6 ) long -> r11 "spilling Runtime Lookup tree" ;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V09 tmp3 [V09,T01] ( 4, 40 ) long -> r11 "spilling Runtime Lookup tree" ;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V11 PSPSym [V11 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ; V12 tmp6 [V12,T11] ( 2, 2 ) ref -> rax "optAddCopies" ; V13 cse0 [V13,T03] ( 3, 18 ) long -> r11 "CSE - aggressive" ; V14 cse1 [V14,T10] ( 3, 2.50) long -> r11 "CSE - aggressive" ; V15 cse2 [V15,T06] ( 3, 10 ) long -> r14 "CSE - aggressive" ; V16 rat0 [V16,T00] ( 3, 48 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 64 G_M3227_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 lea rbp, [rsp+60H] mov qword ptr [rbp-40H], rsp mov qword ptr [rbp-28H], rcx mov rdi, rcx mov rbx, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 8.50 G_M3227_IG02: test rbx, rbx je G_M3227_IG23 ;; bbWeight=1 PerfScore 1.25 G_M3227_IG03: test rsi, rsi je G_M3227_IG24 ;; bbWeight=1 PerfScore 1.25 G_M3227_IG04: mov r14, qword ptr [rdi+16] mov r11, qword ptr [r14+16] test r11, r11 je SHORT G_M3227_IG06 ;; bbWeight=1 PerfScore 5.25 G_M3227_IG05: jmp SHORT G_M3227_IG07 ;; bbWeight=0.50 PerfScore 1.00 G_M3227_IG06: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=0.50 PerfScore 0.88 G_M3227_IG07: mov rcx, rbx call gword ptr [r11] mov gword ptr [rbp-38H], rax ;; bbWeight=1 PerfScore 4.25 G_M3227_IG08: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M3227_IG16 ;; bbWeight=1 PerfScore 5.75 G_M3227_IG09: mov r11, qword ptr [r14+24] test r11, r11 je SHORT G_M3227_IG11 ;; bbWeight=8 PerfScore 26.00 G_M3227_IG10: jmp SHORT G_M3227_IG12 ;; bbWeight=2 PerfScore 4.00 G_M3227_IG11: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=2 PerfScore 3.50 G_M3227_IG12: mov rcx, gword ptr [rbp-38H] call gword ptr [r11] mov rdx, rax mov rax, rsi mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`2:Invoke(__Canon):bool:this test eax, eax jne SHORT G_M3227_IG15 ;; bbWeight=8 PerfScore 86.00 G_M3227_IG13: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M3227_IG09 ;; bbWeight=8 PerfScore 46.00 G_M3227_IG14: jmp SHORT G_M3227_IG16 ;; bbWeight=1 PerfScore 2.00 G_M3227_IG15: mov dword ptr [rbp-2CH], 1 jmp SHORT G_M3227_IG17 ;; bbWeight=1 PerfScore 3.00 G_M3227_IG16: mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this jmp SHORT G_M3227_IG21 ;; bbWeight=1 PerfScore 6.50 G_M3227_IG17: mov rcx, rsp call G_M3227_IG25 ;; bbWeight=1 PerfScore 1.25 G_M3227_IG18: nop ;; bbWeight=1 PerfScore 0.25 G_M3227_IG19: mov eax, dword ptr [rbp-2CH] ;; bbWeight=1 PerfScore 1.00 G_M3227_IG20: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M3227_IG21: xor eax, eax ;; bbWeight=1 PerfScore 0.25 G_M3227_IG22: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M3227_IG23: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M3227_IG24: mov ecx, 12 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M3227_IG25: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=1 PerfScore 8.75 G_M3227_IG26: cmp gword ptr [rbp-38H], 0 je SHORT G_M3227_IG27 mov rcx, gword ptr [rbp-38H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=1 PerfScore 6.50 G_M3227_IG27: nop ;; bbWeight=1 PerfScore 0.25 G_M3227_IG28: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 377, prolog size 32, PerfScore 272.83, (MethodHash=b21af364) for method Enumerable:Any(IEnumerable`1,Func`2):bool ; ============================================================ ; Assembly listing for method <>c__DisplayClass2_0:b__0(IResolver):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r11 class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M16358_IG01: mov r11, rdx ;; bbWeight=1 PerfScore 0.25 G_M16358_IG02: mov rdx, gword ptr [rcx+8] mov rcx, r11 mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=1 PerfScore 4.75 G_M16358_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 36, prolog size 3, PerfScore 10.60, (MethodHash=2f1dc019) for method <>c__DisplayClass2_0:b__0(IResolver):bool:this ; ============================================================ ; Assembly listing for method Resolver:CanResolve(Characteristic):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> rcx class-hnd "Inlining Arg" ; V04 tmp2 [V04,T03] ( 2, 4 ) byref -> rax "Inlining Arg" ; ; Lcl frame size = 40 G_M26954_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M26954_IG02: mov rcx, gword ptr [rcx+8] cmp dword ptr [rcx], ecx call Dictionary`2:FindValue(__Canon):byref:this test rax, rax setne al movzx rax, al ;; bbWeight=1 PerfScore 6.50 G_M26954_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 29, prolog size 4, PerfScore 10.90, (MethodHash=417496b5) for method Resolver:CanResolve(Characteristic):bool:this ; ============================================================ ; Assembly listing for method Resolver:Resolve(CharacteristicObject,Characteristic`1):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) ref -> rbx this class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T00] ( 7, 4.50) ref -> rsi class-hnd ; V03 loc0 [V03 ] ( 2, 1 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T06] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T03] ( 4, 3.50) ref -> rsi "inline UNBOX clone1" ; V07 tmp3 [V07,T04] ( 4, 3.50) ref -> rbx "inline UNBOX clone1" ; V08 tmp4 [V08,T07] ( 2, 0 ) ref -> rbx "argument with side effect" ; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 rat0 [V11,T05] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 48 G_M41454_IG01: push rdi push rsi push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov rbx, rcx mov rdi, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 5.25 G_M41454_IG02: mov rcx, rdi mov rdx, rsi cmp dword ptr [rcx], ecx call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax je SHORT G_M41454_IG07 ;; bbWeight=1 PerfScore 4.75 G_M41454_IG03: cmp dword ptr [rsi], esi mov rcx, rdi mov rdx, rsi call CharacteristicObject:GetValue(Characteristic):Object:this mov rbx, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rbx], rdx je SHORT G_M41454_IG05 ;; bbWeight=0.50 PerfScore 3.50 G_M41454_IG04: mov rdx, rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41454_IG05: mov eax, dword ptr [rbx+8] ;; bbWeight=0.50 PerfScore 1.00 G_M41454_IG06: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M41454_IG07: mov rcx, gword ptr [rbx+8] lea r8, [rsp+28H] mov rdx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:TryGetValue(__Canon,byref):bool:this test eax, eax je SHORT G_M41454_IG11 mov rax, gword ptr [rsp+28H] mov rcx, gword ptr [rax+8] mov rdx, rdi call gword ptr [rax+24]Func`2:Invoke(__Canon):__Canon:this mov rsi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rsi], rdx je SHORT G_M41454_IG09 ;; bbWeight=0.50 PerfScore 9.50 G_M41454_IG08: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41454_IG09: mov eax, dword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.00 G_M41454_IG10: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M41454_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x139B1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov rcx, rsi cmp dword ptr [rcx], ecx call Characteristic:get_FullId():String:this mov rdx, rax mov rcx, rbx call String:Concat(String,String):String mov rdx, rax mov rcx, rdi call InvalidOperationException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 274, prolog size 14, PerfScore 55.90, (MethodHash=61135e11) for method Resolver:Resolve(CharacteristicObject,Characteristic`1):int:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass1_0`1:b__0(CharacteristicObject):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V04 rat0 [V04,T01] ( 3, 6 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 40 G_M61721_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M61721_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rax, gword ptr [rsi+8] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`1:Invoke():int:this mov dword ptr [rdi+8], eax mov rax, rdi ;; bbWeight=1 PerfScore 9.75 G_M61721_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 51, prolog size 6, PerfScore 19.60, (MethodHash=6fba0ee6) for method <>c__DisplayClass1_0`1:b__0(CharacteristicObject):Object:this ; ============================================================ ; Assembly listing for method <>c:<.ctor>b__6_0():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M1128_IG01: ;; bbWeight=1 PerfScore 0.00 G_M1128_IG02: xor eax, eax ;; bbWeight=1 PerfScore 0.25 G_M1128_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 3, prolog size 0, PerfScore 1.55, (MethodHash=38b8fb97) for method <>c:<.ctor>b__6_0():int:this ; ============================================================ ; Assembly listing for method EngineFactory:CreateSingleActionEngine(EngineParameters):Engine ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 6 ) ref -> rsi class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx class-hnd "impAppendStmt" ; V03 tmp2 [V03,T02] ( 2, 4 ) ref -> r8 class-hnd "impAppendStmt" ; V04 tmp3 [V04,T03] ( 2, 4 ) ref -> rcx "argument with side effect" ; V05 tmp4 [V05,T04] ( 2, 4 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 32 G_M1237_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M1237_IG02: mov rcx, gword ptr [rsi+72] mov edx, 1 call JobExtensions:WithInvocationCount(Job,int):Job mov rcx, rax mov edx, 1 call JobExtensions:WithUnrollFactor(Job,int):Job mov rcx, rax xor edx, edx call JobExtensions:WithEvaluateOverhead(Job,bool):Job mov rdx, rax mov r8, gword ptr [rsi+56] mov r9, gword ptr [rsi+16] mov rcx, rsi ;; bbWeight=1 PerfScore 10.75 G_M1237_IG03: add rsp, 32 pop rsi jmp EngineFactory:CreateEngine(EngineParameters,Job,Action`1,Action`1):Engine ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 69, prolog size 5, PerfScore 21.90, (MethodHash=02e7fb2a) for method EngineFactory:CreateSingleActionEngine(EngineParameters):Engine ; ============================================================ ; Assembly listing for method JobExtensions:WithInvocationCount(Job,int):Job ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi ; V02 loc0 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd exact ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T00] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 32 G_M59080_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M59080_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov dword ptr [rbx+8], edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, rsi mov rdx, rdi ;; bbWeight=1 PerfScore 7.50 G_M59080_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp JobExtensions:WithCore(Job,Action`1):Job ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 95, prolog size 12, PerfScore 24.50, (MethodHash=f7781937) for method JobExtensions:WithInvocationCount(Job,int):Job ; ============================================================ ; Assembly listing for method JobExtensions:WithCore(Job,Action`1):Job ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 5.50) ref -> rsi class-hnd ; V01 arg1 [V01,T04] ( 3, 3 ) ref -> rdi class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 5, 5 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T06] ( 4, 3 ) ref -> rbx ; V06 tmp3 [V06,T03] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp4 [V07,T08] ( 4, 2.74) ref -> rax "CASTCLASS eval op1" ; V08 tmp5 [V08,T13] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" ; V10 tmp7 [V10,T07] ( 3, 3 ) ref -> rdx class-hnd exact "Inlining Arg" ; V11 tmp8 [V11,T10] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V12 tmp9 [V12,T14] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V13 tmp10 [V13,T05] ( 5, 3.74) ref -> rbx class-hnd "spilling QMark2" ; V14 tmp11 [V14,T09] ( 4, 2.74) ref -> rax "CASTCLASS eval op1" ; V15 tmp12 [V15,T15] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" ; V17 tmp14 [V17,T11] ( 2, 2 ) ref -> r8 "argument with side effect" ; V18 tmp15 [V18,T12] ( 2, 2 ) ref -> r8 "argument with side effect" ; V19 rat0 [V19,T01] ( 3, 6 ) ref -> rdi "delegate invoke call" ; ; Lcl frame size = 40 G_M61868_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 4.75 G_M61868_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rsi cmp dword ptr [rcx], ecx call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax jne SHORT G_M61868_IG07 ;; bbWeight=1 PerfScore 6.75 G_M61868_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, rbx xor rdx, rdx call Job:.ctor(String):this mov rcx, rbx mov rdx, rsi call CharacteristicObject:GetCharacteristicsToApply(CharacteristicObject):IEnumerable`1:this mov r8, rax mov rdx, rsi mov rcx, rbx call CharacteristicObject:ApplyCore(CharacteristicObject,IEnumerable`1):CharacteristicObject:this test rax, rax je SHORT G_M61868_IG06 ;; bbWeight=0.50 PerfScore 3.75 G_M61868_IG04: mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx je SHORT G_M61868_IG06 ;; bbWeight=0.25 PerfScore 0.81 G_M61868_IG05: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL ;; bbWeight=0.12 PerfScore 0.15 G_M61868_IG06: jmp G_M61868_IG14 ;; bbWeight=0.50 PerfScore 1.00 G_M61868_IG07: mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rcx] cmp dword ptr [rdx], edx mov rcx, rsi call CharacteristicObject:GetValue(Characteristic):Object:this mov rbx, rax test rbx, rbx je SHORT G_M61868_IG10 ;; bbWeight=0.50 PerfScore 3.50 G_M61868_IG08: mov rcx, 0xD1FFAB1E cmp qword ptr [rbx], rcx je SHORT G_M61868_IG10 ;; bbWeight=0.25 PerfScore 0.81 G_M61868_IG09: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rbx, rax ;; bbWeight=0.12 PerfScore 0.18 G_M61868_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, rbp mov rdx, rbx call Job:.ctor(String):this mov rcx, rbp mov rdx, rsi call CharacteristicObject:GetCharacteristicsToApply(CharacteristicObject):IEnumerable`1:this mov r8, rax mov rdx, rsi mov rcx, rbp call CharacteristicObject:ApplyCore(CharacteristicObject,IEnumerable`1):CharacteristicObject:this test rax, rax je SHORT G_M61868_IG13 ;; bbWeight=0.50 PerfScore 3.75 G_M61868_IG11: mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx je SHORT G_M61868_IG13 ;; bbWeight=0.25 PerfScore 0.81 G_M61868_IG12: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL ;; bbWeight=0.12 PerfScore 0.15 G_M61868_IG13: mov rbx, rbp ;; bbWeight=0.50 PerfScore 0.13 G_M61868_IG14: mov rcx, gword ptr [rdi+8] mov rdx, rbx call qword ptr [rdi+24]Action`1:Invoke(__Canon):this mov rax, rbx ;; bbWeight=1 PerfScore 5.50 G_M61868_IG15: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 291, prolog size 8, PerfScore 64.39, (MethodHash=c4df0e53) for method JobExtensions:WithCore(Job,Action`1):Job ; ============================================================ ; Assembly listing for method <>c__DisplayClass27_0:b__0(Job):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T05] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> rax class-hnd exact "Inlining Arg" ; V04 tmp2 [V04,T06] ( 3, 4.24) ref -> rax "CASTCLASS eval op1" ; V05 tmp3 [V05,T08] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V06 tmp4 [V06,T00] ( 6, 8.74) ref -> rdi class-hnd "spilling QMark2" ; V07 tmp5 [V07,T07] ( 2, 4 ) int -> rsi "Inlining Arg" ; V08 tmp6 [V08,T03] ( 3, 6 ) ref -> rbx class-hnd exact "Inlining Arg" ; V09 tmp7 [V09,T04] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; ; Lcl frame size = 32 G_M15028_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M15028_IG02: cmp dword ptr [rdx], edx mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] cmp dword ptr [rax], eax mov rcx, rdx mov rdx, rax call CharacteristicObject:GetValue(Characteristic):Object:this mov rdi, rax test rdi, rdi je SHORT G_M15028_IG05 ;; bbWeight=1 PerfScore 9.25 G_M15028_IG03: mov rcx, 0xD1FFAB1E cmp qword ptr [rdi], rcx je SHORT G_M15028_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M15028_IG04: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdi, rax ;; bbWeight=0.12 PerfScore 0.18 G_M15028_IG05: mov esi, dword ptr [rsi+8] cmp dword ptr [rdi], edi mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] cmp dword ptr [rbx], ebx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], esi mov r8, rax mov rcx, rdi mov rdx, rbx ;; bbWeight=1 PerfScore 11.25 G_M15028_IG06: add rsp, 32 pop rbx pop rsi pop rdi jmp CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 131, prolog size 7, PerfScore 41.84, (MethodHash=16fcc54b) for method <>c__DisplayClass27_0:b__0(Job):this ; ============================================================ ; Assembly listing for method JobExtensions:WithUnrollFactor(Job,int):Job ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi ; V02 loc0 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd exact ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T00] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 32 G_M46784_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M46784_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov dword ptr [rbx+8], edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, rsi mov rdx, rdi ;; bbWeight=1 PerfScore 7.50 G_M46784_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp JobExtensions:WithCore(Job,Action`1):Job ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 95, prolog size 12, PerfScore 24.50, (MethodHash=cf8b493f) for method JobExtensions:WithUnrollFactor(Job,int):Job ; ============================================================ ; Assembly listing for method <>c__DisplayClass28_0:b__0(Job):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T05] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> rax class-hnd exact "Inlining Arg" ; V04 tmp2 [V04,T06] ( 3, 4.24) ref -> rax "CASTCLASS eval op1" ; V05 tmp3 [V05,T08] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V06 tmp4 [V06,T00] ( 6, 8.74) ref -> rdi class-hnd "spilling QMark2" ; V07 tmp5 [V07,T07] ( 2, 4 ) int -> rsi "Inlining Arg" ; V08 tmp6 [V08,T03] ( 3, 6 ) ref -> rbx class-hnd exact "Inlining Arg" ; V09 tmp7 [V09,T04] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; ; Lcl frame size = 32 G_M13523_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M13523_IG02: cmp dword ptr [rdx], edx mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] cmp dword ptr [rax], eax mov rcx, rdx mov rdx, rax call CharacteristicObject:GetValue(Characteristic):Object:this mov rdi, rax test rdi, rdi je SHORT G_M13523_IG05 ;; bbWeight=1 PerfScore 9.25 G_M13523_IG03: mov rcx, 0xD1FFAB1E cmp qword ptr [rdi], rcx je SHORT G_M13523_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M13523_IG04: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdi, rax ;; bbWeight=0.12 PerfScore 0.18 G_M13523_IG05: mov esi, dword ptr [rsi+8] cmp dword ptr [rdi], edi mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] cmp dword ptr [rbx], ebx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], esi mov r8, rax mov rcx, rdi mov rdx, rbx ;; bbWeight=1 PerfScore 11.25 G_M13523_IG06: add rsp, 32 pop rbx pop rsi pop rdi jmp CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 131, prolog size 7, PerfScore 41.84, (MethodHash=95adcb2c) for method <>c__DisplayClass28_0:b__0(Job):this ; ============================================================ ; Assembly listing for method JobExtensions:WithEvaluateOverhead(Job,bool):Job ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) bool -> rdi ; V02 loc0 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd exact ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T00] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 32 G_M29771_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M29771_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov byte ptr [rbx+8], dil mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, rsi mov rdx, rdi ;; bbWeight=1 PerfScore 7.50 G_M29771_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp JobExtensions:WithCore(Job,Action`1):Job ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 96, prolog size 12, PerfScore 24.60, (MethodHash=392f8bb4) for method JobExtensions:WithEvaluateOverhead(Job,bool):Job ; ============================================================ ; Assembly listing for method <>c__DisplayClass57_0:b__0(Job):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T05] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> rax class-hnd exact "Inlining Arg" ; V04 tmp2 [V04,T06] ( 3, 4.24) ref -> rax "CASTCLASS eval op1" ; V05 tmp3 [V05,T08] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V06 tmp4 [V06,T00] ( 6, 8.74) ref -> rdi class-hnd "spilling QMark2" ; V07 tmp5 [V07,T07] ( 2, 4 ) bool -> rsi "Inlining Arg" ; V08 tmp6 [V08,T03] ( 3, 6 ) ref -> rbx class-hnd exact "Inlining Arg" ; V09 tmp7 [V09,T04] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; ; Lcl frame size = 32 G_M24013_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M24013_IG02: cmp dword ptr [rdx], edx mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] cmp dword ptr [rax], eax mov rcx, rdx mov rdx, rax call CharacteristicObject:GetValue(Characteristic):Object:this mov rdi, rax test rdi, rdi je SHORT G_M24013_IG05 ;; bbWeight=1 PerfScore 9.25 G_M24013_IG03: mov rcx, 0xD1FFAB1E cmp qword ptr [rdi], rcx je SHORT G_M24013_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M24013_IG04: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdi, rax ;; bbWeight=0.12 PerfScore 0.18 G_M24013_IG05: movzx rsi, byte ptr [rsi+8] cmp dword ptr [rdi], edi mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] cmp dword ptr [rbx], ebx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov byte ptr [rax+8], sil mov r8, rax mov rcx, rdi mov rdx, rbx ;; bbWeight=1 PerfScore 11.25 G_M24013_IG06: add rsp, 32 pop rbx pop rsi pop rdi jmp CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 134, prolog size 7, PerfScore 42.14, (MethodHash=dcc3a232) for method <>c__DisplayClass57_0:b__0(Job):this ; ============================================================ ; Assembly listing for method EngineFactory:CreateEngine(EngineParameters,Job,Action`1,Action`1):Engine ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 13, 13 ) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> [rbp+0x18] class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T04] ( 3, 3 ) ref -> r14 class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (128) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> r15 class-hnd "impAppendStmt" ; V06 tmp2 [V06,T06] ( 2, 4 ) ref -> r12 class-hnd exact "impAppendStmt" ; V07 tmp3 [V07,T07] ( 2, 4 ) ref -> r13 class-hnd "impAppendStmt" ; V08 tmp4 [V08,T08] ( 2, 4 ) ref -> [rbp-0x48] class-hnd "impAppendStmt" ; V09 tmp5 [V09,T09] ( 2, 4 ) ref -> [rbp-0x50] class-hnd "impAppendStmt" ; V10 tmp6 [V10,T10] ( 2, 4 ) ref -> [rbp-0x58] class-hnd "impAppendStmt" ; V11 tmp7 [V11,T11] ( 2, 4 ) ref -> [rbp-0x60] class-hnd "impAppendStmt" ; V12 tmp8 [V12,T12] ( 2, 4 ) ref -> [rbp-0x68] class-hnd "impAppendStmt" ; V13 tmp9 [V13,T13] ( 2, 4 ) ref -> [rbp-0x70] class-hnd "impAppendStmt" ; V14 tmp10 [V14,T14] ( 2, 4 ) long -> [rbp-0x40] "impAppendStmt" ; V15 tmp11 [V15,T15] ( 2, 4 ) int -> rdi "impAppendStmt" ; V16 tmp12 [V16,T01] ( 3, 6 ) ref -> [rbp-0x78] class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 200 G_M27674_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 200 lea rbp, [rsp+100H] mov gword ptr [rbp+18H], rdx mov rsi, rcx mov rbx, r8 mov r14, r9 ;; bbWeight=1 PerfScore 10.50 G_M27674_IG02: mov r15, gword ptr [rsi+8] mov rcx, 0xD1FFAB1E mov r12, gword ptr [rcx] mov r13, gword ptr [rsi+32] mov rax, gword ptr [rsi+40] mov gword ptr [rbp-48H], rax mov rdx, gword ptr [rsi+48] mov gword ptr [rbp-50H], rdx mov r8, gword ptr [rsi+80] mov gword ptr [rbp-58H], r8 mov r9, gword ptr [rsi+88] mov gword ptr [rbp-60H], r9 mov r10, gword ptr [rsi+96] mov gword ptr [rbp-68H], r10 mov r11, gword ptr [rsi+104] mov gword ptr [rbp-70H], r11 mov rcx, qword ptr [rsi+120] mov qword ptr [rbp-40H], rcx movzx rdi, byte ptr [rsi+128] mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rcx, gword ptr [rbp-48H] mov gword ptr [rsp+20H], rcx mov rcx, gword ptr [rbp-50H] mov gword ptr [rsp+28H], rcx mov gword ptr [rsp+30H], rbx mov gword ptr [rsp+38H], r14 mov rbx, gword ptr [rbp+18H] mov gword ptr [rsp+40H], rbx mov rbx, gword ptr [rbp-58H] mov gword ptr [rsp+48H], rbx mov rbx, gword ptr [rbp-60H] mov gword ptr [rsp+50H], rbx mov rbx, gword ptr [rbp-68H] mov gword ptr [rsp+58H], rbx mov rbx, gword ptr [rbp-70H] mov gword ptr [rsp+60H], rbx mov rbx, qword ptr [rbp-40H] mov qword ptr [rsp+68H], rbx mov dword ptr [rsp+70H], edi mov rcx, gword ptr [rsi+112] mov gword ptr [rsp+78H], rcx mov gword ptr [rbp-78H], rax mov rcx, rax mov rdx, r15 mov r8, r12 mov r9, r13 call Engine:.ctor(IHost,IResolver,Action,Action,Action,Action`1,Action`1,Job,Action,Action,Action,Action,long,bool,String):this mov rax, gword ptr [rbp-78H] ;; bbWeight=1 PerfScore 56.50 G_M27674_IG03: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 277, prolog size 27, PerfScore 100.20, (MethodHash=ae0393e5) for method EngineFactory:CreateEngine(EngineParameters,Job,Action`1,Action`1):Engine ; ============================================================ ; Assembly listing for method Engine:.ctor(IHost,IResolver,Action,Action,Action,Action`1,Action`1,Job,Action,Action,Action,Action,long,bool,String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 36, 36 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T05] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T06] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg3 [V03,T07] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T14] ( 1, 1 ) ref -> [rsp+0x70] class-hnd ; V05 arg5 [V05,T15] ( 1, 1 ) ref -> [rsp+0x78] class-hnd ; V06 arg6 [V06,T16] ( 1, 1 ) ref -> [rsp+0x80] class-hnd ; V07 arg7 [V07,T17] ( 1, 1 ) ref -> [rsp+0x88] class-hnd ; V08 arg8 [V08,T02] ( 7, 7 ) ref -> rdi class-hnd ; V09 arg9 [V09,T18] ( 1, 1 ) ref -> [rsp+0x98] class-hnd ; V10 arg10 [V10,T19] ( 1, 1 ) ref -> [rsp+0xA0] class-hnd ; V11 arg11 [V11,T20] ( 1, 1 ) ref -> [rsp+0xA8] class-hnd ; V12 arg12 [V12,T21] ( 1, 1 ) ref -> [rsp+0xB0] class-hnd ; V13 arg13 [V13,T23] ( 1, 1 ) long -> [rsp+0xB8] ; V14 arg14 [V14,T24] ( 1, 1 ) bool -> [rsp+0xC0] ; V15 arg15 [V15,T22] ( 1, 1 ) ref -> [rsp+0xC8] class-hnd ; V16 OutArgs [V16 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V17 tmp1 [V17,T08] ( 2, 4 ) ref -> r8 class-hnd exact "impAppendStmt" ; V18 tmp2 [V18,T09] ( 2, 4 ) ref -> rdx class-hnd exact "impAppendStmt" ; V19 tmp3 [V19,T10] ( 2, 4 ) ref -> rdx class-hnd exact "impAppendStmt" ; V20 tmp4 [V20,T11] ( 2, 4 ) ref -> rdx class-hnd exact "impAppendStmt" ; V21 tmp5 [V21,T12] ( 2, 4 ) ref -> rdx class-hnd exact "impAppendStmt" ; V22 tmp6 [V22,T13] ( 2, 4 ) ref -> rdx class-hnd exact "impAppendStmt" ; V23 tmp7 [V23,T01] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V24 tmp8 [V24,T03] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V25 tmp9 [V25,T04] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 40 G_M46265_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rbx, r8 mov rbp, r9 mov rdi, gword ptr [rsp+90H] ;; bbWeight=1 PerfScore 6.00 G_M46265_IG02: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+48] mov rdx, gword ptr [rsp+80H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+24] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+32] mov rdx, gword ptr [rsp+70H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+40] mov rdx, gword ptr [rsp+78H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, gword ptr [rsp+88H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+56] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+64] mov rdx, gword ptr [rsp+98H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+72] mov rdx, gword ptr [rsp+A0H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+80] mov rdx, gword ptr [rsp+A8H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+88] mov rdx, gword ptr [rsp+B0H] call CORINFO_HELP_ASSIGN_REF mov rbp, qword ptr [rsp+B8H] mov qword ptr [rsi+152], rbp mov ebp, dword ptr [rsp+C0H] mov byte ptr [rsi+174], bpl lea rcx, bword ptr [rsi+112] mov rdx, gword ptr [rsp+C8H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+96] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov r9, 0xD1FFAB1E mov r8, gword ptr [r9] mov r9, gword ptr [rsi+96] mov rcx, rdi mov rdx, 0xD1FFAB1E cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):__Canon:this lea rcx, bword ptr [rsi+120] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov r8, 0xD1FFAB1E mov rdx, gword ptr [r8] mov r8, gword ptr [rsi+96] mov rcx, rdi call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):bool:this mov byte ptr [rsi+172], al mov r8, 0xD1FFAB1E ;; bbWeight=1 PerfScore 49.50 G_M46265_IG03: mov rdx, gword ptr [r8] mov r8, gword ptr [rsi+96] mov rcx, rdi call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this mov dword ptr [rsi+160], eax mov r8, 0xD1FFAB1E mov rdx, gword ptr [r8] mov r8, gword ptr [rsi+96] mov rcx, rdi call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this mov dword ptr [rsi+164], eax mov r8, 0xD1FFAB1E mov rdx, gword ptr [r8] mov r8, gword ptr [rsi+96] mov rcx, rdi call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):bool:this mov byte ptr [rsi+173], al mov r8, 0xD1FFAB1E mov rdx, gword ptr [r8] mov r8, gword ptr [rsi+96] mov rcx, rdi call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this mov dword ptr [rsi+168], eax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rdi+16] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+136] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov rdx, rsi call EnginePilotStage:.ctor(IEngine):this lea rcx, bword ptr [rsi+128] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov rdx, rsi call EngineActualStage:.ctor(IEngine):this lea rcx, bword ptr [rsi+144] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 42.25 G_M46265_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 605, prolog size 8, PerfScore 161.50, (MethodHash=dbad4b46) for method Engine:.ctor(IHost,IResolver,Action,Action,Action,Action`1,Action`1,Job,Action,Action,Action,Action,long,bool,String):this ; ============================================================ ; Assembly listing for method CharacteristicObject:ResolveValue(Characteristic`1,IResolver):__Canon:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rdi this class-hnd ; V01 TypeCtx [V01,T00] ( 5, 4.25) long -> rdx ; V02 arg1 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg2 [V03,T01] ( 4, 4 ) ref -> rsi class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 3, 3 ) long -> r8 "spilling Runtime Lookup tree" ; V06 tmp2 [V06,T04] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ; V07 cse0 [V07,T06] ( 3, 2.25) long -> r8 "CSE - aggressive" ; ; Lcl frame size = 48 G_M35602_IG01: push rdi push rsi push rbx sub rsp, 48 mov qword ptr [rsp+28H], rdx mov rdi, rcx mov rbx, r8 mov rsi, r9 ;; bbWeight=1 PerfScore 5.00 G_M35602_IG02: mov rcx, qword ptr [rdx+16] mov r8, qword ptr [rcx+16] test r8, r8 je SHORT G_M35602_IG04 ;; bbWeight=1 PerfScore 5.25 G_M35602_IG03: jmp SHORT G_M35602_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M35602_IG04: mov rcx, rdx mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r8, rax ;; bbWeight=0.25 PerfScore 0.44 G_M35602_IG05: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov rcx, rsi mov rdx, rdi mov r8, rbx ;; bbWeight=1 PerfScore 2.25 G_M35602_IG06: add rsp, 48 pop rbx pop rsi pop rdi rex.jmp rax ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 94, prolog size 21, PerfScore 26.59, (MethodHash=b85274ed) for method CharacteristicObject:ResolveValue(Characteristic`1,IResolver):__Canon:this ; ============================================================ ; Assembly listing for method CompositeResolver:Resolve(CharacteristicObject,Characteristic`1):__Canon:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rdi this class-hnd ; V01 TypeCtx [V01,T01] ( 6, 4.50) long -> rsi ; V02 arg1 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 arg2 [V03,T04] ( 3, 3 ) ref -> rbp class-hnd ; V04 loc0 [V04,T05] ( 5, 4 ) ref -> r15 class-hnd exact ; V05 loc1 [V05,T06] ( 4, 4 ) ref -> rdi class-hnd ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T07] ( 2, 4 ) ref -> r15 class-hnd exact "NewObj constructor temp" ; V08 tmp2 [V08,T10] ( 3, 3 ) long -> rcx "spilling Runtime Lookup tree" ; V09 tmp3 [V09,T00] ( 4, 8 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V10 tmp4 [V10,T08] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ; V11 tmp5 [V11,T15] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V12 tmp6 [V12,T11] ( 3, 3 ) long -> r8 "spilling Runtime Lookup tree" ; V13 tmp7 [V13,T09] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ;* V14 tmp8 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V15 tmp9 [V15 ] ( 1, 1 ) bool -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V16 tmp10 [V16,T16] ( 2, 0 ) ref -> rdi "argument with side effect" ; V17 tmp11 [V17,T17] ( 2, 0 ) ref -> rdx "argument with side effect" ; V18 tmp12 [V18,T18] ( 2, 0 ) ref -> rdx "argument with side effect" ; V19 cse0 [V19,T13] ( 3, 2.25) long -> rcx "CSE - aggressive" ; V20 cse1 [V20,T14] ( 3, 2.25) long -> r8 "CSE - aggressive" ; V21 cse2 [V21,T12] ( 3, 3 ) long -> r14 "CSE - aggressive" ; ; Lcl frame size = 56 G_M55557_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax mov qword ptr [rsp+30H], rdx mov rdi, rcx mov rsi, rdx mov rbx, r8 mov rbp, r9 ;; bbWeight=1 PerfScore 9.50 G_M55557_IG02: mov r14, qword ptr [rsi+16] mov rcx, qword ptr [r14+16] test rcx, rcx je SHORT G_M55557_IG04 ;; bbWeight=1 PerfScore 5.25 G_M55557_IG03: jmp SHORT G_M55557_IG05 ;; bbWeight=0.25 PerfScore 0.50 G_M55557_IG04: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M55557_IG05: call CORINFO_HELP_NEWSFAST mov r15, rax lea rcx, bword ptr [r15+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rdi, gword ptr [rdi+8] lea rcx, bword ptr [rbp+8] mov rdx, r15 call CORINFO_HELP_ASSIGN_REF mov r9, 0xD1FFAB1E mov qword ptr [rbp+24], r9 lea r9, [rsp+28H] mov rdx, rdi mov r8, rbp mov rcx, 0xD1FFAB1E call Enumerable:TryGetFirst(IEnumerable`1,Func`2,byref):__Canon mov rdi, rax test rdi, rdi je SHORT G_M55557_IG10 mov r8, qword ptr [r14+24] test r8, r8 je SHORT G_M55557_IG07 ;; bbWeight=1 PerfScore 16.50 G_M55557_IG06: jmp SHORT G_M55557_IG08 ;; bbWeight=0.25 PerfScore 0.50 G_M55557_IG07: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r8, rax ;; bbWeight=0.25 PerfScore 0.44 G_M55557_IG08: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov r8, gword ptr [r15+8] mov rcx, rdi mov rdx, rbx call rax nop ;; bbWeight=1 PerfScore 7.25 G_M55557_IG09: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 G_M55557_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x139B1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rcx, gword ptr [r15+8] cmp dword ptr [rcx], ecx call Characteristic:get_FullId():String:this mov rdx, rax mov rcx, rdi call String:Concat(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 333, prolog size 24, PerfScore 77.93, (MethodHash=d2cf26fa) for method CompositeResolver:Resolve(CharacteristicObject,Characteristic`1):__Canon:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass4_0`1:b__0(IResolver):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r11 class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M57629_IG01: mov r11, rdx ;; bbWeight=1 PerfScore 0.25 G_M57629_IG02: mov rdx, gword ptr [rcx+8] mov rcx, r11 mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=1 PerfScore 4.75 G_M57629_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 36, prolog size 3, PerfScore 10.60, (MethodHash=91711ee2) for method <>c__DisplayClass4_0`1:b__0(IResolver):bool:this ; ============================================================ ; Assembly listing for method Resolver:Resolve(CharacteristicObject,Characteristic`1):__Canon:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 2.50) ref -> rbp this class-hnd ; V01 TypeCtx [V01,T02] ( 4, 3.50) long -> rbx ; V02 arg1 [V02,T01] ( 5, 4 ) ref -> rdi class-hnd ; V03 arg2 [V03,T00] ( 6, 4 ) ref -> rsi class-hnd ; V04 loc0 [V04 ] ( 2, 1 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T05] ( 2, 2 ) ref -> rdx "argument with side effect" ; V08 tmp3 [V08,T07] ( 2, 0 ) ref -> rbx "argument with side effect" ; V09 tmp4 [V09,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp5 [V10,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 rat0 [V11,T04] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 56 G_M57072_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax mov qword ptr [rsp+30H], rdx mov rbp, rcx mov rbx, rdx mov rdi, r8 mov rsi, r9 ;; bbWeight=1 PerfScore 7.50 G_M57072_IG02: mov rcx, rdi mov rdx, rsi cmp dword ptr [rcx], ecx call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax je SHORT G_M57072_IG05 ;; bbWeight=1 PerfScore 4.75 G_M57072_IG03: mov rcx, rsi mov rdx, rdi cmp dword ptr [rcx], ecx call Characteristic`1:get_Item(CharacteristicObject):__Canon:this nop ;; bbWeight=0.50 PerfScore 1.88 G_M57072_IG04: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M57072_IG05: mov rcx, gword ptr [rbp+8] lea r8, [rsp+28H] mov rdx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:TryGetValue(__Canon,byref):bool:this test eax, eax je SHORT G_M57072_IG07 mov rax, gword ptr [rsp+28H] mov rcx, gword ptr [rax+8] mov rdx, rdi call gword ptr [rax+24]Func`2:Invoke(__Canon):__Canon:this mov rdx, rax mov rcx, qword ptr [rbx+16] mov rcx, qword ptr [rcx] call CORINFO_HELP_CHKCASTANY nop ;; bbWeight=0.50 PerfScore 10.50 G_M57072_IG06: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M57072_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x139B1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov rcx, rsi cmp dword ptr [rcx], ecx call Characteristic:get_FullId():String:this mov rdx, rax mov rcx, rbx call String:Concat(String,String):String mov rdx, rax mov rcx, rdi call InvalidOperationException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 224, prolog size 20, PerfScore 50.28, (MethodHash=570c210f) for method Resolver:Resolve(CharacteristicObject,Characteristic`1):__Canon:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass1_0`1:b__0(CharacteristicObject):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 rat0 [V03,T00] ( 3, 6 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 40 G_M61721_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M61721_IG02: mov rax, gword ptr [rcx+8] mov rcx, gword ptr [rax+8] call gword ptr [rax+24]Func`1:Invoke():__Canon:this nop ;; bbWeight=1 PerfScore 7.25 G_M61721_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 21, prolog size 4, PerfScore 10.85, (MethodHash=6fba0ee6) for method <>c__DisplayClass1_0`1:b__0(CharacteristicObject):Object:this ; ============================================================ ; Assembly listing for method <>c:<.ctor>b__1_0():IClock:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M26717_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M26717_IG02: mov rcx, 0xD1FFAB1E mov edx, 70 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=1 PerfScore 3.75 G_M26717_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 42, prolog size 4, PerfScore 9.45, (MethodHash=84e897a2) for method <>c:<.ctor>b__1_0():IClock:this ; ============================================================ ; Assembly listing for method Chronometer:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd exact "NewObj constructor temp" ; V04 tmp4 [V04 ] ( 1, 1 ) struct (16) [rbp-0x28] do-not-enreg[XSB] must-init addr-exposed "struct address for call/obj" ; V05 tmp5 [V05 ] ( 1, 1 ) struct (16) [rbp-0x38] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; ; Lcl frame size = 96 G_M33242_IG01: push rbp sub rsp, 96 vzeroupper lea rbp, [rsp+60H] xor rax, rax mov qword ptr [rbp-38H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-30H], xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 7.33 G_M33242_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call StopwatchClock:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] call DateTimeClock:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-10H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-18H], rax mov rcx, gword ptr [rbp-18H] call WindowsClock:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-18H] call CORINFO_HELP_CHECKED_ASSIGN_REF lea rcx, [rbp-28H] call OSPlatform:get_Windows():OSPlatform ;; bbWeight=1 PerfScore 21.00 G_M33242_IG03: vmovdqu xmm0, xmmword ptr [rbp-28H] vmovdqu xmmword ptr [rbp-38H], xmm0 ;; bbWeight=1 PerfScore 2.00 G_M33242_IG04: lea rcx, bword ptr [rbp-38H] call RuntimeInformation:IsOSPlatform(OSPlatform):bool test eax, eax je SHORT G_M33242_IG06 mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IClock:get_IsAvailable():bool:this test eax, eax je SHORT G_M33242_IG06 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 13.50 G_M33242_IG05: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 G_M33242_IG06: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 3.75 G_M33242_IG07: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 320, prolog size 38, PerfScore 84.18, (MethodHash=34d17e25) for method Chronometer:.cctor() ; ============================================================ ; Assembly listing for method StopwatchClock:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M36672_IG01: ;; bbWeight=1 PerfScore 0.00 G_M36672_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=3ae870bf) for method StopwatchClock:.ctor():this ; ============================================================ ; Assembly listing for method DateTimeClock:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M45712_IG01: ;; bbWeight=1 PerfScore 0.00 G_M45712_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=2dc34d6f) for method DateTimeClock:.ctor():this ; ============================================================ ; Assembly listing for method WindowsClock:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M35086_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M35086_IG02: mov rcx, 0xD1FFAB1E mov edx, 83 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE nop ;; bbWeight=1 PerfScore 1.75 G_M35086_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 30, prolog size 4, PerfScore 6.25, (MethodHash=7a7c76f1) for method WindowsClock:.ctor():this ; ============================================================ ; Assembly listing for method WindowsClock:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M39441_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M39441_IG02: mov rcx, 0xD1FFAB1E call WindowsClock:Initialize(byref):bool mov rdx, 0xD1FFAB1E mov byte ptr [rdx], al ;; bbWeight=1 PerfScore 2.50 G_M39441_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 43, prolog size 10, PerfScore 10.55, (MethodHash=e7f965ee) for method WindowsClock:.cctor() ; ============================================================ ; Assembly listing for method WindowsClock:Initialize(byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4 ) byref -> [rbp+0x10] EH do-not-enreg[] EH-live ; V01 loc0 [V01 ] ( 1, 1 ) long -> [rbp-0x08] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V02 loc1 [V02,T02] ( 3, 2 ) bool -> [rbp-0x0C] EH do-not-enreg[] EH-live ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04 ] ( 2, 4 ) struct (16) [rbp-0x20] do-not-enreg[XS] must-init addr-exposed "struct address for call/obj" ; V05 tmp2 [V05,T01] ( 3, 3 ) int -> rax ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V08 tmp5 [V08 ] ( 1, 2 ) ref -> [rbp-0x20] do-not-enreg[X] addr-exposed V04._osPlatform(offs=0x00) P-DEP "field V04._osPlatform (fldOffset=0x0)" ; V09 tmp6 [V09 ] ( 2, 3 ) bool -> [rbp-0x18] do-not-enreg[X] addr-exposed V04.k__BackingField(offs=0x08) P-DEP "field V04.k__BackingField (fldOffset=0x8)" ;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref V07._osPlatform(offs=0x00) P-INDEP "field V07._osPlatform (fldOffset=0x0)" ; V11 tmp8 [V11,T03] ( 2, 2 ) bool -> rax V07.k__BackingField(offs=0x08) P-INDEP "field V07.k__BackingField (fldOffset=0x8)" ; V12 PSPSym [V12 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 80 G_M640_IG01: push rbp sub rsp, 80 lea rbp, [rsp+50H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 mov qword ptr [rbp-30H], rsp mov bword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 6.08 G_M640_IG02: mov rcx, 0xD1FFAB1E mov edx, 83 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE lea rcx, bword ptr [rbp-20H] call OSPlatform:get_Windows():OSPlatform movzx rax, byte ptr [rbp-18H] test al, al jne SHORT G_M640_IG04 mov rax, bword ptr [rbp+10H] xor rcx, rcx mov qword ptr [rax], rcx xor eax, eax ;; bbWeight=1 PerfScore 7.75 G_M640_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 G_M640_IG04: mov rcx, bword ptr [rbp+10H] call WindowsClock:QueryPerformanceFrequency(byref):bool test eax, eax je SHORT G_M640_IG05 lea rcx, [rbp-08H] call WindowsClock:QueryPerformanceCounter(byref):bool jmp SHORT G_M640_IG06 ;; bbWeight=1 PerfScore 6.75 G_M640_IG05: xor eax, eax ;; bbWeight=1 PerfScore 0.25 G_M640_IG06: movzx rax, al mov dword ptr [rbp-0CH], eax ;; bbWeight=1 PerfScore 1.25 G_M640_IG07: mov eax, dword ptr [rbp-0CH] ;; bbWeight=1 PerfScore 1.00 G_M640_IG08: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 G_M640_IG09: push rbp sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=0 PerfScore 0.00 G_M640_IG10: mov rax, bword ptr [rbp+10H] xor rdx, rdx mov qword ptr [rax], rdx mov dword ptr [rbp-0CH], edx lea rax, G_M640_IG07 ;; bbWeight=0 PerfScore 0.00 G_M640_IG11: add rsp, 48 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 170, prolog size 32, PerfScore 44.38, (MethodHash=162ffd7f) for method WindowsClock:Initialize(byref):bool ; ============================================================ ; Assembly listing for method OSPlatform:get_Windows():OSPlatform ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T00] ( 4, 4 ) byref -> rbx ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M46957_IG01: push rdi push rsi push rbx sub rsp, 32 mov rbx, rcx ;; bbWeight=1 PerfScore 3.50 G_M46957_IG02: mov rcx, 0xD1FFAB1E mov edx, 13 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rsi, gword ptr [rax] add rsi, 8 mov rdi, rbx call CORINFO_HELP_ASSIGN_BYREF movsq mov rax, rbx ;; bbWeight=1 PerfScore 6.50 G_M46957_IG03: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 68, prolog size 7, PerfScore 19.55, (MethodHash=64744892) for method OSPlatform:get_Windows():OSPlatform ; ============================================================ ; Assembly listing for method OSPlatform:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) struct (16) [rbp-0x20] do-not-enreg[XSB] must-init addr-exposed "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) struct (16) [rbp-0x30] do-not-enreg[XSB] must-init addr-exposed "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) struct (16) [rbp-0x40] do-not-enreg[XSB] must-init addr-exposed "NewObj constructor temp" ; V04 tmp4 [V04 ] ( 1, 1 ) struct (16) [rbp-0x50] do-not-enreg[XSB] must-init addr-exposed "NewObj constructor temp" ; V05 tmp5 [V05 ] ( 1, 1 ) struct (16) [rbp-0x60] do-not-enreg[XSB] must-init addr-exposed "NewObj constructor temp" ; V06 tmp6 [V06 ] ( 1, 1 ) struct (16) [rbp-0x70] do-not-enreg[XSB] must-init addr-exposed "NewObj constructor temp" ; V07 tmp7 [V07 ] ( 1, 1 ) struct (16) [rbp-0x80] do-not-enreg[XSB] must-init addr-exposed "NewObj constructor temp" ; V08 tmp8 [V08 ] ( 1, 1 ) struct (16) [rbp-0x90] do-not-enreg[XSB] must-init addr-exposed "NewObj constructor temp" ; V09 tmp9 [V09 ] ( 1, 1 ) struct (16) [rbp-0xA0] do-not-enreg[XSB] must-init addr-exposed "NewObj constructor temp" ; V10 tmp10 [V10 ] ( 1, 1 ) struct (16) [rbp-0xB0] do-not-enreg[XSB] must-init addr-exposed "NewObj constructor temp" ; ; Lcl frame size = 192 G_M20389_IG01: push rbp push rdi push rsi sub rsp, 192 vzeroupper lea rbp, [rsp+D0H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-B0H], xmm4 mov rax, -144 vmovdqa xmmword ptr [rbp+rax-10H], xmm4 vmovdqa xmmword ptr [rax+rbp], xmm4 vmovdqa xmmword ptr [rbp+rax+10H], xmm4 add rax, 48 jne SHORT -5 instr ;; bbWeight=1 PerfScore 10.58 G_M20389_IG02: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-20H], xmm0 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rbp-20H] call OSPlatform:.ctor(String):this mov rax, 0xD1FFAB1E mov rdi, gword ptr [rax] add rdi, 8 lea rsi, bword ptr [rbp-20H] call CORINFO_HELP_ASSIGN_BYREF movsq vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-30H], xmm0 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rbp-30H] call OSPlatform:.ctor(String):this mov rax, 0xD1FFAB1E mov rdi, gword ptr [rax] add rdi, 8 lea rsi, bword ptr [rbp-30H] call CORINFO_HELP_ASSIGN_BYREF movsq vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-40H], xmm0 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rbp-40H] call OSPlatform:.ctor(String):this mov rax, 0xD1FFAB1E mov rdi, gword ptr [rax] add rdi, 8 lea rsi, bword ptr [rbp-40H] call CORINFO_HELP_ASSIGN_BYREF movsq vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-50H], xmm0 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rbp-50H] call OSPlatform:.ctor(String):this mov rax, 0xD1FFAB1E mov rdi, gword ptr [rax] add rdi, 8 lea rsi, bword ptr [rbp-50H] call CORINFO_HELP_ASSIGN_BYREF movsq vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-60H], xmm0 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rbp-60H] ;; bbWeight=1 PerfScore 44.42 G_M20389_IG03: call OSPlatform:.ctor(String):this mov rax, 0xD1FFAB1E mov rdi, gword ptr [rax] add rdi, 8 lea rsi, bword ptr [rbp-60H] call CORINFO_HELP_ASSIGN_BYREF movsq vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-70H], xmm0 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rbp-70H] call OSPlatform:.ctor(String):this mov rax, 0xD1FFAB1E mov rdi, gword ptr [rax] add rdi, 8 lea rsi, bword ptr [rbp-70H] call CORINFO_HELP_ASSIGN_BYREF movsq vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-80H], xmm0 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rbp-80H] call OSPlatform:.ctor(String):this mov rax, 0xD1FFAB1E mov rdi, gword ptr [rax] add rdi, 8 lea rsi, bword ptr [rbp-80H] call CORINFO_HELP_ASSIGN_BYREF movsq vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-90H], xmm0 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rbp-90H] call OSPlatform:.ctor(String):this mov rax, 0xD1FFAB1E mov rdi, gword ptr [rax] add rdi, 8 lea rsi, bword ptr [rbp-90H] call CORINFO_HELP_ASSIGN_BYREF movsq vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-A0H], xmm0 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rbp-A0H] call OSPlatform:.ctor(String):this mov rax, 0xD1FFAB1E mov rdi, gword ptr [rax] add rdi, 8 lea rsi, bword ptr [rbp-A0H] ;; bbWeight=1 PerfScore 44.33 G_M20389_IG04: call CORINFO_HELP_ASSIGN_BYREF movsq vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-B0H], xmm0 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rbp-B0H] call OSPlatform:.ctor(String):this mov rax, 0xD1FFAB1E mov rdi, gword ptr [rax] add rdi, 8 lea rsi, bword ptr [rbp-B0H] call CORINFO_HELP_ASSIGN_BYREF movsq ;; bbWeight=1 PerfScore 12.08 G_M20389_IG05: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 ; Total bytes of code 691, prolog size 66, PerfScore 186.02, (MethodHash=4a91b05a) for method OSPlatform:.cctor() ; ============================================================ ; Assembly listing for method OSPlatform:.ctor(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) byref -> rdi this ; V01 arg1 [V01,T00] ( 6, 6 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp3 [V05,T04] ( 2, 0 ) ref -> rdx "argument with side effect" ; V06 tmp4 [V06,T05] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp5 [V07,T06] ( 2, 0 ) ref -> rdi "argument with side effect" ; V08 tmp6 [V08,T07] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M29679_IG01: push rdi push rsi sub rsp, 40 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 2.75 G_M29679_IG02: test rsi, rsi je SHORT G_M29679_IG06 ;; bbWeight=1 PerfScore 1.25 G_M29679_IG03: cmp dword ptr [rsi+8], 0 je SHORT G_M29679_IG07 ;; bbWeight=1 PerfScore 3.00 G_M29679_IG04: mov rcx, rdi mov rdx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rsi mov r8d, 5 call String:Equals(String,int):bool:this mov byte ptr [rdi+8], al ;; bbWeight=1 PerfScore 6.25 G_M29679_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M29679_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 409 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M29679_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 7 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 409 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 222, prolog size 6, PerfScore 37.70, (MethodHash=8ebe8c10) for method OSPlatform:.ctor(String):this ; ============================================================ ; Assembly listing for method String:Equals(String,int):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 9, 6 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 10, 6.50) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 8, 5 ) int -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T10] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T06] ( 2, 2 ) ref -> rcx class-hnd exact "impAppendStmt" ; V06 tmp3 [V06,T07] ( 2, 2 ) ref -> rcx class-hnd "impAppendStmt" ;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V08 tmp5 [V08,T08] ( 2, 2 ) byref -> rcx "Inlining Arg" ; V09 tmp6 [V09,T09] ( 2, 2 ) byref -> rdx "Inlining Arg" ; V10 tmp7 [V10,T04] ( 3, 3 ) int -> rbp "Single return block return value" ; V11 tmp8 [V11,T11] ( 2, 0 ) ref -> rcx "argument with side effect" ; V12 tmp9 [V12,T12] ( 2, 0 ) ref -> rdi "argument with side effect" ; V13 tmp10 [V13,T13] ( 2, 0 ) ref -> r8 "argument with side effect" ; V14 cse0 [V14,T05] ( 5, 2.50) int -> rbp "CSE - aggressive" ; V15 rat0 [V15,T03] ( 3, 3 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 40 G_M23209_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rdi, rcx mov rsi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 5.00 G_M23209_IG02: cmp rdi, rsi jne SHORT G_M23209_IG06 ;; bbWeight=1 PerfScore 1.25 G_M23209_IG03: cmp ebx, 5 ja G_M23209_IG20 ;; bbWeight=0.50 PerfScore 0.63 G_M23209_IG04: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M23209_IG05: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M23209_IG06: test rsi, rsi jne SHORT G_M23209_IG09 cmp ebx, 5 ja G_M23209_IG20 ;; bbWeight=0.50 PerfScore 1.25 G_M23209_IG07: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M23209_IG08: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M23209_IG09: cmp ebx, 5 ja G_M23209_IG21 mov eax, ebx lea rdx, [reloc @RWD00] mov edx, dword ptr [rdx+4*rax] lea rcx, G_M23209_IG02 add rdx, rcx jmp rdx ;; bbWeight=0.50 PerfScore 3.63 G_M23209_IG10: call CultureInfo:get_CurrentCulture():CultureInfo mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+48]CultureInfo:get_CompareInfo():CompareInfo:this mov rcx, rax mov r9d, ebx and r9d, 1 mov rdx, rdi mov r8, rsi cmp dword ptr [rcx], ecx call CompareInfo:Compare(String,String,int):int:this test eax, eax sete bpl movzx rbp, bpl jmp SHORT G_M23209_IG18 ;; bbWeight=0.50 PerfScore 8.00 G_M23209_IG11: mov r9, 0xD1FFAB1E mov rcx, gword ptr [r9] mov r9d, ebx and r9d, 1 mov rdx, rdi mov r8, rsi cmp dword ptr [rcx], ecx call CompareInfo:Compare(String,String,int):int:this test eax, eax sete bpl movzx rbp, bpl jmp SHORT G_M23209_IG18 ;; bbWeight=0.50 PerfScore 4.88 G_M23209_IG12: mov ebp, dword ptr [rdi+8] cmp ebp, dword ptr [rsi+8] jne G_M23209_IG07 ;; bbWeight=0.50 PerfScore 2.50 G_M23209_IG13: lea rcx, bword ptr [rdi+12] lea rdx, bword ptr [rsi+12] movsxd r8, ebp add r8, r8 ;; bbWeight=0.50 PerfScore 0.75 G_M23209_IG14: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp SpanHelpers:SequenceEqual(byref,byref,long):bool ;; bbWeight=0.50 PerfScore 2.13 G_M23209_IG15: mov ebp, dword ptr [rdi+8] cmp ebp, dword ptr [rsi+8] jne G_M23209_IG07 ;; bbWeight=0.50 PerfScore 2.50 G_M23209_IG16: mov rcx, rdi mov rdx, rsi ;; bbWeight=0.50 PerfScore 0.25 G_M23209_IG17: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp String:EqualsOrdinalIgnoreCase(String,String):bool ;; bbWeight=0.50 PerfScore 2.13 G_M23209_IG18: movzx rax, bpl ;; bbWeight=0.50 PerfScore 0.13 G_M23209_IG19: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M23209_IG20: mov ecx, 24 mov edx, 41 call ThrowHelper:ThrowArgumentException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 G_M23209_IG21: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xF065 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1910 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M23209_IG10 - G_M23209_IG02 dd G_M23209_IG10 - G_M23209_IG02 dd G_M23209_IG11 - G_M23209_IG02 dd G_M23209_IG11 - G_M23209_IG02 dd G_M23209_IG12 - G_M23209_IG02 dd G_M23209_IG15 - G_M23209_IG02 ; Total bytes of code 394, prolog size 17, PerfScore 79.53, (MethodHash=1a45a556) for method String:Equals(String,int):bool:this ; ============================================================ ; Assembly listing for method String:EqualsOrdinalIgnoreCase(String,String):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) byref -> rcx "impAppendStmt" ; ; Lcl frame size = 0 G_M7884_IG01: ;; bbWeight=1 PerfScore 0.00 G_M7884_IG02: cmp dword ptr [rcx], ecx add rcx, 12 mov r8d, dword ptr [rdx+8] add rdx, 12 ;; bbWeight=1 PerfScore 4.50 G_M7884_IG03: jmp CompareInfo:EqualsOrdinalIgnoreCase(byref,byref,int):bool ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 19, prolog size 0, PerfScore 8.40, (MethodHash=f6f7e133) for method String:EqualsOrdinalIgnoreCase(String,String):bool ; ============================================================ ; Assembly listing for method ILStubClass:IL_STUB_PInvoke(byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 4 ) byref -> rsi ;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ; V02 loc1 [V02 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned ; V03 loc2 [V03,T05] ( 2, 2 ) bool -> rax ; V04 loc3 [V04,T06] ( 2, 2 ) int -> rax ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06 ] ( 3, 3 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "stub argument" ; V07 tmp2 [V07,T02] ( 2, 4 ) long -> rax "impImportIndirectCall" ; V08 tmp3 [V08,T03] ( 2, 4 ) int -> rax "Single return block return value" ; V09 FramesRoot [V09,T00] ( 6, 6 ) long -> rdi "Pinvoke FrameListRoot" ; V10 PInvokeFrame [V10 ] ( 8, 8 ) blk (72) [rbp-0x90] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V11 tmp6 [V11,T04] ( 2, 4 ) long -> rcx "Cast away GC" ; ; Lcl frame size = 120 G_M49009_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 120 lea rbp, [rsp+B0H] mov qword ptr [rbp-48H], r10 xor rdx, rdx mov qword ptr [rbp-40H], rdx mov rsi, rcx ;; bbWeight=1 PerfScore 11.25 G_M49009_IG02: lea rcx, [rbp-88H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rcx, rsp mov qword ptr [rbp-68H], rcx mov rcx, rbp mov qword ptr [rbp-58H], rcx lea rcx, bword ptr [rbp-88H] mov qword ptr [rdi+16], rcx mov bword ptr [rbp-40H], rsi mov rcx, qword ptr [rbp-48H] mov rcx, qword ptr [rcx+32] mov rax, qword ptr [rcx] mov rcx, rsi mov rdx, qword ptr [rbp-48H] mov qword ptr [rbp-78H], rdx lea rdx, G_M49009_IG04 mov qword ptr [rbp-60H], rdx mov byte ptr [rdi+12], 0 ;; bbWeight=1 PerfScore 17.25 G_M49009_IG03: call rax ;; bbWeight=1 PerfScore 3.00 G_M49009_IG04: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M49009_IG05 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M49009_IG05: test eax, eax setne al movzx rax, al ;; bbWeight=1 PerfScore 1.50 G_M49009_IG06: movzx rax, al mov rdx, bword ptr [rbp-80H] mov qword ptr [rdi+16], rdx ;; bbWeight=1 PerfScore 2.25 G_M49009_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 190, prolog size 34, PerfScore 67.25, (MethodHash=4728408e) for method ILStubClass:IL_STUB_PInvoke(byref):bool ; ============================================================ ; Assembly listing for method RuntimeInformation:IsOSPlatform(OSPlatform):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 6 ) byref -> rcx ld-addr-op ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref V04._osPlatform(offs=0x00) P-INDEP "field V00._osPlatform (fldOffset=0x0)" ;* V03 tmp2 [V03 ] ( 0, 0 ) bool -> zero-ref V04.k__BackingField(offs=0x08) P-INDEP "field V00.k__BackingField (fldOffset=0x8)" ;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; ; Lcl frame size = 0 G_M47103_IG01: ;; bbWeight=1 PerfScore 0.00 G_M47103_IG02: movzx rax, byte ptr [rcx+8] ;; bbWeight=1 PerfScore 2.00 G_M47103_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=37044800) for method RuntimeInformation:IsOSPlatform(OSPlatform):bool ; ============================================================ ; Assembly listing for method WindowsClock:get_IsAvailable():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M24820_IG01: ;; bbWeight=1 PerfScore 0.00 G_M24820_IG02: mov eax, 1 ;; bbWeight=1 PerfScore 0.25 G_M24820_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 6, prolog size 0, PerfScore 1.85, (MethodHash=bcee9f0b) for method WindowsClock:get_IsAvailable():bool:this ; ============================================================ ; Assembly listing for method CharacteristicObject:ResolveValue(Characteristic`1,IResolver):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd ; V02 arg2 [V02,T00] ( 4, 4 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ; ; Lcl frame size = 32 G_M54577_IG01: push rdi push rsi push rbx sub rsp, 32 mov rdi, rcx mov rbx, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 4.00 G_M54577_IG02: mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov rcx, rsi mov rdx, rdi mov r8, rbx ;; bbWeight=1 PerfScore 2.50 G_M54577_IG03: add rsp, 32 pop rbx pop rsi pop rdi rex.jmp rax ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 63, prolog size 16, PerfScore 16.55, (MethodHash=c7152ace) for method CharacteristicObject:ResolveValue(Characteristic`1,IResolver):bool:this ; ============================================================ ; Assembly listing for method CompositeResolver:Resolve(CharacteristicObject,Characteristic`1):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T04] ( 5, 4 ) ref -> rbp class-hnd exact ; V04 loc1 [V04,T05] ( 4, 4 ) ref -> rsi class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V08 tmp3 [V08,T07] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ; V09 tmp4 [V09,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp5 [V10,T08] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V12 tmp7 [V12 ] ( 1, 1 ) bool -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V13 tmp8 [V13,T10] ( 2, 0 ) ref -> rdi "argument with side effect" ; V14 tmp9 [V14,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; V15 tmp10 [V15,T12] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M21958_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 6.25 G_M21958_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov r9, 0xD1FFAB1E mov qword ptr [rbx+24], r9 lea r9, [rsp+20H] mov rdx, rsi mov r8, rbx mov rcx, 0xD1FFAB1E call Enumerable:TryGetFirst(IEnumerable`1,Func`2,byref):__Canon mov rsi, rax test rsi, rsi je SHORT G_M21958_IG04 mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov r8, gword ptr [rbp+8] mov rcx, rsi mov rdx, rdi call rax nop ;; bbWeight=1 PerfScore 21.00 G_M21958_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M21958_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x139B1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rcx, gword ptr [rbp+8] cmp dword ptr [rcx], ecx call Characteristic:get_FullId():String:this mov rdx, rax mov rcx, rdi call String:Concat(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 269, prolog size 15, PerfScore 57.40, (MethodHash=9598aa39) for method CompositeResolver:Resolve(CharacteristicObject,Characteristic`1):bool:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass4_0`1:b__0(IResolver):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r11 class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M57629_IG01: mov r11, rdx ;; bbWeight=1 PerfScore 0.25 G_M57629_IG02: mov rdx, gword ptr [rcx+8] mov rcx, r11 mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=1 PerfScore 4.75 G_M57629_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 36, prolog size 3, PerfScore 10.60, (MethodHash=91711ee2) for method <>c__DisplayClass4_0`1:b__0(IResolver):bool:this ; ============================================================ ; Assembly listing for method Resolver:Resolve(CharacteristicObject,Characteristic`1):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) ref -> rbx this class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T00] ( 7, 4.50) ref -> rsi class-hnd ; V03 loc0 [V03 ] ( 2, 1 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T06] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T03] ( 4, 3.50) ref -> rsi "inline UNBOX clone1" ; V07 tmp3 [V07,T04] ( 4, 3.50) ref -> rbx "inline UNBOX clone1" ; V08 tmp4 [V08,T07] ( 2, 0 ) ref -> rbx "argument with side effect" ; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 rat0 [V11,T05] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 48 G_M31443_IG01: push rdi push rsi push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov rbx, rcx mov rdi, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 5.25 G_M31443_IG02: mov rcx, rdi mov rdx, rsi cmp dword ptr [rcx], ecx call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax je SHORT G_M31443_IG07 ;; bbWeight=1 PerfScore 4.75 G_M31443_IG03: cmp dword ptr [rsi], esi mov rcx, rdi mov rdx, rsi call CharacteristicObject:GetValue(Characteristic):Object:this mov rbx, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rbx], rdx je SHORT G_M31443_IG05 ;; bbWeight=0.50 PerfScore 3.50 G_M31443_IG04: mov rdx, rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M31443_IG05: movzx rax, byte ptr [rbx+8] ;; bbWeight=0.50 PerfScore 1.00 G_M31443_IG06: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M31443_IG07: mov rcx, gword ptr [rbx+8] lea r8, [rsp+28H] mov rdx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:TryGetValue(__Canon,byref):bool:this test eax, eax je SHORT G_M31443_IG11 mov rax, gword ptr [rsp+28H] mov rcx, gword ptr [rax+8] mov rdx, rdi call gword ptr [rax+24]Func`2:Invoke(__Canon):__Canon:this mov rsi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rsi], rdx je SHORT G_M31443_IG09 ;; bbWeight=0.50 PerfScore 9.50 G_M31443_IG08: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M31443_IG09: movzx rax, byte ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.00 G_M31443_IG10: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M31443_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x139B1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov rcx, rsi cmp dword ptr [rcx], ecx call Characteristic:get_FullId():String:this mov rdx, rax mov rcx, rbx call String:Concat(String,String):String mov rdx, rax mov rcx, rdi call InvalidOperationException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 276, prolog size 14, PerfScore 56.10, (MethodHash=0799852c) for method Resolver:Resolve(CharacteristicObject,Characteristic`1):bool:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass1_0`1:b__0(CharacteristicObject):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V04 rat0 [V04,T01] ( 3, 6 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 40 G_M61721_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M61721_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rax, gword ptr [rsi+8] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`1:Invoke():bool:this mov byte ptr [rdi+8], al mov rax, rdi ;; bbWeight=1 PerfScore 9.75 G_M61721_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 51, prolog size 6, PerfScore 19.60, (MethodHash=6fba0ee6) for method <>c__DisplayClass1_0`1:b__0(CharacteristicObject):Object:this ; ============================================================ ; Assembly listing for method <>c:<.ctor>b__1_3():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M49297_IG01: ;; bbWeight=1 PerfScore 0.00 G_M49297_IG02: mov eax, 1 ;; bbWeight=1 PerfScore 0.25 G_M49297_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 6, prolog size 0, PerfScore 1.85, (MethodHash=3e433f6e) for method <>c:<.ctor>b__1_3():bool:this ; ============================================================ ; Assembly listing for method CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd ; V02 arg2 [V02,T00] ( 4, 4 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ; ; Lcl frame size = 32 G_M12108_IG01: push rdi push rsi push rbx sub rsp, 32 mov rdi, rcx mov rbx, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 4.00 G_M12108_IG02: mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov rcx, rsi mov rdx, rdi mov r8, rbx ;; bbWeight=1 PerfScore 2.50 G_M12108_IG03: add rsp, 32 pop rbx pop rsi pop rdi rex.jmp rax ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 63, prolog size 16, PerfScore 16.55, (MethodHash=1d1cd0b3) for method CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this ; ============================================================ ; Assembly listing for method CompositeResolver:Resolve(CharacteristicObject,Characteristic`1):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T04] ( 5, 4 ) ref -> rbp class-hnd exact ; V04 loc1 [V04,T05] ( 4, 4 ) ref -> rsi class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V08 tmp3 [V08,T07] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ; V09 tmp4 [V09,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp5 [V10,T08] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V12 tmp7 [V12 ] ( 1, 1 ) bool -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V13 tmp8 [V13,T10] ( 2, 0 ) ref -> rdi "argument with side effect" ; V14 tmp9 [V14,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; V15 tmp10 [V15,T12] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M33051_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 6.25 G_M33051_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov r9, 0xD1FFAB1E mov qword ptr [rbx+24], r9 lea r9, [rsp+20H] mov rdx, rsi mov r8, rbx mov rcx, 0xD1FFAB1E call Enumerable:TryGetFirst(IEnumerable`1,Func`2,byref):__Canon mov rsi, rax test rsi, rsi je SHORT G_M33051_IG04 mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov r8, gword ptr [rbp+8] mov rcx, rsi mov rdx, rdi call rax nop ;; bbWeight=1 PerfScore 21.00 G_M33051_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M33051_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x139B1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rcx, gword ptr [rbp+8] cmp dword ptr [rcx], ecx call Characteristic:get_FullId():String:this mov rdx, rax mov rcx, rdi call String:Concat(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 269, prolog size 15, PerfScore 57.40, (MethodHash=37f27ee4) for method CompositeResolver:Resolve(CharacteristicObject,Characteristic`1):int:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass4_0`1:b__0(IResolver):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r11 class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M57629_IG01: mov r11, rdx ;; bbWeight=1 PerfScore 0.25 G_M57629_IG02: mov rdx, gword ptr [rcx+8] mov rcx, r11 mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=1 PerfScore 4.75 G_M57629_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 36, prolog size 3, PerfScore 10.60, (MethodHash=91711ee2) for method <>c__DisplayClass4_0`1:b__0(IResolver):bool:this ; ============================================================ ; Assembly listing for method Resolver:Resolve(CharacteristicObject,Characteristic`1):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) ref -> rbx this class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T00] ( 7, 4.50) ref -> rsi class-hnd ; V03 loc0 [V03 ] ( 2, 1 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T06] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T03] ( 4, 3.50) ref -> rsi "inline UNBOX clone1" ; V07 tmp3 [V07,T04] ( 4, 3.50) ref -> rbx "inline UNBOX clone1" ; V08 tmp4 [V08,T07] ( 2, 0 ) ref -> rbx "argument with side effect" ; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 rat0 [V11,T05] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 48 G_M41454_IG01: push rdi push rsi push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov rbx, rcx mov rdi, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 5.25 G_M41454_IG02: mov rcx, rdi mov rdx, rsi cmp dword ptr [rcx], ecx call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax je SHORT G_M41454_IG07 ;; bbWeight=1 PerfScore 4.75 G_M41454_IG03: cmp dword ptr [rsi], esi mov rcx, rdi mov rdx, rsi call CharacteristicObject:GetValue(Characteristic):Object:this mov rbx, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rbx], rdx je SHORT G_M41454_IG05 ;; bbWeight=0.50 PerfScore 3.50 G_M41454_IG04: mov rdx, rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41454_IG05: mov eax, dword ptr [rbx+8] ;; bbWeight=0.50 PerfScore 1.00 G_M41454_IG06: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M41454_IG07: mov rcx, gword ptr [rbx+8] lea r8, [rsp+28H] mov rdx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:TryGetValue(__Canon,byref):bool:this test eax, eax je SHORT G_M41454_IG11 mov rax, gword ptr [rsp+28H] mov rcx, gword ptr [rax+8] mov rdx, rdi call gword ptr [rax+24]Func`2:Invoke(__Canon):__Canon:this mov rsi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rsi], rdx je SHORT G_M41454_IG09 ;; bbWeight=0.50 PerfScore 9.50 G_M41454_IG08: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41454_IG09: mov eax, dword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.00 G_M41454_IG10: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M41454_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x139B1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov rcx, rsi cmp dword ptr [rcx], ecx call Characteristic:get_FullId():String:this mov rdx, rax mov rcx, rbx call String:Concat(String,String):String mov rdx, rax mov rcx, rdi call InvalidOperationException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 274, prolog size 14, PerfScore 55.90, (MethodHash=61135e11) for method Resolver:Resolve(CharacteristicObject,Characteristic`1):int:this ; ============================================================ ; Assembly listing for method Characteristic`1:ResolveValueCore(CharacteristicObject,Object):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 5, 3.50) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 4, 3 ) ref -> r8 class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T09] ( 2, 2 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T03] ( 4, 3.50) ref -> rbx "inline UNBOX clone1" ; V06 tmp3 [V06,T05] ( 3, 3 ) ref -> rbp class-hnd exact "Single-def Box Helper" ; V07 tmp4 [V07,T04] ( 4, 3.50) ref -> rdi "inline UNBOX clone1" ; V08 tmp5 [V08,T06] ( 3, 3 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V09 cse0 [V09,T08] ( 3, 2.50) ref -> rdi "CSE - aggressive" ; V10 rat0 [V10,T07] ( 3, 3 ) ref -> rdi "delegate invoke call" ; ; Lcl frame size = 40 G_M41771_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rdx ;; bbWeight=1 PerfScore 4.50 G_M41771_IG02: mov rdi, gword ptr [rcx+48] test rdi, rdi jne SHORT G_M41771_IG07 ;; bbWeight=1 PerfScore 3.25 G_M41771_IG03: mov rdx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rdi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rdi], rdx je SHORT G_M41771_IG05 ;; bbWeight=0.50 PerfScore 3.50 G_M41771_IG04: mov rdx, rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41771_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST movzx rcx, byte ptr [rdi+8] mov byte ptr [rax+8], cl ;; bbWeight=0.50 PerfScore 2.13 G_M41771_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M41771_IG07: mov rdx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rbx, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rbx], rdx je SHORT G_M41771_IG09 ;; bbWeight=0.50 PerfScore 3.50 G_M41771_IG08: mov rdx, rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41771_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax movzx r8, byte ptr [rbx+8] mov rcx, gword ptr [rdi+8] mov rdx, rsi call qword ptr [rdi+24]Func`3:Invoke(__Canon,bool):bool:this mov byte ptr [rbp+8], al mov rax, rbp ;; bbWeight=0.50 PerfScore 5.00 G_M41771_IG10: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 201, prolog size 8, PerfScore 45.98, (MethodHash=f6005cd4) for method Characteristic`1:ResolveValueCore(CharacteristicObject,Object):Object:this ; ============================================================ ; Assembly listing for method EnginePilotStage:.ctor(IEngine):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 10, 10 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 16, 16 ) ref -> rsi class-hnd ; V02 loc0 [V02 ] ( 4, 4 ) struct ( 8) [rsp+0x30] do-not-enreg[XSFB] addr-exposed ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> rbx class-hnd "non-inline candidate call" ; V05 tmp2 [V05,T03] ( 2, 4 ) ref -> rbp class-hnd exact "non-inline candidate call" ; V06 tmp3 [V06,T04] ( 2, 4 ) ref -> rbx class-hnd "non-inline candidate call" ; V07 tmp4 [V07,T05] ( 2, 4 ) ref -> rbp class-hnd exact "non-inline candidate call" ; V08 tmp5 [V08,T06] ( 2, 4 ) ref -> rbx class-hnd "non-inline candidate call" ; V09 tmp6 [V09,T07] ( 2, 4 ) ref -> rbp class-hnd exact "non-inline candidate call" ; V10 tmp7 [V10,T08] ( 2, 4 ) ref -> rbx class-hnd "non-inline candidate call" ; V11 tmp8 [V11,T09] ( 2, 4 ) ref -> rbp class-hnd exact "non-inline candidate call" ; V12 tmp9 [V12,T10] ( 2, 4 ) ref -> rbx class-hnd "non-inline candidate call" ; V13 tmp10 [V13,T11] ( 2, 4 ) ref -> rbp class-hnd exact "non-inline candidate call" ; V14 tmp11 [V14,T12] ( 2, 4 ) ref -> rbx class-hnd "non-inline candidate call" ; V15 tmp12 [V15,T13] ( 2, 4 ) ref -> rbp class-hnd exact "non-inline candidate call" ; V16 tmp13 [V16,T14] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V17 tmp14 [V17 ] ( 2, 2 ) struct ( 8) [rsp+0x28] do-not-enreg[XSB] addr-exposed ld-addr-op "Inline stloc first use temp" ; V18 tmp15 [V18,T15] ( 2, 4 ) ref -> r8 "argument with side effect" ; V19 tmp16 [V19,T16] ( 2, 4 ) ref -> r8 "argument with side effect" ; V20 tmp17 [V20,T17] ( 2, 4 ) ref -> r8 "argument with side effect" ; V21 tmp18 [V21,T18] ( 2, 4 ) ref -> r8 "argument with side effect" ; V22 tmp19 [V22,T19] ( 2, 4 ) ref -> rcx "argument with side effect" ; V23 tmp20 [V23,T20] ( 2, 4 ) ref -> r8 "argument with side effect" ; V24 tmp21 [V24,T21] ( 2, 4 ) ref -> r9 "argument with side effect" ; ; Lcl frame size = 56 G_M25722_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 vzeroupper mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 5.75 G_M25722_IG02: lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rbx, rax mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_Resolver():IResolver:this mov r8, rax mov rdx, rbp mov rcx, rbx cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this mov dword ptr [rdi+40], eax mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rbx, rax mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_Resolver():IResolver:this mov r8, rax mov rdx, rbp mov rcx, rbx cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):TimeInterval:this mov qword ptr [rdi+48], rax mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rbx, rax mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_Resolver():IResolver:this mov r8, rax mov rdx, rbp mov rcx, rbx cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this mov dword ptr [rdi+44], eax mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rbx, rax mov rcx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 50.25 G_M25722_IG03: mov rbp, gword ptr [rcx] mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_Resolver():IResolver:this mov r8, rax mov rdx, rbp mov rcx, rbx cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):double:this vmovsd qword ptr [rdi+16], xmm0 mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rcx, rax lea rdx, bword ptr [rdi+56] mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValueAsNullable(Characteristic`1):Nullable`1:this mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rbx, rax mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_Resolver():IResolver:this mov r8, rax mov rdx, rbp mov rcx, rbx cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):TimeInterval:this mov qword ptr [rsp+30H], rax lea rcx, bword ptr [rsp+30H] call TimeInterval:ToNanoseconds():double:this vmovsd qword ptr [rdi+24], xmm0 mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rbx, rax mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_Resolver():IResolver:this mov r9, rax mov rcx, rbx mov r8, rbp mov rdx, 0xD1FFAB1E cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):__Canon:this mov rcx, rax ;; bbWeight=1 PerfScore 50.75 G_M25722_IG04: mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IClock:get_Frequency():Frequency:this mov qword ptr [rsp+28H], rax lea rcx, bword ptr [rsp+28H] call Frequency:ToResolution():TimeInterval:this mov qword ptr [rsp+30H], rax vmovsd xmm0, qword ptr [rsp+30H] vmovsd qword ptr [rdi+32], xmm0 ;; bbWeight=1 PerfScore 9.50 G_M25722_IG05: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 683, prolog size 11, PerfScore 188.20, (MethodHash=e3a39b85) for method EnginePilotStage:.ctor(IEngine):this ; ============================================================ ; Assembly listing for method Engine:get_TargetJob():Job:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M21777_IG01: ;; bbWeight=1 PerfScore 0.00 G_M21777_IG02: mov rax, gword ptr [rcx+56] ;; bbWeight=1 PerfScore 2.00 G_M21777_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=fde4aaee) for method Engine:get_TargetJob():Job:this ; ============================================================ ; Assembly listing for method Engine:get_Resolver():IResolver:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M53609_IG01: ;; bbWeight=1 PerfScore 0.00 G_M53609_IG02: mov rax, gword ptr [rcx+96] ;; bbWeight=1 PerfScore 2.00 G_M53609_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=5de02e96) for method Engine:get_Resolver():IResolver:this ; ============================================================ ; Assembly listing for method CharacteristicObject:ResolveValue(Characteristic`1,IResolver):TimeInterval:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd ; V02 arg2 [V02,T00] ( 4, 4 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ; ; Lcl frame size = 32 G_M64949_IG01: push rdi push rsi push rbx sub rsp, 32 mov rdi, rcx mov rbx, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 4.00 G_M64949_IG02: mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov rcx, rsi mov rdx, rdi mov r8, rbx ;; bbWeight=1 PerfScore 2.50 G_M64949_IG03: add rsp, 32 pop rbx pop rsi pop rdi rex.jmp rax ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 63, prolog size 16, PerfScore 16.55, (MethodHash=cf30024a) for method CharacteristicObject:ResolveValue(Characteristic`1,IResolver):TimeInterval:this ; ============================================================ ; Assembly listing for method CompositeResolver:Resolve(CharacteristicObject,Characteristic`1):TimeInterval:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T04] ( 5, 4 ) ref -> rbp class-hnd exact ; V04 loc1 [V04,T05] ( 4, 4 ) ref -> rsi class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V08 tmp3 [V08,T07] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ; V09 tmp4 [V09,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp5 [V10,T08] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V12 tmp7 [V12 ] ( 1, 1 ) bool -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V13 tmp8 [V13,T10] ( 2, 0 ) ref -> rdi "argument with side effect" ; V14 tmp9 [V14,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; V15 tmp10 [V15,T12] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M22338_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 6.25 G_M22338_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov r9, 0xD1FFAB1E mov qword ptr [rbx+24], r9 lea r9, [rsp+20H] mov rdx, rsi mov r8, rbx mov rcx, 0xD1FFAB1E call Enumerable:TryGetFirst(IEnumerable`1,Func`2,byref):__Canon mov rsi, rax test rsi, rsi je SHORT G_M22338_IG04 mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov r8, gword ptr [rbp+8] mov rcx, rsi mov rdx, rdi call rax nop ;; bbWeight=1 PerfScore 21.00 G_M22338_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M22338_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x139B1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rcx, gword ptr [rbp+8] cmp dword ptr [rcx], ecx call Characteristic:get_FullId():String:this mov rdx, rax mov rcx, rdi call String:Concat(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 269, prolog size 15, PerfScore 57.40, (MethodHash=fa88a8bd) for method CompositeResolver:Resolve(CharacteristicObject,Characteristic`1):TimeInterval:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass4_0`1:b__0(IResolver):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r11 class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M57629_IG01: mov r11, rdx ;; bbWeight=1 PerfScore 0.25 G_M57629_IG02: mov rdx, gword ptr [rcx+8] mov rcx, r11 mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=1 PerfScore 4.75 G_M57629_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 36, prolog size 3, PerfScore 10.60, (MethodHash=91711ee2) for method <>c__DisplayClass4_0`1:b__0(IResolver):bool:this ; ============================================================ ; Assembly listing for method Resolver:Resolve(CharacteristicObject,Characteristic`1):TimeInterval:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) ref -> rbx this class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T00] ( 7, 4.50) ref -> rsi class-hnd ; V03 loc0 [V03 ] ( 2, 1 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T06] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T03] ( 4, 3.50) ref -> rsi "inline UNBOX clone1" ; V07 tmp3 [V07,T04] ( 4, 3.50) ref -> rbx "inline UNBOX clone1" ; V08 tmp4 [V08,T07] ( 2, 0 ) ref -> rbx "argument with side effect" ; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 rat0 [V11,T05] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 48 G_M983_IG01: push rdi push rsi push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov rbx, rcx mov rdi, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 5.25 G_M983_IG02: mov rcx, rdi mov rdx, rsi cmp dword ptr [rcx], ecx call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax je SHORT G_M983_IG07 ;; bbWeight=1 PerfScore 4.75 G_M983_IG03: cmp dword ptr [rsi], esi mov rcx, rdi mov rdx, rsi call CharacteristicObject:GetValue(Characteristic):Object:this mov rbx, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rbx], rdx je SHORT G_M983_IG05 ;; bbWeight=0.50 PerfScore 3.50 G_M983_IG04: mov rdx, rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M983_IG05: mov rax, qword ptr [rbx+8] ;; bbWeight=0.50 PerfScore 1.00 G_M983_IG06: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M983_IG07: mov rcx, gword ptr [rbx+8] lea r8, [rsp+28H] mov rdx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:TryGetValue(__Canon,byref):bool:this test eax, eax je SHORT G_M983_IG11 mov rax, gword ptr [rsp+28H] mov rcx, gword ptr [rax+8] mov rdx, rdi call gword ptr [rax+24]Func`2:Invoke(__Canon):__Canon:this mov rsi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rsi], rdx je SHORT G_M983_IG09 ;; bbWeight=0.50 PerfScore 9.50 G_M983_IG08: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M983_IG09: mov rax, qword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.00 G_M983_IG10: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M983_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x139B1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov rcx, rsi cmp dword ptr [rcx], ecx call Characteristic:get_FullId():String:this mov rdx, rax mov rcx, rbx call String:Concat(String,String):String mov rdx, rax mov rcx, rdi call InvalidOperationException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 276, prolog size 14, PerfScore 56.10, (MethodHash=8de6fc28) for method Resolver:Resolve(CharacteristicObject,Characteristic`1):TimeInterval:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass1_0`1:b__0(CharacteristicObject):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V04 rat0 [V04,T01] ( 3, 6 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 40 G_M61721_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M61721_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rax, gword ptr [rsi+8] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`1:Invoke():TimeInterval:this mov qword ptr [rdi+8], rax mov rax, rdi ;; bbWeight=1 PerfScore 9.75 G_M61721_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 52, prolog size 6, PerfScore 19.70, (MethodHash=6fba0ee6) for method <>c__DisplayClass1_0`1:b__0(CharacteristicObject):Object:this ; ============================================================ ; Assembly listing for method <>c:<.ctor>b__6_7():TimeInterval:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 2, 4 ) struct ( 8) [rsp+0x30] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V03 tmp2 [V03,T01] ( 2, 4 ) struct ( 8) [rsp+0x28] do-not-enreg[SFB] "NewObj constructor temp" ; V04 tmp3 [V04,T02] ( 2, 4 ) double -> mm0 "Inlining Arg" ; ; Lcl frame size = 56 G_M52502_IG01: sub rsp, 56 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M52502_IG02: mov rcx, 0xD1FFAB1E mov edx, 80 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] mov rdx, qword ptr [rax+8] mov qword ptr [rsp+30H], rdx vmovsd xmm0, qword ptr [rsp+30H] vmulsd xmm0, xmm0, qword ptr [reloc @RWD08] vmovsd qword ptr [rsp+28H], xmm0 mov rax, qword ptr [rsp+28H] ;; bbWeight=1 PerfScore 15.25 G_M52502_IG03: add rsp, 56 ret ;; bbWeight=1 PerfScore 1.25 RWD00 dq 0000000000000000h RWD08 dq 407F400000000000h ; Total bytes of code 79, prolog size 7, PerfScore 25.95, (MethodHash=22d032e9) for method <>c:<.ctor>b__6_7():TimeInterval:this ; ============================================================ ; Assembly listing for method TimeInterval:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M13324_IG01: push rbp push rsi sub rsp, 40 lea rbp, [rsp+30H] ;; bbWeight=1 PerfScore 2.75 G_M13324_IG02: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov edx, 1 movsxd rdx, edx cmp dword ptr [rcx], ecx call TimeUnit:ToInterval(long):TimeInterval:this mov qword ptr [rsi+8], rax mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov edx, 1 movsxd rdx, edx cmp dword ptr [rcx], ecx call TimeUnit:ToInterval(long):TimeInterval:this mov qword ptr [rsi+8], rax mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov edx, 1 movsxd rdx, edx cmp dword ptr [rcx], ecx call TimeUnit:ToInterval(long):TimeInterval:this mov qword ptr [rsi+8], rax mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov edx, 1 movsxd rdx, edx cmp dword ptr [rcx], ecx call TimeUnit:ToInterval(long):TimeInterval:this mov qword ptr [rsi+8], rax mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov edx, 1 movsxd rdx, edx cmp dword ptr [rcx], ecx call TimeUnit:ToInterval(long):TimeInterval:this mov qword ptr [rsi+8], rax mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov edx, 1 movsxd rdx, edx cmp dword ptr [rcx], ecx call TimeUnit:ToInterval(long):TimeInterval:this mov qword ptr [rsi+8], rax mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] ;; bbWeight=1 PerfScore 58.50 G_M13324_IG03: mov edx, 1 movsxd rdx, edx cmp dword ptr [rcx], ecx call TimeUnit:ToInterval(long):TimeInterval:this mov qword ptr [rsi+8], rax ;; bbWeight=1 PerfScore 4.50 G_M13324_IG04: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 ; Total bytes of code 333, prolog size 11, PerfScore 101.55, (MethodHash=3c91cbf3) for method TimeInterval:.cctor() ; ============================================================ ; Assembly listing for method TimeUnit:ToInterval(long):TimeInterval:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) long -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) struct ( 8) [rsp+0x00] do-not-enreg[SFB] "NewObj constructor temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) double -> zero-ref "Inlining Arg" ; V05 tmp3 [V05,T03] ( 2, 4 ) double -> mm0 "Inlining Arg" ; ; Lcl frame size = 8 G_M2672_IG01: push rax vzeroupper ;; bbWeight=1 PerfScore 2.00 G_M2672_IG02: vxorps xmm0, xmm0 vcvtsi2sd xmm0, rdx vxorps xmm1, xmm1 vcvtsi2sd xmm1, qword ptr [rcx+24] vmulsd xmm0, xmm0, xmm1 vmovsd qword ptr [rsp], xmm0 mov rax, qword ptr [rsp] ;; bbWeight=1 PerfScore 18.17 G_M2672_IG03: add rsp, 8 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 41, prolog size 4, PerfScore 25.92, (MethodHash=7fb2f58f) for method TimeUnit:ToInterval(long):TimeInterval:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass1_0`1:b__0(CharacteristicObject):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V04 rat0 [V04,T01] ( 3, 6 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 40 G_M61721_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M61721_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rax, gword ptr [rsi+8] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`1:Invoke():int:this mov dword ptr [rdi+8], eax mov rax, rdi ;; bbWeight=1 PerfScore 9.75 G_M61721_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 51, prolog size 6, PerfScore 19.60, (MethodHash=6fba0ee6) for method <>c__DisplayClass1_0`1:b__0(CharacteristicObject):Object:this ; ============================================================ ; Assembly listing for method <>c:<.ctor>b__6_8():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M41824_IG01: ;; bbWeight=1 PerfScore 0.00 G_M41824_IG02: mov eax, 4 ;; bbWeight=1 PerfScore 0.25 G_M41824_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 6, prolog size 0, PerfScore 1.85, (MethodHash=59055c9f) for method <>c:<.ctor>b__6_8():int:this ; ============================================================ ; Assembly listing for method CharacteristicObject:ResolveValue(Characteristic`1,IResolver):double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd ; V02 arg2 [V02,T00] ( 4, 4 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ; ; Lcl frame size = 32 G_M37322_IG01: push rdi push rsi push rbx sub rsp, 32 mov rdi, rcx mov rbx, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 4.00 G_M37322_IG02: mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov rcx, rsi mov rdx, rdi mov r8, rbx ;; bbWeight=1 PerfScore 2.50 G_M37322_IG03: add rsp, 32 pop rbx pop rsi pop rdi rex.jmp rax ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 63, prolog size 16, PerfScore 16.55, (MethodHash=57476e35) for method CharacteristicObject:ResolveValue(Characteristic`1,IResolver):double:this ; ============================================================ ; Assembly listing for method CompositeResolver:Resolve(CharacteristicObject,Characteristic`1):double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T04] ( 5, 4 ) ref -> rbp class-hnd exact ; V04 loc1 [V04,T05] ( 4, 4 ) ref -> rsi class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V08 tmp3 [V08,T07] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ; V09 tmp4 [V09,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp5 [V10,T08] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V12 tmp7 [V12 ] ( 1, 1 ) bool -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V13 tmp8 [V13,T10] ( 2, 0 ) ref -> rdi "argument with side effect" ; V14 tmp9 [V14,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; V15 tmp10 [V15,T12] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M39485_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 vzeroupper xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 7.25 G_M39485_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov r9, 0xD1FFAB1E mov qword ptr [rbx+24], r9 lea r9, [rsp+20H] mov rdx, rsi mov r8, rbx mov rcx, 0xD1FFAB1E call Enumerable:TryGetFirst(IEnumerable`1,Func`2,byref):__Canon mov rsi, rax test rsi, rsi je SHORT G_M39485_IG04 mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov r8, gword ptr [rbp+8] mov rcx, rsi mov rdx, rdi call rax nop ;; bbWeight=1 PerfScore 21.00 G_M39485_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M39485_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x139B1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rcx, gword ptr [rbp+8] cmp dword ptr [rcx], ecx call Characteristic:get_FullId():String:this mov rdx, rax mov rcx, rdi call String:Concat(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 272, prolog size 18, PerfScore 58.70, (MethodHash=647d65c2) for method CompositeResolver:Resolve(CharacteristicObject,Characteristic`1):double:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass4_0`1:b__0(IResolver):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r11 class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M57629_IG01: mov r11, rdx ;; bbWeight=1 PerfScore 0.25 G_M57629_IG02: mov rdx, gword ptr [rcx+8] mov rcx, r11 mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=1 PerfScore 4.75 G_M57629_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 36, prolog size 3, PerfScore 10.60, (MethodHash=91711ee2) for method <>c__DisplayClass4_0`1:b__0(IResolver):bool:this ; ============================================================ ; Assembly listing for method Resolver:Resolve(CharacteristicObject,Characteristic`1):double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) ref -> rbx this class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T00] ( 7, 4.50) ref -> rsi class-hnd ; V03 loc0 [V03 ] ( 2, 1 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T06] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T03] ( 4, 3.50) ref -> rsi "inline UNBOX clone1" ; V07 tmp3 [V07,T04] ( 4, 3.50) ref -> rbx "inline UNBOX clone1" ; V08 tmp4 [V08,T07] ( 2, 0 ) ref -> rbx "argument with side effect" ; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 rat0 [V11,T05] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 48 G_M28264_IG01: push rdi push rsi push rbx sub rsp, 48 vzeroupper xor rax, rax mov qword ptr [rsp+28H], rax mov rbx, rcx mov rdi, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 6.25 G_M28264_IG02: mov rcx, rdi mov rdx, rsi cmp dword ptr [rcx], ecx call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax je SHORT G_M28264_IG07 ;; bbWeight=1 PerfScore 4.75 G_M28264_IG03: cmp dword ptr [rsi], esi mov rcx, rdi mov rdx, rsi call CharacteristicObject:GetValue(Characteristic):Object:this mov rbx, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rbx], rdx je SHORT G_M28264_IG05 ;; bbWeight=0.50 PerfScore 3.50 G_M28264_IG04: mov rdx, rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M28264_IG05: vmovsd xmm0, qword ptr [rbx+8] ;; bbWeight=0.50 PerfScore 1.00 G_M28264_IG06: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M28264_IG07: mov rcx, gword ptr [rbx+8] lea r8, [rsp+28H] mov rdx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:TryGetValue(__Canon,byref):bool:this test eax, eax je SHORT G_M28264_IG11 mov rax, gword ptr [rsp+28H] mov rcx, gword ptr [rax+8] mov rdx, rdi call gword ptr [rax+24]Func`2:Invoke(__Canon):__Canon:this mov rsi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rsi], rdx je SHORT G_M28264_IG09 ;; bbWeight=0.50 PerfScore 9.50 G_M28264_IG08: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M28264_IG09: vmovsd xmm0, qword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.00 G_M28264_IG10: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M28264_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x139B1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov rcx, rsi cmp dword ptr [rcx], ecx call Characteristic:get_FullId():String:this mov rdx, rax mov rcx, rbx call String:Concat(String,String):String mov rdx, rax mov rcx, rdi call InvalidOperationException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 281, prolog size 17, PerfScore 57.80, (MethodHash=17429197) for method Resolver:Resolve(CharacteristicObject,Characteristic`1):double:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass1_0`1:b__0(CharacteristicObject):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V04 rat0 [V04,T01] ( 3, 6 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 40 G_M61721_IG01: push rdi push rsi sub rsp, 40 vzeroupper mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M61721_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rax, gword ptr [rsi+8] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`1:Invoke():double:this vmovsd qword ptr [rdi+8], xmm0 mov rax, rdi ;; bbWeight=1 PerfScore 9.25 G_M61721_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 56, prolog size 9, PerfScore 20.70, (MethodHash=6fba0ee6) for method <>c__DisplayClass1_0`1:b__0(CharacteristicObject):Object:this ; ============================================================ ; Assembly listing for method <>c:<.ctor>b__6_6():double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M58152_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M58152_IG02: vmovsd xmm0, qword ptr [reloc @RWD08] ;; bbWeight=1 PerfScore 2.00 G_M58152_IG03: ret ;; bbWeight=1 PerfScore 1.00 RWD00 dq 0000000000000000h RWD08 dq 3F947AE147AE147Bh ; Total bytes of code 12, prolog size 3, PerfScore 5.30, (MethodHash=d1c41cd7) for method <>c:<.ctor>b__6_6():double:this ; ============================================================ ; Assembly listing for method CharacteristicObject:ResolveValueAsNullable(Characteristic`1):Nullable`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 3.50) ref -> rdi this class-hnd ; V01 RetBuf [V01,T00] ( 6, 4 ) byref -> rsi ; V02 arg1 [V02,T02] ( 4, 3.50) ref -> rbx class-hnd ;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SB] ld-addr-op ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 4, 4 ) struct (16) [rsp+0x30] do-not-enreg[SFB] "NewObj constructor temp" ; V06 tmp2 [V06,T05] ( 2, 2 ) struct ( 8) [rsp+0x28] do-not-enreg[SB] "struct address for call/obj" ; V07 tmp3 [V07,T04] ( 4, 3.50) ref -> rdi "inline UNBOX clone1" ;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg" ; ; Lcl frame size = 64 G_M28351_IG01: push rdi push rsi push rbx sub rsp, 64 vzeroupper mov rdi, rcx mov rsi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 5.00 G_M28351_IG02: mov rcx, rdi mov rdx, rbx call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax jne SHORT G_M28351_IG05 ;; bbWeight=1 PerfScore 2.75 G_M28351_IG03: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsi], xmm0 mov rax, rsi ;; bbWeight=0.50 PerfScore 0.79 G_M28351_IG04: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M28351_IG05: mov rcx, rdi mov rdx, rbx call CharacteristicObject:GetValue(Characteristic):Object:this mov rdi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rdi], rdx je SHORT G_M28351_IG07 ;; bbWeight=0.50 PerfScore 2.50 G_M28351_IG06: mov rdx, rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M28351_IG07: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+30H], xmm0 mov rax, qword ptr [rdi+8] mov qword ptr [rsp+28H], rax mov rax, qword ptr [rsp+28H] mov qword ptr [rsp+38H], rax mov byte ptr [rsp+30H], 1 vmovdqu xmm0, xmmword ptr [rsp+30H] vmovdqu xmmword ptr [rsi], xmm0 mov rax, rsi ;; bbWeight=0.50 PerfScore 4.79 G_M28351_IG08: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 155, prolog size 10, PerfScore 35.06, (MethodHash=acbf9140) for method CharacteristicObject:ResolveValueAsNullable(Characteristic`1):Nullable`1:this ; ============================================================ ; Assembly listing for method TimeInterval:ToNanoseconds():double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rcx this ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) struct ( 8) [rsp+0x10] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V03 tmp2 [V03,T02] ( 2, 4 ) struct ( 8) [rsp+0x08] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V04 tmp3 [V04,T03] ( 2, 4 ) double -> mm0 "impAppendStmt" ; ; Lcl frame size = 24 G_M8078_IG01: sub rsp, 24 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M8078_IG02: mov rax, qword ptr [rcx] mov qword ptr [rsp+10H], rax mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] mov rdx, qword ptr [rax+8] mov qword ptr [rsp+08H], rdx vmovsd xmm0, qword ptr [rsp+10H] vdivsd xmm0, xmm0, qword ptr [rsp+08H] ;; bbWeight=1 PerfScore 24.25 G_M8078_IG03: add rsp, 24 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 54, prolog size 7, PerfScore 32.35, (MethodHash=882ee071) for method TimeInterval:ToNanoseconds():double:this ; ============================================================ ; Assembly listing for method WindowsClock:get_Frequency():Frequency:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 2, 4 ) struct ( 8) [rsp+0x00] do-not-enreg[SFB] "NewObj constructor temp" ;* V03 tmp2 [V03 ] ( 0, 0 ) double -> zero-ref "Inlining Arg" ; ; Lcl frame size = 8 G_M48025_IG01: push rax vzeroupper ;; bbWeight=1 PerfScore 2.00 G_M48025_IG02: vmovsd xmm0, qword ptr [reloc @RWD08] vmovsd qword ptr [rsp], xmm0 mov rax, qword ptr [rsp] ;; bbWeight=1 PerfScore 3.50 G_M48025_IG03: add rsp, 8 ret ;; bbWeight=1 PerfScore 1.25 RWD00 dq 0000000000000000h RWD08 dq 416312D000000000h ; Total bytes of code 26, prolog size 4, PerfScore 9.55, (MethodHash=e1434466) for method WindowsClock:get_Frequency():Frequency:this ; ============================================================ ; Assembly listing for method Frequency:ToResolution():TimeInterval:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rcx this ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) struct ( 8) [rsp+0x10] do-not-enreg[SB] "impAppendStmt" ; V03 tmp2 [V03,T02] ( 2, 4 ) struct ( 8) [rsp+0x08] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V04 tmp3 [V04,T04] ( 2, 4 ) double -> mm0 "Inlining Arg" ; V05 tmp4 [V05,T03] ( 2, 4 ) struct ( 8) [rsp+0x00] do-not-enreg[SFB] "NewObj constructor temp" ; V06 tmp5 [V06,T05] ( 2, 4 ) double -> mm0 "Inlining Arg" ; ; Lcl frame size = 24 G_M14268_IG01: sub rsp, 24 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M14268_IG02: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] mov rdx, qword ptr [rax+8] mov qword ptr [rsp+10H], rdx mov rax, qword ptr [rsp+10H] mov qword ptr [rsp+08H], rax vmovsd xmm0, qword ptr [rcx] vmovsd xmm1, qword ptr [rsp+08H] vdivsd xmm0, xmm1, xmm0 vmovsd qword ptr [rsp], xmm0 mov rax, qword ptr [rsp] ;; bbWeight=1 PerfScore 24.75 G_M14268_IG03: add rsp, 24 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 67, prolog size 7, PerfScore 34.35, (MethodHash=d48ac843) for method Frequency:ToResolution():TimeInterval:this ; ============================================================ ; Assembly listing for method EngineActualStage:.ctor(IEngine):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 9, 9 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 13, 13 ) ref -> rsi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rbx class-hnd "non-inline candidate call" ; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rbp class-hnd exact "non-inline candidate call" ; V05 tmp3 [V05,T04] ( 2, 4 ) ref -> rbx class-hnd "non-inline candidate call" ; V06 tmp4 [V06,T05] ( 2, 4 ) ref -> rbp class-hnd exact "non-inline candidate call" ; V07 tmp5 [V07,T06] ( 2, 4 ) ref -> rbx class-hnd "non-inline candidate call" ; V08 tmp6 [V08,T07] ( 2, 4 ) ref -> rbp class-hnd exact "non-inline candidate call" ; V09 tmp7 [V09,T08] ( 2, 4 ) ref -> rbx class-hnd "non-inline candidate call" ; V10 tmp8 [V10,T09] ( 2, 4 ) ref -> rbp class-hnd exact "non-inline candidate call" ; V11 tmp9 [V11,T10] ( 2, 4 ) ref -> rcx "argument with side effect" ; V12 tmp10 [V12,T11] ( 2, 4 ) ref -> r8 "argument with side effect" ; V13 tmp11 [V13,T12] ( 2, 4 ) ref -> rcx "argument with side effect" ; V14 tmp12 [V14,T13] ( 2, 4 ) ref -> r8 "argument with side effect" ; V15 tmp13 [V15,T14] ( 2, 4 ) ref -> r8 "argument with side effect" ; V16 tmp14 [V16,T15] ( 2, 4 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M36026_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 vzeroupper mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 5.75 G_M36026_IG02: lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValueAsNullable(Characteristic`1):Nullable`1:this mov qword ptr [rdi+40], rax mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rbx, rax mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_Resolver():IResolver:this mov r8, rax mov rdx, rbp mov rcx, rbx cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):double:this vmovsd qword ptr [rdi+16], xmm0 mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rcx, rax lea rdx, bword ptr [rdi+48] mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValueAsNullable(Characteristic`1):Nullable`1:this mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rbx, rax mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_Resolver():IResolver:this mov r8, rax mov rdx, rbp mov rcx, rbx cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this mov dword ptr [rdi+24], eax mov rcx, rsi mov r11, 0xD1FFAB1E ;; bbWeight=1 PerfScore 51.25 G_M36026_IG03: mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rbx, rax mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_Resolver():IResolver:this mov r8, rax mov rdx, rbp mov rcx, rbx cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this mov dword ptr [rdi+28], eax mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rbx, rax mov rcx, 0xD1FFAB1E mov rbp, gword ptr [rcx] mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_Resolver():IResolver:this mov r8, rax mov rdx, rbp mov rcx, rbx cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this mov dword ptr [rdi+32], eax ;; bbWeight=1 PerfScore 29.00 G_M36026_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 484, prolog size 11, PerfScore 137.75, (MethodHash=5ece7345) for method EngineActualStage:.ctor(IEngine):this ; ============================================================ ; Assembly listing for method CharacteristicObject:ResolveValueAsNullable(Characteristic`1):Nullable`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 3.50) ref -> rdi class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04 ] ( 3, 3 ) struct ( 8) [rsp+0x20] do-not-enreg[SB] "NewObj constructor temp" ; V05 tmp2 [V05,T02] ( 4, 3.50) ref -> rsi "inline UNBOX clone1" ; V06 tmp3 [V06,T03] ( 2, 2 ) int -> rax "Inlining Arg" ;* V07 tmp4 [V07 ] ( 0, 0 ) bool -> zero-ref do-not-enreg[] V02.hasValue(offs=0x00) P-DEP "field V02.hasValue (fldOffset=0x0)" ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] V02.value(offs=0x04) P-DEP "field V02.value (fldOffset=0x4)" ; V09 tmp6 [V09,T04] ( 2, 1.50) bool -> [rsp+0x20] do-not-enreg[] V04.hasValue(offs=0x00) P-DEP "field V04.hasValue (fldOffset=0x0)" ; V10 tmp7 [V10,T05] ( 2, 1.50) int -> [rsp+0x24] do-not-enreg[] V04.value(offs=0x04) P-DEP "field V04.value (fldOffset=0x4)" ; ; Lcl frame size = 40 G_M28351_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 2.75 G_M28351_IG02: mov rcx, rsi mov rdx, rdi call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax jne SHORT G_M28351_IG05 ;; bbWeight=1 PerfScore 2.75 G_M28351_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M28351_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M28351_IG05: mov rcx, rsi mov rdx, rdi call CharacteristicObject:GetValue(Characteristic):Object:this mov rsi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rsi], rdx je SHORT G_M28351_IG07 ;; bbWeight=0.50 PerfScore 2.50 G_M28351_IG06: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M28351_IG07: mov eax, dword ptr [rsi+8] mov dword ptr [rsp+24H], eax mov byte ptr [rsp+20H], 1 mov rax, qword ptr [rsp+20H] ;; bbWeight=0.50 PerfScore 2.50 G_M28351_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 107, prolog size 6, PerfScore 23.95, (MethodHash=acbf9140) for method CharacteristicObject:ResolveValueAsNullable(Characteristic`1):Nullable`1:this ; ============================================================ ; Assembly listing for method CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd ; V02 arg2 [V02,T00] ( 4, 4 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ; ; Lcl frame size = 32 G_M12108_IG01: push rdi push rsi push rbx sub rsp, 32 mov rdi, rcx mov rbx, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 4.00 G_M12108_IG02: mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov rcx, rsi mov rdx, rdi mov r8, rbx ;; bbWeight=1 PerfScore 2.50 G_M12108_IG03: add rsp, 32 pop rbx pop rsi pop rdi rex.jmp rax ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 63, prolog size 16, PerfScore 16.55, (MethodHash=1d1cd0b3) for method CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this ; ============================================================ ; Assembly listing for method CompositeResolver:Resolve(CharacteristicObject,Characteristic`1):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd ; V03 loc0 [V03,T04] ( 5, 4 ) ref -> rbp class-hnd exact ; V04 loc1 [V04,T05] ( 4, 4 ) ref -> rsi class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 2, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T00] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V08 tmp3 [V08,T07] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ; V09 tmp4 [V09,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp5 [V10,T08] ( 2, 4 ) long -> rax "VirtualCall through function pointer" ;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V12 tmp7 [V12 ] ( 1, 1 ) bool -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V13 tmp8 [V13,T10] ( 2, 0 ) ref -> rdi "argument with side effect" ; V14 tmp9 [V14,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; V15 tmp10 [V15,T12] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M33051_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, rcx mov rdi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 6.25 G_M33051_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov r9, 0xD1FFAB1E mov qword ptr [rbx+24], r9 lea r9, [rsp+20H] mov rdx, rsi mov r8, rbx mov rcx, 0xD1FFAB1E call Enumerable:TryGetFirst(IEnumerable`1,Func`2,byref):__Canon mov rsi, rax test rsi, rsi je SHORT G_M33051_IG04 mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov r8, gword ptr [rbp+8] mov rcx, rsi mov rdx, rdi call rax nop ;; bbWeight=1 PerfScore 21.00 G_M33051_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M33051_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x139B1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rcx, gword ptr [rbp+8] cmp dword ptr [rcx], ecx call Characteristic:get_FullId():String:this mov rdx, rax mov rcx, rdi call String:Concat(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 269, prolog size 15, PerfScore 57.40, (MethodHash=37f27ee4) for method CompositeResolver:Resolve(CharacteristicObject,Characteristic`1):int:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass4_0`1:b__0(IResolver):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r11 class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M57629_IG01: mov r11, rdx ;; bbWeight=1 PerfScore 0.25 G_M57629_IG02: mov rdx, gword ptr [rcx+8] mov rcx, r11 mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=1 PerfScore 4.75 G_M57629_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 36, prolog size 3, PerfScore 10.60, (MethodHash=91711ee2) for method <>c__DisplayClass4_0`1:b__0(IResolver):bool:this ; ============================================================ ; Assembly listing for method Resolver:Resolve(CharacteristicObject,Characteristic`1):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) ref -> rbx this class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T00] ( 7, 4.50) ref -> rsi class-hnd ; V03 loc0 [V03 ] ( 2, 1 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T06] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T03] ( 4, 3.50) ref -> rsi "inline UNBOX clone1" ; V07 tmp3 [V07,T04] ( 4, 3.50) ref -> rbx "inline UNBOX clone1" ; V08 tmp4 [V08,T07] ( 2, 0 ) ref -> rbx "argument with side effect" ; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V11 rat0 [V11,T05] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 48 G_M41454_IG01: push rdi push rsi push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov rbx, rcx mov rdi, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 5.25 G_M41454_IG02: mov rcx, rdi mov rdx, rsi cmp dword ptr [rcx], ecx call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax je SHORT G_M41454_IG07 ;; bbWeight=1 PerfScore 4.75 G_M41454_IG03: cmp dword ptr [rsi], esi mov rcx, rdi mov rdx, rsi call CharacteristicObject:GetValue(Characteristic):Object:this mov rbx, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rbx], rdx je SHORT G_M41454_IG05 ;; bbWeight=0.50 PerfScore 3.50 G_M41454_IG04: mov rdx, rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41454_IG05: mov eax, dword ptr [rbx+8] ;; bbWeight=0.50 PerfScore 1.00 G_M41454_IG06: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M41454_IG07: mov rcx, gword ptr [rbx+8] lea r8, [rsp+28H] mov rdx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:TryGetValue(__Canon,byref):bool:this test eax, eax je SHORT G_M41454_IG11 mov rax, gword ptr [rsp+28H] mov rcx, gword ptr [rax+8] mov rdx, rdi call gword ptr [rax+24]Func`2:Invoke(__Canon):__Canon:this mov rsi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rsi], rdx je SHORT G_M41454_IG09 ;; bbWeight=0.50 PerfScore 9.50 G_M41454_IG08: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41454_IG09: mov eax, dword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.00 G_M41454_IG10: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M41454_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x139B1 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov rcx, rsi cmp dword ptr [rcx], ecx call Characteristic:get_FullId():String:this mov rdx, rax mov rcx, rbx call String:Concat(String,String):String mov rdx, rax mov rcx, rdi call InvalidOperationException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 274, prolog size 14, PerfScore 55.90, (MethodHash=61135e11) for method Resolver:Resolve(CharacteristicObject,Characteristic`1):int:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass2_0`1:b__0(CharacteristicObject):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> rbx class-hnd exact "Single-def Box Helper" ; V04 rat0 [V04,T01] ( 3, 6 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 32 G_M44026_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M44026_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, gword ptr [rsi+8] mov rcx, gword ptr [rax+8] mov rdx, rdi call qword ptr [rax+24]Func`2:Invoke(__Canon):int:this mov dword ptr [rbx+8], eax mov rax, rbx ;; bbWeight=1 PerfScore 10.00 G_M44026_IG03: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 59, prolog size 7, PerfScore 22.40, (MethodHash=f0415405) for method <>c__DisplayClass2_0`1:b__0(CharacteristicObject):Object:this ; ============================================================ ; Assembly listing for method EngineResolver:<.ctor>b__6_10(CharacteristicObject):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> r8 this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rcx class-hnd ; V02 loc0 [V02,T02] ( 4, 2.50) int -> rsi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V05 tmp2 [V05,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp3 [V06,T05] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp4 [V07,T06] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M8152_IG01: push rdi push rsi sub rsp, 40 mov r8, rcx mov rcx, rdx ;; bbWeight=1 PerfScore 2.75 G_M8152_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this mov esi, eax test esi, esi je SHORT G_M8152_IG06 ;; bbWeight=1 PerfScore 6.75 G_M8152_IG03: lea eax, [rsi-1] cmp eax, 1 ja SHORT G_M8152_IG08 ;; bbWeight=0.50 PerfScore 0.88 G_M8152_IG04: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M8152_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M8152_IG06: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M8152_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M8152_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov dword ptr [rdi+8], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xF031 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax mov rdx, rdi call String:Format(String,Object):String mov rdx, rax mov rcx, rsi call NotSupportedException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 157, prolog size 6, PerfScore 28.58, (MethodHash=6315e027) for method EngineResolver:<.ctor>b__6_10(CharacteristicObject):int:this ; ============================================================ ; Assembly listing for method EngineFactory:Jit(Engine,int,int,int):TimeInterval ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 8, 8 ) ref -> rsi class-hnd ; V01 arg1 [V01,T03] ( 4, 4 ) int -> rdi ; V02 arg2 [V02,T04] ( 4, 4 ) int -> rbx ; V03 arg3 [V03,T05] ( 4, 4 ) int -> rbp ; V04 loc0 [V04 ] ( 2, 2 ) struct (32) [rsp+0xC8] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T02] ( 5, 10 ) struct (32) [rsp+0xA8] do-not-enreg[SFB] "NewObj constructor temp" ; V07 tmp2 [V07 ] ( 2, 4 ) struct (32) [rsp+0x88] do-not-enreg[XSB] addr-exposed "struct address for call/obj" ; V08 tmp3 [V08,T00] ( 7, 14 ) struct (32) [rsp+0x68] do-not-enreg[SFB] "NewObj constructor temp" ;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V11 tmp6 [V11 ] ( 4, 8 ) struct (32) [rsp+0x48] do-not-enreg[XSB] addr-exposed "by-value struct argument" ;* V12 tmp7 [V12,T11] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V13 tmp8 [V13,T09] ( 2, 4 ) long -> rdx "argument with side effect" ; V14 tmp9 [V14 ] ( 2, 4 ) struct (32) [rsp+0x28] do-not-enreg[XSB] addr-exposed "by-value struct argument" ;* V15 tmp10 [V15,T12] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V16 tmp11 [V16,T10] ( 2, 4 ) long -> rdx "argument with side effect" ; V17 rat0 [V17,T06] ( 3, 6 ) ref -> rax "delegate invoke call" ; V18 rat1 [V18,T07] ( 3, 6 ) ref -> rax "delegate invoke call" ; V19 rat2 [V19,T08] ( 3, 6 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 232 G_M37133_IG01: push rdi push rsi push rbp push rbx sub rsp, 232 vzeroupper xor rax, rax mov qword ptr [rsp+C8H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+D0H], xmm4 mov qword ptr [rsp+E0H], rax mov rsi, rcx mov edi, edx mov ebx, r8d mov ebp, r9d ;; bbWeight=1 PerfScore 9.83 G_M37133_IG02: mov rax, gword ptr [rsi+24] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Action:Invoke():this vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+A8H], xmm0 vmovdqu xmmword ptr [rsp+B8H], xmm0 mov dword ptr [rsp+B0H], edi movsxd rcx, ebx mov qword ptr [rsp+B8H], rcx mov dword ptr [rsp+C0H], ebp lea rdx, [rsp+88H] vmovdqu xmm0, xmmword ptr [rsp+A8H] vmovdqu xmmword ptr [rsp+48H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+B8H] vmovdqu xmmword ptr [rsp+58H], xmm0 mov rcx, rsi lea r8, bword ptr [rsp+48H] mov rax, 0xD1FFAB1E call qword ptr [rax]Engine:RunIteration(IterationData):Measurement:this vmovdqu xmm0, xmmword ptr [rsp+88H] vmovdqu xmmword ptr [rsp+28H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+98H] vmovdqu xmmword ptr [rsp+38H], xmm0 lea rcx, bword ptr [rsp+28H] call DeadCodeEliminationHelper:KeepAliveWithoutBoxing(Measurement) mov rax, gword ptr [rsi+32] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Action:Invoke():this vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+68H], xmm0 vmovdqu xmmword ptr [rsp+78H], xmm0 mov dword ptr [rsp+68H], 1 xor ecx, ecx mov dword ptr [rsp+6CH], ecx mov dword ptr [rsp+70H], edi movsxd rcx, ebx mov qword ptr [rsp+78H], rcx mov dword ptr [rsp+80H], ebp lea rdx, [rsp+C8H] vmovdqu xmm0, xmmword ptr [rsp+68H] vmovdqu xmmword ptr [rsp+48H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+78H] vmovdqu xmmword ptr [rsp+58H], xmm0 mov rcx, rsi lea r8, bword ptr [rsp+48H] mov rax, 0xD1FFAB1E call qword ptr [rax]Engine:RunIteration(IterationData):Measurement:this mov rax, gword ptr [rsi+40] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Action:Invoke():this mov rcx, gword ptr [rsi+8] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IHost:WriteLine():this vmovsd xmm0, qword ptr [rsp+E0H] call TimeInterval:FromNanoseconds(double):TimeInterval nop ;; bbWeight=1 PerfScore 65.67 G_M37133_IG03: add rsp, 232 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 388, prolog size 45, PerfScore 119.65, (MethodHash=98b46ef2) for method EngineFactory:Jit(Engine,int,int,int):TimeInterval ; ============================================================ ; Assembly listing for method Runnable_0:Dummy1():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 67, 67 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 cse0 [V02,T01] ( 3, 3 ) int -> rax "CSE - aggressive" ; V03 cse1 [V03,T02] ( 3, 3 ) int -> rax "CSE - aggressive" ; V04 cse2 [V04,T03] ( 3, 3 ) int -> rax "CSE - aggressive" ; V05 cse3 [V05,T04] ( 3, 3 ) int -> rax "CSE - aggressive" ; V06 cse4 [V06,T05] ( 3, 3 ) int -> rax "CSE - aggressive" ; V07 cse5 [V07,T06] ( 3, 3 ) int -> rax "CSE - aggressive" ; V08 cse6 [V08,T07] ( 3, 3 ) int -> rax "CSE - aggressive" ; V09 cse7 [V09,T08] ( 3, 3 ) int -> rax "CSE - aggressive" ; V10 cse8 [V10,T09] ( 3, 3 ) int -> rax "CSE - aggressive" ; V11 cse9 [V11,T10] ( 3, 3 ) int -> rax "CSE - aggressive" ; V12 cse10 [V12,T11] ( 3, 3 ) int -> rax "CSE - aggressive" ; V13 cse11 [V13,T12] ( 3, 3 ) int -> rax "CSE - aggressive" ; V14 cse12 [V14,T13] ( 3, 3 ) int -> rax "CSE - aggressive" ; V15 cse13 [V15,T14] ( 3, 3 ) int -> rax "CSE - aggressive" ; V16 cse14 [V16,T15] ( 3, 3 ) int -> rax "CSE - aggressive" ; V17 cse15 [V17,T16] ( 3, 3 ) int -> rax "CSE - aggressive" ; V18 cse16 [V18,T17] ( 3, 3 ) int -> rax "CSE - aggressive" ; V19 cse17 [V19,T18] ( 3, 3 ) int -> rax "CSE - aggressive" ; V20 cse18 [V20,T19] ( 3, 3 ) int -> rax "CSE - aggressive" ; V21 cse19 [V21,T20] ( 3, 3 ) int -> rax "CSE - aggressive" ; V22 cse20 [V22,T21] ( 3, 3 ) int -> rax "CSE - aggressive" ; V23 cse21 [V23,T22] ( 3, 3 ) int -> rax "CSE - aggressive" ; V24 cse22 [V24,T23] ( 3, 3 ) int -> rax "CSE - aggressive" ; V25 cse23 [V25,T24] ( 3, 3 ) int -> rax "CSE - aggressive" ; V26 cse24 [V26,T25] ( 3, 3 ) int -> rax "CSE - aggressive" ; V27 cse25 [V27,T26] ( 3, 3 ) int -> rax "CSE - aggressive" ; V28 cse26 [V28,T27] ( 3, 3 ) int -> rax "CSE - aggressive" ; V29 cse27 [V29,T28] ( 3, 3 ) int -> rax "CSE - aggressive" ; V30 cse28 [V30,T29] ( 3, 3 ) int -> rax "CSE - aggressive" ; V31 cse29 [V31,T30] ( 3, 3 ) int -> rax "CSE - aggressive" ; V32 cse30 [V32,T31] ( 3, 3 ) int -> rax "CSE - aggressive" ; V33 cse31 [V33,T32] ( 3, 3 ) int -> rax "CSE - aggressive" ; V34 cse32 [V34,T33] ( 3, 3 ) int -> rax "CSE - aggressive" ; V35 cse33 [V35,T34] ( 3, 3 ) int -> rax "CSE - aggressive" ; V36 cse34 [V36,T35] ( 3, 3 ) int -> rax "CSE - aggressive" ; V37 cse35 [V37,T36] ( 3, 3 ) int -> rax "CSE - aggressive" ; V38 cse36 [V38,T37] ( 3, 3 ) int -> rax "CSE - aggressive" ; V39 cse37 [V39,T38] ( 3, 3 ) int -> rax "CSE - aggressive" ; V40 cse38 [V40,T39] ( 3, 3 ) int -> rax "CSE - aggressive" ; V41 cse39 [V41,T40] ( 3, 3 ) int -> rax "CSE - aggressive" ; V42 cse40 [V42,T41] ( 3, 3 ) int -> rax "CSE - aggressive" ; V43 cse41 [V43,T42] ( 3, 3 ) int -> rax "CSE - aggressive" ; V44 cse42 [V44,T43] ( 3, 3 ) int -> rax "CSE - aggressive" ; V45 cse43 [V45,T44] ( 3, 3 ) int -> rax "CSE - aggressive" ; V46 cse44 [V46,T45] ( 3, 3 ) int -> rax "CSE - aggressive" ; V47 cse45 [V47,T46] ( 3, 3 ) int -> rax "CSE - aggressive" ; V48 cse46 [V48,T47] ( 3, 3 ) int -> rax "CSE - aggressive" ; V49 cse47 [V49,T48] ( 3, 3 ) int -> rax "CSE - aggressive" ; V50 cse48 [V50,T49] ( 3, 3 ) int -> rax "CSE - aggressive" ; V51 cse49 [V51,T50] ( 3, 3 ) int -> rax "CSE - aggressive" ; V52 cse50 [V52,T51] ( 3, 3 ) int -> rax "CSE - aggressive" ; V53 cse51 [V53,T52] ( 3, 3 ) int -> rax "CSE - aggressive" ; V54 cse52 [V54,T53] ( 3, 3 ) int -> rax "CSE - aggressive" ; V55 cse53 [V55,T54] ( 3, 3 ) int -> rax "CSE - aggressive" ; V56 cse54 [V56,T55] ( 3, 3 ) int -> rax "CSE - aggressive" ; V57 cse55 [V57,T56] ( 3, 3 ) int -> rax "CSE - aggressive" ; V58 cse56 [V58,T57] ( 3, 3 ) int -> rax "CSE - aggressive" ; V59 cse57 [V59,T58] ( 3, 3 ) int -> rax "CSE - aggressive" ; V60 cse58 [V60,T59] ( 3, 3 ) int -> rax "CSE - aggressive" ; V61 cse59 [V61,T60] ( 3, 3 ) int -> rax "CSE - aggressive" ; V62 cse60 [V62,T61] ( 3, 3 ) int -> rax "CSE - aggressive" ; V63 cse61 [V63,T62] ( 3, 3 ) int -> rax "CSE - aggressive" ; V64 cse62 [V64,T63] ( 3, 3 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 0 G_M10150_IG01: ;; bbWeight=1 PerfScore 0.00 G_M10150_IG02: mov eax, dword ptr [rcx+108] inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax ;; bbWeight=1 PerfScore 44.75 G_M10150_IG03: mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax ;; bbWeight=1 PerfScore 37.25 G_M10150_IG04: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 324, prolog size 0, PerfScore 115.40, (MethodHash=d8bad859) for method Runnable_0:Dummy1():this ; ============================================================ ; Assembly listing for method Engine:RunIteration(IterationData):Measurement:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 11, 9 ) ref -> [rbp+0x10] this class-hnd ; V01 RetBuf [V01,T03] ( 4, 4 ) byref -> [rbp+0x18] ; V02 arg1 [V02,T00] ( 12, 20 ) byref -> [rbp+0x20] ld-addr-op ; V03 loc0 [V03,T18] ( 3, 3 ) long -> [rbp-0x40] ; V04 loc1 [V04,T29] ( 2, 2 ) int -> r15 ; V05 loc2 [V05,T15] ( 4, 3 ) long -> r12 ; V06 loc3 [V06,T25] ( 2, 2 ) ref -> [rbp-0x90] class-hnd ; V07 loc4 [V07 ] ( 3, 3 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V08 loc5 [V08 ] ( 2, 2 ) struct (24) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V09 loc6 [V09 ] ( 8, 8 ) struct (32) [rbp-0x88] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T10] ( 2, 4 ) int -> r13 "dup spill" ; V12 tmp2 [V12,T22] ( 3, 2.50) int -> r13 ; V13 tmp3 [V13,T24] ( 3, 2 ) int -> r13 ; V14 tmp4 [V14,T23] ( 3, 2 ) ref -> rdx ; V15 tmp5 [V15,T19] ( 3, 3 ) int -> r13 ; V16 tmp6 [V16,T30] ( 2, 2 ) int -> r13 ; V17 tmp7 [V17,T31] ( 2, 2 ) int -> r13 ; V18 tmp8 [V18,T11] ( 2, 4 ) int -> r14 "impAppendStmt" ; V19 tmp9 [V19,T12] ( 2, 4 ) int -> r15 "impAppendStmt" ; V20 tmp10 [V20,T13] ( 2, 4 ) int -> rsi "impAppendStmt" ; V21 tmp11 [V21,T26] ( 2, 2 ) ref -> rcx class-hnd "impAppendStmt" ; V22 tmp12 [V22,T32] ( 2, 2 ) int -> rdx "impAppendStmt" ; V23 tmp13 [V23,T27] ( 2, 2 ) ref -> rcx class-hnd "impAppendStmt" ; V24 tmp14 [V24,T33] ( 2, 2 ) int -> rdx "impAppendStmt" ; V25 tmp15 [V25,T06] ( 2, 4 ) ref -> r8 class-hnd "Inlining Arg" ; V26 tmp16 [V26,T04] ( 3, 6 ) ref -> [rbp-0x98] class-hnd "Inlining Arg" ;* V27 tmp17 [V27 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V28 tmp18 [V28,T14] ( 2, 4 ) long -> rax "Inlining Arg" ; V29 tmp19 [V29,T07] ( 2, 4 ) ref -> r8 class-hnd "Inlining Arg" ; V30 tmp20 [V30,T36] ( 2, 4 ) double -> mm0 "Inlining Arg" ; V31 tmp21 [V31,T08] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ; V32 tmp22 [V32,T09] ( 2, 4 ) byref -> rax "Single return block return value" ; V33 FramesRoot [V33,T01] ( 26, 14 ) long -> r14 "Pinvoke FrameListRoot" ; V34 PInvokeFrame [V34 ] ( 28, 16 ) blk (72) [rbp-0xE0] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V35 tmp25 [V35 ] ( 2, 2 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed V07.clock(offs=0x00) P-DEP "field V07.clock (fldOffset=0x0)" ; V36 tmp26 [V36 ] ( 2, 2 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed V07.startTimestamp(offs=0x08) P-DEP "field V07.startTimestamp (fldOffset=0x8)" ; V37 tmp27 [V37,T28] ( 2, 2 ) ref -> rdx V27.clock(offs=0x00) P-INDEP "field V27.clock (fldOffset=0x0)" ; V38 tmp28 [V38,T34] ( 2, 2 ) long -> rax V27.startTimestamp(offs=0x08) P-INDEP "field V27.startTimestamp (fldOffset=0x8)" ; V39 cse0 [V39,T20] ( 3, 2.50) ref -> rcx "CSE - moderate" ; V40 cse1 [V40,T21] ( 3, 2.50) ref -> rcx "CSE - moderate" ;* V41 cse2 [V41,T35] ( 0, 0 ) long -> zero-ref "CSE - moderate" ; V42 rat0 [V42,T16] ( 3, 3 ) ref -> r8 "delegate invoke call" ; V43 rat1 [V43,T05] ( 3, 6 ) ref -> r15 "delegate invoke call" ; V44 rat2 [V44,T17] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 200 G_M17946_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 200 vzeroupper lea rbp, [rsp+100H] xor rbx, rbx mov qword ptr [rbp-88H], rbx vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-80H], xmm4 vmovdqa xmmword ptr [rbp-70H], xmm4 vmovdqa xmmword ptr [rbp-60H], xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 mov bword ptr [rbp+18H], rdx mov rdi, rcx mov rsi, r8 ;; bbWeight=1 PerfScore 16.83 G_M17946_IG02: lea rcx, [rbp-D8H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov r14, rax mov rcx, rsp mov qword ptr [rbp-B8H], rcx mov rcx, rbp mov qword ptr [rbp-A8H], rcx mov r15, qword ptr [rsi+16] mov rax, r15 mov r15d, dword ptr [rsi+24] mov qword ptr [rbp-40H], rax mov r12, rax imul r12, qword ptr [rdi+152] mov bword ptr [rbp+20H], rsi cmp dword ptr [rsi], 0 sete r13b movzx r13, r13b test r13d, r13d jne SHORT G_M17946_IG04 ;; bbWeight=1 PerfScore 17.50 G_M17946_IG03: xor r13d, r13d mov rdx, gword ptr [rdi+16] jmp SHORT G_M17946_IG05 ;; bbWeight=0.50 PerfScore 2.13 G_M17946_IG04: mov rdx, gword ptr [rdi+48] ;; bbWeight=0.50 PerfScore 1.00 G_M17946_IG05: mov gword ptr [rbp-90H], rdx test r13d, r13d jne SHORT G_M17946_IG07 ;; bbWeight=1 PerfScore 2.25 G_M17946_IG06: mov r8, gword ptr [rdi+80] mov rcx, gword ptr [r8+8] call qword ptr [r8+24]Action:Invoke():this ;; bbWeight=0.50 PerfScore 3.50 G_M17946_IG07: mov gword ptr [rbp+10H], rdi cmp byte ptr [rdi+172], 0 je G_M17946_IG21 ;; bbWeight=1 PerfScore 4.00 G_M17946_IG08: mov ecx, -1 mov edx, 2 mov r8, 0xD1FFAB1E mov qword ptr [rbp-C8H], r8 lea r8, G_M17946_IG11 mov qword ptr [rbp-B0H], r8 lea r8, bword ptr [rbp-D8H] mov qword ptr [r14+16], r8 mov byte ptr [r14+12], 0 ;; bbWeight=0.50 PerfScore 3.13 G_M17946_IG09: mov r8, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M17946_IG10: call qword ptr [r8]GC:_Collect(int,int) ;; bbWeight=0.50 PerfScore 1.50 G_M17946_IG11: mov byte ptr [r14+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M17946_IG12 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M17946_IG12: mov rax, bword ptr [rbp-D0H] mov qword ptr [r14+16], rax mov rax, 0xD1FFAB1E mov qword ptr [rbp-C8H], rax lea rax, G_M17946_IG15 mov qword ptr [rbp-B0H], rax lea rax, bword ptr [rbp-D8H] mov qword ptr [r14+16], rax mov byte ptr [r14+12], 0 ;; bbWeight=0.50 PerfScore 3.88 G_M17946_IG13: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M17946_IG14: call qword ptr [rax]GC:_WaitForPendingFinalizers() ;; bbWeight=0.50 PerfScore 1.50 G_M17946_IG15: mov byte ptr [r14+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M17946_IG16 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M17946_IG16: mov rcx, bword ptr [rbp-D0H] mov qword ptr [r14+16], rcx mov ecx, -1 mov edx, 2 mov rax, 0xD1FFAB1E mov qword ptr [rbp-C8H], rax lea rax, G_M17946_IG19 mov qword ptr [rbp-B0H], rax lea rax, bword ptr [rbp-D8H] mov qword ptr [r14+16], rax mov byte ptr [r14+12], 0 ;; bbWeight=0.50 PerfScore 4.13 G_M17946_IG17: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M17946_IG18: call qword ptr [rax]GC:_Collect(int,int) ;; bbWeight=0.50 PerfScore 1.50 G_M17946_IG19: mov byte ptr [r14+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M17946_IG20 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M17946_IG20: mov rcx, bword ptr [rbp-D0H] mov qword ptr [r14+16], rcx ;; bbWeight=0.50 PerfScore 1.00 G_M17946_IG21: mov rcx, 0xD1FFAB1E mov edx, 376 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov r8, 0xD1FFAB1E mov rcx, gword ptr [r8] mov r8, rcx cmp byte ptr [r8+157], 0 je SHORT G_M17946_IG23 ;; bbWeight=1 PerfScore 7.00 G_M17946_IG22: mov rsi, bword ptr [rbp+20H] mov edx, dword ptr [rsi] mov r8d, dword ptr [rsi+4] mov r9, r12 cmp dword ptr [rcx], ecx call EngineEventSource:IterationStart(int,int,long):this mov bword ptr [rbp+20H], rsi ;; bbWeight=0.50 PerfScore 4.63 G_M17946_IG23: mov rdi, gword ptr [rbp+10H] mov rax, gword ptr [rdi+120] mov gword ptr [rbp-98H], rax mov rcx, rax mov r11, 0xD1FFAB1E mov rdx, 0xD1FFAB1E call qword ptr [rdx]IClock:GetTimestamp():long:this mov rdx, gword ptr [rbp-98H] mov gword ptr [rbp-50H], rdx mov qword ptr [rbp-48H], rax movsxd rcx, r15d mov rax, qword ptr [rbp-40H] cdq idiv rdx:rax, rcx mov rdx, rax mov r15, gword ptr [rbp-90H] mov rcx, gword ptr [r15+8] call qword ptr [r15+24]Action`1:Invoke(long):this lea rcx, bword ptr [rbp-50H] lea rdx, [rbp-68H] call StartedClock:GetElapsed():ClockSpan:this mov r8, 0xD1FFAB1E mov rcx, gword ptr [r8] mov r8, rcx cmp byte ptr [r8+157], 0 je SHORT G_M17946_IG25 ;; bbWeight=1 PerfScore 94.75 G_M17946_IG24: mov rsi, bword ptr [rbp+20H] mov edx, dword ptr [rsi] mov bword ptr [rbp+20H], rsi mov r8d, dword ptr [rsi+4] mov r9, r12 cmp dword ptr [rcx], ecx call EngineEventSource:IterationStop(int,int,long):this ;; bbWeight=0.50 PerfScore 4.63 G_M17946_IG25: test r13d, r13d jne SHORT G_M17946_IG27 ;; bbWeight=1 PerfScore 1.25 G_M17946_IG26: mov rax, gword ptr [rdi+88] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Action:Invoke():this ;; bbWeight=0.50 PerfScore 3.50 G_M17946_IG27: mov gword ptr [rbp+10H], rdi cmp byte ptr [rdi+172], 0 je G_M17946_IG41 ;; bbWeight=1 PerfScore 4.00 G_M17946_IG28: mov ecx, -1 mov edx, 2 mov rax, 0xD1FFAB1E mov qword ptr [rbp-C8H], rax lea rax, G_M17946_IG31 mov qword ptr [rbp-B0H], rax lea rax, bword ptr [rbp-D8H] mov qword ptr [r14+16], rax mov byte ptr [r14+12], 0 ;; bbWeight=0.50 PerfScore 3.13 G_M17946_IG29: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M17946_IG30: call qword ptr [rax]GC:_Collect(int,int) ;; bbWeight=0.50 PerfScore 1.50 G_M17946_IG31: mov byte ptr [r14+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M17946_IG32 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M17946_IG32: mov rax, bword ptr [rbp-D0H] mov qword ptr [r14+16], rax mov rax, 0xD1FFAB1E mov qword ptr [rbp-C8H], rax lea rax, G_M17946_IG35 mov qword ptr [rbp-B0H], rax lea rax, bword ptr [rbp-D8H] mov qword ptr [r14+16], rax mov byte ptr [r14+12], 0 ;; bbWeight=0.50 PerfScore 3.88 G_M17946_IG33: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M17946_IG34: call qword ptr [rax]GC:_WaitForPendingFinalizers() ;; bbWeight=0.50 PerfScore 1.50 G_M17946_IG35: mov byte ptr [r14+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M17946_IG36 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M17946_IG36: mov rcx, bword ptr [rbp-D0H] mov qword ptr [r14+16], rcx mov ecx, -1 mov edx, 2 mov rax, 0xD1FFAB1E mov qword ptr [rbp-C8H], rax lea rax, G_M17946_IG39 mov qword ptr [rbp-B0H], rax lea rax, bword ptr [rbp-D8H] mov qword ptr [r14+16], rax mov byte ptr [r14+12], 0 ;; bbWeight=0.50 PerfScore 4.13 G_M17946_IG37: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M17946_IG38: call qword ptr [rax]GC:_Collect(int,int) ;; bbWeight=0.50 PerfScore 1.50 G_M17946_IG39: mov byte ptr [r14+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M17946_IG40 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M17946_IG40: mov rcx, bword ptr [rbp-D0H] mov qword ptr [r14+16], rcx ;; bbWeight=0.50 PerfScore 1.00 G_M17946_IG41: mov rsi, bword ptr [rbp+20H] mov r14d, dword ptr [rsi] mov r15d, dword ptr [rsi+4] mov esi, dword ptr [rsi+8] lea rcx, bword ptr [rbp-68H] call ClockSpan:GetNanoseconds():double:this mov qword ptr [rbp-78H], r12 vmovsd qword ptr [rbp-70H], xmm0 xor ecx, ecx mov dword ptr [rbp-80H], ecx mov dword ptr [rbp-88H], r14d mov dword ptr [rbp-84H], r15d mov dword ptr [rbp-7CH], esi lea rcx, bword ptr [rbp-88H] call Measurement:ToString():String:this mov rdx, rax mov rdi, gword ptr [rbp+10H] mov rcx, gword ptr [rdi+8] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IHost:WriteLine(String):this mov rbx, bword ptr [rbp+18H] vmovdqu xmm0, xmmword ptr [rbp-88H] vmovdqu xmmword ptr [rbx], xmm0 vmovdqu xmm0, xmmword ptr [rbp-78H] vmovdqu xmmword ptr [rbx+16], xmm0 mov rax, rbx ;; bbWeight=1 PerfScore 27.75 G_M17946_IG42: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 1260, prolog size 63, PerfScore 383.71, (MethodHash=1004b9e5) for method Engine:RunIteration(IterationData):Measurement:this ; ============================================================ ; Assembly listing for method EngineEventSource:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M27673_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M27673_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call EngineEventSource:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M27673_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=b45593e6) for method EngineEventSource:.cctor() ; ============================================================ ; Assembly listing for method EngineEventSource:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M23302_IG01: ;; bbWeight=1 PerfScore 0.00 G_M23302_IG02: mov edx, 4 xor r8, r8 ;; bbWeight=1 PerfScore 0.50 G_M23302_IG03: jmp EventSource:.ctor(int,ref):this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 13, prolog size 0, PerfScore 3.80, (MethodHash=5846a4f9) for method EngineEventSource:.ctor():this ; ============================================================ ; Assembly listing for method EventSource:.ctor(int,ref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 9, 9 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) int -> rbx ; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rdi class-hnd ; V03 loc0 [V03,T05] ( 3, 3 ) ref -> rbx class-hnd ; V04 loc1 [V04 ] ( 2, 2 ) struct (16) [rsp+0x38] do-not-enreg[XSB] addr-exposed ; V05 loc2 [V05,T06] ( 2, 2 ) ref -> r8 class-hnd ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T04] ( 2, 4 ) ref -> rax class-hnd exact "NewObj constructor temp" ; V08 tmp2 [V08,T01] ( 3, 6 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V09 tmp3 [V09 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XSB] addr-exposed "by-value struct argument" ;* V10 tmp4 [V10,T07] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; ; Lcl frame size = 72 G_M55334_IG01: push rdi push rsi push rbp push rbx sub rsp, 72 mov rsi, rcx mov ebx, edx mov rdi, r8 ;; bbWeight=1 PerfScore 5.00 G_M55334_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST lea rcx, bword ptr [rsi+56] mov rdx, rax call CORINFO_HELP_ASSIGN_REF xor rcx, rcx mov qword ptr [rsi+136], rcx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, 0xD1FFAB1E mov edx, 10 call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rbp+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+120] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov rcx, rsi mov edx, ebx call EventSource:ValidateSettings(int):int:this mov dword ptr [rsi+148], eax mov rcx, rsi call Object:GetType():Type:this mov rbx, rax lea rcx, [rsp+38H] mov rdx, rbx call EventSource:GetGuid(Type):Guid mov rcx, rbx xor edx, edx call EventSource:GetName(Type,int):String mov r8, rax vmovupd xmm0, xmmword ptr [rsp+38H] vmovupd xmmword ptr [rsp+28H], xmm0 mov rcx, rsi lea rdx, bword ptr [rsp+28H] mov r9, rdi call EventSource:Initialize(Guid,String,ref):this nop ;; bbWeight=1 PerfScore 25.50 G_M55334_IG03: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 205, prolog size 8, PerfScore 54.45, (MethodHash=fcbe27d9) for method EventSource:.ctor(int,ref):this ; ============================================================ ; Assembly listing for method EventSource:GetGuid(Type):Guid ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T02] ( 6, 4 ) byref -> rdi ; V01 arg0 [V01,T00] ( 6, 6 ) ref -> rsi class-hnd ; V02 loc0 [V02,T06] ( 4, 3 ) ref -> rbx class-hnd ; V03 loc1 [V03,T08] ( 4, 2.50) ref -> rsi class-hnd ; V04 loc2 [V04 ] ( 3, 1.50) struct (16) [rsp+0x30] do-not-enreg[XSB] addr-exposed ld-addr-op ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 3, 4.24) ref -> rax "CASTCLASS eval op1" ; V07 tmp2 [V07,T16] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V08 tmp3 [V08,T01] ( 5, 6.74) ref -> rbx class-hnd "spilling QMark2" ; V09 tmp4 [V09,T24] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp5 [V10,T25] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V11 tmp6 [V11,T15] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V12 tmp7 [V12,T04] ( 4, 4 ) ref -> rcx class-hnd "Inlining Arg" ;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V17 tmp12 [V17,T09] ( 2, 2 ) byref -> rdx "Inlining Arg" ;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V19 tmp14 [V19,T12] ( 2, 2 ) int -> rcx "Inlining Arg" ; V20 tmp15 [V20,T17] ( 2, 1 ) byref -> rdx V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ; V21 tmp16 [V21,T21] ( 2, 1 ) int -> rcx V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V22 tmp17 [V22,T18] ( 2, 1 ) byref -> rdx V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ; V23 tmp18 [V23,T22] ( 2, 1 ) int -> rcx V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ; V24 tmp19 [V24,T19] ( 2, 1 ) byref -> rdx V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ; V25 tmp20 [V25,T23] ( 2, 1 ) int -> rcx V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref V16._pointer(offs=0x00) P-INDEP "field V16._pointer (fldOffset=0x0)" ;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)" ; V28 tmp23 [V28,T20] ( 2, 1 ) byref -> rdx V18._value(offs=0x00) P-INDEP "field V18._value (fldOffset=0x0)" ; V29 tmp24 [V29,T26] ( 2, 0 ) ref -> rdx "argument with side effect" ; V30 tmp25 [V30,T05] ( 2, 4 ) ref -> rdx "argument with side effect" ; V31 tmp26 [V31 ] ( 2, 2 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V32 tmp27 [V32,T07] ( 3, 3 ) byref -> rax stack-byref "BlockOp address local" ; V33 tmp28 [V33,T27] ( 2, 0 ) ref -> rcx "argument with side effect" ; V34 tmp29 [V34,T28] ( 2, 0 ) ref -> rdi "argument with side effect" ; V35 tmp30 [V35,T29] ( 2, 0 ) ref -> r8 "argument with side effect" ; V36 tmp31 [V36,T10] ( 2, 2 ) ref -> rcx "argument with side effect" ; V37 tmp32 [V37,T11] ( 2, 2 ) ref -> rdx "argument with side effect" ; V38 cse0 [V38,T13] ( 3, 1.50) ref -> rcx "CSE - moderate" ; V39 cse1 [V39,T14] ( 3, 1.50) ref -> rcx "CSE - moderate" ; ; Lcl frame size = 64 G_M2308_IG01: push rdi push rsi push rbx sub rsp, 64 vzeroupper xor rax, rax mov qword ptr [rsp+20H], rax mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 6.00 G_M2308_IG02: test rsi, rsi je G_M2308_IG15 ;; bbWeight=1 PerfScore 1.25 G_M2308_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, rsi xor r8d, r8d call EventSource:GetCustomAttributeHelper(MemberInfo,Type,int):Attribute mov rbx, rax test rbx, rbx je SHORT G_M2308_IG06 ;; bbWeight=1 PerfScore 4.50 G_M2308_IG04: mov rcx, 0xD1FFAB1E cmp qword ptr [rbx], rcx je SHORT G_M2308_IG06 ;; bbWeight=0.25 PerfScore 0.81 G_M2308_IG05: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rbx, rax ;; bbWeight=0.12 PerfScore 0.18 G_M2308_IG06: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+48]MemberInfo:get_Name():String:this mov rsi, rax test rbx, rbx je SHORT G_M2308_IG12 ;; bbWeight=1 PerfScore 8.75 G_M2308_IG07: mov rcx, gword ptr [rbx+16] test rcx, rcx je SHORT G_M2308_IG11 test rcx, rcx jne SHORT G_M2308_IG08 vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+30H], xmm0 jmp SHORT G_M2308_IG11 ;; bbWeight=0.50 PerfScore 3.92 G_M2308_IG08: lea rdx, bword ptr [rcx+12] mov ecx, dword ptr [rcx+8] lea rax, bword ptr [rsp+20H] mov bword ptr [rax], rdx mov dword ptr [rax+8], ecx lea rcx, bword ptr [rsp+20H] lea rdx, [rsp+30H] call Guid:TryParse(ReadOnlySpan`1,byref):bool movzx rax, al test eax, eax je SHORT G_M2308_IG11 ;; bbWeight=0.50 PerfScore 4.25 G_M2308_IG09: vmovdqu xmm0, xmmword ptr [rsp+30H] vmovdqu xmmword ptr [rdi], xmm0 mov rax, rdi ;; bbWeight=0.50 PerfScore 1.13 G_M2308_IG10: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M2308_IG11: mov rcx, gword ptr [rbx+8] test rcx, rcx je SHORT G_M2308_IG12 mov rsi, rcx ;; bbWeight=0.50 PerfScore 1.75 G_M2308_IG12: test rsi, rsi je SHORT G_M2308_IG16 ;; bbWeight=0.50 PerfScore 0.63 G_M2308_IG13: mov rcx, 0xD1FFAB1E mov edx, 564 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, rsi cmp dword ptr [rcx], ecx call TextInfo:ToUpper(String):String:this mov rdx, rax mov rcx, rdi call EventSource:GenerateGuidFromName(String):Guid mov rax, rdi ;; bbWeight=0.50 PerfScore 4.38 G_M2308_IG14: add rsp, 64 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M2308_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1DA02 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M2308_IG16: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x7B13 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x1DA02 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 436, prolog size 17, PerfScore 84.28, (MethodHash=56a1f6fb) for method EventSource:GetGuid(Type):Guid ; ============================================================ ; Assembly listing for method EventSource:GetCustomAttributeHelper(MemberInfo,Type,int):Attribute ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T23] ( 7, 7 ) ref -> rdi class-hnd ; V01 arg1 [V01,T06] ( 7, 23 ) ref -> rsi class-hnd ; V02 arg2 [V02,T28] ( 3, 3 ) int -> rbx ; V03 loc0 [V03,T31] ( 3, 3 ) ref -> rbx class-hnd ; V04 loc1 [V04,T32] ( 3, 3 ) ref -> rax class-hnd ;* V05 loc2 [V05,T39] ( 0, 0 ) int -> zero-ref ; V06 loc3 [V06,T35] ( 3, 2.25) ref -> rdx class-hnd ; V07 loc4 [V07,T09] ( 7, 21 ) ref -> [rbp-0x58] EH do-not-enreg[] must-init class-hnd EH-live ; V08 loc5 [V08,T01] ( 11, 50 ) ref -> rdi class-hnd ; V09 loc6 [V09,T10] ( 6, 21 ) ref -> rbx class-hnd ; V10 loc7 [V10 ] ( 5, 20 ) struct (16) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V11 loc8 [V11,T20] ( 6, 14 ) ref -> [rbp-0x60] EH do-not-enreg[] class-hnd EH-live ; V12 loc9 [V12 ] ( 4, 16 ) struct (24) [rbp-0x48] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ; V13 loc10 [V13,T05] ( 7, 28 ) ref -> rdi class-hnd ; V14 loc11 [V14,T11] ( 5, 20 ) ref -> r14 class-hnd ; V15 loc12 [V15,T24] ( 2, 8 ) ref -> r14 class-hnd ; V16 loc13 [V16,T36] ( 2, 2 ) ref -> [rbp-0x68] EH do-not-enreg[] must-init class-hnd EH-live ; V17 OutArgs [V17 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V18 tmp1 [V18,T12] ( 3, 18 ) ref -> rax "CASTCLASS eval op1" ; V19 tmp2 [V19,T21] ( 3, 10 ) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V20 tmp3 [V20,T03] ( 5, 30 ) ref -> rbx class-hnd "spilling QMark2" ; V21 tmp4 [V21,T07] ( 3, 24 ) ref -> rbx class-hnd exact "dup spill" ; V22 tmp5 [V22,T14] ( 2, 16 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" ; V23 tmp6 [V23,T13] ( 3, 18 ) ref -> rax "CASTCLASS eval op1" ; V24 tmp7 [V24,T22] ( 3, 10 ) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V25 tmp8 [V25,T04] ( 5, 30 ) ref -> rbx class-hnd "spilling QMark2" ; V26 tmp9 [V26,T34] ( 3, 2.50) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V27 tmp10 [V27,T26] ( 5, 7.50) ref -> rbx class-hnd "spilling QMark2" ; V28 tmp11 [V28,T27] ( 3, 6 ) ref -> rax class-hnd "Inlining Arg" ; V29 tmp12 [V29,T15] ( 2, 16 ) ref -> rcx class-hnd "Inlining Arg" ; V30 tmp13 [V30,T25] ( 2, 8 ) ref -> r14 class-hnd "Inline return value spill temp" ; V31 tmp14 [V31 ] ( 3, 12 ) ref -> [rbp-0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" ;* V32 tmp15 [V32 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; V33 tmp16 [V33 ] ( 4, 16 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed V10.m_value(offs=0x00) P-DEP "field V10.m_value (fldOffset=0x0)" ; V34 tmp17 [V34 ] ( 2, 8 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed V10.m_argumentType(offs=0x08) P-DEP "field V10.m_argumentType (fldOffset=0x8)" ; V35 tmp18 [V35,T29] ( 2, 4 ) ref -> rcx "argument with side effect" ; V36 tmp19 [V36,T02] ( 2, 32 ) ref -> rdx "argument with side effect" ; V37 tmp20 [V37,T16] ( 2, 16 ) ref -> rcx "argument with side effect" ; V38 tmp21 [V38,T17] ( 2, 16 ) ref -> rcx "argument with side effect" ; V39 tmp22 [V39,T18] ( 2, 16 ) ref -> rcx "argument with side effect" ; V40 tmp23 [V40,T30] ( 2, 4 ) ref -> rcx "argument with side effect" ; V41 tmp24 [V41,T19] ( 2, 16 ) ref -> rdx "argument with side effect" ; V42 tmp25 [V42,T08] ( 3, 24 ) byref -> rcx stack-byref "BlockOp address local" ; V43 PSPSym [V43 ] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[X] addr-exposed "PSPSym" ; V44 tmp27 [V44,T37] ( 2, 2 ) ref -> rax "optAddCopies" ; V45 tmp28 [V45,T38] ( 2, 2 ) ref -> rax "optAddCopies" ; V46 cse0 [V46,T33] ( 3, 3 ) int -> rcx "CSE - moderate" ; V47 rat0 [V47,T00] ( 9, 78 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 128 G_M53788_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 128 lea rbp, [rsp+A0H] xor rax, rax mov qword ptr [rbp-68H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-60H], xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 vmovdqa xmmword ptr [rbp-40H], xmm4 vmovdqa xmmword ptr [rbp-30H], xmm4 mov qword ptr [rbp-70H], rsp mov rdi, rcx mov rsi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 13.08 G_M53788_IG02: mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+72] call gword ptr [rax+8]MemberInfo:get_Module():Module:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+64] call gword ptr [rax+32]Module:get_Assembly():Assembly:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call qword ptr [rax+56]Assembly:get_ReflectionOnly():bool:this and ebx, 8 or eax, ebx jne SHORT G_M53788_IG08 xor rbx, rbx mov rcx, rdi mov rdx, rsi xor r8d, r8d mov rax, qword ptr [rdi] mov rax, qword ptr [rax+72] call gword ptr [rax+40]MemberInfo:GetCustomAttributes(Type,bool):ref:this mov ecx, dword ptr [rax+8] test ecx, ecx jle SHORT G_M53788_IG06 ;; bbWeight=1 PerfScore 34.50 G_M53788_IG03: cmp ecx, 0 jbe G_M53788_IG35 mov rdx, gword ptr [rax+16] mov rbx, rdx test rbx, rbx je SHORT G_M53788_IG06 ;; bbWeight=1 PerfScore 4.75 G_M53788_IG04: mov rcx, 0xD1FFAB1E cmp qword ptr [rbx], rcx je SHORT G_M53788_IG06 ;; bbWeight=0.50 PerfScore 1.63 G_M53788_IG05: call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rbx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M53788_IG06: mov rax, rbx ;; bbWeight=1 PerfScore 0.25 G_M53788_IG07: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M53788_IG08: mov rcx, rdi call CustomAttributeData:GetCustomAttributes(MemberInfo):IList`1 mov rcx, rax mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-58H], rax ;; bbWeight=1 PerfScore 6.00 G_M53788_IG09: mov rcx, gword ptr [rbp-58H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M53788_IG28 ;; bbWeight=1 PerfScore 5.75 G_M53788_IG10: mov rcx, gword ptr [rbp-58H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerator`1:get_Current():__Canon:this mov rdi, rax mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+64] call gword ptr [rax+40]CustomAttributeData:get_Constructor():ConstructorInfo:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax]MemberInfo:get_ReflectedType():Type:this mov rdx, rax mov rcx, rsi call EventSource:AttributeTypeNamesMatch(Type,Type):bool test eax, eax je G_M53788_IG19 ;; bbWeight=8 PerfScore 176.00 G_M53788_IG11: xor rbx, rbx mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+64] call gword ptr [rax+48]CustomAttributeData:get_ConstructorArguments():IList`1:this mov rcx, rax mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]ICollection`1:get_Count():int:this cmp eax, 1 jne G_M53788_IG15 mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rbx, rax mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+64] call gword ptr [rax+48]CustomAttributeData:get_ConstructorArguments():IList`1:this mov rcx, rax lea rdx, bword ptr [rbp-30H] mov r11, 0xD1FFAB1E xor r8d, r8d mov rax, 0xD1FFAB1E call qword ptr [rax]IList`1:get_Item(int):CustomAttributeTypedArgument:this mov rdx, gword ptr [rbp-30H] lea rcx, bword ptr [rbx+16] call CORINFO_HELP_ASSIGN_REF xor rcx, rcx mov gword ptr [rsp+20H], rcx mov gword ptr [rsp+28H], rcx mov rcx, rsi mov r9, rbx mov edx, 532 xor r8, r8 call Activator:CreateInstance(Type,int,Binder,ref,CultureInfo,ref):Object mov rbx, rax test rbx, rbx je SHORT G_M53788_IG14 ;; bbWeight=4 PerfScore 137.00 G_M53788_IG12: mov rcx, 0xD1FFAB1E cmp qword ptr [rbx], rcx je SHORT G_M53788_IG14 ;; bbWeight=2 PerfScore 6.50 G_M53788_IG13: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rbx, rax ;; bbWeight=1 PerfScore 1.50 G_M53788_IG14: jmp SHORT G_M53788_IG18 ;; bbWeight=4 PerfScore 8.00 G_M53788_IG15: mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+64] call gword ptr [rax+48]CustomAttributeData:get_ConstructorArguments():IList`1:this mov rcx, rax mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]ICollection`1:get_Count():int:this test eax, eax jne SHORT G_M53788_IG18 mov rcx, rsi xor edx, edx mov r8d, 1 call Activator:CreateInstance(Type,bool,bool):Object mov rbx, rax test rbx, rbx je SHORT G_M53788_IG18 ;; bbWeight=4 PerfScore 62.00 G_M53788_IG16: mov rcx, 0xD1FFAB1E cmp qword ptr [rbx], rcx je SHORT G_M53788_IG18 ;; bbWeight=2 PerfScore 6.50 G_M53788_IG17: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rbx, rax ;; bbWeight=1 PerfScore 1.50 G_M53788_IG18: test rbx, rbx jne SHORT G_M53788_IG21 ;; bbWeight=4 PerfScore 5.00 G_M53788_IG19: mov rcx, gword ptr [rbp-58H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne G_M53788_IG10 ;; bbWeight=8 PerfScore 46.00 G_M53788_IG20: jmp G_M53788_IG28 ;; bbWeight=1 PerfScore 2.00 G_M53788_IG21: mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+64] call gword ptr [rax+56]CustomAttributeData:get_NamedArguments():IList`1:this mov rcx, rax mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-60H], rax ;; bbWeight=1 PerfScore 12.00 G_M53788_IG22: jmp G_M53788_IG26 ;; bbWeight=1 PerfScore 2.00 G_M53788_IG23: lea rdx, [rbp-48H] mov rcx, gword ptr [rbp-60H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():CustomAttributeNamedArgument:this mov rcx, gword ptr [rbp-48H] mov rax, gword ptr [rbp-48H] mov rax, qword ptr [rax] mov rax, qword ptr [rax+64] call gword ptr [rax+48]MemberInfo:get_Name():String:this mov rdx, rax mov rcx, rsi mov r8d, 20 mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call gword ptr [rax]Type:GetProperty(String,int):PropertyInfo:this mov rdi, rax lea rcx, bword ptr [rbp-40H] mov rax, gword ptr [rcx] mov gword ptr [rbp-30H], rax mov rcx, gword ptr [rcx+8] mov gword ptr [rbp-28H], rcx mov r14, gword ptr [rbp-30H] mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+80] call gword ptr [rax+16]PropertyInfo:get_PropertyType():Type:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+112] call qword ptr [rax+24]Type:get_IsEnum():bool:this test eax, eax je SHORT G_M53788_IG25 mov rcx, r14 mov rax, qword ptr [r14] mov rax, qword ptr [rax+64] call gword ptr [rax+8]Object:ToString():String:this mov r14, rax mov rcx, rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+80] call gword ptr [rax+16]PropertyInfo:get_PropertyType():Type:this mov rcx, rax lea rdx, [rbp-50H] mov qword ptr [rsp+20H], rdx mov rdx, r14 xor r8d, r8d mov r9d, 1 call Enum:TryParse(Type,String,bool,bool,byref):bool mov r14, gword ptr [rbp-50H] xor rcx, rcx ;; bbWeight=4 PerfScore 252.00 G_M53788_IG24: mov gword ptr [rbp-50H], rcx ;; bbWeight=4 PerfScore 4.00 G_M53788_IG25: mov rcx, rdi mov rdx, rbx mov r8, r14 xor r9, r9 mov rax, qword ptr [rdi] mov rax, qword ptr [rax+96] call qword ptr [rax+16]PropertyInfo:SetValue(Object,Object,ref):this ;; bbWeight=4 PerfScore 32.00 G_M53788_IG26: mov rcx, gword ptr [rbp-60H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne G_M53788_IG23 ;; bbWeight=8 PerfScore 46.00 G_M53788_IG27: mov rcx, gword ptr [rbp-60H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this mov gword ptr [rbp-68H], rbx jmp SHORT G_M53788_IG29 ;; bbWeight=1 PerfScore 7.50 G_M53788_IG28: mov rcx, gword ptr [rbp-58H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this jmp SHORT G_M53788_IG33 ;; bbWeight=1 PerfScore 6.50 G_M53788_IG29: mov rcx, rsp call G_M53788_IG40 ;; bbWeight=1 PerfScore 1.25 G_M53788_IG30: nop ;; bbWeight=1 PerfScore 0.25 G_M53788_IG31: mov rax, gword ptr [rbp-68H] ;; bbWeight=1 PerfScore 1.00 G_M53788_IG32: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M53788_IG33: xor rax, rax ;; bbWeight=1 PerfScore 0.25 G_M53788_IG34: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M53788_IG35: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 G_M53788_IG36: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 mov rbp, qword ptr [rcx+48] mov qword ptr [rsp+30H], rbp lea rbp, [rbp+A0H] ;; bbWeight=0 PerfScore 0.00 G_M53788_IG37: cmp gword ptr [rbp-60H], 0 je SHORT G_M53788_IG38 mov rcx, gword ptr [rbp-60H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M53788_IG38: nop ;; bbWeight=0 PerfScore 0.00 G_M53788_IG39: add rsp, 64 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M53788_IG40: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 mov rbp, qword ptr [rcx+48] mov qword ptr [rsp+30H], rbp lea rbp, [rbp+A0H] ;; bbWeight=1 PerfScore 8.75 G_M53788_IG41: cmp gword ptr [rbp-58H], 0 je SHORT G_M53788_IG42 mov rcx, gword ptr [rbp-58H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=1 PerfScore 6.50 G_M53788_IG42: nop ;; bbWeight=1 PerfScore 0.25 G_M53788_IG43: add rsp, 64 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 1219, prolog size 64, PerfScore 1036.67, (MethodHash=99552de3) for method EventSource:GetCustomAttributeHelper(MemberInfo,Type,int):Attribute ; ============================================================ ; Assembly listing for method MemberInfo:get_Module():Module:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 loc0 [V01,T01] ( 4, 4 ) ref -> rax class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 32 G_M8976_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M8976_IG02: mov rdx, rcx mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax je SHORT G_M8976_IG04 mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+80] mov rax, qword ptr [rax+56] ;; bbWeight=1 PerfScore 9.00 G_M8976_IG03: add rsp, 32 pop rsi rex.jmp rax ;; bbWeight=1 PerfScore 2.75 G_M8976_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call NotImplementedException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 85, prolog size 5, PerfScore 21.50, (MethodHash=71cddcef) for method MemberInfo:get_Module():Module:this ; ============================================================ ; Assembly listing for method RuntimeType:get_Module():Module:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M47050_IG01: ;; bbWeight=1 PerfScore 0.00 G_M47050_IG02: jmp RuntimeTypeHandle:GetModule(RuntimeType):RuntimeModule ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 5, prolog size 0, PerfScore 2.50, (MethodHash=d62f4835) for method RuntimeType:get_Module():Module:this ; ============================================================ ; Assembly listing for method RuntimeModule:get_Assembly():Assembly:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M45544_IG01: ;; bbWeight=1 PerfScore 0.00 G_M45544_IG02: mov rax, gword ptr [rcx+16] ;; bbWeight=1 PerfScore 2.00 G_M45544_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=9b8d4e17) for method RuntimeModule:get_Assembly():Assembly:this ; ============================================================ ; Assembly listing for method RuntimeAssembly:get_ReflectionOnly():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M60657_IG01: ;; bbWeight=1 PerfScore 0.00 G_M60657_IG02: xor eax, eax ;; bbWeight=1 PerfScore 0.25 G_M60657_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 3, prolog size 0, PerfScore 1.55, (MethodHash=87dc130e) for method RuntimeAssembly:get_ReflectionOnly():bool:this ; ============================================================ ; Assembly listing for method RuntimeType:GetCustomAttributes(Type,bool):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rdx class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) bool -> rdi ; V03 loc0 [V03,T05] ( 3, 3 ) ref -> rdx class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 4 ) ref -> rax "CASTCLASS eval op1" ; V06 tmp2 [V06,T01] ( 5, 6.74) ref -> rdx class-hnd "spilling QMark2" ; V07 tmp3 [V07,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp4 [V08,T07] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> rcx "argument with side effect" ; V11 tmp7 [V11,T10] ( 2, 0 ) ref -> rdi "argument with side effect" ; V12 tmp8 [V12,T11] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M4354_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov edi, r8d ;; bbWeight=1 PerfScore 2.75 G_M4354_IG02: test rdx, rdx je SHORT G_M4354_IG09 ;; bbWeight=1 PerfScore 1.25 G_M4354_IG03: mov rcx, rdx mov rax, qword ptr [rdx] mov rax, qword ptr [rax+88] call gword ptr [rax+8]Type:get_UnderlyingSystemType():Type:this mov rdx, rax test rdx, rdx je SHORT G_M4354_IG06 ;; bbWeight=1 PerfScore 8.75 G_M4354_IG04: mov r8, 0xD1FFAB1E cmp qword ptr [rdx], r8 je SHORT G_M4354_IG06 ;; bbWeight=0.25 PerfScore 0.81 G_M4354_IG05: xor rdx, rdx ;; bbWeight=0.12 PerfScore 0.03 G_M4354_IG06: test rdx, rdx je SHORT G_M4354_IG10 ;; bbWeight=1 PerfScore 1.25 G_M4354_IG07: movzx r8, dil mov rcx, rsi ;; bbWeight=1 PerfScore 0.50 G_M4354_IG08: add rsp, 40 pop rsi pop rdi jmp CustomAttribute:GetCustomAttributes(RuntimeType,RuntimeType,bool):ref ;; bbWeight=1 PerfScore 3.25 G_M4354_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 245 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M4354_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x4B99 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 245 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 229, prolog size 6, PerfScore 41.49, (MethodHash=7246eefd) for method RuntimeType:GetCustomAttributes(Type,bool):ref:this ; ============================================================ ; Assembly listing for method CustomAttribute:GetCustomAttributes(RuntimeType,RuntimeType,bool):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 18, 24 ) ref -> rsi class-hnd ; V01 arg1 [V01,T05] ( 15, 9.75) ref -> rdi class-hnd ; V02 arg2 [V02,T15] ( 3, 2.50) bool -> rbx ; V03 loc0 [V03 ] ( 15, 18.75) struct (24) [rsp+0x60] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V04 loc1 [V04 ] ( 14, 29.50) struct (24) [rsp+0x48] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V05 loc2 [V05,T16] ( 3, 4.50) bool -> rbx ; V06 loc3 [V06,T34] ( 2, 1 ) bool -> rcx ; V07 loc4 [V07,T31] ( 2, 1 ) ref -> rbp class-hnd ; V08 loc5 [V08,T14] ( 3, 5 ) ref -> rsi class-hnd ; V09 loc6 [V09,T20] ( 5, 2.50) ref -> rdi class-hnd ; V10 loc7 [V10,T03] ( 6, 16.50) int -> r14 ; V11 loc8 [V11,T01] ( 7, 20.50) int -> rdi ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V13 tmp1 [V13,T21] ( 2, 2 ) ref -> rbx class-hnd "impAppendStmt" ; V14 tmp2 [V14,T24] ( 2, 2 ) int -> rdx "impAppendStmt" ; V15 tmp3 [V15,T25] ( 2, 2 ) int -> r9 "impAppendStmt" ; V16 tmp4 [V16,T29] ( 3, 1.50) int -> rax ; V17 tmp5 [V17,T27] ( 3, 1.50) ref -> rbp ; V18 tmp6 [V18,T08] ( 2, 8 ) ref -> r14 class-hnd "impAppendStmt" ; V19 tmp7 [V19,T09] ( 2, 8 ) ref -> rax "CASTCLASS eval op1" ; V20 tmp8 [V20,T04] ( 5, 14.96) ref -> rsi class-hnd "spilling QMark2" ; V21 tmp9 [V21,T22] ( 2, 2 ) ref -> rax "CASTCLASS eval op1" ; V22 tmp10 [V22,T18] ( 5, 3.74) ref -> rsi class-hnd "spilling QMark2" ; V23 tmp11 [V23,T32] ( 2, 1 ) ref -> rax class-hnd "Inline return value spill temp" ; V24 tmp12 [V24,T28] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" ; V25 tmp13 [V25,T30] ( 3, 1 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V26 tmp14 [V26,T26] ( 2, 2 ) long -> rcx ld-addr-op "Inlining Arg" ;* V27 tmp15 [V27 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V28 tmp16 [V28,T35] ( 2, 1 ) long -> rcx "Inlining Arg" ;* V29 tmp17 [V29 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V30 tmp18 [V30,T33] ( 2, 1 ) byref -> rcx "Inlining Arg" ; V31 tmp19 [V31,T23] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ; V32 tmp20 [V32,T19] ( 3, 3 ) int -> r9 "Inlining Arg" ; V33 tmp21 [V33,T06] ( 3, 8 ) ref -> r8 class-hnd "Inline return value spill temp" ; V34 tmp22 [V34,T07] ( 3, 8 ) ref -> r8 class-hnd "Inline return value spill temp" ; V35 tmp23 [V35 ] ( 5, 9 ) ref -> [rsp+0x60] do-not-enreg[X] addr-exposed V03._items(offs=0x00) P-DEP "field V03._items (fldOffset=0x0)" ; V36 tmp24 [V36 ] ( 3, 3 ) ref -> [rsp+0x68] do-not-enreg[X] addr-exposed V03._item(offs=0x08) P-DEP "field V03._item (fldOffset=0x8)" ; V37 tmp25 [V37 ] ( 9, 7.75) int -> [rsp+0x70] do-not-enreg[X] addr-exposed V03._count(offs=0x10) P-DEP "field V03._count (fldOffset=0x10)" ; V38 tmp26 [V38 ] ( 1, 0.50) int -> [rsp+0x74] do-not-enreg[X] addr-exposed V03._capacity(offs=0x14) P-DEP "field V03._capacity (fldOffset=0x14)" ; V39 tmp27 [V39 ] ( 7, 16.50) ref -> [rsp+0x48] do-not-enreg[X] addr-exposed V04._items(offs=0x00) P-DEP "field V04._items (fldOffset=0x0)" ; V40 tmp28 [V40 ] ( 5, 10.50) ref -> [rsp+0x50] do-not-enreg[X] addr-exposed V04._item(offs=0x08) P-DEP "field V04._item (fldOffset=0x8)" ; V41 tmp29 [V41 ] ( 7, 13.50) int -> [rsp+0x58] do-not-enreg[X] addr-exposed V04._count(offs=0x10) P-DEP "field V04._count (fldOffset=0x10)" ; V42 tmp30 [V42 ] ( 4, 8.50) int -> [rsp+0x5C] do-not-enreg[X] addr-exposed V04._capacity(offs=0x14) P-DEP "field V04._capacity (fldOffset=0x14)" ; V43 tmp31 [V43 ] ( 2, 8 ) struct (24) [rsp+0x30] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V44 tmp32 [V44,T02] ( 5, 20 ) byref -> rdx stack-byref "BlockOp address local" ; V45 tmp33 [V45,T11] ( 2, 8 ) int -> r8 "argument with side effect" ; V46 tmp34 [V46,T10] ( 2, 8 ) ref -> r14 "argument with side effect" ; V47 tmp35 [V47,T12] ( 2, 8 ) long -> r15 "argument with side effect" ;* V48 tmp36 [V48,T17] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V49 tmp37 [V49,T13] ( 2, 8 ) int -> rbx "argument with side effect" ; ; Lcl frame size = 120 G_M43137_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 120 vzeroupper vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 vmovdqa xmmword ptr [rsp+50H], xmm4 vmovdqa xmmword ptr [rsp+60H], xmm4 xor rax, rax mov qword ptr [rsp+70H], rax mov rsi, rcx mov rdi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 13.58 G_M43137_IG02: cmp dword ptr [rsi], esi mov rcx, rsi call RuntimeTypeHandle:GetElementType(RuntimeType):RuntimeType test rax, rax je SHORT G_M43137_IG11 ;; bbWeight=1 PerfScore 4.50 G_M43137_IG03: mov rcx, rdi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]RuntimeType:IsValueTypeImpl():bool:this test al, al jne SHORT G_M43137_IG09 mov rcx, qword ptr [rdi+16] test rcx, rcx je SHORT G_M43137_IG06 ;; bbWeight=0.50 PerfScore 5.00 G_M43137_IG04: mov rcx, qword ptr [rdi+16] mov rcx, gword ptr [rcx] test rcx, rcx je SHORT G_M43137_IG06 ;; bbWeight=0.25 PerfScore 1.31 G_M43137_IG05: jmp SHORT G_M43137_IG07 ;; bbWeight=0.50 PerfScore 1.00 G_M43137_IG06: mov rcx, rdi call RuntimeType:InitializeCache():RuntimeTypeCache:this mov rcx, rax ;; bbWeight=0.50 PerfScore 0.75 G_M43137_IG07: cmp dword ptr [rcx], ecx call RuntimeTypeCache:GetEmptyArray():ref:this nop ;; bbWeight=0.50 PerfScore 1.63 G_M43137_IG08: add rsp, 120 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M43137_IG09: mov rcx, 0xD1FFAB1E mov edx, 37 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.88 G_M43137_IG10: add rsp, 120 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M43137_IG11: mov rcx, rsi call RuntimeTypeHandle:HasInstantiation(RuntimeType):bool test eax, eax je SHORT G_M43137_IG14 mov rcx, rsi call RuntimeTypeHandle:IsGenericTypeDefinition(RuntimeType):bool test eax, eax jne SHORT G_M43137_IG14 mov rcx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]RuntimeType:GetGenericTypeDefinition():Type:this mov rsi, rax test rsi, rsi je SHORT G_M43137_IG14 ;; bbWeight=0.50 PerfScore 5.00 G_M43137_IG12: mov r8, 0xD1FFAB1E cmp qword ptr [rsi], r8 je SHORT G_M43137_IG14 ;; bbWeight=0.25 PerfScore 0.81 G_M43137_IG13: xor rsi, rsi ;; bbWeight=0.12 PerfScore 0.03 G_M43137_IG14: lea r8, bword ptr [rsp+60H] mov rcx, rsi mov rdx, rdi call PseudoCustomAttribute:GetCustomAttributes(RuntimeType,RuntimeType,byref) test bl, bl je SHORT G_M43137_IG15 cmp dword ptr [rdi], edi mov rcx, rdi call RuntimeTypeHandle:GetAttributes(RuntimeType):int test eax, 256 je G_M43137_IG21 mov rcx, rdi call CustomAttribute:GetAttributeUsage(RuntimeType):AttributeUsageAttribute cmp byte ptr [rax+13], 0 jne G_M43137_IG21 ;; bbWeight=0.50 PerfScore 6.00 G_M43137_IG15: cmp dword ptr [rsi], esi mov rcx, rsi call RuntimeTypeHandle:GetModule(RuntimeType):RuntimeModule mov rbx, rax mov rcx, rsi call RuntimeTypeHandle:GetToken(RuntimeType):int mov edx, eax mov rcx, rbx mov r8d, dword ptr [rsp+70H] mov r9, rdi call CustomAttribute:GetCustomAttributes(RuntimeModule,int,int,RuntimeType):ref mov rdi, rax cmp dword ptr [rsp+70H], 0 jle SHORT G_M43137_IG19 mov r9d, dword ptr [rdi+8] sub r9d, dword ptr [rsp+70H] cmp dword ptr [rsp+70H], 0 je SHORT G_M43137_IG19 ;; bbWeight=0.50 PerfScore 7.38 G_M43137_IG16: cmp dword ptr [rsp+70H], 1 jne SHORT G_M43137_IG18 ;; bbWeight=0.25 PerfScore 0.50 G_M43137_IG17: mov rcx, rdi mov edx, r9d mov r8, gword ptr [rsp+68H] call CORINFO_HELP_ARRADDR_ST jmp SHORT G_M43137_IG19 ;; bbWeight=0.50 PerfScore 2.25 G_M43137_IG18: mov ecx, dword ptr [rsp+70H] mov dword ptr [rsp+20H], ecx mov rcx, gword ptr [rsp+60H] mov r8, rdi xor edx, edx call Array:Copy(Array,int,Array,int,int) ;; bbWeight=0.50 PerfScore 2.25 G_M43137_IG19: mov rax, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M43137_IG20: add rsp, 120 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M43137_IG21: xor ecx, ecx vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+48H], xmm0 mov qword ptr [rsp+58H], rcx xor ebx, ebx mov rcx, rdi mov rax, 0xD1FFAB1E call qword ptr [rax]RuntimeType:IsValueTypeImpl():bool:this test al, al jne SHORT G_M43137_IG22 mov rcx, rdi mov rax, 0xD1FFAB1E call qword ptr [rax]RuntimeType:get_ContainsGenericParameters():bool:this jmp SHORT G_M43137_IG23 ;; bbWeight=0.50 PerfScore 6.54 G_M43137_IG22: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M43137_IG23: movzx rcx, al test ecx, ecx jne SHORT G_M43137_IG24 mov rbp, rdi jmp SHORT G_M43137_IG25 ;; bbWeight=0.50 PerfScore 1.88 G_M43137_IG24: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rbp, rax ;; bbWeight=0.50 PerfScore 0.75 G_M43137_IG25: xor r14d, r14d cmp dword ptr [rsp+70H], 0 jle G_M43137_IG34 ;; bbWeight=0.50 PerfScore 1.13 G_M43137_IG26: cmp gword ptr [rsp+60H], 0 jne SHORT G_M43137_IG28 ;; bbWeight=4 PerfScore 8.00 G_M43137_IG27: mov r8, gword ptr [rsp+68H] jmp SHORT G_M43137_IG29 ;; bbWeight=2 PerfScore 6.00 G_M43137_IG28: mov r8, gword ptr [rsp+60H] cmp r14d, dword ptr [r8+8] jae G_M43137_IG42 mov rcx, gword ptr [rsp+60H] movsxd r8, r14d mov r8, gword ptr [rcx+8*r8+16] ;; bbWeight=2 PerfScore 14.50 G_M43137_IG29: lea rcx, bword ptr [rsp+48H] mov rdx, 0xD1FFAB1E call ListBuilder`1:Add(__Canon):this inc r14d cmp r14d, dword ptr [rsp+70H] jl SHORT G_M43137_IG26 ;; bbWeight=4 PerfScore 16.00 G_M43137_IG30: jmp G_M43137_IG34 ;; bbWeight=0.50 PerfScore 1.00 G_M43137_IG31: mov rcx, rsi call RuntimeTypeHandle:GetModule(RuntimeType):RuntimeModule mov r14, rax lea r15, bword ptr [rsp+48H] mov rcx, rsi call RuntimeTypeHandle:GetToken(RuntimeType):int mov r8d, eax lea rdx, bword ptr [rsp+30H] mov rcx, gword ptr [rsp+48H] mov gword ptr [rdx], rcx mov rcx, gword ptr [rsp+50H] mov gword ptr [rdx+8], rcx mov ecx, dword ptr [rsp+58H] mov dword ptr [rdx+16], ecx mov ecx, dword ptr [rsp+5CH] mov dword ptr [rdx+20], ecx mov rdx, r14 mov rcx, r15 mov r9, rdi mov dword ptr [rsp+20H], ebx lea rax, bword ptr [rsp+30H] mov bword ptr [rsp+28H], rax call CustomAttribute:AddCustomAttributes(byref,RuntimeModule,int,RuntimeType,bool,ListBuilder`1) mov ebx, 1 mov rcx, rsi call RuntimeType:GetBaseType():RuntimeType:this mov rsi, rax test rsi, rsi je SHORT G_M43137_IG34 ;; bbWeight=2 PerfScore 38.50 G_M43137_IG32: mov rcx, 0xD1FFAB1E cmp qword ptr [rsi], rcx je SHORT G_M43137_IG34 ;; bbWeight=1 PerfScore 3.25 G_M43137_IG33: xor rsi, rsi ;; bbWeight=0.48 PerfScore 0.12 G_M43137_IG34: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi je SHORT G_M43137_IG35 test rsi, rsi jne G_M43137_IG31 ;; bbWeight=4 PerfScore 15.00 G_M43137_IG35: mov rcx, rbp mov edx, dword ptr [rsp+58H] call CustomAttribute:CreateAttributeArrayHelper(RuntimeType,int):ref mov rsi, rax xor edi, edi cmp dword ptr [rsp+58H], 0 jle SHORT G_M43137_IG40 ;; bbWeight=0.50 PerfScore 2.38 G_M43137_IG36: cmp gword ptr [rsp+48H], 0 jne SHORT G_M43137_IG38 ;; bbWeight=4 PerfScore 8.00 G_M43137_IG37: mov r8, gword ptr [rsp+50H] jmp SHORT G_M43137_IG39 ;; bbWeight=2 PerfScore 6.00 G_M43137_IG38: mov r8, gword ptr [rsp+48H] cmp edi, dword ptr [r8+8] jae SHORT G_M43137_IG42 mov rcx, gword ptr [rsp+48H] movsxd rdx, edi mov r8, gword ptr [rcx+8*rdx+16] ;; bbWeight=2 PerfScore 14.50 G_M43137_IG39: mov rcx, rsi mov edx, edi call CORINFO_HELP_ARRADDR_ST inc edi cmp edi, dword ptr [rsp+58H] jl SHORT G_M43137_IG36 ;; bbWeight=4 PerfScore 15.00 G_M43137_IG40: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M43137_IG41: add rsp, 120 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M43137_IG42: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 891, prolog size 59, PerfScore 311.08, (MethodHash=2d73577e) for method CustomAttribute:GetCustomAttributes(RuntimeType,RuntimeType,bool):ref ; ============================================================ ; Assembly listing for method PseudoCustomAttribute:GetCustomAttributes(RuntimeType,RuntimeType,byref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 6, 4 ) ref -> rdi class-hnd ; V01 arg1 [V01,T00] ( 7, 5 ) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 5, 4 ) byref -> rbx ; V03 loc0 [V03,T03] ( 4, 3 ) bool -> rbp ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 3, 2 ) int -> rcx ; V06 tmp2 [V06,T06] ( 2, 2 ) ref -> r8 class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T07] ( 2, 2 ) ref -> r8 class-hnd exact "NewObj constructor temp" ; V08 tmp4 [V08,T04] ( 3, 3 ) ref -> rcx class-hnd exact "Inlining Arg" ; V09 tmp5 [V09,T08] ( 2, 2 ) byref -> rax "Inlining Arg" ; ; Lcl frame size = 40 G_M60150_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 vzeroupper mov rdi, rcx mov rsi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 6.00 G_M60150_IG02: xor ecx, ecx vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbx], xmm0 mov qword ptr [rbx+16], rcx mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi je SHORT G_M60150_IG04 ;; bbWeight=1 PerfScore 5.08 G_M60150_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi sete cl movzx rcx, cl jmp SHORT G_M60150_IG05 ;; bbWeight=0.50 PerfScore 2.38 G_M60150_IG04: mov ecx, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M60150_IG05: movzx rbp, cl test ebp, ebp jne SHORT G_M60150_IG08 ;; bbWeight=1 PerfScore 1.50 G_M60150_IG06: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] cmp dword ptr [rcx], ecx mov rdx, rsi call Dictionary`2:FindValue(__Canon):byref:this test rax, rax jne SHORT G_M60150_IG08 ;; bbWeight=0.50 PerfScore 3.38 G_M60150_IG07: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M60150_IG08: test ebp, ebp jne SHORT G_M60150_IG09 mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi jne SHORT G_M60150_IG10 ;; bbWeight=0.50 PerfScore 1.88 G_M60150_IG09: cmp dword ptr [rdi], edi mov rcx, rdi call RuntimeTypeHandle:GetAttributes(RuntimeType):int test eax, 0x2000 je SHORT G_M60150_IG10 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r8, rax mov rcx, rbx mov rdx, 0xD1FFAB1E call ListBuilder`1:Add(__Canon):this ;; bbWeight=0.50 PerfScore 3.75 G_M60150_IG10: test ebp, ebp jne SHORT G_M60150_IG11 mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rsi jne SHORT G_M60150_IG13 ;; bbWeight=0.50 PerfScore 1.88 G_M60150_IG11: cmp dword ptr [rdi], edi mov rcx, rdi call RuntimeTypeHandle:GetAttributes(RuntimeType):int test eax, 0x1000 je SHORT G_M60150_IG13 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r8, rax mov rcx, rbx mov rdx, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 3.25 G_M60150_IG12: add rsp, 40 pop rbx pop rbp pop rsi pop rdi jmp ListBuilder`1:Add(__Canon):this ;; bbWeight=0.50 PerfScore 2.13 G_M60150_IG13: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 301, prolog size 20, PerfScore 64.88, (MethodHash=4ada1509) for method PseudoCustomAttribute:GetCustomAttributes(RuntimeType,RuntimeType,byref) ; ============================================================ ; Assembly listing for method EventSourceAttribute:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5812_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5812_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=f756e94b) for method EventSourceAttribute:.ctor():this ; ============================================================ ; Assembly listing for method EventSourceAttribute:set_Name(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M43167_IG01: ;; bbWeight=1 PerfScore 0.00 G_M43167_IG02: lea rcx, bword ptr [rcx+8] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 1.75 G_M43167_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 11, prolog size 0, PerfScore 3.85, (MethodHash=c0895760) for method EventSourceAttribute:set_Name(String):this ; ============================================================ ; Assembly listing for method RuntimeType:get_Name():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M18104_IG01: ;; bbWeight=1 PerfScore 0.00 G_M18104_IG02: xor edx, edx ;; bbWeight=1 PerfScore 0.25 G_M18104_IG03: jmp RuntimeType:GetCachedName(int):String:this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 7, prolog size 0, PerfScore 2.95, (MethodHash=9ffcb947) for method RuntimeType:get_Name():String:this ; ============================================================ ; Assembly listing for method RuntimeType:GetCachedName(int):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 3.75) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) int -> rsi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" ; V04 tmp2 [V04,T04] ( 3, 1 ) ref -> rax class-hnd "Inline stloc first use temp" ; V05 tmp3 [V05,T02] ( 2, 4 ) long -> rax ld-addr-op "Inlining Arg" ;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V07 tmp5 [V07,T06] ( 2, 1 ) long -> rax "Inlining Arg" ;* V08 tmp6 [V08 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V09 tmp7 [V09,T05] ( 2, 1 ) byref -> rax "Inlining Arg" ; ; Lcl frame size = 32 G_M22396_IG01: push rsi sub rsp, 32 mov esi, edx ;; bbWeight=1 PerfScore 1.50 G_M22396_IG02: mov rax, qword ptr [rcx+16] test rax, rax je SHORT G_M22396_IG05 ;; bbWeight=1 PerfScore 3.25 G_M22396_IG03: mov rax, qword ptr [rcx+16] mov rax, gword ptr [rax] test rax, rax je SHORT G_M22396_IG05 ;; bbWeight=0.25 PerfScore 1.31 G_M22396_IG04: jmp SHORT G_M22396_IG06 ;; bbWeight=0.50 PerfScore 1.00 G_M22396_IG05: call RuntimeType:InitializeCache():RuntimeTypeCache:this ;; bbWeight=0.50 PerfScore 0.50 G_M22396_IG06: mov rcx, rax mov edx, esi cmp dword ptr [rcx], ecx call RuntimeTypeCache:GetName(int):String:this nop ;; bbWeight=1 PerfScore 3.75 G_M22396_IG07: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 54, prolog size 5, PerfScore 18.46, (MethodHash=f48ba883) for method RuntimeType:GetCachedName(int):String:this ; ============================================================ ; Assembly listing for method RuntimeTypeCache:GetName(int):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 12, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) int -> rdx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 rat0 [V04,T02] ( 3, 3 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 32 G_M5816_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M5816_IG02: cmp edx, 2 ja G_M5816_IG11 mov edx, edx lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea r8, G_M5816_IG02 add rcx, r8 jmp rcx ;; bbWeight=1 PerfScore 7.25 G_M5816_IG03: cmp dword ptr [rsi], esi lea rdx, bword ptr [rsi+24] mov rcx, rsi xor r8d, r8d ;; bbWeight=0.50 PerfScore 1.50 G_M5816_IG04: add rsp, 32 pop rsi jmp RuntimeTypeCache:ConstructName(byref,int):String:this ;; bbWeight=0.50 PerfScore 1.38 G_M5816_IG05: mov rcx, gword ptr [rsi+8] cmp dword ptr [rcx], ecx call Type:GetRootElementType():Type:this mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+96] call qword ptr [rax+24]Type:get_IsGenericTypeDefinition():bool:this test eax, eax jne SHORT G_M5816_IG07 mov rcx, gword ptr [rsi+8] mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]RuntimeType:get_ContainsGenericParameters():bool:this test eax, eax je SHORT G_M5816_IG07 xor rax, rax ;; bbWeight=0.50 PerfScore 11.13 G_M5816_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M5816_IG07: lea rdx, bword ptr [rsi+32] mov rcx, rsi mov r8d, 3 ;; bbWeight=0.50 PerfScore 0.50 G_M5816_IG08: add rsp, 32 pop rsi jmp RuntimeTypeCache:ConstructName(byref,int):String:this ;; bbWeight=0.50 PerfScore 1.38 G_M5816_IG09: cmp dword ptr [rsi], esi lea rdx, bword ptr [rsi+40] mov rcx, rsi mov r8d, 1 ;; bbWeight=0.50 PerfScore 1.50 G_M5816_IG10: add rsp, 32 pop rsi jmp RuntimeTypeCache:ConstructName(byref,int):String:this ;; bbWeight=0.50 PerfScore 1.38 G_M5816_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call InvalidOperationException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M5816_IG03 - G_M5816_IG02 dd G_M5816_IG09 - G_M5816_IG02 dd G_M5816_IG05 - G_M5816_IG02 ; Total bytes of code 204, prolog size 8, PerfScore 48.78, (MethodHash=cc37e947) for method RuntimeTypeCache:GetName(int):String:this ; ============================================================ ; Assembly listing for method RuntimeTypeCache:ConstructName(byref,int):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 4, 3.50) byref -> rsi ; V02 arg2 [V02,T02] ( 3, 2.50) int -> r8 ; V03 loc0 [V03 ] ( 2, 1 ) struct ( 8) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V07 tmp2 [V07,T04] ( 4, 3.50) ref -> rax ;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> rdi class-hnd "dup spill" ; V10 tmp5 [V10,T06] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V11 tmp6 [V11 ] ( 2, 1 ) ref -> [rsp+0x20] do-not-enreg[X] addr-exposed V03.m_type(offs=0x00) P-DEP "field V03.m_type (fldOffset=0x0)" ; V12 tmp7 [V12,T07] ( 2, 1 ) ref -> rcx V08.m_type(offs=0x00) P-INDEP "field V08.m_type (fldOffset=0x0)" ; ; Lcl frame size = 40 G_M42141_IG01: push rdi push rsi sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, rdx ;; bbWeight=1 PerfScore 3.75 G_M42141_IG02: mov rax, gword ptr [rsi] test rax, rax jne SHORT G_M42141_IG04 ;; bbWeight=1 PerfScore 3.25 G_M42141_IG03: mov rcx, gword ptr [rcx+8] mov gword ptr [rsp+20H], rcx lea rcx, bword ptr [rsp+20H] mov edx, r8d call RuntimeTypeHandle:ConstructName(int):String:this mov rdi, rax mov rcx, rsi mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 3.38 G_M42141_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 70, prolog size 13, PerfScore 19.63, (MethodHash=d8c15b62) for method RuntimeTypeCache:ConstructName(byref,int):String:this ; ============================================================ ; Assembly listing for method RuntimeTypeHandle:ConstructName(int):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rsi this ; V01 arg1 [V01,T03] ( 3, 3 ) int -> rdi ; V02 loc0 [V02 ] ( 2, 2 ) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V03 loc1 [V03 ] ( 3, 3 ) struct ( 8) [rbp-0x48] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V07 tmp3 [V07,T04] ( 2, 4 ) ref -> rax "Single return block return value" ; V08 FramesRoot [V08,T00] ( 6, 6 ) long -> rbx "Pinvoke FrameListRoot" ; V09 PInvokeFrame [V09 ] ( 8, 8 ) blk (72) [rbp-0xA0] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V10 tmp6 [V10 ] ( 3, 3 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed V03.m_type(offs=0x00) P-DEP "field V03.m_type (fldOffset=0x0)" ; V11 tmp7 [V11,T05] ( 2, 2 ) long -> rsi V05._ptr(offs=0x00) P-INDEP "field V05._ptr (fldOffset=0x0)" ; V12 tmp8 [V12,T06] ( 2, 2 ) long -> rax V05._handle(offs=0x08) P-INDEP "field V05._handle (fldOffset=0x8)" ; V13 tmp9 [V13,T07] ( 2, 2 ) long -> r8 V06._ptr(offs=0x00) P-INDEP "field V06._ptr (fldOffset=0x0)" ; V14 tmp10 [V14 ] ( 2, 4 ) struct (16) [rbp-0x58] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V15 tmp11 [V15,T01] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 136 G_M32381_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] xor rsi, rsi mov qword ptr [rbp-40H], rsi mov qword ptr [rbp-48H], rsi mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 11.50 G_M32381_IG02: lea rcx, [rbp-98H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rbx, rax mov rcx, rsp mov qword ptr [rbp-78H], rcx mov rcx, rbp mov qword ptr [rbp-68H], rcx mov rcx, rsi call RuntimeTypeHandle:GetNativeHandle():RuntimeTypeHandle:this mov gword ptr [rbp-48H], rax lea rsi, bword ptr [rbp-48H] lea rcx, bword ptr [rbp-48H] call RuntimeTypeHandle:get_Value():long:this lea r8, [rbp-40H] lea rcx, bword ptr [rbp-58H] mov qword ptr [rcx], rsi mov qword ptr [rcx+8], rax lea rcx, bword ptr [rbp-58H] mov edx, edi mov rax, 0xD1FFAB1E mov qword ptr [rbp-88H], rax lea rax, G_M32381_IG05 mov qword ptr [rbp-70H], rax lea rax, bword ptr [rbp-98H] mov qword ptr [rbx+16], rax mov byte ptr [rbx+12], 0 ;; bbWeight=1 PerfScore 18.25 G_M32381_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M32381_IG04: call qword ptr [rax]RuntimeTypeHandle:ConstructName(QCallTypeHandle,int,StringHandleOnStack) ;; bbWeight=1 PerfScore 3.00 G_M32381_IG05: mov byte ptr [rbx+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M32381_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M32381_IG06: mov rax, bword ptr [rbp-90H] mov qword ptr [rbx+16], rax mov rax, gword ptr [rbp-40H] ;; bbWeight=1 PerfScore 3.00 G_M32381_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 238, prolog size 37, PerfScore 72.80, (MethodHash=511a8182) for method RuntimeTypeHandle:ConstructName(int):String:this ; ============================================================ ; Assembly listing for method TextInfo:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init "argument with side effect" ; ; Lcl frame size = 48 G_M32501_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax mov qword ptr [rbp-10H], rax ;; bbWeight=1 PerfScore 4.00 G_M32501_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax call CultureData:get_Invariant():CultureData mov gword ptr [rbp-10H], rax mov rdx, gword ptr [rbp-10H] mov rcx, gword ptr [rbp-08H] mov r8d, 1 call TextInfo:.ctor(CultureData,bool):this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 10.00 G_M32501_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 93, prolog size 20, PerfScore 25.30, (MethodHash=b42d810a) for method TextInfo:.cctor() ; ============================================================ ; Assembly listing for method TextInfo:.ctor(CultureData,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) bool -> rdi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M14516_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov edi, r8d ;; bbWeight=1 PerfScore 2.75 G_M14516_IG02: mov rcx, rsi call TextInfo:.ctor(CultureData):this mov byte ptr [rsi+48], dil ;; bbWeight=1 PerfScore 2.25 G_M14516_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 31, prolog size 6, PerfScore 10.35, (MethodHash=19e5c74b) for method TextInfo:.ctor(CultureData,bool):this ; ============================================================ ; Assembly listing for method TextInfo:.ctor(CultureData):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ; ; Lcl frame size = 32 G_M4854_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M4854_IG02: lea rcx, bword ptr [rsi+24] call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rsi+24] cmp dword ptr [rcx], ecx call CultureData:get_CultureName():String:this lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsi+24] mov rdx, gword ptr [rdx+8] lea rcx, bword ptr [rsi+32] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 14.00 G_M4854_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 64, prolog size 5, PerfScore 23.65, (MethodHash=c1b2ed09) for method TextInfo:.ctor(CultureData):this ; ============================================================ ; Assembly listing for method TextInfo:ToUpper(String):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M57133_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M57133_IG02: test rdx, rdx je SHORT G_M57133_IG04 ;; bbWeight=1 PerfScore 1.25 G_M57133_IG03: add rsp, 32 pop rsi jmp TextInfo:ChangeCaseCommon(String):String:this ;; bbWeight=1 PerfScore 2.75 G_M57133_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1908 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 78, prolog size 5, PerfScore 13.05, (MethodHash=498020d2) for method TextInfo:ToUpper(String):String:this ; ============================================================ ; Assembly listing for method TextInfo:ChangeCaseCommon(String):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T08] ( 7, 4.25) ref -> rdi this class-hnd ; V01 arg1 [V01,T06] ( 8, 5.50) ref -> rsi class-hnd ;* V02 loc0 [V02,T62] ( 0, 0 ) bool -> zero-ref ; V03 loc1 [V03,T09] ( 4, 5.50) long -> rbp ; V04 loc2 [V04 ] ( 2, 1 ) byref -> [rsp+0x40] must-init pinned ; V05 loc3 [V05,T00] ( 15, 21.25) long -> r14 ; V06 loc4 [V06,T10] ( 2, 4.50) long -> rax ; V07 loc5 [V07,T01] ( 4, 16 ) int -> rcx ; V08 loc6 [V08,T30] ( 3, 1.50) int -> rax ; V09 loc7 [V09,T32] ( 4, 1.25) ref -> rbp class-hnd ;* V10 loc8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ;* V11 loc9 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V12 loc10 [V12,T11] ( 7, 3.50) ref -> r15 class-hnd ;* V13 loc11 [V13 ] ( 0, 0 ) struct (16) zero-ref ;* V14 loc12 [V14 ] ( 0, 0 ) long -> zero-ref ; V15 loc13 [V15 ] ( 3, 1.50) byref -> [rsp+0x38] must-init pinned ; V16 OutArgs [V16 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V17 tmp1 [V17,T50] ( 2, 1 ) long -> rbp ; V18 tmp2 [V18,T31] ( 3, 1.50) long -> r9 ;* V19 tmp3 [V19 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V20 tmp4 [V20,T51] ( 2, 1 ) int -> rax ;* V21 tmp5 [V21 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V22 tmp6 [V22 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V23 tmp7 [V23 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V24 tmp8 [V24,T02] ( 2, 8 ) int -> rcx ;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V26 tmp10 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V27 tmp11 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V28 tmp12 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V29 tmp13 [V29,T03] ( 2, 8 ) int -> rdx "Inline stloc first use temp" ; V30 tmp14 [V30,T04] ( 2, 8 ) int -> rcx "Inline stloc first use temp" ; V31 tmp15 [V31,T05] ( 2, 8 ) int -> rcx "Inline stloc first use temp" ; V32 tmp16 [V32,T34] ( 2, 1 ) byref -> r15 "Inlining Arg" ;* V33 tmp17 [V33 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V34 tmp18 [V34,T52] ( 2, 1 ) int -> r12 "Inlining Arg" ;* V35 tmp19 [V35 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ; V36 tmp20 [V36,T17] ( 3, 2 ) int -> rax "Inlining Arg" ;* V37 tmp21 [V37 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V38 tmp22 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V39 tmp23 [V39,T18] ( 2, 2 ) byref -> rdx "Inlining Arg" ;* V40 tmp24 [V40 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V41 tmp25 [V41 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V42 tmp26 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V43 tmp27 [V43 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V44 tmp28 [V44 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V45 tmp29 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V46 tmp30 [V46 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V47 tmp31 [V47,T22] ( 2, 2 ) long -> r13 "Inlining Arg" ;* V48 tmp32 [V48 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V49 tmp33 [V49 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V50 tmp34 [V50 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V51 tmp35 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V52 tmp36 [V52 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ; V53 tmp37 [V53,T13] ( 3, 3 ) int -> rcx "Inlining Arg" ;* V54 tmp38 [V54 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V55 tmp39 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V56 tmp40 [V56,T19] ( 2, 2 ) byref -> rsi "Inlining Arg" ;* V57 tmp41 [V57 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V58 tmp42 [V58 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V59 tmp43 [V59,T23] ( 2, 2 ) int -> rbx "Inlining Arg" ; V60 tmp44 [V60,T24] ( 2, 2 ) int -> rcx "Inlining Arg" ;* V61 tmp45 [V61 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V62 tmp46 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V63 tmp47 [V63 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V64 tmp48 [V64 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V65 tmp49 [V65 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V66 tmp50 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V67 tmp51 [V67 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V68 tmp52 [V68 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V69 tmp53 [V69 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V70 tmp54 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V71 tmp55 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V72 tmp56 [V72,T20] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V73 tmp57 [V73 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V74 tmp58 [V74,T25] ( 2, 2 ) int -> r8 "Inlining Arg" ;* V75 tmp59 [V75 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ; V76 tmp60 [V76,T14] ( 3, 3 ) int -> rax "Inlining Arg" ;* V77 tmp61 [V77 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V78 tmp62 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V79 tmp63 [V79,T21] ( 2, 2 ) byref -> rdx "Inlining Arg" ;* V80 tmp64 [V80 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V81 tmp65 [V81 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V82 tmp66 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V83 tmp67 [V83 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V84 tmp68 [V84 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V85 tmp69 [V85 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V86 tmp70 [V86 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V87 tmp71 [V87,T26] ( 2, 2 ) long -> r8 "Inlining Arg" ;* V88 tmp72 [V88 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V89 tmp73 [V89 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V90 tmp74 [V90 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V91 tmp75 [V91 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V92 tmp76 [V92,T29] ( 3, 1.25) byref -> r15 V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ; V93 tmp77 [V93,T33] ( 3, 1.25) int -> r12 V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ; V94 tmp78 [V94,T15] ( 4, 2 ) byref -> rdx V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ; V95 tmp79 [V95,T12] ( 6, 3 ) int -> rax V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ; V96 tmp80 [V96,T35] ( 2, 1 ) byref -> rcx V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ; V97 tmp81 [V97,T53] ( 2, 1 ) int -> r8 V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V98 tmp82 [V98,T36] ( 2, 1 ) byref -> rcx V19._pointer(offs=0x00) P-INDEP "field V19._pointer (fldOffset=0x0)" ; V99 tmp83 [V99,T54] ( 2, 1 ) int -> r8 V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)" ; V100 tmp84 [V100,T63] ( 2, 0.50) byref -> r15 V21._pointer(offs=0x00) P-INDEP "field V21._pointer (fldOffset=0x0)" ; V101 tmp85 [V101,T65] ( 2, 0.50) int -> r12 V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)" ; V102 tmp86 [V102,T37] ( 2, 1 ) byref -> rdx V22._pointer(offs=0x00) P-INDEP "field V22._pointer (fldOffset=0x0)" ; V103 tmp87 [V103,T55] ( 2, 1 ) int -> r9 V22._length(offs=0x08) P-INDEP "field V22._length (fldOffset=0x8)" ;* V104 tmp88 [V104 ] ( 0, 0 ) byref -> zero-ref V23._pointer(offs=0x00) P-INDEP "field V23._pointer (fldOffset=0x0)" ;* V105 tmp89 [V105 ] ( 0, 0 ) int -> zero-ref V23._length(offs=0x08) P-INDEP "field V23._length (fldOffset=0x8)" ; V106 tmp90 [V106,T64] ( 2, 0.50) byref -> r15 V33._value(offs=0x00) P-INDEP "field V33._value (fldOffset=0x0)" ; V107 tmp91 [V107,T38] ( 2, 1 ) byref -> rdx V35._pointer(offs=0x00) P-INDEP "field V35._pointer (fldOffset=0x0)" ; V108 tmp92 [V108,T56] ( 2, 1 ) int -> rax V35._length(offs=0x08) P-INDEP "field V35._length (fldOffset=0x8)" ; V109 tmp93 [V109,T39] ( 2, 1 ) byref -> rdx V37._pointer(offs=0x00) P-INDEP "field V37._pointer (fldOffset=0x0)" ; V110 tmp94 [V110,T57] ( 2, 1 ) int -> rax V37._length(offs=0x08) P-INDEP "field V37._length (fldOffset=0x8)" ;* V111 tmp95 [V111 ] ( 0, 0 ) byref -> zero-ref V38._pointer(offs=0x00) P-INDEP "field V38._pointer (fldOffset=0x0)" ;* V112 tmp96 [V112 ] ( 0, 0 ) int -> zero-ref V38._length(offs=0x08) P-INDEP "field V38._length (fldOffset=0x8)" ; V113 tmp97 [V113,T40] ( 2, 1 ) byref -> rdx V41._value(offs=0x00) P-INDEP "field V41._value (fldOffset=0x0)" ;* V114 tmp98 [V114,T66] ( 0, 0 ) byref -> zero-ref V42._pointer(offs=0x00) P-INDEP "field V42._pointer (fldOffset=0x0)" ;* V115 tmp99 [V115 ] ( 0, 0 ) int -> zero-ref V42._length(offs=0x08) P-INDEP "field V42._length (fldOffset=0x8)" ; V116 tmp100 [V116,T41] ( 2, 1 ) byref -> rdx V52._pointer(offs=0x00) P-INDEP "field V52._pointer (fldOffset=0x0)" ; V117 tmp101 [V117,T58] ( 2, 1 ) int -> r9 V52._length(offs=0x08) P-INDEP "field V52._length (fldOffset=0x8)" ; V118 tmp102 [V118,T42] ( 2, 1 ) byref -> rsi V54._pointer(offs=0x00) P-INDEP "field V54._pointer (fldOffset=0x0)" ; V119 tmp103 [V119,T59] ( 2, 1 ) int -> rbx V54._length(offs=0x08) P-INDEP "field V54._length (fldOffset=0x8)" ;* V120 tmp104 [V120 ] ( 0, 0 ) byref -> zero-ref V55._pointer(offs=0x00) P-INDEP "field V55._pointer (fldOffset=0x0)" ;* V121 tmp105 [V121 ] ( 0, 0 ) int -> zero-ref V55._length(offs=0x08) P-INDEP "field V55._length (fldOffset=0x8)" ; V122 tmp106 [V122,T43] ( 2, 1 ) byref -> rsi V58._value(offs=0x00) P-INDEP "field V58._value (fldOffset=0x0)" ;* V123 tmp107 [V123 ] ( 0, 0 ) byref -> zero-ref V61._pointer(offs=0x00) P-INDEP "field V61._pointer (fldOffset=0x0)" ;* V124 tmp108 [V124 ] ( 0, 0 ) int -> zero-ref V61._length(offs=0x08) P-INDEP "field V61._length (fldOffset=0x8)" ; V125 tmp109 [V125,T44] ( 2, 1 ) byref -> r8 V64._value(offs=0x00) P-INDEP "field V64._value (fldOffset=0x0)" ;* V126 tmp110 [V126 ] ( 0, 0 ) byref -> zero-ref V66._pointer(offs=0x00) P-INDEP "field V66._pointer (fldOffset=0x0)" ;* V127 tmp111 [V127 ] ( 0, 0 ) int -> zero-ref V66._length(offs=0x08) P-INDEP "field V66._length (fldOffset=0x8)" ;* V128 tmp112 [V128 ] ( 0, 0 ) byref -> zero-ref V67._pointer(offs=0x00) P-INDEP "field V67._pointer (fldOffset=0x0)" ;* V129 tmp113 [V129 ] ( 0, 0 ) int -> zero-ref V67._length(offs=0x08) P-INDEP "field V67._length (fldOffset=0x8)" ;* V130 tmp114 [V130 ] ( 0, 0 ) byref -> zero-ref V70._pointer(offs=0x00) P-INDEP "field V70._pointer (fldOffset=0x0)" ;* V131 tmp115 [V131 ] ( 0, 0 ) int -> zero-ref V70._length(offs=0x08) P-INDEP "field V70._length (fldOffset=0x8)" ;* V132 tmp116 [V132 ] ( 0, 0 ) byref -> zero-ref V71._pointer(offs=0x00) P-INDEP "field V71._pointer (fldOffset=0x0)" ;* V133 tmp117 [V133 ] ( 0, 0 ) int -> zero-ref V71._length(offs=0x08) P-INDEP "field V71._length (fldOffset=0x8)" ; V134 tmp118 [V134,T45] ( 2, 1 ) byref -> rcx V73._value(offs=0x00) P-INDEP "field V73._value (fldOffset=0x0)" ; V135 tmp119 [V135,T46] ( 2, 1 ) byref -> rdx V75._pointer(offs=0x00) P-INDEP "field V75._pointer (fldOffset=0x0)" ; V136 tmp120 [V136,T60] ( 2, 1 ) int -> rax V75._length(offs=0x08) P-INDEP "field V75._length (fldOffset=0x8)" ; V137 tmp121 [V137,T47] ( 2, 1 ) byref -> rdx V77._pointer(offs=0x00) P-INDEP "field V77._pointer (fldOffset=0x0)" ; V138 tmp122 [V138,T61] ( 2, 1 ) int -> rax V77._length(offs=0x08) P-INDEP "field V77._length (fldOffset=0x8)" ;* V139 tmp123 [V139 ] ( 0, 0 ) byref -> zero-ref V78._pointer(offs=0x00) P-INDEP "field V78._pointer (fldOffset=0x0)" ;* V140 tmp124 [V140 ] ( 0, 0 ) int -> zero-ref V78._length(offs=0x08) P-INDEP "field V78._length (fldOffset=0x8)" ; V141 tmp125 [V141,T48] ( 2, 1 ) byref -> rdx V81._value(offs=0x00) P-INDEP "field V81._value (fldOffset=0x0)" ; V142 tmp126 [V142,T49] ( 2, 1 ) byref -> rcx V82._pointer(offs=0x00) P-INDEP "field V82._pointer (fldOffset=0x0)" ;* V143 tmp127 [V143 ] ( 0, 0 ) int -> zero-ref V82._length(offs=0x08) P-INDEP "field V82._length (fldOffset=0x8)" ; V144 tmp128 [V144,T27] ( 2, 2 ) long -> rbp "Cast away GC" ; V145 tmp129 [V145,T28] ( 2, 2 ) long -> r9 "Cast away GC" ; V146 cse0 [V146,T16] ( 4, 2 ) long -> r13 "CSE - conservative" ; V147 cse1 [V147,T07] ( 12, 6.50) int -> rbx "CSE - aggressive" ; ; Lcl frame size = 72 G_M3051_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 72 xor rax, rax mov qword ptr [rsp+40H], rax mov qword ptr [rsp+38H], rax mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 11.00 G_M3051_IG02: mov ebx, dword ptr [rsi+8] test ebx, ebx jne SHORT G_M3051_IG05 ;; bbWeight=1 PerfScore 3.25 G_M3051_IG03: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.13 G_M3051_IG04: add rsp, 72 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M3051_IG05: lea rcx, bword ptr [rsi+12] mov bword ptr [rsp+40H], rcx mov rbp, bword ptr [rsp+40H] xor r14, r14 cmp byte ptr [rdi+49], 0 jne SHORT G_M3051_IG07 ;; bbWeight=0.50 PerfScore 2.88 G_M3051_IG06: mov rcx, rdi call TextInfo:PopulateIsAsciiCasingSameAsInvariant():this ;; bbWeight=0.25 PerfScore 0.31 G_M3051_IG07: cmp byte ptr [rdi+49], 2 jne G_M3051_IG18 cmp ebx, 2 jl SHORT G_M3051_IG10 lea eax, [rbx-2] ;; bbWeight=0.50 PerfScore 2.38 G_M3051_IG08: mov ecx, dword ptr [rbp+2*r14] test ecx, 0xD1FFAB1E jne G_M3051_IG18 lea edx, [rcx+D1FFAB1EH] add ecx, 0xD1FFAB1E xor ecx, edx test ecx, 0xD1FFAB1E setne cl movzx rcx, cl test ecx, ecx jne SHORT G_M3051_IG13 ;; bbWeight=4 PerfScore 28.00 G_M3051_IG09: add r14, 2 cmp r14, rax jbe SHORT G_M3051_IG08 ;; bbWeight=4 PerfScore 6.00 G_M3051_IG10: test bl, 1 je SHORT G_M3051_IG11 movzx rax, word ptr [rbp+2*r14] cmp eax, 127 ja G_M3051_IG18 add eax, -97 cmp eax, 25 setbe al movzx rax, al test eax, eax jne SHORT G_M3051_IG13 ;; bbWeight=0.50 PerfScore 3.75 G_M3051_IG11: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M3051_IG12: add rsp, 72 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M3051_IG13: mov ecx, ebx call String:FastAllocateString(int):String mov rbp, rax lea r15, bword ptr [rbp+12] mov r12d, dword ptr [rbp+8] mov eax, r14d mov r8d, ebx mov ecx, eax cmp r8, rcx jb G_M3051_IG25 ;; bbWeight=0.25 PerfScore 1.50 G_M3051_IG14: lea rdx, bword ptr [rsi+12] cmp eax, r12d ja G_M3051_IG26 movsxd r13, eax add r13, r13 mov r8, r13 mov rcx, r15 call Buffer:Memmove(byref,byref,long) mov ecx, r14d cmp ebx, ecx jb G_M3051_IG25 ;; bbWeight=0.50 PerfScore 2.63 G_M3051_IG15: add rsi, 12 sub ebx, ecx add rsi, r13 mov rdx, rsi mov r9d, ebx mov ecx, r14d cmp ecx, r12d ja G_M3051_IG24 ;; bbWeight=0.50 PerfScore 1.38 G_M3051_IG16: lea r8, bword ptr [r15+r13] mov rcx, rdi call TextInfo:ChangeCaseCommon(byref,byref,int):this mov rax, rbp ;; bbWeight=0.50 PerfScore 1.00 G_M3051_IG17: add rsp, 72 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M3051_IG18: mov ecx, ebx call String:FastAllocateString(int):String mov r15, rax test r14, r14 je SHORT G_M3051_IG20 lea rcx, bword ptr [r15+12] mov r8d, dword ptr [r15+8] mov eax, r14d mov edx, ebx mov r9d, eax cmp rdx, r9 jb SHORT G_M3051_IG25 ;; bbWeight=0.50 PerfScore 3.63 G_M3051_IG19: lea rdx, bword ptr [rsi+12] cmp eax, r8d ja SHORT G_M3051_IG26 movsxd r8, eax add r8, r8 call Buffer:Memmove(byref,byref,long) ;; bbWeight=0.50 PerfScore 1.63 G_M3051_IG20: test r15, r15 jne SHORT G_M3051_IG21 xor r9, r9 jmp SHORT G_M3051_IG22 ;; bbWeight=0.50 PerfScore 1.75 G_M3051_IG21: lea r9, bword ptr [r15+12] mov bword ptr [rsp+38H], r9 mov r9, bword ptr [rsp+38H] ;; bbWeight=0.50 PerfScore 1.25 G_M3051_IG22: mov edx, dword ptr [r15+8] sub edx, r14d mov dword ptr [rsp+20H], edx mov dword ptr [rsp+28H], 1 lea rdx, [rbp+2*r14] mov r8d, ebx sub r8d, r14d lea r9, [r9+2*r14] mov rcx, rdi call TextInfo:ChangeCaseCore(long,int,long,int,bool):this xor rax, rax mov bword ptr [rsp+38H], rax mov rax, r15 ;; bbWeight=0.50 PerfScore 5.00 G_M3051_IG23: add rsp, 72 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M3051_IG24: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 G_M3051_IG25: mov ecx, 33 call ThrowHelper:ThrowArgumentOutOfRangeException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M3051_IG26: call ThrowHelper:ThrowArgumentException_DestinationTooShort() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 539, prolog size 34, PerfScore 142.96, (MethodHash=ce19f414) for method TextInfo:ChangeCaseCommon(String):String:this ; ============================================================ ; Assembly listing for method TextInfo:PopulateIsAsciiCasingSameAsInvariant():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T04] ( 2, 2 ) bool -> rax ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03,T06] ( 0, 0 ) ref -> zero-ref ;* V04 tmp2 [V04,T05] ( 0, 0 ) ref -> zero-ref ; V05 tmp3 [V05,T03] ( 3, 2 ) int -> rax ; V06 tmp4 [V06,T02] ( 2, 4 ) ref -> rcx "argument with side effect" ; V07 rat0 [V07,T01] ( 3, 6 ) ref -> rax "virtual vtable call" ; ; Lcl frame size = 32 G_M39722_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M39722_IG02: mov rcx, gword ptr [rsi+32] call CultureInfo:GetCultureInfo(String):CultureInfo mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] call gword ptr [rax+48]CultureInfo:get_CompareInfo():CompareInfo:this mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov r9d, 1 cmp dword ptr [rcx], ecx call CompareInfo:Compare(String,String,int):int:this test eax, eax sete al movzx rax, al test eax, eax jne SHORT G_M39722_IG04 ;; bbWeight=1 PerfScore 21.00 G_M39722_IG03: mov eax, 1 jmp SHORT G_M39722_IG05 ;; bbWeight=0.50 PerfScore 1.13 G_M39722_IG04: mov eax, 2 ;; bbWeight=0.50 PerfScore 0.13 G_M39722_IG05: mov byte ptr [rsi+49], al ;; bbWeight=1 PerfScore 1.00 G_M39722_IG06: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 105, prolog size 5, PerfScore 37.00, (MethodHash=58dd64d5) for method TextInfo:PopulateIsAsciiCasingSameAsInvariant():this ; ============================================================ ; Assembly listing for method NonRandomizedStringEqualityComparer:Equals(String,String):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T01] ( 3, 3 ) ref -> r8 class-hnd ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M58964_IG01: ;; bbWeight=1 PerfScore 0.00 G_M58964_IG02: mov rcx, rdx mov rdx, r8 ;; bbWeight=1 PerfScore 0.50 G_M58964_IG03: jmp String:Equals(String,String):bool ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 11, prolog size 0, PerfScore 3.60, (MethodHash=6e6119ab) for method NonRandomizedStringEqualityComparer:Equals(String,String):bool:this ; ============================================================ ; Assembly listing for method TextInfo:ChangeCaseCommon(byref,byref,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T15] ( 6, 3.75) ref -> rdi this class-hnd ; V01 arg1 [V01,T16] ( 4, 3 ) byref -> rdx ; V02 arg2 [V02,T17] ( 4, 3 ) byref -> r8 ; V03 arg3 [V03,T04] ( 11, 7 ) int -> rsi ;* V04 loc0 [V04,T34] ( 0, 0 ) bool -> zero-ref ; V05 loc1 [V05,T02] ( 6, 10 ) long -> rbx ; V06 loc2 [V06 ] ( 3, 1 ) byref -> [rbp-0x30] must-init pinned ; V07 loc3 [V07,T03] ( 6, 10 ) long -> r14 ; V08 loc4 [V08 ] ( 3, 1 ) byref -> [rbp-0x38] must-init pinned ; V09 loc5 [V09,T01] ( 18, 33.50) long -> r15 ; V10 loc6 [V10,T18] ( 2, 4.50) long -> r9 ; V11 loc7 [V11,T00] ( 10, 40 ) int -> rdx ; V12 loc8 [V12,T19] ( 5, 2.50) int -> r9 ; V13 loc9 [V13,T20] ( 5, 2.50) int -> r9 ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15,T24] ( 2, 1 ) int -> r9 ; V16 tmp2 [V16,T25] ( 2, 1 ) int -> r9 ; V17 tmp3 [V17,T05] ( 2, 8 ) int -> rdx ; V18 tmp4 [V18,T06] ( 2, 8 ) int -> rcx ;* V19 tmp5 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V20 tmp6 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V21 tmp7 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V22 tmp8 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V23 tmp9 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V24 tmp10 [V24,T07] ( 2, 8 ) int -> rcx "Inline stloc first use temp" ; V25 tmp11 [V25,T08] ( 2, 8 ) int -> r8 "Inline stloc first use temp" ; V26 tmp12 [V26,T09] ( 2, 8 ) int -> rcx "Inline stloc first use temp" ; V27 tmp13 [V27,T10] ( 2, 8 ) int -> rcx "Inline stloc first use temp" ;* V28 tmp14 [V28 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V29 tmp15 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V30 tmp16 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V31 tmp17 [V31 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V32 tmp18 [V32 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V33 tmp19 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V34 tmp20 [V34,T11] ( 2, 8 ) int -> rcx "Inline stloc first use temp" ; V35 tmp21 [V35,T12] ( 2, 8 ) int -> r8 "Inline stloc first use temp" ; V36 tmp22 [V36,T13] ( 2, 8 ) int -> rcx "Inline stloc first use temp" ; V37 tmp23 [V37,T14] ( 2, 8 ) int -> rcx "Inline stloc first use temp" ;* V38 tmp24 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V39 tmp25 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V40 tmp26 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V41 tmp27 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V42 tmp28 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V43 tmp29 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V44 tmp30 [V44,T26] ( 2, 1 ) int -> rdx "Inline stloc first use temp" ; V45 tmp31 [V45,T27] ( 2, 1 ) int -> rcx "Inline stloc first use temp" ; V46 tmp32 [V46,T28] ( 2, 1 ) int -> rdx "Inline stloc first use temp" ; V47 tmp33 [V47,T29] ( 2, 1 ) int -> rdx "Inline stloc first use temp" ;* V48 tmp34 [V48 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V49 tmp35 [V49 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V50 tmp36 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V51 tmp37 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V52 tmp38 [V52 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V53 tmp39 [V53,T30] ( 2, 1 ) int -> rdx "Inline stloc first use temp" ; V54 tmp40 [V54,T31] ( 2, 1 ) int -> rcx "Inline stloc first use temp" ; V55 tmp41 [V55,T32] ( 2, 1 ) int -> rdx "Inline stloc first use temp" ; V56 tmp42 [V56,T33] ( 2, 1 ) int -> rdx "Inline stloc first use temp" ; V57 tmp43 [V57,T21] ( 2, 2 ) long -> rbx "Cast away GC" ; V58 tmp44 [V58,T22] ( 2, 2 ) long -> r14 "Cast away GC" ; V59 PSPSym [V59 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ; V60 cse0 [V60,T23] ( 3, 1.50) long -> rdx "CSE - moderate" ; ; Lcl frame size = 72 G_M22786_IG01: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 72 lea rbp, [rsp+70H] xor rax, rax mov qword ptr [rbp-30H], rax mov qword ptr [rbp-38H], rax mov qword ptr [rbp-40H], rsp mov rdi, rcx mov esi, r9d ;; bbWeight=1 PerfScore 10.50 G_M22786_IG02: test esi, esi je G_M22786_IG15 ;; bbWeight=1 PerfScore 1.25 G_M22786_IG03: mov bword ptr [rbp-30H], rdx mov rbx, rdx ;; bbWeight=0.50 PerfScore 0.63 G_M22786_IG04: mov bword ptr [rbp-38H], r8 mov r14, r8 xor r15, r15 cmp byte ptr [rdi+49], 0 jne SHORT G_M22786_IG06 ;; bbWeight=0.50 PerfScore 2.25 G_M22786_IG05: mov rcx, rdi call TextInfo:PopulateIsAsciiCasingSameAsInvariant():this ;; bbWeight=0.25 PerfScore 0.31 G_M22786_IG06: cmp byte ptr [rdi+49], 2 jne G_M22786_IG12 cmp esi, 4 jl SHORT G_M22786_IG08 lea r9d, [rsi-4] ;; bbWeight=0.50 PerfScore 2.38 G_M22786_IG07: mov edx, dword ptr [rbx+2*r15] test edx, 0xD1FFAB1E jne G_M22786_IG11 lea ecx, [rdx+D1FFAB1EH] lea r8d, [rdx+00050005H] xor ecx, r8d and ecx, 0xD1FFAB1E shr ecx, 2 xor edx, ecx mov dword ptr [r14+2*r15], edx mov edx, dword ptr [rbx+2*r15+4] test edx, 0xD1FFAB1E jne G_M22786_IG10 lea ecx, [rdx+D1FFAB1EH] lea r8d, [rdx+00050005H] xor ecx, r8d and ecx, 0xD1FFAB1E shr ecx, 2 xor ecx, edx mov dword ptr [r14+2*r15+4], ecx add r15, 4 cmp r15, r9 jbe SHORT G_M22786_IG07 ;; bbWeight=4 PerfScore 70.00 G_M22786_IG08: test sil, 2 je SHORT G_M22786_IG09 mov r9d, dword ptr [rbx+2*r15] test r9d, 0xD1FFAB1E jne SHORT G_M22786_IG11 lea edx, [r9+D1FFAB1EH] lea ecx, [r9+00050005H] xor edx, ecx and edx, 0xD1FFAB1E shr edx, 2 xor r9d, edx mov dword ptr [r14+2*r15], r9d add r15, 2 ;; bbWeight=0.50 PerfScore 4.75 G_M22786_IG09: test sil, 1 je SHORT G_M22786_IG13 movzx r9, word ptr [rbx+2*r15] cmp r9d, 127 ja SHORT G_M22786_IG11 lea edx, [r9+D1FFAB1EH] lea ecx, [r9+00050005H] xor edx, ecx and edx, 0xD1FFAB1E shr edx, 2 xor r9d, edx mov word ptr [r14+2*r15], r9w jmp SHORT G_M22786_IG13 ;; bbWeight=0.50 PerfScore 5.63 G_M22786_IG10: add r15, 2 ;; bbWeight=0.50 PerfScore 0.13 G_M22786_IG11: sub esi, r15d ;; bbWeight=0.50 PerfScore 0.13 G_M22786_IG12: mov dword ptr [rsp+20H], esi mov dword ptr [rsp+28H], 1 lea rdx, [r15+r15] lea r9, [r14+rdx] add rdx, rbx mov rcx, rdi mov r8d, esi call TextInfo:ChangeCaseCore(long,int,long,int,bool):this nop ;; bbWeight=0.50 PerfScore 2.50 G_M22786_IG13: xor rax, rax mov bword ptr [rbp-38H], rax ;; bbWeight=0.50 PerfScore 0.63 G_M22786_IG14: xor rax, rax mov bword ptr [rbp-30H], rax ;; bbWeight=0.50 PerfScore 0.63 G_M22786_IG15: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 4.50 G_M22786_IG16: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 56 mov rbp, qword ptr [rcx+48] mov qword ptr [rsp+30H], rbp lea rbp, [rbp+70H] ;; bbWeight=0 PerfScore 0.00 G_M22786_IG17: xor rax, rax mov bword ptr [rbp-38H], rax ;; bbWeight=0 PerfScore 0.00 G_M22786_IG18: add rsp, 56 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M22786_IG19: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 56 mov rbp, qword ptr [rcx+48] mov qword ptr [rsp+30H], rbp lea rbp, [rbp+70H] ;; bbWeight=0 PerfScore 0.00 G_M22786_IG20: xor rax, rax mov bword ptr [rbp-30H], rax ;; bbWeight=0 PerfScore 0.00 G_M22786_IG21: add rsp, 56 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 462, prolog size 37, PerfScore 152.39, (MethodHash=448ba6fd) for method TextInfo:ChangeCaseCommon(byref,byref,int):this ; ============================================================ ; Assembly listing for method EventSource:GenerateGuidFromName(String):Guid ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T04] ( 4, 4 ) byref -> rsi ; V01 arg0 [V01,T12] ( 3, 3 ) ref -> rdx class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ; V03 loc1 [V03 ] ( 8, 8 ) ref -> [rsp+0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V04 loc2 [V04 ] ( 18, 30.96) struct (24) [rsp+0x38] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V08 tmp3 [V08,T14] ( 2, 4 ) int -> rcx "Strict ordering of exceptions for Array store" ; V09 tmp4 [V09 ] ( 3, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSB] addr-exposed "NewObj constructor temp" ;* V10 tmp5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ; V13 tmp8 [V13,T00] ( 5, 9 ) int -> rdi "Inline stloc first use temp" ; V14 tmp9 [V14,T15] ( 2, 4 ) ubyte -> rcx "Inline stloc first use temp" ; V15 tmp10 [V15,T02] ( 2, 8 ) int -> rcx "Strict ordering of exceptions for Array store" ; V16 tmp11 [V16,T06] ( 3, 6 ) int -> rcx "Inline stloc first use temp" ;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "impSpillEvalStack" ; V18 tmp13 [V18,T05] ( 4, 6 ) ref -> rcx class-hnd "Inlining Arg" ;* V19 tmp14 [V19 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V20 tmp15 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V21 tmp16 [V21 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V22 tmp17 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ; V23 tmp18 [V23,T01] ( 5, 9 ) int -> rbp "Inline stloc first use temp" ; V24 tmp19 [V24,T16] ( 2, 4 ) ubyte -> rcx "Inline stloc first use temp" ; V25 tmp20 [V25,T03] ( 2, 8 ) int -> rcx "Strict ordering of exceptions for Array store" ; V26 tmp21 [V26,T07] ( 3, 6 ) int -> rcx "Inline stloc first use temp" ;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "impSpillEvalStack" ;* V28 tmp23 [V28,T22] ( 0, 0 ) byref -> zero-ref V02._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ;* V29 tmp24 [V29,T26] ( 0, 0 ) int -> zero-ref V02._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V30 tmp25 [V30 ] ( 10, 14.96) ref -> [rsp+0x38] do-not-enreg[X] addr-exposed V04.w(offs=0x00) P-DEP "field V04.w (fldOffset=0x0)" ; V31 tmp26 [V31 ] ( 4, 2.96) long -> [rsp+0x40] do-not-enreg[X] addr-exposed V04.length(offs=0x08) P-DEP "field V04.length (fldOffset=0x8)" ; V32 tmp27 [V32 ] ( 12, 18.96) int -> [rsp+0x48] do-not-enreg[X] addr-exposed V04.pos(offs=0x10) P-DEP "field V04.pos (fldOffset=0x10)" ;* V33 tmp28 [V33,T31] ( 0, 0 ) byref -> zero-ref V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ;* V34 tmp29 [V34,T34] ( 0, 0 ) int -> zero-ref V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V35 tmp30 [V35,T23] ( 2, 2 ) byref -> rdi V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V36 tmp31 [V36,T27] ( 2, 2 ) int -> rbx V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ;* V37 tmp32 [V37,T24] ( 0, 0 ) byref -> zero-ref V10._value(offs=0x00) P-INDEP "field V10._value (fldOffset=0x0)" ;* V38 tmp33 [V38,T32] ( 0, 0 ) byref -> zero-ref V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ;* V39 tmp34 [V39,T35] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ;* V40 tmp35 [V40,T33] ( 0, 0 ) byref -> zero-ref V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ;* V41 tmp36 [V41,T36] ( 0, 0 ) int -> zero-ref V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ; V42 tmp37 [V42,T20] ( 3, 2 ) byref -> rdi V19._pointer(offs=0x00) P-INDEP "field V19._pointer (fldOffset=0x0)" ; V43 tmp38 [V43,T21] ( 3, 2 ) int -> rbx V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)" ; V44 tmp39 [V44,T30] ( 2, 1 ) byref -> rdi V20._value(offs=0x00) P-INDEP "field V20._value (fldOffset=0x0)" ; V45 tmp40 [V45,T25] ( 2, 2 ) byref -> rdi V21._pointer(offs=0x00) P-INDEP "field V21._pointer (fldOffset=0x0)" ; V46 tmp41 [V46,T28] ( 2, 2 ) int -> rbx V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)" ; V47 tmp42 [V47,T19] ( 2, 3 ) byref -> rdi V22._pointer(offs=0x00) P-INDEP "field V22._pointer (fldOffset=0x0)" ; V48 tmp43 [V48,T13] ( 3, 4 ) int -> rbx V22._length(offs=0x08) P-INDEP "field V22._length (fldOffset=0x8)" ; V49 cse0 [V49,T08] ( 3, 6 ) long -> rax "CSE - aggressive" ; V50 cse1 [V50,T09] ( 3, 6 ) long -> rax "CSE - aggressive" ; V51 cse2 [V51,T10] ( 3, 6 ) int -> rax "CSE - aggressive" ; V52 cse3 [V52,T11] ( 3, 6 ) int -> rax "CSE - aggressive" ; V53 cse4 [V53,T17] ( 2, 4 ) int -> rdx "CSE - aggressive" ; V54 cse5 [V54,T18] ( 2, 4 ) int -> rdx "CSE - aggressive" ; V55 cse6 [V55,T29] ( 2, 2 ) int -> rcx "CSE - moderate" ; ; Lcl frame size = 88 G_M34437_IG01: push rdi push rsi push rbp push rbx sub rsp, 88 vzeroupper xor rax, rax mov qword ptr [rsp+38H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 mov qword ptr [rsp+50H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 9.08 G_M34437_IG02: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rax, 0xD1FFAB1E call gword ptr [rax]Encoding:GetBytes(String):ref:this mov gword ptr [rsp+50H], rax lea rcx, bword ptr [rsp+38H] call Sha1ForNonSecretPurposes:Start():this xor edi, edi ;; bbWeight=1 PerfScore 8.25 G_M34437_IG03: movsxd rcx, edi mov rax, 0xD1FFAB1E movzx rcx, byte ptr [rcx+rax] mov eax, dword ptr [rsp+48H] sar eax, 31 and eax, 3 add eax, dword ptr [rsp+48H] sar eax, 2 mov rdx, gword ptr [rsp+38H] mov edx, dword ptr [rdx+8] cmp eax, edx jae G_M34437_IG15 mov rdx, gword ptr [rsp+38H] movsxd rax, eax mov edx, dword ptr [rdx+4*rax+16] shl edx, 8 or ecx, edx mov rdx, gword ptr [rsp+38H] mov dword ptr [rdx+4*rax+16], ecx mov ecx, dword ptr [rsp+48H] inc ecx mov dword ptr [rsp+48H], ecx cmp ecx, 64 jne SHORT G_M34437_IG05 ;; bbWeight=2 PerfScore 48.00 G_M34437_IG04: lea rcx, bword ptr [rsp+38H] call Sha1ForNonSecretPurposes:Drain():this ;; bbWeight=0.48 PerfScore 0.72 G_M34437_IG05: inc edi cmp edi, 16 jl SHORT G_M34437_IG03 ;; bbWeight=2 PerfScore 3.00 G_M34437_IG06: mov rcx, gword ptr [rsp+50H] test rcx, rcx jne SHORT G_M34437_IG08 ;; bbWeight=1 PerfScore 2.25 G_M34437_IG07: xor rdi, rdi xor ebx, ebx jmp SHORT G_M34437_IG09 ;; bbWeight=0.50 PerfScore 1.25 G_M34437_IG08: lea rdi, bword ptr [rcx+16] mov ebx, dword ptr [rcx+8] ;; bbWeight=0.50 PerfScore 1.25 G_M34437_IG09: xor ebp, ebp test ebx, ebx jle SHORT G_M34437_IG13 ;; bbWeight=1 PerfScore 1.50 G_M34437_IG10: movsxd rcx, ebp movzx rcx, byte ptr [rdi+rcx] mov eax, dword ptr [rsp+48H] sar eax, 31 and eax, 3 add eax, dword ptr [rsp+48H] sar eax, 2 mov rdx, gword ptr [rsp+38H] mov edx, dword ptr [rdx+8] cmp eax, edx jae G_M34437_IG15 mov rdx, gword ptr [rsp+38H] movsxd rax, eax mov edx, dword ptr [rdx+4*rax+16] shl edx, 8 or ecx, edx mov rdx, gword ptr [rsp+38H] mov dword ptr [rdx+4*rax+16], ecx mov ecx, dword ptr [rsp+48H] inc ecx mov dword ptr [rsp+48H], ecx cmp ecx, 64 jne SHORT G_M34437_IG12 ;; bbWeight=2 PerfScore 47.50 G_M34437_IG11: lea rcx, bword ptr [rsp+38H] call Sha1ForNonSecretPurposes:Drain():this ;; bbWeight=0.48 PerfScore 0.72 G_M34437_IG12: inc ebp cmp ebp, ebx jl SHORT G_M34437_IG10 ;; bbWeight=2 PerfScore 3.00 G_M34437_IG13: lea rcx, [rsp+50H] mov edx, 16 call Array:Resize(byref,int) lea rcx, bword ptr [rsp+38H] mov rdx, gword ptr [rsp+50H] call Sha1ForNonSecretPurposes:Finish(ref):this mov rcx, gword ptr [rsp+50H] mov ecx, dword ptr [rcx+8] cmp ecx, 7 jbe SHORT G_M34437_IG15 mov rcx, gword ptr [rsp+50H] movzx rcx, byte ptr [rcx+23] and ecx, 15 or ecx, 80 mov rdx, gword ptr [rsp+50H] mov byte ptr [rdx+23], cl vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+28H], xmm0 lea rcx, bword ptr [rsp+28H] mov rdx, gword ptr [rsp+50H] call Guid:.ctor(ref):this vmovdqu xmm0, xmmword ptr [rsp+28H] vmovdqu xmmword ptr [rsi], xmm0 mov rax, rsi ;; bbWeight=1 PerfScore 20.08 G_M34437_IG14: add rsp, 88 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M34437_IG15: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 431, prolog size 36, PerfScore 193.56, (MethodHash=d02f797a) for method EventSource:GenerateGuidFromName(String):Guid ; ============================================================ ; Assembly listing for method Encoding:GetBytes(String):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 6, 6 ) ref -> rdi class-hnd ; V02 loc0 [V02,T03] ( 2, 2 ) int -> rax ; V03 loc1 [V03,T02] ( 3, 3 ) ref -> rbx class-hnd exact ;* V04 loc2 [V04 ] ( 0, 0 ) int -> zero-ref ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T05] ( 2, 0 ) ref -> rcx "argument with side effect" ; V08 tmp3 [V08,T06] ( 2, 0 ) ref -> rdi "argument with side effect" ; V09 tmp4 [V09,T07] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 48 G_M17039_IG01: push rdi push rsi push rbx sub rsp, 48 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M17039_IG02: test rdi, rdi je SHORT G_M17039_IG05 ;; bbWeight=1 PerfScore 1.25 G_M17039_IG03: mov rcx, rsi mov rdx, rdi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+80] call qword ptr [rax+24]Encoding:GetByteCount(String):int:this movsxd rdx, eax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbx, rax mov gword ptr [rsp+20H], rbx xor r9d, r9d mov dword ptr [rsp+28H], r9d mov r9d, dword ptr [rdi+8] mov rcx, rsi mov rdx, rdi xor r8d, r8d mov rax, qword ptr [rsi] mov rax, qword ptr [rax+88] call qword ptr [rax+24]Encoding:GetBytes(String,int,int,ref,int):int:this mov rax, rbx ;; bbWeight=1 PerfScore 21.50 G_M17039_IG04: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M17039_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x2068 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x22F0 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentNullException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 196, prolog size 7, PerfScore 48.85, (MethodHash=f6f8bd70) for method Encoding:GetBytes(String):ref:this ; ============================================================ ; Assembly listing for method UnicodeEncoding:GetByteCount(String):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rdx class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) long -> zero-ref ; V03 loc1 [V03 ] ( 2, 2 ) byref -> [rsp+0x28] must-init pinned ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 2 ) long -> [rsp+0x20] ; V06 tmp2 [V06,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; V08 tmp4 [V08,T02] ( 2, 4 ) long -> r8 "Cast away GC" ; ; Lcl frame size = 48 G_M54050_IG01: push rsi sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax ;; bbWeight=1 PerfScore 2.50 G_M54050_IG02: test rdx, rdx je SHORT G_M54050_IG05 ;; bbWeight=1 PerfScore 1.25 G_M54050_IG03: lea r8, bword ptr [rdx+12] mov bword ptr [rsp+28H], r8 mov r8, bword ptr [rsp+28H] mov qword ptr [rsp+20H], r8 mov r8d, dword ptr [rdx+8] mov rdx, qword ptr [rsp+20H] xor r9, r9 mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]UnicodeEncoding:GetByteCount(long,int,EncoderNLS):int:this nop ;; bbWeight=1 PerfScore 12.25 G_M54050_IG04: add rsp, 48 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M54050_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x2068 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 127, prolog size 12, PerfScore 30.45, (MethodHash=b5e92cdd) for method UnicodeEncoding:GetByteCount(String):int:this ; ============================================================ ; Assembly listing for method UnicodeEncoding:GetByteCount(long,int,EncoderNLS):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T16] ( 9, 12 ) ref -> rbx this class-hnd ; V01 arg1 [V01,T04] ( 24, 61.50) long -> registers ; V02 arg2 [V02,T19] ( 4, 4 ) int -> r8 ; V03 arg3 [V03,T08] ( 22, 35 ) ref -> rdi class-hnd ; V04 loc0 [V04,T12] ( 15, 28 ) int -> rbp ; V05 loc1 [V05,T17] ( 6, 10 ) long -> r14 ; V06 loc2 [V06,T11] ( 9, 29.50) long -> r15 ; V07 loc3 [V07,T07] ( 17, 38 ) ushort -> registers ; V08 loc4 [V08,T18] ( 3, 9 ) bool -> registers ; V09 loc5 [V09,T00] ( 64,200 ) ref -> [rsp+0x20] class-hnd ; V10 loc6 [V10 ] ( 12, 30 ) long -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op ; V11 loc7 [V11,T02] ( 8, 78 ) ushort -> [rsp+0x2C] ; V12 loc8 [V12,T14] ( 3, 20 ) long -> rax ; V13 loc9 [V13,T03] ( 7, 70 ) long -> rsi ; V14 loc10 [V14,T09] ( 4, 32 ) long -> r8 ; V15 OutArgs [V15 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V16 tmp1 [V16,T01] ( 4,144 ) int -> registers ; V17 tmp2 [V17,T15] ( 2, 16 ) long -> rcx ;* V18 tmp3 [V18 ] ( 0, 0 ) long -> zero-ref ;* V19 tmp4 [V19 ] ( 0, 0 ) long -> zero-ref ; V20 tmp5 [V20,T21] ( 3, 0 ) ref -> rsi class-hnd exact "Single-def Box Helper" ; V21 tmp6 [V21,T30] ( 2, 0 ) ref -> rdi class-hnd "impImportAndPushBox" ; V22 tmp7 [V22,T20] ( 8, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V23 tmp8 [V23,T31] ( 2, 0 ) ref -> r12 class-hnd "non-inline candidate call" ; V24 tmp9 [V24,T32] ( 2, 0 ) ref -> rax class-hnd "impAppendStmt" ; V25 tmp10 [V25,T33] ( 2, 0 ) ref -> rcx class-hnd "dup spill" ; V26 tmp11 [V26,T22] ( 3, 0 ) ref -> r12 ; V27 tmp12 [V27,T23] ( 3, 0 ) ref -> rsi ; V28 tmp13 [V28,T24] ( 3, 0 ) ref -> rcx ; V29 tmp14 [V29,T25] ( 3, 0 ) ref -> r12 ; V30 tmp15 [V30,T26] ( 3, 0 ) ref -> rsi ; V31 tmp16 [V31,T27] ( 3, 0 ) ref -> rdi ; V32 tmp17 [V32,T28] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V33 tmp18 [V33,T29] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V34 tmp19 [V34,T10] ( 4, 32 ) ushort -> rax "Inline stloc first use temp" ; V35 tmp20 [V35,T34] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V36 tmp21 [V36,T35] ( 2, 0 ) ref -> rcx "argument with side effect" ; V37 tmp22 [V37,T36] ( 2, 0 ) ref -> rdi "argument with side effect" ; V38 tmp23 [V38,T37] ( 2, 0 ) ref -> r8 "argument with side effect" ; V39 tmp24 [V39,T38] ( 2, 0 ) ref -> rdx "argument with side effect" ; V40 tmp25 [V40,T39] ( 2, 0 ) ref -> rcx "argument with side effect" ; V41 cse0 [V41,T06] ( 4, 48 ) long -> rcx "CSE - aggressive" ; V42 cse1 [V42,T13] ( 3, 24 ) int -> r8 "CSE - aggressive" ; V43 rat0 [V43,T05] ( 12, 48 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 56 G_M41067_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 mov rbx, rcx mov rsi, rdx mov rdi, r9 ;; bbWeight=1 PerfScore 9.00 G_M41067_IG02: lea ebp, [r8+r8] test ebp, ebp jl G_M41067_IG48 ;; bbWeight=1 PerfScore 1.75 G_M41067_IG03: mov r14, rsi movsxd rcx, r8d lea r15, [r14+2*rcx] xor r12d, r12d xor r13d, r13d xor rax, rax test rdi, rdi je G_M41067_IG30 ;; bbWeight=1 PerfScore 3.00 G_M41067_IG04: movzx r12, word ptr [rdi+36] test r12d, r12d jle SHORT G_M41067_IG05 add ebp, 2 ;; bbWeight=0.50 PerfScore 1.75 G_M41067_IG05: cmp gword ptr [rdi+16], 0 je G_M41067_IG30 mov rcx, rdi call Encoder:get_FallbackBuffer():EncoderFallbackBuffer:this mov rcx, rax mov gword ptr [rsp+20H], rax mov rdx, qword ptr [rax] mov rdx, qword ptr [rdx+72] call qword ptr [rdx]EncoderFallbackBuffer:get_Remaining():int:this test eax, eax jg G_M41067_IG49 ;; bbWeight=0.50 PerfScore 6.88 G_M41067_IG06: mov rax, gword ptr [rsp+20H] mov qword ptr [rax+24], rsi mov qword ptr [rax+32], r15 mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rax+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+20H] mov byte ptr [rax+48], 0 mov byte ptr [rax+49], 0 mov byte ptr [rax+50], 0 xor ecx, ecx mov dword ptr [rax+40], ecx jmp G_M41067_IG30 ;; bbWeight=0.50 PerfScore 6.50 G_M41067_IG07: test r8d, r8d jne G_M41067_IG14 movzx r8, byte ptr [rbx+38] xor r8d, 1 je G_M41067_IG13 mov ecx, esi and ecx, 7 or ecx, r12d jne G_M41067_IG13 lea rax, [r15-6] cmp rsi, rax jae G_M41067_IG12 ;; bbWeight=2 PerfScore 16.00 G_M41067_IG08: mov rcx, qword ptr [rsi] mov r8, 0xD1FFAB1E test rcx, r8 je SHORT G_M41067_IG11 ;; bbWeight=16 PerfScore 56.00 G_M41067_IG09: mov r8, 0xD1FFAB1E and r8, rcx mov r9, 0xD1FFAB1E xor r8, r9 mov r9, 0xD1FFAB1E test r8, r9 je SHORT G_M41067_IG10 mov r9, 0xD1FFAB1E test r8, r9 je SHORT G_M41067_IG10 test r8d, -0x10000 je SHORT G_M41067_IG10 test r8d, 0xFFFF jne SHORT G_M41067_IG11 ;; bbWeight=8 PerfScore 52.00 G_M41067_IG10: mov r8, 0xD1FFAB1E and rcx, r8 mov r8, 0xD1FFAB1E cmp rcx, r8 jne SHORT G_M41067_IG12 ;; bbWeight=8 PerfScore 16.00 G_M41067_IG11: add rsi, 8 cmp rsi, rax jb G_M41067_IG08 ;; bbWeight=16 PerfScore 24.00 G_M41067_IG12: cmp rsi, r15 jae G_M41067_IG37 ;; bbWeight=2 PerfScore 2.50 G_M41067_IG13: movzx r8, word ptr [rsi] add rsi, 2 jmp SHORT G_M41067_IG15 ;; bbWeight=2 PerfScore 8.50 G_M41067_IG14: add ebp, 2 ;; bbWeight=2 PerfScore 0.50 G_M41067_IG15: cmp r8d, 0xD800 jl G_M41067_IG26 cmp r8d, 0xDFFF jg G_M41067_IG26 cmp r8d, 0xDBFF jg G_M41067_IG20 test r12d, r12d jle G_M41067_IG19 add rsi, -2 add ebp, -2 test rdx, rdx jne SHORT G_M41067_IG18 test rdi, rdi jne SHORT G_M41067_IG16 mov rcx, gword ptr [rbx+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call gword ptr [rax+32]EncoderFallback:CreateFallbackBuffer():EncoderFallbackBuffer:this jmp SHORT G_M41067_IG17 ;; bbWeight=2 PerfScore 38.00 G_M41067_IG16: mov rcx, rdi call Encoder:get_FallbackBuffer():EncoderFallbackBuffer:this ;; bbWeight=2 PerfScore 2.50 G_M41067_IG17: mov qword ptr [rax+24], r14 mov qword ptr [rax+32], r15 mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rax+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+20H] mov byte ptr [rax+48], 0 mov byte ptr [rax+49], 0 mov byte ptr [rax+50], 0 xor r8d, r8d mov dword ptr [rax+40], r8d mov rdx, rax ;; bbWeight=2 PerfScore 20.50 G_M41067_IG18: mov qword ptr [rsp+30H], rsi lea r8, [rsp+30H] mov gword ptr [rsp+20H], rdx mov rcx, rdx mov edx, r12d mov r12, gword ptr [rsp+20H] mov rax, qword ptr [r12] mov rax, qword ptr [rax+72] call qword ptr [rax+16]EncoderFallbackBuffer:InternalFallback(ushort,byref):bool:this mov rsi, qword ptr [rsp+30H] xor ecx, ecx xor eax, eax xchg rax, r12 jmp G_M41067_IG30 ;; bbWeight=2 PerfScore 31.00 G_M41067_IG19: mov eax, r8d mov r12d, eax mov rax, rdx jmp G_M41067_IG30 ;; bbWeight=2 PerfScore 5.50 G_M41067_IG20: test r12d, r12d jne G_M41067_IG25 add ebp, -2 test rdx, rdx jne SHORT G_M41067_IG21 test rdi, rdi jne SHORT G_M41067_IG22 mov dword ptr [rsp+2CH], r8d mov rcx, gword ptr [rbx+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call gword ptr [rax+32]EncoderFallback:CreateFallbackBuffer():EncoderFallbackBuffer:this jmp SHORT G_M41067_IG23 ;; bbWeight=2 PerfScore 32.00 G_M41067_IG21: mov dword ptr [rsp+2CH], r8d jmp SHORT G_M41067_IG24 ;; bbWeight=1 PerfScore 3.00 G_M41067_IG22: mov dword ptr [rsp+2CH], r8d mov rcx, rdi call Encoder:get_FallbackBuffer():EncoderFallbackBuffer:this ;; bbWeight=2 PerfScore 4.50 G_M41067_IG23: mov qword ptr [rax+24], r14 mov qword ptr [rax+32], r15 mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rax+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+20H] mov byte ptr [rax+48], 0 mov byte ptr [rax+49], 0 mov byte ptr [rax+50], 0 xor r8d, r8d mov dword ptr [rax+40], r8d mov rdx, rax ;; bbWeight=2 PerfScore 20.50 G_M41067_IG24: mov qword ptr [rsp+30H], rsi lea r8, [rsp+30H] mov gword ptr [rsp+20H], rdx mov rcx, rdx mov edx, dword ptr [rsp+2CH] mov rsi, gword ptr [rsp+20H] mov rax, qword ptr [rsi] mov rax, qword ptr [rax+72] call qword ptr [rax+16]EncoderFallbackBuffer:InternalFallback(ushort,byref):bool:this mov rcx, qword ptr [rsp+30H] mov rax, rcx xchg rax, rsi jmp G_M41067_IG30 ;; bbWeight=2 PerfScore 32.00 G_M41067_IG25: xor r12d, r12d mov rax, rdx jmp G_M41067_IG30 ;; bbWeight=2 PerfScore 5.00 G_M41067_IG26: test r12d, r12d mov rax, rdx jle G_M41067_IG30 add rsi, -2 test rax, rax jne SHORT G_M41067_IG29 test rdi, rdi jne SHORT G_M41067_IG27 mov rcx, gword ptr [rbx+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call gword ptr [rax+32]EncoderFallback:CreateFallbackBuffer():EncoderFallbackBuffer:this jmp SHORT G_M41067_IG28 ;; bbWeight=2 PerfScore 30.50 G_M41067_IG27: mov rcx, rdi call Encoder:get_FallbackBuffer():EncoderFallbackBuffer:this ;; bbWeight=2 PerfScore 2.50 G_M41067_IG28: mov qword ptr [rax+24], r14 mov qword ptr [rax+32], r15 mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rax+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+20H] mov byte ptr [rax+48], 0 mov byte ptr [rax+49], 0 mov byte ptr [rax+50], 0 xor r8d, r8d mov dword ptr [rax+40], r8d ;; bbWeight=2 PerfScore 20.00 G_M41067_IG29: mov qword ptr [rsp+30H], rsi lea r8, [rsp+30H] mov rcx, rax mov edx, r12d mov gword ptr [rsp+20H], rax mov r9, qword ptr [rax] mov r9, qword ptr [r9+72] call qword ptr [r9+16]EncoderFallbackBuffer:InternalFallback(ushort,byref):bool:this mov rsi, qword ptr [rsp+30H] add ebp, -2 xor r12d, r12d mov rax, gword ptr [rsp+20H] ;; bbWeight=2 PerfScore 25.00 G_M41067_IG30: test rax, rax je SHORT G_M41067_IG34 ;; bbWeight=64 PerfScore 80.00 G_M41067_IG31: mov rcx, rax mov gword ptr [rsp+20H], rax mov rdx, qword ptr [rax] mov rdx, qword ptr [rdx+64] call qword ptr [rdx+48]EncoderFallbackBuffer:GetNextChar():ushort:this test eax, eax setne cl mov rdx, gword ptr [rsp+20H] mov byte ptr [rdx+50], cl test eax, eax jne SHORT G_M41067_IG33 ;; bbWeight=8 PerfScore 102.00 G_M41067_IG32: xor ecx, ecx mov dword ptr [rdx+40], ecx ;; bbWeight=4 PerfScore 5.00 G_M41067_IG33: jmp SHORT G_M41067_IG35 ;; bbWeight=8 PerfScore 16.00 G_M41067_IG34: xor ecx, ecx mov rdx, rax mov eax, ecx ;; bbWeight=8 PerfScore 6.00 G_M41067_IG35: movzx r8, ax test eax, eax jne G_M41067_IG07 ;; bbWeight=64 PerfScore 96.00 G_M41067_IG36: cmp rsi, r15 jb G_M41067_IG07 ;; bbWeight=16 PerfScore 20.00 G_M41067_IG37: test r12d, r12d jle G_M41067_IG46 ;; bbWeight=8 PerfScore 10.00 G_M41067_IG38: add ebp, -2 test rdi, rdi je SHORT G_M41067_IG40 ;; bbWeight=4 PerfScore 6.00 G_M41067_IG39: cmp byte ptr [rdi+38], 0 je G_M41067_IG46 ;; bbWeight=2 PerfScore 6.00 G_M41067_IG40: test r13d, r13d jne G_M41067_IG52 ;; bbWeight=4 PerfScore 5.00 G_M41067_IG41: test rdx, rdx jne SHORT G_M41067_IG45 ;; bbWeight=4 PerfScore 5.00 G_M41067_IG42: test rdi, rdi jne SHORT G_M41067_IG43 mov rcx, gword ptr [rbx+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call gword ptr [rax+32]EncoderFallback:CreateFallbackBuffer():EncoderFallbackBuffer:this mov r13, rax jmp SHORT G_M41067_IG44 ;; bbWeight=2 PerfScore 25.00 G_M41067_IG43: mov rcx, rdi call Encoder:get_FallbackBuffer():EncoderFallbackBuffer:this mov r13, rax ;; bbWeight=2 PerfScore 3.00 G_M41067_IG44: mov qword ptr [r13+24], r14 mov qword ptr [r13+32], r15 lea rcx, bword ptr [r13+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov byte ptr [r13+48], 0 mov byte ptr [r13+49], 0 mov byte ptr [r13+50], 0 xor r8d, r8d mov dword ptr [r13+40], r8d mov rdx, r13 ;; bbWeight=2 PerfScore 16.50 G_M41067_IG45: mov qword ptr [rsp+30H], rsi lea r8, [rsp+30H] mov gword ptr [rsp+20H], rdx mov rcx, rdx mov edx, r12d mov r12, gword ptr [rsp+20H] mov rax, qword ptr [r12] mov rax, qword ptr [rax+72] call qword ptr [rax+16]EncoderFallbackBuffer:InternalFallback(ushort,byref):bool:this mov rsi, qword ptr [rsp+30H] xor eax, eax xor r13d, r13d mov ecx, 1 mov rax, r12 mov r12d, r13d mov r13d, ecx jmp G_M41067_IG30 ;; bbWeight=4 PerfScore 62.00 G_M41067_IG46: mov eax, ebp ;; bbWeight=1 PerfScore 0.25 G_M41067_IG47: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M41067_IG48: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov ecx, 467 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x9A05 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rbx call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rbx call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M41067_IG49: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] xor rdx, rdx call SR:GetResourceString(String,String):String mov r12, rax mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+72] call gword ptr [rax]Encoding:get_EncodingName():String:this mov rcx, gword ptr [rdi+8] mov rsi, rax test rcx, rcx jne SHORT G_M41067_IG50 xor rdi, rdi jmp SHORT G_M41067_IG51 ;; bbWeight=0 PerfScore 0.00 G_M41067_IG50: call Object:GetType():Type:this mov rdi, rax ;; bbWeight=0 PerfScore 0.00 G_M41067_IG51: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, r12 mov rdx, rsi mov r8, rdi call SR:Format(String,Object,Object):String mov rdx, rax mov rcx, rbx call ArgumentException:.ctor(String):this mov rcx, rbx call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M41067_IG52: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x8621 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov word ptr [rsi+8], r12w mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, rsi mov rcx, rdi call SR:Format(String,Object):String mov dword ptr [rbx+112], 0xD1FFAB1E mov dword ptr [rbx+116], 0xD1FFAB1E lea rcx, bword ptr [rbx+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+116], 0xD1FFAB1E mov ecx, 0x12E6C mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS lea rcx, bword ptr [rbx+120] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+116], 0xD1FFAB1E mov rcx, rbx call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1569, prolog size 25, PerfScore 1102.78, (MethodHash=ae185f94) for method UnicodeEncoding:GetByteCount(long,int,EncoderNLS):int:this ; ============================================================ ; Assembly listing for method UnicodeEncoding:GetBytes(String,int,int,ref,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 6, 5 ) ref -> rdx class-hnd ; V02 arg2 [V02,T01] ( 6, 5 ) int -> r8 ; V03 arg3 [V03,T02] ( 5, 5 ) int -> [rsp+0x78] ; V04 arg4 [V04,T08] ( 3, 3 ) ref -> r10 class-hnd ; V05 arg5 [V05,T04] ( 4, 4 ) int -> rax ; V06 loc0 [V06,T13] ( 2, 2 ) int -> r11 ; V07 loc1 [V07,T14] ( 2, 2 ) long -> rdx ; V08 loc2 [V08 ] ( 2, 2 ) byref -> [rsp+0x40] must-init pinned ;* V09 loc3 [V09 ] ( 0, 0 ) long -> zero-ref ; V10 loc4 [V10 ] ( 1, 1 ) byref -> [rsp+0x38] must-init pinned ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V12 tmp1 [V12,T17] ( 3, 0 ) ref -> rsi ; V13 tmp2 [V13,T18] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V14 tmp3 [V14,T19] ( 3, 0 ) ref -> rsi ; V15 tmp4 [V15,T20] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V16 tmp5 [V16,T21] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V17 tmp6 [V17,T15] ( 2, 2 ) long -> rdx ;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V19 tmp8 [V19,T22] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V20 tmp9 [V20 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V21 tmp10 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V22 tmp11 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V23 tmp12 [V23,T10] ( 2, 2 ) byref -> rsi V18._pointer(offs=0x00) P-INDEP "field V18._pointer (fldOffset=0x0)" ;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref V18._length(offs=0x08) P-INDEP "field V18._length (fldOffset=0x8)" ; V25 tmp14 [V25,T09] ( 3, 3 ) byref -> r10 V20._pointer(offs=0x00) P-INDEP "field V20._pointer (fldOffset=0x0)" ;* V26 tmp15 [V26,T16] ( 0, 0 ) int -> zero-ref V20._length(offs=0x08) P-INDEP "field V20._length (fldOffset=0x8)" ; V27 tmp16 [V27,T11] ( 2, 2 ) byref -> r10 V21._value(offs=0x00) P-INDEP "field V21._value (fldOffset=0x0)" ; V28 tmp17 [V28,T12] ( 2, 2 ) byref -> rsi V22._pointer(offs=0x00) P-INDEP "field V22._pointer (fldOffset=0x0)" ;* V29 tmp18 [V29 ] ( 0, 0 ) int -> zero-ref V22._length(offs=0x08) P-INDEP "field V22._length (fldOffset=0x8)" ; V30 tmp19 [V30,T23] ( 2, 0 ) ref -> rcx "argument with side effect" ; V31 tmp20 [V31,T24] ( 2, 0 ) ref -> r8 "argument with side effect" ; V32 tmp21 [V32,T25] ( 2, 0 ) ref -> rcx "argument with side effect" ; V33 tmp22 [V33,T26] ( 2, 0 ) ref -> r8 "argument with side effect" ; V34 tmp23 [V34,T27] ( 2, 0 ) ref -> rcx "argument with side effect" ; V35 tmp24 [V35,T28] ( 2, 0 ) ref -> rdi "argument with side effect" ; V36 tmp25 [V36,T29] ( 2, 0 ) ref -> r8 "argument with side effect" ; V37 tmp26 [V37,T30] ( 2, 0 ) ref -> rcx "argument with side effect" ; V38 tmp27 [V38,T31] ( 2, 0 ) ref -> rdi "argument with side effect" ; V39 tmp28 [V39,T32] ( 2, 0 ) ref -> r8 "argument with side effect" ; V40 tmp29 [V40,T06] ( 2, 4 ) long -> rdx "Cast away GC" ; V41 tmp30 [V41,T07] ( 2, 4 ) long -> r10 "Cast away GC" ; V42 cse0 [V42,T05] ( 3, 3 ) int -> r11 "CSE - aggressive" ; ; Lcl frame size = 72 G_M64848_IG01: push rdi push rsi sub rsp, 72 xor rax, rax mov qword ptr [rsp+40H], rax mov qword ptr [rsp+38H], rax mov r10, gword ptr [rsp+80H] mov eax, dword ptr [rsp+88H] ;; bbWeight=1 PerfScore 6.50 G_M64848_IG02: test rdx, rdx je G_M64848_IG08 test r10, r10 je G_M64848_IG08 ;; bbWeight=1 PerfScore 2.50 G_M64848_IG03: test r8d, r8d jl G_M64848_IG11 test r9d, r9d jl G_M64848_IG11 ;; bbWeight=1 PerfScore 2.50 G_M64848_IG04: mov r11d, dword ptr [rdx+8] sub r11d, r8d mov dword ptr [rsp+78H], r9d cmp r11d, r9d jl G_M64848_IG14 ;; bbWeight=1 PerfScore 4.50 G_M64848_IG05: test eax, eax jl G_M64848_IG15 mov r11d, dword ptr [r10+8] cmp r11d, eax jl G_M64848_IG15 ;; bbWeight=1 PerfScore 4.50 G_M64848_IG06: sub r11d, eax add rdx, 12 mov bword ptr [rsp+40H], rdx mov rdx, bword ptr [rsp+40H] add r10, 16 mov rsi, r10 mov bword ptr [rsp+38H], rsi mov dword ptr [rsp+20H], r11d xor r11, r11 mov gword ptr [rsp+28H], r11 movsxd r8, r8d lea rdx, [rdx+2*r8] movsxd r8, eax lea r9, [r10+r8] mov r8d, dword ptr [rsp+78H] mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]UnicodeEncoding:GetBytes(long,int,long,int,EncoderNLS):int:this nop ;; bbWeight=1 PerfScore 14.25 G_M64848_IG07: add rsp, 72 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M64848_IG08: test rdx, rdx je SHORT G_M64848_IG09 mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] jmp SHORT G_M64848_IG10 ;; bbWeight=0 PerfScore 0.00 G_M64848_IG09: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0 PerfScore 0.00 G_M64848_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x90AF mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rsi mov rcx, rdi call ArgumentNullException:.ctor(String,String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M64848_IG11: test r8d, r8d jl SHORT G_M64848_IG12 mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] jmp SHORT G_M64848_IG13 ;; bbWeight=0 PerfScore 0.00 G_M64848_IG12: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0 PerfScore 0.00 G_M64848_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0xA085 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rsi mov rcx, rdi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rdi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M64848_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x2068 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x9B77 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M64848_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x12E3E mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x9B45 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 587, prolog size 18, PerfScore 95.70, (MethodHash=5d5002af) for method UnicodeEncoding:GetBytes(String,int,int,ref,int):int:this ; ============================================================ ; Assembly listing for method UnicodeEncoding:GetBytes(long,int,long,int,EncoderNLS):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T15] ( 13, 20 ) ref -> rbp this class-hnd ; V01 arg1 [V01,T03] ( 32, 75 ) long -> registers ; V02 arg2 [V02,T37] ( 3, 3 ) int -> r8 ; V03 arg3 [V03,T07] ( 28, 51 ) long -> rdi ; V04 arg4 [V04,T39] ( 1, 1 ) int -> [rsp+0xB0] ; V05 arg5 [V05,T12] ( 26, 39.50) ref -> rbx class-hnd ; V06 loc0 [V06,T10] ( 22, 42 ) ushort -> registers ; V07 loc1 [V07,T02] ( 12, 86 ) ushort -> [rsp+0x44] ; V08 loc2 [V08,T26] ( 3, 9 ) bool -> registers ; V09 loc3 [V09,T30] ( 4, 7 ) long -> r12 ; V10 loc4 [V10,T14] ( 9, 29.50) long -> r13 ; V11 loc5 [V11,T31] ( 4, 6 ) long -> [rsp+0x38] ; V12 loc6 [V12,T25] ( 6, 9.50) long -> [rsp+0x30] ; V13 loc7 [V13,T00] ( 74,220 ) ref -> [rsp+0x20] class-hnd ; V14 loc8 [V14 ] ( 12, 30 ) long -> [rsp+0x28] do-not-enreg[X] addr-exposed ld-addr-op ; V15 loc9 [V15,T16] ( 3, 20 ) long -> rax ; V16 loc10 [V16,T04] ( 7, 70 ) long -> rsi ; V17 loc11 [V17,T08] ( 5, 52 ) long -> rdi ; V18 loc12 [V18,T11] ( 5, 40 ) long -> r8 ; V19 OutArgs [V19 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V20 tmp1 [V20,T01] ( 4,144 ) int -> registers ; V21 tmp2 [V21,T28] ( 2, 8 ) long -> rcx "impSpillLclRefs" ; V22 tmp3 [V22,T18] ( 3, 12 ) long -> rcx "impSpillLclRefs" ; V23 tmp4 [V23,T29] ( 2, 8 ) long -> rcx "impSpillLclRefs" ; V24 tmp5 [V24,T19] ( 3, 12 ) long -> rcx "impSpillLclRefs" ; V25 tmp6 [V25,T41] ( 3, 0 ) ref -> rsi class-hnd exact "Single-def Box Helper" ; V26 tmp7 [V26,T49] ( 2, 0 ) ref -> rdi class-hnd "impImportAndPushBox" ; V27 tmp8 [V27,T40] ( 8, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V28 tmp9 [V28,T20] ( 3, 12 ) long -> rcx "impSpillLclRefs" ; V29 tmp10 [V29,T21] ( 3, 12 ) long -> rcx "impSpillLclRefs" ; V30 tmp11 [V30,T22] ( 3, 12 ) long -> rcx "impSpillLclRefs" ; V31 tmp12 [V31,T23] ( 3, 12 ) long -> rcx "impSpillLclRefs" ; V32 tmp13 [V32,T32] ( 3, 6 ) long -> rcx ; V33 tmp14 [V33,T33] ( 3, 6 ) long -> rcx ; V34 tmp15 [V34,T34] ( 3, 6 ) long -> rax ; V35 tmp16 [V35,T17] ( 2, 16 ) long -> r8 ;* V36 tmp17 [V36 ] ( 0, 0 ) long -> zero-ref ;* V37 tmp18 [V37 ] ( 0, 0 ) long -> zero-ref ; V38 tmp19 [V38,T50] ( 2, 0 ) ref -> r14 class-hnd "non-inline candidate call" ; V39 tmp20 [V39,T51] ( 2, 0 ) ref -> rax class-hnd "impAppendStmt" ; V40 tmp21 [V40,T52] ( 2, 0 ) ref -> rcx class-hnd "dup spill" ; V41 tmp22 [V41,T42] ( 3, 0 ) ref -> r14 ; V42 tmp23 [V42,T43] ( 3, 0 ) ref -> rsi ; V43 tmp24 [V43,T44] ( 3, 0 ) ref -> rcx ; V44 tmp25 [V44,T45] ( 3, 0 ) ref -> r14 ; V45 tmp26 [V45,T46] ( 3, 0 ) ref -> rsi ; V46 tmp27 [V46,T47] ( 3, 0 ) ref -> rdi ; V47 tmp28 [V47,T48] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V48 tmp29 [V48,T06] ( 2, 64 ) long -> rcx "Inlining Arg" ; V49 tmp30 [V49,T13] ( 4, 32 ) ushort -> rax "Inline stloc first use temp" ; V50 tmp31 [V50,T53] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V51 tmp32 [V51,T54] ( 2, 0 ) ref -> rdx "argument with side effect" ; V52 tmp33 [V52,T55] ( 2, 0 ) ref -> rcx "argument with side effect" ; V53 cse0 [V53,T35] ( 3, 6 ) long -> rax "CSE - moderate" ; V54 cse1 [V54,T36] ( 3, 6 ) long -> r8 "CSE - moderate" ; V55 cse2 [V55,T05] ( 5, 64 ) long -> rcx "CSE - aggressive" ; V56 cse3 [V56,T27] ( 4, 8 ) long -> rax "CSE - moderate" ; V57 rat0 [V57,T24] ( 3, 12 ) long -> rax "ReplaceWithLclVar is creating a new local variable" ; V58 rat1 [V58,T09] ( 12, 48 ) ref -> rcx "virtual vtable call" ; V59 rat2 [V59,T38] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 72 G_M52610_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 72 mov rbp, rcx mov rsi, rdx mov rdi, r9 mov rbx, gword ptr [rsp+B8H] ;; bbWeight=1 PerfScore 10.00 G_M52610_IG02: xor r14d, r14d xor r15d, r15d mov ecx, dword ptr [rsp+B0H] movsxd r12, ecx add r12, rdi movsxd rcx, r8d lea r13, [rsi+2*rcx] mov qword ptr [rsp+38H], rdi mov qword ptr [rsp+30H], rsi xor r8, r8 test rbx, rbx je G_M52610_IG39 ;; bbWeight=1 PerfScore 6.25 G_M52610_IG03: movzx r14, word ptr [rbx+36] cmp gword ptr [rbx+16], 0 je G_M52610_IG39 mov rcx, rbx call Encoder:get_FallbackBuffer():EncoderFallbackBuffer:this mov rcx, rax mov gword ptr [rsp+20H], rax mov rdx, qword ptr [rax] mov rdx, qword ptr [rdx+72] call qword ptr [rdx]EncoderFallbackBuffer:get_Remaining():int:this test eax, eax jle SHORT G_M52610_IG04 cmp byte ptr [rbx+39], 0 jne G_M52610_IG61 ;; bbWeight=0.50 PerfScore 9.38 G_M52610_IG04: mov rax, gword ptr [rsp+20H] mov qword ptr [rax+24], rsi mov qword ptr [rax+32], r13 mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rax+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+20H] mov byte ptr [rax+48], 0 mov byte ptr [rax+49], 0 mov byte ptr [rax+50], 0 xor ecx, ecx mov dword ptr [rax+40], ecx mov r8, rax jmp G_M52610_IG39 ;; bbWeight=0.50 PerfScore 6.63 G_M52610_IG05: test r8d, r8d jne G_M52610_IG14 movzx r8, byte ptr [rbp+38] xor r8d, 1 je G_M52610_IG13 mov ecx, esi and ecx, 7 or ecx, r14d jne G_M52610_IG13 lea rcx, [rsi-6] mov rax, r13 sub rax, rsi mov r8, rax shr r8, 63 add rax, r8 sar rax, 1 mov r8, r12 sub r8, rdi sar r8, 1 cmp rax, r8 jg SHORT G_M52610_IG06 jmp SHORT G_M52610_IG07 ;; bbWeight=2 PerfScore 29.00 G_M52610_IG06: mov rax, r8 ;; bbWeight=2 PerfScore 0.50 G_M52610_IG07: lea rax, [rcx+2*rax] cmp rsi, rax jae G_M52610_IG12 ;; bbWeight=2 PerfScore 3.50 G_M52610_IG08: mov rcx, qword ptr [rsi] mov r8, 0xD1FFAB1E test rcx, r8 je SHORT G_M52610_IG11 ;; bbWeight=16 PerfScore 56.00 G_M52610_IG09: mov r8, 0xD1FFAB1E and r8, rcx mov r9, 0xD1FFAB1E xor r8, r9 mov r9, 0xD1FFAB1E test r8, r9 je SHORT G_M52610_IG10 mov r9, 0xD1FFAB1E test r8, r9 je SHORT G_M52610_IG10 mov r9d, r8d test r9d, -0x10000 je SHORT G_M52610_IG10 test r8d, 0xFFFF jne SHORT G_M52610_IG11 ;; bbWeight=8 PerfScore 54.00 G_M52610_IG10: mov r8, 0xD1FFAB1E and r8, rcx mov r9, 0xD1FFAB1E cmp r8, r9 jne SHORT G_M52610_IG12 ;; bbWeight=8 PerfScore 16.00 G_M52610_IG11: mov qword ptr [rdi], rcx add rsi, 8 add rdi, 8 cmp rsi, rax jb G_M52610_IG08 ;; bbWeight=16 PerfScore 44.00 G_M52610_IG12: cmp rsi, r13 jae G_M52610_IG46 ;; bbWeight=2 PerfScore 2.50 G_M52610_IG13: movzx r8, word ptr [rsi] add rsi, 2 ;; bbWeight=2 PerfScore 4.50 G_M52610_IG14: cmp r8d, 0xD800 jl G_M52610_IG30 cmp r8d, 0xDFFF jg G_M52610_IG30 cmp r8d, 0xDBFF jg G_M52610_IG19 test r14d, r14d jle G_M52610_IG18 add rsi, -2 test rdx, rdx jne SHORT G_M52610_IG17 test rbx, rbx jne SHORT G_M52610_IG15 mov rcx, gword ptr [rbp+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call gword ptr [rax+32]EncoderFallback:CreateFallbackBuffer():EncoderFallbackBuffer:this jmp SHORT G_M52610_IG16 ;; bbWeight=2 PerfScore 37.50 G_M52610_IG15: mov rcx, rbx call Encoder:get_FallbackBuffer():EncoderFallbackBuffer:this ;; bbWeight=2 PerfScore 2.50 G_M52610_IG16: mov r8, qword ptr [rsp+30H] mov qword ptr [rax+24], r8 mov qword ptr [rax+32], r13 mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rax+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+20H] mov byte ptr [rax+48], 1 mov byte ptr [rax+49], 0 mov byte ptr [rax+50], 0 xor r8d, r8d mov dword ptr [rax+40], r8d mov rdx, rax ;; bbWeight=2 PerfScore 22.50 G_M52610_IG17: mov qword ptr [rsp+28H], rsi lea r8, [rsp+28H] mov gword ptr [rsp+20H], rdx mov rcx, rdx mov edx, r14d mov r14, gword ptr [rsp+20H] mov rax, qword ptr [r14] mov rax, qword ptr [rax+72] call qword ptr [rax+16]EncoderFallbackBuffer:InternalFallback(ushort,byref):bool:this mov rsi, qword ptr [rsp+28H] xor ecx, ecx xor eax, eax mov r8, r14 mov r14d, eax jmp G_M52610_IG39 ;; bbWeight=2 PerfScore 30.00 G_M52610_IG18: mov eax, r8d mov r8, rdx mov r14d, eax jmp G_M52610_IG39 ;; bbWeight=2 PerfScore 5.50 G_M52610_IG19: test r14d, r14d jne G_M52610_IG24 test rdx, rdx jne SHORT G_M52610_IG20 test rbx, rbx jne SHORT G_M52610_IG21 mov dword ptr [rsp+44H], r8d mov rcx, gword ptr [rbp+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call gword ptr [rax+32]EncoderFallback:CreateFallbackBuffer():EncoderFallbackBuffer:this jmp SHORT G_M52610_IG22 ;; bbWeight=2 PerfScore 31.50 G_M52610_IG20: mov dword ptr [rsp+44H], r8d jmp SHORT G_M52610_IG23 ;; bbWeight=1 PerfScore 3.00 G_M52610_IG21: mov dword ptr [rsp+44H], r8d mov rcx, rbx call Encoder:get_FallbackBuffer():EncoderFallbackBuffer:this ;; bbWeight=2 PerfScore 4.50 G_M52610_IG22: mov r8, qword ptr [rsp+30H] mov qword ptr [rax+24], r8 mov qword ptr [rax+32], r13 mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rax+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+20H] mov byte ptr [rax+48], 1 mov byte ptr [rax+49], 0 mov byte ptr [rax+50], 0 xor r8d, r8d mov dword ptr [rax+40], r8d mov rdx, rax ;; bbWeight=2 PerfScore 22.50 G_M52610_IG23: mov qword ptr [rsp+28H], rsi lea r8, [rsp+28H] mov gword ptr [rsp+20H], rdx mov rcx, rdx mov edx, dword ptr [rsp+44H] mov rsi, gword ptr [rsp+20H] mov rax, qword ptr [rsi] mov rax, qword ptr [rax+72] call qword ptr [rax+16]EncoderFallbackBuffer:InternalFallback(ushort,byref):bool:this mov rcx, qword ptr [rsp+28H] mov rax, rcx mov r8, rsi mov rsi, rax jmp G_M52610_IG39 ;; bbWeight=2 PerfScore 31.00 G_M52610_IG24: lea rcx, [rdi+3] cmp rcx, r12 jb SHORT G_M52610_IG27 test rdx, rdx je SHORT G_M52610_IG25 cmp byte ptr [rdx+50], 0 je SHORT G_M52610_IG25 mov rcx, rdx mov gword ptr [rsp+20H], rdx mov rax, qword ptr [rdx] mov rax, qword ptr [rax+64] call qword ptr [rax+56]EncoderFallbackBuffer:MovePrevious():bool:this mov rcx, gword ptr [rsp+20H] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+56]EncoderFallbackBuffer:MovePrevious():bool:this jmp SHORT G_M52610_IG26 ;; bbWeight=2 PerfScore 48.50 G_M52610_IG25: add rsi, -4 ;; bbWeight=2 PerfScore 0.50 G_M52610_IG26: mov r15, qword ptr [rsp+38H] cmp rdi, r15 sete r8b movzx r8, r8b mov rcx, rbp mov rdx, rbx call Encoding:ThrowBytesOverflow(EncoderNLS,bool):this xor r14d, r14d jmp G_M52610_IG57 ;; bbWeight=2 PerfScore 12.50 G_M52610_IG27: cmp byte ptr [rbp+38], 0 je SHORT G_M52610_IG28 mov rcx, rdi lea rdi, [rcx+1] mov eax, r14d sar eax, 8 mov byte ptr [rcx], al mov rcx, rdi lea rdi, [rcx+1] mov byte ptr [rcx], r14b jmp SHORT G_M52610_IG29 ;; bbWeight=2 PerfScore 21.50 G_M52610_IG28: mov rcx, rdi lea rdi, [rcx+1] mov byte ptr [rcx], r14b mov rcx, rdi lea rdi, [rcx+1] sar r14d, 8 mov byte ptr [rcx], r14b ;; bbWeight=2 PerfScore 11.00 G_M52610_IG29: xor r14d, r14d jmp G_M52610_IG34 ;; bbWeight=2 PerfScore 4.50 G_M52610_IG30: test r14d, r14d jle G_M52610_IG34 add rsi, -2 test rdx, rdx jne SHORT G_M52610_IG33 test rbx, rbx jne SHORT G_M52610_IG31 mov rcx, gword ptr [rbp+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call gword ptr [rax+32]EncoderFallback:CreateFallbackBuffer():EncoderFallbackBuffer:this jmp SHORT G_M52610_IG32 ;; bbWeight=2 PerfScore 30.00 G_M52610_IG31: mov rcx, rbx call Encoder:get_FallbackBuffer():EncoderFallbackBuffer:this ;; bbWeight=2 PerfScore 2.50 G_M52610_IG32: mov r8, qword ptr [rsp+30H] mov qword ptr [rax+24], r8 mov qword ptr [rax+32], r13 mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rax+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+20H] mov byte ptr [rax+48], 1 mov byte ptr [rax+49], 0 mov byte ptr [rax+50], 0 xor r8d, r8d mov dword ptr [rax+40], r8d mov rdx, rax ;; bbWeight=2 PerfScore 22.50 G_M52610_IG33: mov qword ptr [rsp+28H], rsi lea r8, [rsp+28H] mov gword ptr [rsp+20H], rdx mov rcx, rdx mov edx, r14d mov r14, gword ptr [rsp+20H] mov rax, qword ptr [r14] mov rax, qword ptr [rax+72] call qword ptr [rax+16]EncoderFallbackBuffer:InternalFallback(ushort,byref):bool:this mov rsi, qword ptr [rsp+28H] xor ecx, ecx xor eax, eax mov r8, r14 mov r14d, eax jmp G_M52610_IG39 ;; bbWeight=2 PerfScore 30.00 G_M52610_IG34: lea rax, [rdi+1] cmp rax, r12 jb SHORT G_M52610_IG37 test rdx, rdx je SHORT G_M52610_IG35 cmp byte ptr [rdx+50], 0 je SHORT G_M52610_IG35 mov rcx, rdx mov gword ptr [rsp+20H], rdx mov rax, qword ptr [rdx] mov rax, qword ptr [rax+64] call qword ptr [rax+56]EncoderFallbackBuffer:MovePrevious():bool:this jmp SHORT G_M52610_IG36 ;; bbWeight=2 PerfScore 32.50 G_M52610_IG35: add rsi, -2 mov gword ptr [rsp+20H], rdx ;; bbWeight=2 PerfScore 2.50 G_M52610_IG36: cmp rdi, qword ptr [rsp+38H] sete r8b movzx r8, r8b mov rcx, rbp mov rdx, rbx call Encoding:ThrowBytesOverflow(EncoderNLS,bool):this mov rdx, gword ptr [rsp+20H] jmp G_M52610_IG46 ;; bbWeight=2 PerfScore 13.50 G_M52610_IG37: cmp byte ptr [rbp+38], 0 je SHORT G_M52610_IG38 mov rcx, rdi mov rdi, rax mov eax, r8d sar eax, 8 mov byte ptr [rcx], al mov rcx, rdi lea rdi, [rcx+1] mov byte ptr [rcx], r8b mov r8, rdx jmp SHORT G_M52610_IG39 ;; bbWeight=2 PerfScore 21.50 G_M52610_IG38: mov rcx, rdi mov rdi, rax mov byte ptr [rcx], r8b mov rcx, rdi lea rdi, [rcx+1] mov eax, r8d sar eax, 8 mov byte ptr [rcx], al mov r8, rdx ;; bbWeight=2 PerfScore 11.50 G_M52610_IG39: test r8, r8 je SHORT G_M52610_IG43 ;; bbWeight=64 PerfScore 80.00 G_M52610_IG40: mov rcx, r8 mov gword ptr [rsp+20H], r8 mov r9, qword ptr [r8] mov r9, qword ptr [r9+64] call qword ptr [r9+48]EncoderFallbackBuffer:GetNextChar():ushort:this test eax, eax setne cl mov rdx, gword ptr [rsp+20H] mov byte ptr [rdx+50], cl test eax, eax jne SHORT G_M52610_IG42 ;; bbWeight=8 PerfScore 102.00 G_M52610_IG41: xor ecx, ecx mov dword ptr [rdx+40], ecx ;; bbWeight=4 PerfScore 5.00 G_M52610_IG42: jmp SHORT G_M52610_IG44 ;; bbWeight=8 PerfScore 16.00 G_M52610_IG43: xor ecx, ecx mov eax, ecx mov rdx, r8 ;; bbWeight=8 PerfScore 6.00 G_M52610_IG44: movzx r8, ax test eax, eax jne G_M52610_IG05 ;; bbWeight=64 PerfScore 96.00 G_M52610_IG45: cmp rsi, r13 jb G_M52610_IG05 ;; bbWeight=16 PerfScore 20.00 G_M52610_IG46: test r14d, r14d jle SHORT G_M52610_IG53 ;; bbWeight=2 PerfScore 2.50 G_M52610_IG47: test rbx, rbx je SHORT G_M52610_IG49 ;; bbWeight=4 PerfScore 5.00 G_M52610_IG48: cmp byte ptr [rbx+38], 0 je SHORT G_M52610_IG52 ;; bbWeight=2 PerfScore 6.00 G_M52610_IG49: test r15d, r15d jne G_M52610_IG64 ;; bbWeight=4 PerfScore 5.00 G_M52610_IG50: test rdx, rdx jne SHORT G_M52610_IG56 ;; bbWeight=4 PerfScore 5.00 G_M52610_IG51: test rbx, rbx jne SHORT G_M52610_IG54 mov rcx, gword ptr [rbp+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call gword ptr [rax+32]EncoderFallback:CreateFallbackBuffer():EncoderFallbackBuffer:this mov r15, rax jmp SHORT G_M52610_IG55 ;; bbWeight=2 PerfScore 25.00 G_M52610_IG52: mov r15, qword ptr [rsp+38H] jmp G_M52610_IG57 ;; bbWeight=1 PerfScore 3.00 G_M52610_IG53: mov r15, qword ptr [rsp+38H] jmp G_M52610_IG57 ;; bbWeight=1 PerfScore 3.00 G_M52610_IG54: mov rcx, rbx call Encoder:get_FallbackBuffer():EncoderFallbackBuffer:this mov r15, rax ;; bbWeight=2 PerfScore 3.00 G_M52610_IG55: mov rax, qword ptr [rsp+30H] mov qword ptr [r15+24], rax mov qword ptr [r15+32], r13 lea rcx, bword ptr [r15+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov byte ptr [r15+48], 1 mov byte ptr [r15+49], 0 mov byte ptr [r15+50], 0 xor r8d, r8d mov dword ptr [r15+40], r8d mov rdx, r15 ;; bbWeight=2 PerfScore 18.50 G_M52610_IG56: mov qword ptr [rsp+28H], rsi lea r8, [rsp+28H] mov gword ptr [rsp+20H], rdx mov rcx, rdx mov edx, r14d mov r14, gword ptr [rsp+20H] mov rax, qword ptr [r14] mov rax, qword ptr [rax+72] call qword ptr [rax+16]EncoderFallbackBuffer:InternalFallback(ushort,byref):bool:this mov rsi, qword ptr [rsp+28H] xor eax, eax xor r15d, r15d mov ecx, 1 mov r8, r14 mov r14d, r15d mov r15d, ecx jmp G_M52610_IG39 ;; bbWeight=4 PerfScore 62.00 G_M52610_IG57: test rbx, rbx je SHORT G_M52610_IG59 ;; bbWeight=1 PerfScore 1.25 G_M52610_IG58: mov word ptr [rbx+36], r14w mov rax, rsi sub rax, qword ptr [rsp+30H] mov rcx, rax shr rcx, 63 add rax, rcx sar rax, 1 mov dword ptr [rbx+32], eax ;; bbWeight=0.50 PerfScore 3.13 G_M52610_IG59: mov rax, rdi sub rax, r15 ;; bbWeight=1 PerfScore 0.50 G_M52610_IG60: add rsp, 72 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M52610_IG61: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] xor rdx, rdx call SR:GetResourceString(String,String):String mov r14, rax mov rcx, rbp mov rax, qword ptr [rbp] mov rax, qword ptr [rax+72] call gword ptr [rax]Encoding:get_EncodingName():String:this mov rcx, gword ptr [rbx+8] mov rsi, rax test rcx, rcx jne SHORT G_M52610_IG62 xor rdi, rdi jmp SHORT G_M52610_IG63 ;; bbWeight=0 PerfScore 0.00 G_M52610_IG62: call Object:GetType():Type:this mov rdi, rax ;; bbWeight=0 PerfScore 0.00 G_M52610_IG63: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, r14 mov rdx, rsi mov r8, rdi call SR:Format(String,Object,Object):String mov rdx, rax mov rcx, rbx call ArgumentException:.ctor(String):this mov rcx, rbx call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M52610_IG64: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x8621 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov word ptr [rsi+8], r14w mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, rsi mov rcx, rdi call SR:Format(String,Object):String mov dword ptr [rbx+112], 0xD1FFAB1E mov dword ptr [rbx+116], 0xD1FFAB1E lea rcx, bword ptr [rbx+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+116], 0xD1FFAB1E mov ecx, 0x12E6C mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS lea rcx, bword ptr [rbx+120] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+116], 0xD1FFAB1E mov rcx, rbx call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 1909, prolog size 33, PerfScore 1361.78, (MethodHash=86f3327d) for method UnicodeEncoding:GetBytes(long,int,long,int,EncoderNLS):int:this ; ============================================================ ; Assembly listing for method Sha1ForNonSecretPurposes:Start():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 11, 10.50) byref -> rsi this ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 6 ) ref -> rax "arr expr" ; V03 tmp2 [V03,T02] ( 3, 6 ) ref -> rax "arr expr" ; V04 tmp3 [V04,T03] ( 3, 6 ) ref -> rax "arr expr" ; V05 tmp4 [V05,T04] ( 3, 6 ) ref -> rax "arr expr" ; V06 tmp5 [V06,T05] ( 3, 6 ) ref -> rax "arr expr" ; ; Lcl frame size = 32 G_M36217_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M36217_IG02: cmp gword ptr [rsi], 0 jne SHORT G_M36217_IG04 ;; bbWeight=1 PerfScore 3.00 G_M36217_IG03: mov rcx, 0xD1FFAB1E mov edx, 85 call CORINFO_HELP_NEWARR_1_VC mov rdx, rax mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 1.50 G_M36217_IG04: xor rax, rax mov qword ptr [rsi+8], rax mov dword ptr [rsi+16], eax mov rax, gword ptr [rsi] cmp dword ptr [rax+8], 80 jbe SHORT G_M36217_IG06 mov dword ptr [rax+336], 0xD1FFAB1E mov rax, gword ptr [rsi] cmp dword ptr [rax+8], 81 jbe SHORT G_M36217_IG06 mov dword ptr [rax+340], 0xD1FFAB1E mov rax, gword ptr [rsi] cmp dword ptr [rax+8], 82 jbe SHORT G_M36217_IG06 mov dword ptr [rax+344], 0xD1FFAB1E mov rax, gword ptr [rsi] cmp dword ptr [rax+8], 83 jbe SHORT G_M36217_IG06 mov dword ptr [rax+348], 0xD1FFAB1E mov rax, gword ptr [rsi] cmp dword ptr [rax+8], 84 jbe SHORT G_M36217_IG06 mov dword ptr [rax+352], 0xD1FFAB1E ;; bbWeight=1 PerfScore 32.25 G_M36217_IG05: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M36217_IG06: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 161, prolog size 5, PerfScore 56.10, (MethodHash=acec7286) for method Sha1ForNonSecretPurposes:Start():this ; ============================================================ ; Assembly listing for method Sha1ForNonSecretPurposes:Drain():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T15] ( 11, 14 ) byref -> rcx this ; V01 loc0 [V01,T04] ( 10, 37 ) int -> rax ; V02 loc1 [V02,T03] ( 14, 50 ) int -> rdx ; V03 loc2 [V03,T00] ( 16, 58 ) int -> r9 ; V04 loc3 [V04,T01] ( 15, 54 ) int -> r10 ; V05 loc4 [V05,T02] ( 15, 54 ) int -> r11 ; V06 loc5 [V06,T05] ( 10, 34 ) int -> rsi ; V07 loc6 [V07,T11] ( 6, 21 ) int -> rdi ; V08 loc7 [V08,T30] ( 2, 8 ) int -> rbx ; V09 loc8 [V09,T31] ( 2, 8 ) int -> rbx ; V10 loc9 [V10,T12] ( 6, 21 ) int -> rdi ; V11 loc10 [V11,T32] ( 2, 8 ) int -> rbx ; V12 loc11 [V12,T33] ( 2, 8 ) int -> rbx ; V13 loc12 [V13,T13] ( 6, 21 ) int -> rdi ; V14 loc13 [V14,T34] ( 2, 8 ) int -> rbx ; V15 loc14 [V15,T35] ( 2, 8 ) int -> rbx ; V16 loc15 [V16,T14] ( 6, 21 ) int -> rdi ; V17 loc16 [V17,T36] ( 2, 8 ) int -> rbx ; V18 loc17 [V18,T37] ( 2, 8 ) int -> rbx ; V19 OutArgs [V19 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V20 tmp1 [V20,T16] ( 2, 16 ) ref -> r8 class-hnd "impAppendStmt" ; V21 tmp2 [V21,T24] ( 2, 16 ) int -> r9 "Strict ordering of exceptions for Array store" ; V22 tmp3 [V22,T38] ( 3, 6 ) byref -> rax "dup spill" ; V23 tmp4 [V23,T39] ( 3, 6 ) byref -> rax "dup spill" ; V24 tmp5 [V24,T40] ( 3, 6 ) byref -> rax "dup spill" ; V25 tmp6 [V25,T41] ( 3, 6 ) byref -> rax "dup spill" ; V26 tmp7 [V26,T42] ( 3, 6 ) byref -> rax "dup spill" ; V27 tmp8 [V27,T25] ( 2, 16 ) int -> r9 "Inlining Arg" ; V28 tmp9 [V28,T08] ( 3, 24 ) ref -> r9 "arr expr" ; V29 tmp10 [V29,T17] ( 2, 16 ) ref -> r10 "arr expr" ; V30 tmp11 [V30,T18] ( 2, 16 ) ref -> r10 "arr expr" ; V31 tmp12 [V31,T19] ( 2, 16 ) ref -> rdx "arr expr" ; V32 tmp13 [V32,T43] ( 3, 6 ) ref -> rdx "arr expr" ; V33 tmp14 [V33,T48] ( 2, 4 ) ref -> r9 "arr expr" ; V34 tmp15 [V34,T49] ( 2, 4 ) ref -> r10 "arr expr" ; V35 tmp16 [V35,T50] ( 2, 4 ) ref -> r11 "arr expr" ; V36 tmp17 [V36,T51] ( 2, 4 ) ref -> rsi "arr expr" ; V37 tmp18 [V37,T20] ( 2, 16 ) ref -> rbx "arr expr" ; V38 tmp19 [V38,T21] ( 2, 16 ) ref -> rsi "arr expr" ; V39 tmp20 [V39,T22] ( 2, 16 ) ref -> rsi "arr expr" ; V40 tmp21 [V40,T23] ( 2, 16 ) ref -> rsi "arr expr" ; V41 tmp22 [V41,T52] ( 2, 4 ) ref -> rax "arr expr" ; V42 tmp23 [V42,T44] ( 3, 6 ) ref -> rax "arr expr" ; V43 tmp24 [V43,T45] ( 3, 6 ) ref -> rax "arr expr" ; V44 tmp25 [V44,T46] ( 3, 6 ) ref -> rax "arr expr" ; V45 tmp26 [V45,T47] ( 3, 6 ) ref -> rax "arr expr" ; V46 cse0 [V46,T09] ( 11, 23 ) ref -> rax "CSE - aggressive" ; V47 cse1 [V47,T10] ( 10, 22 ) int -> r8 "CSE - moderate" ; V48 cse2 [V48,T06] ( 6, 24 ) ref -> rdx "CSE - moderate" ; V49 cse3 [V49,T07] ( 6, 24 ) int -> r11 "CSE - moderate" ; V50 cse4 [V50,T26] ( 3, 12 ) int -> r10 "CSE - moderate" ; V51 cse5 [V51,T27] ( 3, 12 ) int -> rsi "CSE - moderate" ; V52 cse6 [V52,T28] ( 3, 12 ) int -> rsi "CSE - moderate" ; V53 cse7 [V53,T29] ( 3, 12 ) int -> r10 "CSE - moderate" ; ; Lcl frame size = 40 G_M17993_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 ;; bbWeight=1 PerfScore 4.25 G_M17993_IG02: mov eax, 16 ;; bbWeight=1 PerfScore 0.25 G_M17993_IG03: mov rdx, gword ptr [rcx] mov r8, rdx mov r9, rdx lea r10d, [rax-3] mov r11d, dword ptr [r9+8] cmp r10d, r11d jae G_M17993_IG14 movsxd r10, r10d mov r9d, dword ptr [r9+4*r10+16] mov r10, rdx lea esi, [rax-8] cmp esi, r11d jae G_M17993_IG14 movsxd rsi, esi xor r9d, dword ptr [r10+4*rsi+16] mov r10, rdx lea esi, [rax-14] cmp esi, r11d jae G_M17993_IG14 movsxd rsi, esi xor r9d, dword ptr [r10+4*rsi+16] lea r10d, [rax-16] cmp r10d, r11d jae G_M17993_IG14 movsxd r10, r10d xor r9d, dword ptr [rdx+4*r10+16] rol r9d, 1 cmp eax, r11d jae G_M17993_IG14 movsxd rdx, eax mov dword ptr [r8+4*rdx+16], r9d inc eax cmp eax, 80 jne SHORT G_M17993_IG03 ;; bbWeight=4 PerfScore 104.00 G_M17993_IG04: mov rax, gword ptr [rcx] mov rdx, rax mov r8d, dword ptr [rdx+8] cmp r8d, 80 jbe G_M17993_IG14 mov edx, dword ptr [rdx+336] mov r9, rax cmp r8d, 81 jbe G_M17993_IG14 mov r9d, dword ptr [r9+340] mov r10, rax cmp r8d, 82 jbe G_M17993_IG14 mov r10d, dword ptr [r10+344] mov r11, rax cmp r8d, 83 jbe G_M17993_IG14 mov r11d, dword ptr [r11+348] mov rsi, rax cmp r8d, 84 jbe G_M17993_IG14 mov esi, dword ptr [rsi+352] xor edi, edi ;; bbWeight=1 PerfScore 21.75 G_M17993_IG05: mov ebx, r9d and ebx, r10d mov ebp, r9d not ebp and ebp, r11d or ebx, ebp mov ebp, edx rol ebp, 5 add ebx, ebp add esi, ebx mov rbx, rax cmp edi, r8d jae G_M17993_IG14 movsxd rbp, edi mov ebx, dword ptr [rbx+4*rbp+16] lea ebx, [rsi+rbx+D1FFAB1EH] mov esi, r11d mov r11d, r10d mov r10d, r9d rol r10d, 30 mov r9d, edx mov edx, ebx inc edi cmp edi, 20 jne SHORT G_M17993_IG05 ;; bbWeight=4 PerfScore 55.00 G_M17993_IG06: mov edi, 20 ;; bbWeight=1 PerfScore 0.25 G_M17993_IG07: mov ebx, r9d xor ebx, r10d xor ebx, r11d mov ebp, edx rol ebp, 5 add ebx, ebp add ebx, esi mov rsi, rax cmp edi, r8d jae G_M17993_IG14 movsxd rbp, edi mov esi, dword ptr [rsi+4*rbp+16] lea ebx, [rbx+rsi+D1FFAB1EH] mov esi, r11d mov r11d, r10d mov r10d, r9d rol r10d, 30 mov r9d, edx mov edx, ebx inc edi cmp edi, 40 jne SHORT G_M17993_IG07 ;; bbWeight=4 PerfScore 52.00 G_M17993_IG08: mov edi, 40 ;; bbWeight=1 PerfScore 0.25 G_M17993_IG09: mov ebx, r9d and ebx, r10d mov ebp, r9d and ebp, r11d or ebx, ebp mov ebp, r10d and ebp, r11d or ebx, ebp mov ebp, edx rol ebp, 5 add ebx, ebp add ebx, esi mov rsi, rax cmp edi, r8d jae G_M17993_IG14 movsxd rbp, edi mov esi, dword ptr [rsi+4*rbp+16] lea ebx, [rbx+rsi+D1FFAB1EH] mov esi, r11d mov r11d, r10d mov r10d, r9d rol r10d, 30 mov r9d, edx mov edx, ebx inc edi cmp edi, 60 jne SHORT G_M17993_IG09 ;; bbWeight=4 PerfScore 57.00 G_M17993_IG10: mov edi, 60 ;; bbWeight=1 PerfScore 0.25 G_M17993_IG11: mov ebx, r9d xor ebx, r10d xor ebx, r11d mov ebp, edx rol ebp, 5 add ebx, ebp add ebx, esi mov rsi, rax cmp edi, r8d jae G_M17993_IG14 movsxd rbp, edi mov esi, dword ptr [rsi+4*rbp+16] lea ebx, [rbx+rsi+D1FFAB1EH] mov esi, r11d mov r11d, r10d mov r10d, r9d rol r10d, 30 mov r9d, edx mov edx, ebx inc edi cmp edi, 80 jne SHORT G_M17993_IG11 ;; bbWeight=4 PerfScore 52.00 G_M17993_IG12: add rax, 336 add dword ptr [rax], edx mov rax, gword ptr [rcx] cmp dword ptr [rax+8], 81 jbe SHORT G_M17993_IG14 add rax, 340 add dword ptr [rax], r9d mov rax, gword ptr [rcx] cmp dword ptr [rax+8], 82 jbe SHORT G_M17993_IG14 add rax, 344 add dword ptr [rax], r10d mov rax, gword ptr [rcx] cmp dword ptr [rax+8], 83 jbe SHORT G_M17993_IG14 add rax, 348 add dword ptr [rax], r11d mov rax, gword ptr [rcx] cmp dword ptr [rax+8], 84 jbe SHORT G_M17993_IG14 add rax, 352 add dword ptr [rax], esi add qword ptr [rcx+8], 512 xor eax, eax mov dword ptr [rcx+16], eax ;; bbWeight=1 PerfScore 52.50 G_M17993_IG13: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M17993_IG14: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 666, prolog size 8, PerfScore 469.35, (MethodHash=865fb9b6) for method Sha1ForNonSecretPurposes:Drain():this ; ============================================================ ; Assembly listing for method Array:Resize(byref,int) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 4 ) byref -> rdi ; V01 arg1 [V01,T00] ( 8, 5.50) int -> rsi ; V02 loc0 [V02,T02] ( 5, 3.50) ref -> rbx class-hnd ; V03 loc1 [V03,T07] ( 3, 1.50) ref -> rbp class-hnd exact ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 2 ) byref -> rcx "impAppendStmt" ; V06 tmp2 [V06,T05] ( 2, 2 ) byref -> rdx "impAppendStmt" ; V07 tmp3 [V07,T08] ( 3, 1.50) int -> r8 "Inline return value spill temp" ; V08 tmp4 [V08,T03] ( 3, 3 ) int -> r8 "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V10 tmp6 [V10,T06] ( 2, 2 ) long -> r8 "Inlining Arg" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V13 tmp9 [V13 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V14 tmp10 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 40 G_M5663_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rdi, rcx mov esi, edx ;; bbWeight=1 PerfScore 4.75 G_M5663_IG02: test esi, esi jl G_M5663_IG11 ;; bbWeight=1 PerfScore 1.25 G_M5663_IG03: mov rbx, gword ptr [rdi] test rbx, rbx jne SHORT G_M5663_IG06 ;; bbWeight=1 PerfScore 3.25 G_M5663_IG04: movsxd rdx, esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rdx, rax mov rcx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 1.63 G_M5663_IG05: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M5663_IG06: cmp dword ptr [rbx+8], esi je SHORT G_M5663_IG09 movsxd rdx, esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbp, rax lea rcx, bword ptr [rbp+16] lea rdx, bword ptr [rbx+16] mov r8d, dword ptr [rbx+8] cmp esi, r8d jle SHORT G_M5663_IG07 jmp SHORT G_M5663_IG08 ;; bbWeight=0.50 PerfScore 5.50 G_M5663_IG07: mov r8d, esi ;; bbWeight=0.50 PerfScore 0.13 G_M5663_IG08: mov r8d, r8d call Buffer:Memmove(byref,byref,long) mov rcx, rdi mov rdx, rbp call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 1.38 G_M5663_IG09: nop ;; bbWeight=0.50 PerfScore 0.13 G_M5663_IG10: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M5663_IG11: mov ecx, 69 mov edx, 11 call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 161, prolog size 8, PerfScore 37.35, (MethodHash=16e8e9e0) for method Array:Resize(byref,int) ; ============================================================ ; Assembly listing for method Sha1ForNonSecretPurposes:Finish(ref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 22, 43 ) byref -> rsi this ; V01 arg1 [V01,T19] ( 4, 7 ) ref -> rdi class-hnd ; V02 loc0 [V02,T18] ( 9, 9 ) long -> rbx ; V03 loc1 [V03,T21] ( 3, 6 ) int -> rdx ; V04 loc2 [V04,T01] ( 8, 29 ) int -> rcx ; V05 loc3 [V05,T13] ( 3, 12 ) int -> r8 ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T22] ( 3, 2 ) int -> rdx ; V08 tmp2 [V08,T10] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" ; V09 tmp3 [V09,T05] ( 3, 24 ) int -> r8 "Strict ordering of exceptions for Array store" ; V10 tmp4 [V10,T11] ( 2, 16 ) int -> rcx "Strict ordering of exceptions for Array store" ; V11 tmp5 [V11,T14] ( 3, 12 ) int -> rcx "Inline stloc first use temp" ;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "impSpillEvalStack" ; V13 tmp7 [V13,T02] ( 3, 24 ) ref -> rcx "arr expr" ; V14 tmp8 [V14,T06] ( 3, 24 ) int -> rdx "index expr" ; V15 tmp9 [V15,T03] ( 3, 24 ) ref -> r8 "arr expr" ; V16 tmp10 [V16,T07] ( 3, 24 ) int -> r10 "index expr" ; V17 tmp11 [V17,T04] ( 3, 24 ) ref -> r10 "arr expr" ; V18 tmp12 [V18,T08] ( 3, 24 ) int -> r9 "index expr" ; V19 cse0 [V19,T15] ( 3, 12 ) int -> rdx "CSE - moderate" ; V20 cse1 [V20,T16] ( 3, 12 ) int -> r9 "CSE - moderate" ; V21 cse2 [V21,T20] ( 4, 6.50) int -> rax "CSE - moderate" ; V22 cse3 [V22,T12] ( 3, 12 ) ref -> rcx "CSE - moderate" ; V23 cse4 [V23,T17] ( 3, 12 ) int -> r9 "CSE - moderate" ; V24 rat0 [V24,T09] ( 3, 24 ) int -> rdx "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 40 G_M47867_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 4.75 G_M47867_IG02: mov rbx, qword ptr [rsi+8] mov ecx, dword ptr [rsi+16] shl ecx, 3 movsxd rbp, ecx add rbx, rbp mov rcx, rsi mov edx, 128 call Sha1ForNonSecretPurposes:Append(ubyte):this cmp dword ptr [rsi+16], 56 je SHORT G_M47867_IG06 ;; bbWeight=1 PerfScore 11.00 G_M47867_IG03: mov rcx, gword ptr [rsi] mov rax, rcx mov edx, dword ptr [rsi+16] mov r8d, edx sar r8d, 31 and r8d, 3 add edx, r8d sar edx, 2 mov r8d, edx mov r9d, dword ptr [rcx+8] cmp edx, r9d jae G_M47867_IG12 movsxd rdx, edx mov ecx, dword ptr [rcx+4*rdx+16] shl ecx, 8 cmp r8d, r9d jae G_M47867_IG12 movsxd rdx, r8d mov dword ptr [rax+4*rdx+16], ecx mov ecx, dword ptr [rsi+16] inc ecx mov dword ptr [rsi+16], ecx cmp ecx, 64 jne SHORT G_M47867_IG05 ;; bbWeight=4 PerfScore 95.00 G_M47867_IG04: mov rcx, rsi call Sha1ForNonSecretPurposes:Drain():this ;; bbWeight=1 PerfScore 1.25 G_M47867_IG05: cmp dword ptr [rsi+16], 56 jne SHORT G_M47867_IG03 ;; bbWeight=4 PerfScore 12.00 G_M47867_IG06: mov rdx, rbx sar rdx, 56 movzx rdx, dl mov rcx, rsi call Sha1ForNonSecretPurposes:Append(ubyte):this mov rdx, rbx sar rdx, 48 movzx rdx, dl mov rcx, rsi call Sha1ForNonSecretPurposes:Append(ubyte):this mov rdx, rbx sar rdx, 40 movzx rdx, dl mov rcx, rsi call Sha1ForNonSecretPurposes:Append(ubyte):this mov rdx, rbx sar rdx, 32 movzx rdx, dl mov rcx, rsi call Sha1ForNonSecretPurposes:Append(ubyte):this mov rdx, rbx sar rdx, 24 movzx rdx, dl mov rcx, rsi call Sha1ForNonSecretPurposes:Append(ubyte):this mov rdx, rbx sar rdx, 16 movzx rdx, dl mov rcx, rsi call Sha1ForNonSecretPurposes:Append(ubyte):this mov rdx, rbx sar rdx, 8 movzx rdx, dl mov rcx, rsi call Sha1ForNonSecretPurposes:Append(ubyte):this movzx rdx, bl mov rcx, rsi call Sha1ForNonSecretPurposes:Append(ubyte):this mov eax, dword ptr [rdi+8] cmp eax, 20 jl SHORT G_M47867_IG08 ;; bbWeight=1 PerfScore 31.00 G_M47867_IG07: mov edx, 20 jmp SHORT G_M47867_IG09 ;; bbWeight=0.50 PerfScore 1.13 G_M47867_IG08: mov edx, eax ;; bbWeight=0.50 PerfScore 0.13 G_M47867_IG09: xor ecx, ecx test edx, edx je SHORT G_M47867_IG11 ;; bbWeight=1 PerfScore 1.50 G_M47867_IG10: mov r8, gword ptr [rsi] mov r9d, ecx sar r9d, 31 and r9d, 3 add r9d, ecx sar r9d, 2 add r9d, 80 mov r10d, r9d cmp r10d, dword ptr [r8+8] jae SHORT G_M47867_IG12 movsxd r10, r10d mov r8d, dword ptr [r8+4*r10+16] cmp ecx, eax jae SHORT G_M47867_IG12 movsxd r10, ecx mov r11d, r8d shr r11d, 24 mov byte ptr [rdi+r10+16], r11b mov r10, gword ptr [rsi] cmp r9d, dword ptr [r10+8] jae SHORT G_M47867_IG12 movsxd r9, r9d shl r8d, 8 mov dword ptr [r10+4*r9+16], r8d inc ecx cmp ecx, edx jne SHORT G_M47867_IG10 ;; bbWeight=4 PerfScore 108.00 G_M47867_IG11: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M47867_IG12: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 407, prolog size 14, PerfScore 309.70, (MethodHash=ec804504) for method Sha1ForNonSecretPurposes:Finish(ref):this ; ============================================================ ; Assembly listing for method Sha1ForNonSecretPurposes:Append(ubyte):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 6.50) byref -> rcx this ; V01 arg1 [V01,T04] ( 3, 3 ) ubyte -> rdx ; V02 loc0 [V02,T09] ( 3, 3 ) int -> rax ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T05] ( 2, 4 ) ref -> r8 class-hnd "Strict ordering of exceptions for Array store" ; V05 tmp2 [V05,T06] ( 2, 4 ) int -> r10 "Strict ordering of exceptions for Array store" ; V06 tmp3 [V06,T07] ( 2, 4 ) int -> rax "Strict ordering of exceptions for Array store" ; V07 tmp4 [V07,T01] ( 3, 6 ) ref -> rax "arr expr" ; V08 tmp5 [V08,T02] ( 3, 6 ) int -> r9 "index expr" ; V09 cse0 [V09,T10] ( 3, 3 ) int -> r9 "CSE - aggressive" ; V10 cse1 [V10,T08] ( 3, 3 ) ref -> rax "CSE - aggressive" ; V11 cse2 [V11,T11] ( 3, 3 ) int -> r11 "CSE - aggressive" ; V12 cse3 [V12,T12] ( 3, 3 ) long -> r9 "CSE - aggressive" ; V13 rat0 [V13,T03] ( 3, 6 ) int -> r9 "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 40 G_M30856_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M30856_IG02: mov rax, gword ptr [rcx] mov r8, rax mov r9d, dword ptr [rcx+16] mov r10d, r9d sar r10d, 31 and r10d, 3 add r9d, r10d sar r9d, 2 mov r10d, r9d mov r11d, dword ptr [rax+8] cmp r9d, r11d jae SHORT G_M30856_IG05 movsxd r9, r9d mov eax, dword ptr [rax+4*r9+16] shl eax, 8 movzx rdx, dl or eax, edx cmp r10d, r11d jae SHORT G_M30856_IG05 mov dword ptr [r8+4*r9+16], eax mov eax, dword ptr [rcx+16] inc eax mov dword ptr [rcx+16], eax cmp eax, 64 jne SHORT G_M30856_IG04 ;; bbWeight=1 PerfScore 24.00 G_M30856_IG03: add rsp, 40 jmp Sha1ForNonSecretPurposes:Drain():this ;; bbWeight=0.50 PerfScore 1.13 G_M30856_IG04: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M30856_IG05: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 103, prolog size 4, PerfScore 36.30, (MethodHash=3c618777) for method Sha1ForNonSecretPurposes:Append(ubyte):this ; ============================================================ ; Assembly listing for method Guid:.ctor(ref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rcx this ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03,T08] ( 0, 0 ) byref -> zero-ref ; V04 tmp2 [V04,T03] ( 4, 4 ) ref -> rdx ;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V06 tmp4 [V06,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V07 tmp5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V08 tmp6 [V08,T04] ( 2, 2 ) byref -> rax V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ; V09 tmp7 [V09,T06] ( 2, 2 ) int -> rdx V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ; V10 tmp8 [V10,T05] ( 2, 2 ) byref -> rax V07._value(offs=0x00) P-INDEP "field V07._value (fldOffset=0x0)" ; V11 tmp9 [V11,T10] ( 2, 0 ) ref -> rdx "argument with side effect" ; V12 tmp10 [V12 ] ( 2, 4 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V13 tmp11 [V13,T01] ( 3, 6 ) byref -> r8 stack-byref "BlockOp address local" ;* V14 tmp12 [V14,T07] ( 0, 0 ) byref -> zero-ref "argument with side effect" ; ; Lcl frame size = 48 G_M63415_IG01: push rsi sub rsp, 48 xor rax, rax mov qword ptr [rsp+20H], rax ;; bbWeight=1 PerfScore 2.50 G_M63415_IG02: test rdx, rdx je SHORT G_M63415_IG05 ;; bbWeight=1 PerfScore 1.25 G_M63415_IG03: lea rax, bword ptr [rdx+16] mov edx, dword ptr [rdx+8] lea r8, bword ptr [rsp+20H] mov bword ptr [r8], rax mov dword ptr [r8+8], edx lea rdx, bword ptr [rsp+20H] call Guid:.ctor(ReadOnlySpan`1):this nop ;; bbWeight=1 PerfScore 6.75 G_M63415_IG04: add rsp, 48 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M63415_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x2578 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 111, prolog size 12, PerfScore 23.35, (MethodHash=db040848) for method Guid:.ctor(ref):this ; ============================================================ ; Assembly listing for method Guid:.ctor(ReadOnlySpan`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) byref -> rcx this ; V01 arg1 [V01,T00] ( 4, 8 ) byref -> rdx ld-addr-op ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V07 tmp5 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V08 tmp6 [V08 ] ( 0, 0 ) byref -> zero-ref V14._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref V14._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ; V10 tmp8 [V10,T03] ( 2, 2 ) byref -> rdx V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ; V11 tmp9 [V11,T04] ( 2, 2 ) int -> rax V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ;* V12 tmp10 [V12 ] ( 0, 0 ) byref -> zero-ref V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ;* V13 tmp11 [V13 ] ( 0, 0 ) int -> zero-ref V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ;* V14 tmp12 [V14 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V15 tmp13 [V15,T06] ( 2, 0 ) ref -> rcx "argument with side effect" ; V16 tmp14 [V16,T07] ( 2, 0 ) ref -> rdi "argument with side effect" ; V17 tmp15 [V17,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; V18 tmp16 [V18,T09] ( 2, 0 ) ref -> rdi "argument with side effect" ; V19 tmp17 [V19,T10] ( 2, 0 ) ref -> r8 "argument with side effect" ; V20 cse0 [V20,T02] ( 3, 3 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 40 G_M43933_IG01: push rdi push rsi sub rsp, 40 vzeroupper ;; bbWeight=1 PerfScore 3.25 G_M43933_IG02: mov eax, dword ptr [rdx+8] cmp eax, 16 jne SHORT G_M43933_IG06 ;; bbWeight=1 PerfScore 3.25 G_M43933_IG03: mov rdx, bword ptr [rdx] cmp eax, 16 jl G_M43933_IG07 ;; bbWeight=1 PerfScore 3.25 G_M43933_IG04: vmovdqu xmm0, xmmword ptr [rdx] vmovdqu xmmword ptr [rcx], xmm0 ;; bbWeight=1 PerfScore 3.00 G_M43933_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M43933_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x40AF mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x257C mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rdi call SR:Format(String,Object):String mov rdi, rax mov ecx, 0x2578 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M43933_IG07: mov ecx, 40 call ThrowHelper:ThrowArgumentOutOfRangeException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 182, prolog size 9, PerfScore 33.40, (MethodHash=c10f5462) for method Guid:.ctor(ReadOnlySpan`1):this ; ============================================================ ; Assembly listing for method EventSource:GetName(Type,int):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 5 ) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi ; V02 loc0 [V02,T05] ( 3, 2.50) ref -> rdi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 3, 4.24) ref -> rax "CASTCLASS eval op1" ; V05 tmp2 [V05,T07] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V06 tmp3 [V06,T01] ( 5, 6.74) ref -> rdi class-hnd "spilling QMark2" ; V07 tmp4 [V07,T08] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp5 [V08,T09] ( 2, 0 ) ref -> rdx "argument with side effect" ; V09 tmp6 [V09,T04] ( 2, 4 ) ref -> rdx "argument with side effect" ; V10 cse0 [V10,T06] ( 3, 1.50) ref -> rax "CSE - moderate" ; ; Lcl frame size = 40 G_M58889_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 2.75 G_M58889_IG02: test rsi, rsi je SHORT G_M58889_IG11 ;; bbWeight=1 PerfScore 1.25 G_M58889_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, rsi mov r8d, edi call EventSource:GetCustomAttributeHelper(MemberInfo,Type,int):Attribute mov rdi, rax test rdi, rdi je SHORT G_M58889_IG06 ;; bbWeight=1 PerfScore 4.50 G_M58889_IG04: mov rcx, 0xD1FFAB1E cmp qword ptr [rdi], rcx je SHORT G_M58889_IG06 ;; bbWeight=0.25 PerfScore 0.81 G_M58889_IG05: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdi, rax ;; bbWeight=0.12 PerfScore 0.18 G_M58889_IG06: test rdi, rdi je SHORT G_M58889_IG09 ;; bbWeight=1 PerfScore 1.25 G_M58889_IG07: mov rax, gword ptr [rdi+8] test rax, rax je SHORT G_M58889_IG09 ;; bbWeight=0.50 PerfScore 1.63 G_M58889_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M58889_IG09: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+48] ;; bbWeight=0.50 PerfScore 3.13 G_M58889_IG10: add rsp, 40 pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.63 G_M58889_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1DA02 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 181, prolog size 6, PerfScore 36.34, (MethodHash=b20019f6) for method EventSource:GetName(Type,int):String ; ============================================================ ; Assembly listing for method ActivatorCache:Initialize():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 6 ) ref -> [rbp+0x10] this class-hnd ; V01 loc0 [V01,T13] ( 2, 2 ) long -> rcx ld-addr-op ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T09] ( 2, 2 ) ref -> rbx class-hnd "dup spill" ; V05 tmp2 [V05,T07] ( 5, 2.50) ref -> [rbp-0x40] ; V06 tmp3 [V06,T04] ( 3, 3 ) ref -> [rbp-0x48] class-hnd exact "dup spill" ; V07 tmp4 [V07,T05] ( 3, 3 ) ref -> [rbp-0x50] class-hnd exact "Single-def Box Helper" ; V08 tmp5 [V08,T08] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V09 tmp6 [V09,T14] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V10 tmp7 [V10,T03] ( 5, 3.74) ref -> rdx class-hnd "spilling QMark2" ; V11 tmp8 [V11,T02] ( 4, 4 ) ref -> r14 class-hnd exact "dup spill" ; V12 tmp9 [V12,T10] ( 2, 2 ) ref -> rbx class-hnd "impAppendStmt" ; V13 tmp10 [V13,T06] ( 3, 3 ) ref -> rbx class-hnd "dup spill" ;* V14 tmp11 [V14 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V15 tmp12 [V15 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V16 FramesRoot [V16,T01] ( 6, 4 ) long -> rdi "Pinvoke FrameListRoot" ; V17 PInvokeFrame [V17 ] ( 8, 6 ) blk (72) [rbp-0x98] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V18 tmp15 [V18,T11] ( 2, 2 ) ref -> r8 "argument with side effect" ; V19 tmp16 [V19,T12] ( 2, 2 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 152 G_M23544_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 152 lea rbp, [rsp+D0H] mov rsi, rcx ;; bbWeight=1 PerfScore 9.00 G_M23544_IG02: lea rcx, [rbp-90H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rcx, rsp mov qword ptr [rbp-70H], rcx mov rcx, rbp mov qword ptr [rbp-60H], rcx mov rcx, qword ptr [rsi+24] test rcx, rcx je G_M23544_IG12 ;; bbWeight=1 PerfScore 7.75 G_M23544_IG03: mov rcx, qword ptr [rsi+24] call RuntimeMethodHandle:GetAttributes(long):int mov dword ptr [rsi+16], eax mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] test rbx, rbx mov gword ptr [rbp-40H], rbx jne G_M23544_IG04 mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rbx, rax mov rcx, 0xD1FFAB1E mov edx, 2 call CORINFO_HELP_NEWARR_1_OBJ mov r14, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, r14 xor edx, edx call CORINFO_HELP_ARRADDR_ST mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, r14 mov edx, 1 call CORINFO_HELP_ARRADDR_ST mov gword ptr [rsp+20H], r14 xor rcx, rcx mov gword ptr [rsp+28H], rcx mov rcx, rbx mov edx, 20 xor r8, r8 mov r9d, 3 call Type:GetConstructor(int,Binder,int,ref,ref):ConstructorInfo:this mov rbx, rax mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov gword ptr [rbp-40H], rbx ;; bbWeight=0.50 PerfScore 12.38 G_M23544_IG04: mov rcx, 0xD1FFAB1E mov edx, 2 call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-48H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-50H], rax mov gword ptr [rbp+10H], rsi mov rcx, qword ptr [rsi+24] mov rax, 0xD1FFAB1E mov qword ptr [rbp-80H], rax lea rax, G_M23544_IG07 mov qword ptr [rbp-68H], rax lea rax, bword ptr [rbp-90H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=0.50 PerfScore 6.75 G_M23544_IG05: mov rax, 0xD1FFAB1E ;; bbWeight=0.50 PerfScore 0.13 G_M23544_IG06: call qword ptr [rax]RuntimeMethodHandle:GetFunctionPointer(long):long ;; bbWeight=0.50 PerfScore 1.50 G_M23544_IG07: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M23544_IG08 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=0.50 PerfScore 3.75 G_M23544_IG08: mov rdx, bword ptr [rbp-88H] mov qword ptr [rdi+16], rdx mov r15, gword ptr [rbp-50H] mov qword ptr [r15+8], rax mov r14, gword ptr [rbp-48H] lea rcx, bword ptr [r14+24] mov rdx, r15 call CORINFO_HELP_ASSIGN_REF xor rcx, rcx mov gword ptr [rsp+20H], rcx mov rcx, gword ptr [rbp-40H] mov r9, r14 xor edx, edx xor r8, r8 mov rax, qword ptr [rcx] mov rax, qword ptr [rax+96] call gword ptr [rax+40]ConstructorInfo:Invoke(int,Binder,ref,CultureInfo):Object:this mov rdx, rax test rdx, rdx je SHORT G_M23544_IG11 ;; bbWeight=0.50 PerfScore 9.13 G_M23544_IG09: mov rcx, 0xD1FFAB1E cmp qword ptr [rdx], rcx je SHORT G_M23544_IG11 ;; bbWeight=0.25 PerfScore 0.81 G_M23544_IG10: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdx, rax ;; bbWeight=0.12 PerfScore 0.18 G_M23544_IG11: mov rsi, gword ptr [rbp+10H] lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 1.25 G_M23544_IG12: mov byte ptr [rsi+20], 1 ;; bbWeight=1 PerfScore 1.00 G_M23544_IG13: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 538, prolog size 27, PerfScore 112.92, (MethodHash=586ea407) for method ActivatorCache:Initialize():this ; ============================================================ ; Assembly listing for method Type:GetConstructor(int,Binder,int,ref,ref):ConstructorInfo:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T05] ( 3, 3 ) int -> rdx ; V02 arg2 [V02,T04] ( 3, 3 ) ref -> r8 class-hnd ; V03 arg3 [V03,T06] ( 3, 3 ) int -> r9 ; V04 arg4 [V04,T01] ( 4, 7 ) ref -> rax class-hnd ; V05 arg5 [V05,T07] ( 1, 1 ) ref -> [rsp+0x58] class-hnd ; V06 loc0 [V06,T00] ( 5, 17 ) int -> r10 ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T08] ( 9, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp2 [V09,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp3 [V10,T10] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V11 tmp4 [V11,T11] ( 2, 0 ) ref -> rdx "argument with side effect" ; V12 tmp5 [V12,T12] ( 2, 0 ) ref -> rcx "argument with side effect" ; V13 cse0 [V13,T03] ( 3, 6 ) int -> r11 "CSE - aggressive" ; ; Lcl frame size = 32 G_M1329_IG01: push rsi sub rsp, 32 mov rax, gword ptr [rsp+50H] ;; bbWeight=1 PerfScore 2.25 G_M1329_IG02: test rax, rax je SHORT G_M1329_IG08 ;; bbWeight=1 PerfScore 1.25 G_M1329_IG03: xor r10d, r10d mov r11d, dword ptr [rax+8] test r11d, r11d jle SHORT G_M1329_IG06 ;; bbWeight=1 PerfScore 3.50 G_M1329_IG04: movsxd rsi, r10d cmp gword ptr [rax+8*rsi+16], 0 je SHORT G_M1329_IG09 ;; bbWeight=4 PerfScore 13.00 G_M1329_IG05: inc r10d cmp r11d, r10d jg SHORT G_M1329_IG04 ;; bbWeight=4 PerfScore 6.00 G_M1329_IG06: mov gword ptr [rsp+50H], rax mov rax, gword ptr [rsp+58H] mov gword ptr [rsp+58H], rax mov rax, qword ptr [rcx] mov rax, qword ptr [rax+120] mov rax, qword ptr [rax+32] ;; bbWeight=1 PerfScore 9.00 G_M1329_IG07: add rsp, 32 pop rsi rex.jmp rax ;; bbWeight=1 PerfScore 2.75 G_M1329_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x19DA mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M1329_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x924F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov ecx, 0x19DA mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS lea rcx, bword ptr [rsi+120] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 273, prolog size 10, PerfScore 65.05, (MethodHash=5715face) for method Type:GetConstructor(int,Binder,int,ref,ref):ConstructorInfo:this ; ============================================================ ; Assembly listing for method RuntimeType:GetConstructorImpl(int,Binder,int,ref,ref):ConstructorInfo:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) int -> rdi ; V02 arg2 [V02,T00] ( 6, 4 ) ref -> rsi class-hnd ;* V03 arg3 [V03 ] ( 0, 0 ) int -> zero-ref ; V04 arg4 [V04,T03] ( 4, 2.50) ref -> rbx class-hnd ; V05 arg5 [V05,T10] ( 2, 1 ) ref -> [rsp+0xA8] class-hnd ; V06 loc0 [V06 ] ( 9, 5.50) struct (24) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V07 loc1 [V07,T04] ( 4, 2 ) ref -> rbp class-hnd ; V08 loc2 [V08,T08] ( 3, 1.50) ref -> rax class-hnd ; V09 loc3 [V09,T05] ( 4, 2 ) ref -> [rsp+0x38] class-hnd ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T09] ( 3, 1.50) ref -> rbp class-hnd "Inline return value spill temp" ; V12 tmp2 [V12 ] ( 6, 3.50) ref -> [rsp+0x40] do-not-enreg[X] addr-exposed V06._items(offs=0x00) P-DEP "field V06._items (fldOffset=0x0)" ; V13 tmp3 [V13 ] ( 4, 2.50) ref -> [rsp+0x48] do-not-enreg[X] addr-exposed V06._item(offs=0x08) P-DEP "field V06._item (fldOffset=0x8)" ; V14 tmp4 [V14 ] ( 5, 3.50) int -> [rsp+0x50] do-not-enreg[X] addr-exposed V06._count(offs=0x10) P-DEP "field V06._count (fldOffset=0x10)" ; V15 tmp5 [V15 ] ( 3, 2 ) int -> [rsp+0x54] do-not-enreg[X] addr-exposed V06._capacity(offs=0x14) P-DEP "field V06._capacity (fldOffset=0x14)" ; V16 tmp6 [V16,T06] ( 2, 2 ) ref -> rdx "argument with side effect" ; V17 tmp7 [V17,T07] ( 2, 2 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 88 G_M47189_IG01: push rdi push rsi push rbp push rbx sub rsp, 88 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 xor rax, rax mov qword ptr [rsp+50H], rax mov edi, edx mov rsi, r8 mov rbx, gword ptr [rsp+A0H] ;; bbWeight=1 PerfScore 8.33 G_M47189_IG02: mov dword ptr [rsp+20H], 3 mov gword ptr [rsp+28H], rbx xor edx, edx mov dword ptr [rsp+30H], edx lea rdx, bword ptr [rsp+40H] mov r9d, edi xor r8, r8 call RuntimeType:GetConstructorCandidates(String,int,int,ref,bool):ListBuilder`1:this cmp dword ptr [rsp+50H], 0 jne SHORT G_M47189_IG05 ;; bbWeight=1 PerfScore 7.25 G_M47189_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M47189_IG04: add rsp, 88 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M47189_IG05: cmp dword ptr [rbx+8], 0 jne SHORT G_M47189_IG10 cmp dword ptr [rsp+50H], 1 jne SHORT G_M47189_IG10 cmp gword ptr [rsp+40H], 0 jne SHORT G_M47189_IG06 mov rbp, gword ptr [rsp+48H] jmp SHORT G_M47189_IG07 ;; bbWeight=0.50 PerfScore 5.00 G_M47189_IG06: mov rcx, gword ptr [rsp+40H] cmp dword ptr [rcx+8], 0 jbe G_M47189_IG15 mov rcx, gword ptr [rsp+40H] mov rbp, gword ptr [rcx+16] ;; bbWeight=0.50 PerfScore 3.50 G_M47189_IG07: mov rcx, rbp mov rax, qword ptr [rbp] mov rax, qword ptr [rax+80] call gword ptr [rax+16]MethodBase:GetParametersNoCopy():ref:this test rax, rax je SHORT G_M47189_IG08 cmp dword ptr [rax+8], 0 jne SHORT G_M47189_IG10 ;; bbWeight=0.50 PerfScore 5.75 G_M47189_IG08: mov rax, rbp ;; bbWeight=0.50 PerfScore 0.13 G_M47189_IG09: add rsp, 88 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M47189_IG10: test edi, 0x10000 je SHORT G_M47189_IG12 lea rcx, bword ptr [rsp+40H] mov rdx, 0xD1FFAB1E call ListBuilder`1:ToArray():ref:this mov rcx, rax mov rdx, rbx mov r8, gword ptr [rsp+A8H] call DefaultBinder:ExactBinding(ref,ref,ref):MethodBase mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS nop ;; bbWeight=0.50 PerfScore 3.63 G_M47189_IG11: add rsp, 88 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M47189_IG12: test rsi, rsi jne SHORT G_M47189_IG13 call Type:get_DefaultBinder():Binder mov rsi, rax ;; bbWeight=0.50 PerfScore 1.25 G_M47189_IG13: lea rcx, bword ptr [rsp+40H] mov rdx, 0xD1FFAB1E call ListBuilder`1:ToArray():ref:this mov gword ptr [rsp+38H], rax mov rbp, gword ptr [rsp+A8H] mov gword ptr [rsp+20H], rbp mov rcx, rsi mov edx, edi mov r8, gword ptr [rsp+38H] mov r9, rbx mov rax, qword ptr [rsi] mov rax, qword ptr [rax+72] call gword ptr [rax]Binder:SelectMethod(int,ref,ref,ref):MethodBase:this mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS nop ;; bbWeight=0.50 PerfScore 7.63 G_M47189_IG14: add rsp, 88 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M47189_IG15: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 362, prolog size 25, PerfScore 85.48, (MethodHash=4aba47aa) for method RuntimeType:GetConstructorImpl(int,Binder,int,ref,ref):ConstructorInfo:this ; ============================================================ ; Assembly listing for method RuntimeType:GetConstructorCandidates(String,int,int,ref,bool):ListBuilder`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T06] ( 5, 3.75) ref -> rbx this class-hnd ; V01 RetBuf [V01,T02] ( 7, 7 ) byref -> rsi ; V02 arg1 [V02 ] ( 5, 6 ) ref -> [rsp+0xC0] do-not-enreg[X] addr-exposed ld-addr-op class-hnd ; V03 arg2 [V03,T03] ( 4, 7 ) int -> rdi ; V04 arg3 [V04,T14] ( 1, 4 ) int -> r14 ; V05 arg4 [V05,T13] ( 1, 4 ) ref -> rbp class-hnd ; V06 arg5 [V06,T20] ( 1, 1 ) bool -> [rsp+0xE0] ; V07 loc0 [V07 ] ( 2, 3 ) bool -> [rsp+0x60] do-not-enreg[X] addr-exposed ld-addr-op ; V08 loc1 [V08 ] ( 2, 3 ) bool -> [rsp+0x58] do-not-enreg[X] addr-exposed ld-addr-op ; V09 loc2 [V09 ] ( 2, 2 ) int -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V10 loc3 [V10,T05] ( 3, 6 ) ref -> rbx class-hnd ; V11 loc4 [V11 ] ( 9, 10 ) struct (24) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V12 loc5 [V12,T00] ( 5, 17 ) int -> r12 ; V13 loc6 [V13,T01] ( 5, 16 ) ref -> r13 class-hnd ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15,T07] ( 5, 4 ) ref -> rcx class-hnd "Inline return value spill temp" ; V16 tmp2 [V16,T17] ( 3, 1 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V17 tmp3 [V17,T10] ( 2, 4 ) long -> rcx ld-addr-op "Inlining Arg" ;* V18 tmp4 [V18 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V19 tmp5 [V19,T19] ( 2, 1 ) long -> rcx "Inlining Arg" ;* V20 tmp6 [V20 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V21 tmp7 [V21,T18] ( 2, 1 ) byref -> rcx "Inlining Arg" ; V22 tmp8 [V22,T11] ( 2, 4 ) int -> rbx "Inlining Arg" ; V23 tmp9 [V23,T08] ( 2, 4 ) ref -> r15 class-hnd "Inlining Arg" ; V24 tmp10 [V24,T15] ( 2, 2 ) ref -> rbx class-hnd "Inline return value spill temp" ; V25 tmp11 [V25,T09] ( 2, 4 ) byref -> r8 "Inlining Arg" ; V26 tmp12 [V26,T16] ( 2, 2 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V27 tmp13 [V27,T12] ( 2, 4 ) int -> rdx "Inlining Arg" ; V28 tmp14 [V28 ] ( 3, 4 ) ref -> [rsp+0x38] do-not-enreg[X] addr-exposed V11._items(offs=0x00) P-DEP "field V11._items (fldOffset=0x0)" ; V29 tmp15 [V29 ] ( 3, 4 ) ref -> [rsp+0x40] do-not-enreg[X] addr-exposed V11._item(offs=0x08) P-DEP "field V11._item (fldOffset=0x8)" ; V30 tmp16 [V30 ] ( 3, 4 ) int -> [rsp+0x48] do-not-enreg[X] addr-exposed V11._count(offs=0x10) P-DEP "field V11._count (fldOffset=0x10)" ; V31 tmp17 [V31 ] ( 3, 4 ) int -> [rsp+0x4C] do-not-enreg[X] addr-exposed V11._capacity(offs=0x14) P-DEP "field V11._capacity (fldOffset=0x14)" ; V32 cse0 [V32,T04] ( 4, 7 ) int -> r15 "CSE - aggressive" ; ; Lcl frame size = 104 G_M61251_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 104 vxorps xmm4, xmm4 vmovdqu xmmword ptr [rsp+38H], xmm4 xor rax, rax mov qword ptr [rsp+48H], rax mov gword ptr [rsp+C0H], r8 mov rbx, rcx mov rsi, rdx mov edi, r9d mov r14d, dword ptr [rsp+D0H] mov rbp, gword ptr [rsp+D8H] ;; bbWeight=1 PerfScore 14.58 G_M61251_IG02: lea r8, [rsp+58H] mov qword ptr [rsp+20H], r8 lea r8, [rsp+50H] mov qword ptr [rsp+28H], r8 mov r8d, dword ptr [rsp+E0H] movzx r8, r8b lea rdx, [rsp+C0H] lea r9, [rsp+60H] mov ecx, edi call RuntimeType:FilterHelper(int,byref,bool,byref,byref,byref) mov rcx, qword ptr [rbx+16] test rcx, rcx je SHORT G_M61251_IG05 ;; bbWeight=1 PerfScore 9.75 G_M61251_IG03: mov rcx, qword ptr [rbx+16] mov rcx, gword ptr [rcx] test rcx, rcx je SHORT G_M61251_IG05 ;; bbWeight=0.25 PerfScore 1.31 G_M61251_IG04: jmp SHORT G_M61251_IG06 ;; bbWeight=0.50 PerfScore 1.00 G_M61251_IG05: mov rcx, rbx call RuntimeType:InitializeCache():RuntimeTypeCache:this mov rcx, rax ;; bbWeight=0.50 PerfScore 0.75 G_M61251_IG06: mov ebx, dword ptr [rsp+50H] mov r15, gword ptr [rsp+C0H] cmp dword ptr [rcx], ecx lea r8, bword ptr [rcx+64] mov rdx, 0xD1FFAB1E call RuntimeTypeCache:GetMemberCache(byref):MemberInfoCache`1:this mov rcx, rax mov edx, ebx mov r8, r15 mov r9d, 1 cmp dword ptr [rcx], ecx call MemberInfoCache`1:GetMemberList(int,String,int):ref:this mov rbx, rax mov r15d, dword ptr [rbx+8] mov edx, r15d xor rcx, rcx mov gword ptr [rsp+38H], rcx mov gword ptr [rsp+40H], rcx mov dword ptr [rsp+48H], ecx mov dword ptr [rsp+4CH], edx xor r12d, r12d test r15d, r15d jle SHORT G_M61251_IG11 ;; bbWeight=1 PerfScore 18.00 G_M61251_IG07: movsxd rdx, r12d mov r13, gword ptr [rbx+8*rdx+16] mov gword ptr [rsp+20H], rbp mov edx, dword ptr [r13+84] mov rcx, r13 mov r8d, edi mov r9d, r14d call RuntimeType:FilterApplyMethodBase(MethodBase,int,int,int,ref):bool test eax, eax je SHORT G_M61251_IG10 ;; bbWeight=4 PerfScore 33.00 G_M61251_IG08: cmp byte ptr [rsp+60H], 0 je SHORT G_M61251_IG09 mov r8d, dword ptr [rsp+58H] movzx r8, r8b mov rcx, r13 mov rdx, gword ptr [rsp+C0H] call RuntimeType:FilterApplyPrefixLookup(MemberInfo,String,bool):bool test eax, eax je SHORT G_M61251_IG10 ;; bbWeight=2 PerfScore 13.50 G_M61251_IG09: lea rcx, bword ptr [rsp+38H] mov r8, r13 mov rdx, 0xD1FFAB1E call ListBuilder`1:Add(__Canon):this ;; bbWeight=2 PerfScore 4.00 G_M61251_IG10: inc r12d cmp r15d, r12d jg SHORT G_M61251_IG07 ;; bbWeight=4 PerfScore 6.00 G_M61251_IG11: mov rdx, gword ptr [rsp+38H] mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF lea rcx, bword ptr [rsi+8] mov rdx, gword ptr [rsp+40H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov eax, dword ptr [rsp+48H] mov dword ptr [rsi+16], eax mov eax, dword ptr [rsp+4CH] mov dword ptr [rsi+20], eax mov rax, rsi ;; bbWeight=1 PerfScore 9.00 G_M61251_IG12: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 ; Total bytes of code 407, prolog size 33, PerfScore 157.05, (MethodHash=a00710bc) for method RuntimeType:GetConstructorCandidates(String,int,int,ref,bool):ListBuilder`1:this ; ============================================================ ; Assembly listing for method MemberInfoCache`1:PopulateConstructors(Filter):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T09] ( 5, 5.50) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 10, 30 ) byref -> rsi ld-addr-op ; V02 loc0 [V02 ] ( 3, 3 ) struct (24) [rsp+0x40] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V03 loc1 [V03,T28] ( 3, 3 ) ref -> rbx class-hnd ; V04 loc2 [V04 ] ( 5, 9.50) struct (16) [rsp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V06 loc4 [V06,T02] ( 5, 12 ) long -> rbp ; V07 loc5 [V07,T03] ( 5, 10 ) int -> r14 ; V08 loc6 [V08,T21] ( 2, 4 ) bool -> rcx ; V09 loc7 [V09,T22] ( 2, 4 ) bool -> r8 ; V10 loc8 [V10,T23] ( 2, 4 ) int -> r15 ; V11 loc9 [V11,T24] ( 2, 4 ) long -> rbp ;* V12 loc10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V13 OutArgs [V13 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V14 tmp1 [V14,T01] ( 7, 28 ) ref -> [rsp+0x28] class-hnd exact "NewObj constructor temp" ;* V15 tmp2 [V15 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V16 tmp3 [V16,T20] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V17 tmp4 [V17,T13] ( 3, 6 ) ref -> rcx class-hnd "Inlining Arg" ; V18 tmp5 [V18,T31] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ;* V19 tmp6 [V19 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V20 tmp7 [V20,T15] ( 2, 4 ) bool -> rdx "Inline return value spill temp" ;* V21 tmp8 [V21 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V22 tmp9 [V22,T08] ( 2, 8 ) long -> r14 "Inlining Arg" ; V23 tmp10 [V23,T10] ( 4, 7 ) long -> r14 "Inline stloc first use temp" ; V24 tmp11 [V24,T29] ( 3, 3 ) int -> rax "Inline stloc first use temp" ; V25 tmp12 [V25,T12] ( 4, 6 ) bool -> r14 "Inline stloc first use temp" ;* V26 tmp13 [V26 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V27 tmp14 [V27,T30] ( 3, 3 ) bool -> r14 "Inline return value spill temp" ;* V28 tmp15 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V29 tmp16 [V29,T16] ( 4, 4 ) bool -> r14 "Inline return value spill temp" ;* V30 tmp17 [V30 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V31 tmp18 [V31,T05] ( 2, 8 ) ref -> r13 class-hnd "Inlining Arg" ; V32 tmp19 [V32,T06] ( 2, 8 ) ref -> rdx class-hnd "Inlining Arg" ; V33 tmp20 [V33,T07] ( 2, 8 ) ref -> r13 class-hnd "Inlining Arg" ;* V34 tmp21 [V34 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V35 tmp22 [V35 ] ( 3, 5 ) bool -> [rsp+0x30] do-not-enreg[X] addr-exposed V04._firstCall(offs=0x00) P-DEP "field V04._firstCall (fldOffset=0x0)" ; V36 tmp23 [V36 ] ( 4, 9 ) long -> [rsp+0x38] do-not-enreg[X] addr-exposed V04._handle(offs=0x08) P-DEP "field V04._handle (fldOffset=0x8)" ; V37 tmp24 [V37,T34] ( 2, 1 ) bool -> rcx V05._firstCall(offs=0x00) P-INDEP "field V05._firstCall (fldOffset=0x0)" ; V38 tmp25 [V38,T35] ( 2, 1 ) long -> rax V05._handle(offs=0x08) P-INDEP "field V05._handle (fldOffset=0x8)" ; V39 tmp26 [V39,T25] ( 2, 4 ) long -> r14 V15.m_pStringHeap(offs=0x00) P-INDEP "field V15.m_pStringHeap (fldOffset=0x0)" ; V40 tmp27 [V40,T26] ( 2, 4 ) int -> rax V15.m_StringHeapByteLength(offs=0x08) P-INDEP "field V15.m_StringHeapByteLength (fldOffset=0x8)" ; V41 tmp28 [V41,T36] ( 2, 1 ) bool -> rcx V19._firstCall(offs=0x00) P-INDEP "field V19._firstCall (fldOffset=0x0)" ; V42 tmp29 [V42,T37] ( 2, 1 ) long -> rax V19._handle(offs=0x08) P-INDEP "field V19._handle (fldOffset=0x8)" ; V43 tmp30 [V43,T27] ( 2, 4 ) long -> r14 V21.m_pStringHeap(offs=0x00) P-INDEP "field V21.m_pStringHeap (fldOffset=0x0)" ; V44 tmp31 [V44,T17] ( 3, 4 ) int -> rax V21.m_StringHeapByteLength(offs=0x08) P-INDEP "field V21.m_StringHeapByteLength (fldOffset=0x8)" ; V45 tmp32 [V45,T18] ( 3, 4 ) long -> rcx V26.m_pStringHeap(offs=0x00) P-INDEP "field V26.m_pStringHeap (fldOffset=0x0)" ; V46 tmp33 [V46,T19] ( 3, 4 ) int -> rax V26.m_StringHeapByteLength(offs=0x08) P-INDEP "field V26.m_StringHeapByteLength (fldOffset=0x8)" ; V47 tmp34 [V47,T32] ( 2, 2 ) long -> rcx V28.m_pStringHeap(offs=0x00) P-INDEP "field V28.m_pStringHeap (fldOffset=0x0)" ;* V48 tmp35 [V48 ] ( 0, 0 ) int -> zero-ref V28.m_StringHeapByteLength(offs=0x08) P-INDEP "field V28.m_StringHeapByteLength (fldOffset=0x8)" ; V49 tmp36 [V49,T33] ( 2, 2 ) long -> rcx V30.m_pStringHeap(offs=0x00) P-INDEP "field V30.m_pStringHeap (fldOffset=0x0)" ;* V50 tmp37 [V50 ] ( 0, 0 ) int -> zero-ref V30.m_StringHeapByteLength(offs=0x08) P-INDEP "field V30.m_StringHeapByteLength (fldOffset=0x8)" ; V51 cse0 [V51,T11] ( 7, 6.48) int -> r8 "CSE - moderate" ; V52 cse1 [V52,T14] ( 3, 6 ) ref -> r12 "CSE - moderate" ; V53 cse2 [V53,T04] ( 3, 10 ) int -> rdx "CSE - aggressive" ; ; Lcl frame size = 88 G_M63176_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 88 vzeroupper vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 xor rax, rax mov qword ptr [rsp+50H], rax mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 12.33 G_M63176_IG02: mov rcx, gword ptr [rdi+16] mov rcx, gword ptr [rcx+8] cmp dword ptr [rcx], ecx call RuntimeTypeHandle:IsGenericVariable(RuntimeType):bool test eax, eax je SHORT G_M63176_IG05 ;; bbWeight=1 PerfScore 8.25 G_M63176_IG03: mov rcx, 0xD1FFAB1E mov edx, 38 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=0.50 PerfScore 1.88 G_M63176_IG04: add rsp, 88 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M63176_IG05: xor ecx, ecx vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+40H], xmm0 mov qword ptr [rsp+50H], rcx mov rcx, gword ptr [rdi+16] mov rbx, gword ptr [rcx+8] mov rcx, rbx call RuntimeTypeHandle:GetFirstIntroducedMethod(RuntimeType):long mov ecx, 1 mov byte ptr [rsp+30H], cl mov qword ptr [rsp+38H], rax lea rcx, bword ptr [rsp+30H] call IntroducedMethodEnumerator:MoveNext():bool:this test eax, eax je G_M63176_IG23 ;; bbWeight=0.50 PerfScore 6.42 G_M63176_IG06: mov rbp, qword ptr [rsp+38H] mov edx, dword ptr [rsi+16] cmp edx, 1 je SHORT G_M63176_IG08 ;; bbWeight=4 PerfScore 17.00 G_M63176_IG07: cmp edx, 2 sete dl movzx rdx, dl test edx, edx je G_M63176_IG21 ;; bbWeight=2 PerfScore 5.50 G_M63176_IG08: mov edx, dword ptr [rsi+20] mov rcx, rbp call RuntimeMethodHandle:MatchesNameHash(long,int):bool test eax, eax je G_M63176_IG22 mov rcx, rbp call RuntimeMethodHandle:_GetUtf8Name(long):long mov r14, rax test r14, r14 je SHORT G_M63176_IG11 ;; bbWeight=2 PerfScore 14.50 G_M63176_IG09: mov rcx, r14 xor edx, edx mov r8d, 0xD1FFAB1E call SpanHelpers:IndexOf(byref,ubyte,int):int test eax, eax jl G_M63176_IG25 ;; bbWeight=1 PerfScore 3.00 G_M63176_IG10: jmp SHORT G_M63176_IG12 ;; bbWeight=1 PerfScore 2.00 G_M63176_IG11: xor eax, eax ;; bbWeight=1 PerfScore 0.25 G_M63176_IG12: mov rcx, r14 mov r14d, 1 cmp dword ptr [rsi+16], 1 jne SHORT G_M63176_IG16 ;; bbWeight=2 PerfScore 7.00 G_M63176_IG13: mov r8d, dword ptr [rsi+8] cmp eax, r8d je SHORT G_M63176_IG14 xor r14d, r14d jmp SHORT G_M63176_IG15 ;; bbWeight=1 PerfScore 5.50 G_M63176_IG14: mov r8d, r8d mov rdx, qword ptr [rsi] call SpanHelpers:SequenceEqual(byref,byref,long):bool mov r14d, eax ;; bbWeight=1 PerfScore 3.50 G_M63176_IG15: jmp SHORT G_M63176_IG20 ;; bbWeight=1 PerfScore 2.00 G_M63176_IG16: cmp dword ptr [rsi+16], 2 jne SHORT G_M63176_IG20 mov r8d, dword ptr [rsi+8] cmp eax, r8d je SHORT G_M63176_IG17 xor r14d, r14d jmp SHORT G_M63176_IG20 ;; bbWeight=1 PerfScore 8.50 G_M63176_IG17: test r8d, r8d je SHORT G_M63176_IG19 ;; bbWeight=0.48 PerfScore 0.60 G_M63176_IG18: mov rdx, qword ptr [rsi] call MdUtf8String:EqualsCaseInsensitive(long,long,int):bool mov r14d, eax jmp SHORT G_M63176_IG20 ;; bbWeight=1 PerfScore 5.25 G_M63176_IG19: mov r14d, 1 ;; bbWeight=1 PerfScore 0.25 G_M63176_IG20: test r14d, r14d je G_M63176_IG22 ;; bbWeight=2 PerfScore 2.50 G_M63176_IG21: mov rcx, rbp call RuntimeMethodHandle:GetAttributes(long):int mov r14d, eax test r14d, 0x1000 je G_M63176_IG22 mov ecx, r14d and ecx, 7 cmp ecx, 6 sete cl movzx rcx, cl test r14b, 16 setne r8b movzx r8, r8b xor edx, edx call RuntimeType:FilterPreCalculate(bool,bool,bool):int mov r15d, eax mov rcx, rbp mov rdx, rbx xor r8, r8 call RuntimeMethodHandle:GetStubIfNeeded(long,RuntimeType,ref):long mov rbp, rax mov r12, gword ptr [rdi+16] mov r13, r12 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r13, gword ptr [r13+8] mov rdx, r12 mov dword ptr [rax+84], r15d mov gword ptr [rsp+28H], rax lea rcx, bword ptr [rax+16] call CORINFO_HELP_ASSIGN_REF mov r15, gword ptr [rsp+28H] lea rcx, bword ptr [r15+8] mov rdx, r13 call CORINFO_HELP_ASSIGN_REF mov qword ptr [r15+72], rbp mov dword ptr [r15+80], r14d lea rcx, bword ptr [rsp+40H] mov r8, r15 mov rdx, 0xD1FFAB1E call ListBuilder`1:Add(__Canon):this ;; bbWeight=2 PerfScore 51.50 G_M63176_IG22: lea rcx, bword ptr [rsp+30H] call IntroducedMethodEnumerator:MoveNext():bool:this test eax, eax jne G_M63176_IG06 ;; bbWeight=4 PerfScore 11.00 G_M63176_IG23: lea rcx, bword ptr [rsp+40H] mov rdx, 0xD1FFAB1E call ListBuilder`1:ToArray():ref:this nop ;; bbWeight=0.50 PerfScore 1.00 G_M63176_IG24: add rsp, 88 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M63176_IG25: call String:ThrowMustBeNullTerminatedString() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 602, prolog size 36, PerfScore 235.58, (MethodHash=e3670937) for method MemberInfoCache`1:PopulateConstructors(Filter):ref:this ; ============================================================ ; Assembly listing for method RuntimeConstructorInfo:GetParametersNoCopy():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T02] ( 4, 3.50) ref -> rax ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" ; V06 tmp4 [V06,T04] ( 3, 1.50) ref -> rdi class-hnd "Inline return value spill temp" ; V07 tmp5 [V07,T03] ( 2, 2 ) ref -> r8 class-hnd "Inlining Arg" ; V08 tmp6 [V08 ] ( 2, 1 ) ref -> [rsp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" ; ; Lcl frame size = 56 G_M20484_IG01: push rdi push rsi sub rsp, 56 xor rax, rax mov qword ptr [rsp+30H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 3.75 G_M20484_IG02: mov rax, gword ptr [rsi+32] test rax, rax jne SHORT G_M20484_IG04 ;; bbWeight=1 PerfScore 3.25 G_M20484_IG03: mov rcx, rsi call RuntimeConstructorInfo:get_Signature():Signature:this mov r8, rax xor r9d, r9d mov dword ptr [rsp+20H], r9d lea r9, [rsp+30H] mov rcx, rsi mov rdx, rsi call RuntimeParameterInfo:GetParameters(IRuntimeMethodInfo,MemberInfo,Signature,byref,bool):ref mov rdi, rax xor rdx, rdx mov gword ptr [rsp+30H], rdx lea rcx, bword ptr [rsi+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 4.13 G_M20484_IG04: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 92, prolog size 13, PerfScore 22.58, (MethodHash=82a5affb) for method RuntimeConstructorInfo:GetParametersNoCopy():ref:this ; ============================================================ ; Assembly listing for method RuntimeConstructorInfo:get_Signature():Signature:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4.50) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T03] ( 4, 3.50) ref -> rax ; V05 tmp3 [V05,T01] ( 4, 4 ) ref -> rdi class-hnd exact "NewObj constructor temp" ;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V07 tmp5 [V07,T04] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ;* V08 tmp6 [V08,T05] ( 0, 0 ) long -> zero-ref V06.m_handle(offs=0x00) P-INDEP "field V06.m_handle (fldOffset=0x0)" ; ; Lcl frame size = 56 G_M43444_IG01: push rdi push rsi sub rsp, 56 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M43444_IG02: mov rax, gword ptr [rsi+64] test rax, rax jne SHORT G_M43444_IG04 ;; bbWeight=1 PerfScore 3.25 G_M43444_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, gword ptr [rsi+8] mov gword ptr [rsp+20H], rsi mov gword ptr [rsp+28H], rcx mov rcx, rdi xor r9, r9 xor rdx, rdx xor r8d, r8d call Signature:GetSignature(long,int,RuntimeFieldHandleInternal,IRuntimeMethodInfo,RuntimeType):this lea rcx, bword ptr [rsi+64] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 4.75 G_M43444_IG04: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 88, prolog size 6, PerfScore 21.55, (MethodHash=e8fb564b) for method RuntimeConstructorInfo:get_Signature():Signature:this ; ============================================================ ; Assembly listing for method RuntimeConstructorInfo:System.IRuntimeMethodInfo.get_Value():long:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V03 tmp2 [V03,T01] ( 2, 4 ) long -> rax "Inlining Arg" ; ; Lcl frame size = 0 G_M59508_IG01: ;; bbWeight=1 PerfScore 0.00 G_M59508_IG02: mov rax, qword ptr [rcx+72] ;; bbWeight=1 PerfScore 2.00 G_M59508_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 5, prolog size 0, PerfScore 3.50, (MethodHash=6105178b) for method RuntimeConstructorInfo:System.IRuntimeMethodInfo.get_Value():long:this ; ============================================================ ; Assembly listing for method Type:get_DefaultBinder():Binder ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 2, 2 ) ref -> rdx class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 40 G_M55905_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M55905_IG02: mov rcx, 0xD1FFAB1E cmp gword ptr [rcx], 0 jne SHORT G_M55905_IG04 ;; bbWeight=1 PerfScore 3.25 G_M55905_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdx, rax mov rcx, 0xD1FFAB1E xor r8, r8 call Interlocked:CompareExchange(byref,Object,Object):Object ;; bbWeight=0.50 PerfScore 1.50 G_M55905_IG04: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=1 PerfScore 2.25 G_M55905_IG05: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 74, prolog size 4, PerfScore 15.90, (MethodHash=fc33259e) for method Type:get_DefaultBinder():Binder ; ============================================================ ; Assembly listing for method DefaultBinder:SelectMethod(int,ref,ref,ref):MethodBase:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) int -> zero-ref ; V02 arg2 [V02,T34] ( 5, 5 ) ref -> rdi class-hnd ; V03 arg3 [V03,T07] ( 14, 72.50) ref -> rsi class-hnd ;* V04 arg4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V05 loc0 [V05,T01] ( 46,173 ) int -> [rbp-0x3C] ; V06 loc1 [V06,T02] ( 12,164 ) int -> [rbp-0x40] ; V07 loc2 [V07,T22] ( 8, 23 ) ref -> r14 class-hnd exact ; V08 loc3 [V08,T17] ( 13, 43 ) ref -> r14 class-hnd ; V09 loc4 [V09,T26] ( 10, 16 ) int -> registers ; V10 loc5 [V10,T24] ( 9, 21.50) int -> r12 ; V11 loc6 [V11,T32] ( 6, 9 ) bool -> r13 ; V12 loc7 [V12,T20] ( 9, 29 ) ref -> [rbp-0x58] class-hnd exact ; V13 loc8 [V13,T08] ( 6, 72 ) ref -> r13 class-hnd ; V14 loc9 [V14,T04] ( 16,144 ) ref -> [rbp-0x60] class-hnd ; V15 loc10 [V15,T03] ( 18,144 ) ref -> [rbp-0x68] class-hnd ; V16 loc11 [V16,T15] ( 6, 48 ) ref -> [rbp-0x70] class-hnd ; V17 loc12 [V17,T11] ( 8, 64 ) ref -> rax class-hnd ; V18 loc13 [V18,T25] ( 6, 20 ) int -> rax ; V19 OutArgs [V19 ] ( 1, 1 ) lclBlk (64) [rsp+0x00] "OutgoingArgSpace" ; V20 tmp1 [V20,T36] ( 8, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V21 tmp2 [V21,T37] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V22 tmp3 [V22,T12] ( 4, 64 ) ref -> [rbp-0x78] class-hnd "non-inline candidate call" ; V23 tmp4 [V23,T27] ( 4, 16 ) int -> rbx "impSpillLclRefs" ; V24 tmp5 [V24,T33] ( 2, 8 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" ; V25 tmp6 [V25,T38] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V26 tmp7 [V26,T18] ( 4, 32 ) ref -> rax class-hnd "Inlining Arg" ;* V27 tmp8 [V27,T29] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" ; V28 tmp9 [V28,T39] ( 2, 0 ) ref -> rax class-hnd "Inlining Arg" ; V29 tmp10 [V29,T05] ( 4, 64 ) ref -> rax class-hnd "Inlining Arg" ;* V30 tmp11 [V30,T16] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" ; V31 tmp12 [V31,T19] ( 4, 32 ) ref -> rax "argument with side effect" ; V32 tmp13 [V32,T40] ( 2, 0 ) ref -> rcx "argument with side effect" ; V33 tmp14 [V33,T41] ( 2, 0 ) ref -> rcx "argument with side effect" ; V34 tmp15 [V34,T42] ( 2, 0 ) ref -> rdi "argument with side effect" ; V35 tmp16 [V35,T43] ( 2, 0 ) ref -> r8 "argument with side effect" ; V36 tmp17 [V36,T35] ( 2, 4 ) ref -> rdx "argument with side effect" ; V37 tmp18 [V37,T13] ( 4, 64 ) ref -> rax "argument with side effect" ; V38 tmp19 [V38,T14] ( 4, 64 ) ref -> rax "argument with side effect" ; V39 tmp20 [V39,T44] ( 2, 0 ) ref -> rcx "argument with side effect" ; V40 tmp21 [V40,T45] ( 2, 0 ) ref -> rdx "argument with side effect" ; V41 cse0 [V41,T30] ( 3, 10 ) ref -> rdx "CSE - moderate" ; V42 cse1 [V42,T31] ( 3, 10 ) ref -> rdx "CSE - moderate" ; V43 cse2 [V43,T06] ( 18, 82 ) int -> [rbp-0x44] "CSE - aggressive" ; V44 cse3 [V44,T21] ( 4, 26 ) int -> r12 "CSE - moderate" ; V45 cse4 [V45,T23] ( 10, 21.50) int -> rdi "CSE - moderate" ; V46 cse5 [V46,T28] ( 6, 12 ) int -> rbx "CSE - moderate" ; V47 cse6 [V47,T09] ( 5, 72 ) long -> r12 "CSE - aggressive" ; V48 cse7 [V48,T10] ( 5, 72 ) long -> [rbp-0x50] "CSE - aggressive" ; V49 rat0 [V49,T00] ( 15,264 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 136 G_M40137_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 136 lea rbp, [rsp+C0H] mov rdi, r8 mov rsi, r9 ;; bbWeight=1 PerfScore 9.25 G_M40137_IG02: mov ebx, dword ptr [rsi+8] movsxd rdx, ebx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_OBJ mov r14, rax xor r15d, r15d test ebx, ebx jle G_M40137_IG10 mov r12d, dword ptr [r14+8] cmp ebx, r12d jg SHORT G_M40137_IG07 ;; bbWeight=1 PerfScore 8.50 G_M40137_IG03: movsxd rcx, r15d mov rcx, gword ptr [rsi+8*rcx+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+88] call gword ptr [rax+8]Type:get_UnderlyingSystemType():Type:this mov r8, rax mov edx, r15d mov rcx, r14 call CORINFO_HELP_ARRADDR_ST movsxd rdx, r15d mov rdx, gword ptr [r14+8*rdx+16] mov rax, rdx mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx je SHORT G_M40137_IG05 ;; bbWeight=4 PerfScore 67.00 G_M40137_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax je G_M40137_IG60 ;; bbWeight=2 PerfScore 5.00 G_M40137_IG05: inc r15d cmp ebx, r15d jg SHORT G_M40137_IG03 ;; bbWeight=4 PerfScore 6.00 G_M40137_IG06: jmp SHORT G_M40137_IG10 ;; bbWeight=1 PerfScore 2.00 G_M40137_IG07: movsxd rcx, r15d mov rcx, gword ptr [rsi+8*rcx+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+88] call gword ptr [rax+8]Type:get_UnderlyingSystemType():Type:this mov r8, rax mov edx, r15d mov rcx, r14 call CORINFO_HELP_ARRADDR_ST mov r12d, dword ptr [r14+8] cmp r15d, r12d jae G_M40137_IG63 movsxd rdx, r15d mov rdx, gword ptr [r14+8*rdx+16] mov rax, rdx mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx je SHORT G_M40137_IG09 ;; bbWeight=4 PerfScore 80.00 G_M40137_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax je G_M40137_IG60 ;; bbWeight=2 PerfScore 5.00 G_M40137_IG09: inc r15d cmp ebx, r15d jg SHORT G_M40137_IG07 ;; bbWeight=4 PerfScore 6.00 G_M40137_IG10: mov rsi, r14 test rdi, rdi je G_M40137_IG61 cmp dword ptr [rdi+8], 0 je G_M40137_IG61 ;; bbWeight=1 PerfScore 4.50 G_M40137_IG11: mov rcx, rdi call Object:MemberwiseClone():Object:this mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTARRAY mov r14, rax xor ebx, ebx xor r15d, r15d mov edi, dword ptr [r14+8] test edi, edi jle G_M40137_IG36 ;; bbWeight=1 PerfScore 6.75 G_M40137_IG12: movsxd rcx, r15d mov rcx, gword ptr [r14+8*rcx+16] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+80] call gword ptr [rax+16]MethodBase:GetParametersNoCopy():ref:this mov r13, rax mov r12d, dword ptr [r13+8] mov ecx, dword ptr [rsi+8] mov eax, ecx cmp r12d, eax jne G_M40137_IG35 ;; bbWeight=4 PerfScore 60.00 G_M40137_IG13: xor edx, edx test eax, eax jle G_M40137_IG34 mov dword ptr [rbp-44H], eax cmp r12d, eax jl G_M40137_IG25 ;; bbWeight=2 PerfScore 7.50 G_M40137_IG14: mov dword ptr [rbp-40H], edx movsxd r12, edx mov rcx, gword ptr [r13+8*r12+16] mov r8, qword ptr [rcx] mov r8, qword ptr [r8+64] call gword ptr [r8+56]ParameterInfo:get_ParameterType():Type:this mov gword ptr [rbp-60H], rax mov rcx, gword ptr [rsi+8*r12+16] mov rdx, gword ptr [r13+8*r12+16] call SignatureTypeExtensions:MatchesParameterTypeExactly(Type,ParameterInfo):bool test eax, eax jne G_M40137_IG22 ;; bbWeight=16 PerfScore 280.00 G_M40137_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, gword ptr [rbp-60H] je G_M40137_IG22 mov r12, gword ptr [rsi+8*r12+16] mov rdx, r12 mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS mov gword ptr [rbp-70H], rax test rax, rax je SHORT G_M40137_IG16 movsxd rdx, r15d mov rdx, gword ptr [r14+8*rdx+16] mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax je G_M40137_IG20 mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+88] call gword ptr [rax+40]MethodBase:GetGenericArguments():ref:this mov rdx, rax mov rcx, gword ptr [rbp-70H] call SignatureTypeExtensions:TryResolve(SignatureType,ref):Type mov r12, rax test r12, r12 je SHORT G_M40137_IG19 ;; bbWeight=8 PerfScore 198.00 G_M40137_IG16: mov rcx, gword ptr [rbp-60H] mov gword ptr [rbp-60H], rcx mov rax, qword ptr [rcx] mov rax, qword ptr [rax+112] call qword ptr [rax+40]Type:IsPrimitiveImpl():bool:this test eax, eax je SHORT G_M40137_IG21 mov rcx, r12 mov rax, qword ptr [r12] mov rax, qword ptr [rax+88] call gword ptr [rax+8]Type:get_UnderlyingSystemType():Type:this mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx jne SHORT G_M40137_IG18 ;; bbWeight=8 PerfScore 166.00 G_M40137_IG17: mov rcx, r12 mov rax, qword ptr [r12] mov rax, qword ptr [rax+88] call gword ptr [rax+8]Type:get_UnderlyingSystemType():Type:this mov r12, rax mov rcx, gword ptr [rbp-60H] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+88] call gword ptr [rax+8]Type:get_UnderlyingSystemType():Type:this mov rdx, rax mov rcx, r12 call DefaultBinder:CanChangePrimitive(Type,Type):bool test eax, eax jne SHORT G_M40137_IG22 mov eax, dword ptr [rbp-44H] mov edx, dword ptr [rbp-40H] jmp G_M40137_IG34 ;; bbWeight=8 PerfScore 178.00 G_M40137_IG18: mov eax, dword ptr [rbp-44H] mov edx, dword ptr [rbp-40H] jmp G_M40137_IG34 ;; bbWeight=4 PerfScore 16.00 G_M40137_IG19: mov eax, dword ptr [rbp-44H] mov edx, dword ptr [rbp-40H] jmp G_M40137_IG34 ;; bbWeight=4 PerfScore 16.00 G_M40137_IG20: mov eax, dword ptr [rbp-44H] mov edx, dword ptr [rbp-40H] jmp G_M40137_IG34 ;; bbWeight=4 PerfScore 16.00 G_M40137_IG21: mov rcx, gword ptr [rbp-60H] mov rdx, r12 mov rax, qword ptr [rcx] mov rax, qword ptr [rax+168] call qword ptr [rax+32]Type:IsAssignableFrom(Type):bool:this test eax, eax je SHORT G_M40137_IG24 ;; bbWeight=8 PerfScore 76.00 G_M40137_IG22: mov r12d, dword ptr [rbp-40H] inc r12d cmp dword ptr [rbp-44H], r12d mov edx, r12d jg G_M40137_IG14 ;; bbWeight=16 PerfScore 56.00 G_M40137_IG23: mov eax, dword ptr [rbp-44H] jmp G_M40137_IG34 ;; bbWeight=2 PerfScore 6.00 G_M40137_IG24: mov eax, dword ptr [rbp-44H] mov edx, dword ptr [rbp-40H] jmp G_M40137_IG34 ;; bbWeight=4 PerfScore 16.00 G_M40137_IG25: cmp edx, r12d jae G_M40137_IG63 mov dword ptr [rbp-40H], edx movsxd r8, edx mov qword ptr [rbp-50H], r8 mov rcx, gword ptr [r13+8*r8+16] mov r9, qword ptr [rcx] mov r9, qword ptr [r9+64] call gword ptr [r9+56]ParameterInfo:get_ParameterType():Type:this mov gword ptr [rbp-60H], rax mov r8d, dword ptr [rbp-40H] cmp r8d, dword ptr [rbp-44H] jae G_M40137_IG63 mov r10, qword ptr [rbp-50H] mov rcx, gword ptr [rsi+8*r10+16] mov qword ptr [rbp-50H], r10 mov rdx, gword ptr [r13+8*r10+16] call SignatureTypeExtensions:MatchesParameterTypeExactly(Type,ParameterInfo):bool test eax, eax jne G_M40137_IG33 ;; bbWeight=16 PerfScore 396.00 G_M40137_IG26: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, gword ptr [rbp-60H] je G_M40137_IG33 mov rdx, qword ptr [rbp-50H] mov rdx, gword ptr [rsi+8*rdx+16] mov rax, rdx mov gword ptr [rbp-68H], rax mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS mov gword ptr [rbp-70H], rax test rax, rax je SHORT G_M40137_IG27 movsxd rdx, r15d mov rdx, gword ptr [r14+8*rdx+16] mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax je G_M40137_IG31 mov rcx, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+88] call gword ptr [rax+40]MethodBase:GetGenericArguments():ref:this mov rdx, rax mov rcx, gword ptr [rbp-70H] call SignatureTypeExtensions:TryResolve(SignatureType,ref):Type mov gword ptr [rbp-68H], rax test rax, rax je SHORT G_M40137_IG30 ;; bbWeight=8 PerfScore 222.00 G_M40137_IG27: mov rcx, gword ptr [rbp-60H] mov gword ptr [rbp-60H], rcx mov rdx, qword ptr [rcx] mov rdx, qword ptr [rdx+112] call qword ptr [rdx+40]Type:IsPrimitiveImpl():bool:this test eax, eax je SHORT G_M40137_IG32 mov rcx, gword ptr [rbp-68H] mov gword ptr [rbp-68H], rcx mov rax, qword ptr [rcx] mov rax, qword ptr [rax+88] call gword ptr [rax+8]Type:get_UnderlyingSystemType():Type:this mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx jne SHORT G_M40137_IG29 ;; bbWeight=8 PerfScore 180.00 G_M40137_IG28: mov rcx, gword ptr [rbp-68H] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+88] call gword ptr [rax+8]Type:get_UnderlyingSystemType():Type:this mov gword ptr [rbp-78H], rax mov rcx, gword ptr [rbp-60H] mov rdx, qword ptr [rcx] mov rdx, qword ptr [rdx+88] call gword ptr [rdx+8]Type:get_UnderlyingSystemType():Type:this mov rdx, rax mov rcx, gword ptr [rbp-78H] call DefaultBinder:CanChangePrimitive(Type,Type):bool test eax, eax jne SHORT G_M40137_IG33 mov eax, dword ptr [rbp-44H] mov edx, dword ptr [rbp-40H] jmp SHORT G_M40137_IG34 ;; bbWeight=8 PerfScore 196.00 G_M40137_IG29: mov eax, dword ptr [rbp-44H] mov edx, dword ptr [rbp-40H] jmp SHORT G_M40137_IG34 ;; bbWeight=4 PerfScore 16.00 G_M40137_IG30: mov eax, dword ptr [rbp-44H] mov edx, dword ptr [rbp-40H] jmp SHORT G_M40137_IG34 ;; bbWeight=4 PerfScore 16.00 G_M40137_IG31: mov eax, dword ptr [rbp-44H] mov edx, dword ptr [rbp-40H] jmp SHORT G_M40137_IG34 ;; bbWeight=4 PerfScore 16.00 G_M40137_IG32: mov rcx, gword ptr [rbp-60H] mov rdx, gword ptr [rbp-68H] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+168] call qword ptr [rax+32]Type:IsAssignableFrom(Type):bool:this test eax, eax je SHORT G_M40137_IG40 ;; bbWeight=8 PerfScore 82.00 G_M40137_IG33: mov edx, dword ptr [rbp-40H] inc edx mov eax, dword ptr [rbp-44H] cmp eax, edx jg SHORT G_M40137_IG39 ;; bbWeight=16 PerfScore 56.00 G_M40137_IG34: cmp eax, edx jne SHORT G_M40137_IG35 lea edx, [rbx+1] mov r12d, edx movsxd rdx, r15d mov rdx, gword ptr [r14+8*rdx+16] cmp ebx, edi jae G_M40137_IG63 movsxd rcx, ebx lea rcx, bword ptr [r14+8*rcx+16] call CORINFO_HELP_ASSIGN_REF mov ebx, r12d ;; bbWeight=2 PerfScore 16.00 G_M40137_IG35: inc r15d cmp edi, r15d jg G_M40137_IG12 ;; bbWeight=4 PerfScore 6.00 G_M40137_IG36: test ebx, ebx jne SHORT G_M40137_IG41 ;; bbWeight=1 PerfScore 1.25 G_M40137_IG37: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M40137_IG38: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M40137_IG39: mov dword ptr [rbp-44H], eax jmp G_M40137_IG25 ;; bbWeight=8 PerfScore 24.00 G_M40137_IG40: mov eax, dword ptr [rbp-44H] mov edx, dword ptr [rbp-40H] jmp SHORT G_M40137_IG34 ;; bbWeight=4 PerfScore 16.00 G_M40137_IG41: cmp ebx, 1 jne SHORT G_M40137_IG43 cmp edi, 0 jbe G_M40137_IG63 mov rax, gword ptr [r14+16] ;; bbWeight=0.50 PerfScore 2.25 G_M40137_IG42: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M40137_IG43: xor r12d, r12d xor r13d, r13d mov eax, dword ptr [rsi+8] mov r15d, eax movsxd rdx, r15d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC xor ecx, ecx xor r10d, r10d test r15d, r15d jle SHORT G_M40137_IG47 cmp dword ptr [rax+8], r15d jl SHORT G_M40137_IG46 ;; bbWeight=0.50 PerfScore 4.50 G_M40137_IG44: movsxd rcx, r10d mov dword ptr [rax+4*rcx+16], r10d inc r10d cmp r15d, r10d jg SHORT G_M40137_IG44 ;; bbWeight=4 PerfScore 11.00 G_M40137_IG45: jmp SHORT G_M40137_IG47 ;; bbWeight=0.50 PerfScore 1.00 G_M40137_IG46: cmp r10d, dword ptr [rax+8] jae G_M40137_IG63 movsxd rcx, r10d mov dword ptr [rax+4*rcx+16], r10d inc r10d cmp r15d, r10d jg SHORT G_M40137_IG46 ;; bbWeight=4 PerfScore 23.00 G_M40137_IG47: mov r10d, 1 cmp ebx, 1 jle G_M40137_IG57 cmp edi, ebx setge cl movzx rcx, cl test ebx, ebx setge r9b movzx r9, r9b test ecx, r9d je SHORT G_M40137_IG53 ;; bbWeight=0.50 PerfScore 2.88 G_M40137_IG48: mov gword ptr [rsp+20H], rax xor rcx, rcx mov gword ptr [rsp+28H], rcx mov gword ptr [rsp+30H], rsi mov gword ptr [rsp+38H], rcx cmp r12d, edi jae G_M40137_IG63 movsxd rcx, r12d mov rcx, gword ptr [r14+8*rcx+16] mov dword ptr [rbp-3CH], r10d movsxd r9, r10d mov r9, gword ptr [r14+8*r9+16] mov gword ptr [rbp-58H], rax mov rdx, rax xor r8, r8 call DefaultBinder:FindMostSpecificMethod(MethodBase,ref,Type,MethodBase,ref,Type,ref,ref):int test eax, eax jne SHORT G_M40137_IG50 ;; bbWeight=4 PerfScore 59.00 G_M40137_IG49: mov r13d, 1 jmp SHORT G_M40137_IG51 ;; bbWeight=2 PerfScore 4.50 G_M40137_IG50: cmp eax, 2 jne SHORT G_M40137_IG51 xor r13d, r13d mov r15d, dword ptr [rbp-3CH] mov r12d, r15d mov dword ptr [rbp-3CH], r15d ;; bbWeight=2 PerfScore 7.50 G_M40137_IG51: mov r15d, dword ptr [rbp-3CH] inc r15d cmp r15d, ebx mov r10d, r15d mov rax, gword ptr [rbp-58H] jl SHORT G_M40137_IG48 ;; bbWeight=4 PerfScore 15.00 G_M40137_IG52: jmp G_M40137_IG57 ;; bbWeight=0.50 PerfScore 1.00 G_M40137_IG53: mov gword ptr [rsp+20H], rax xor rcx, rcx mov gword ptr [rsp+28H], rcx mov gword ptr [rsp+30H], rsi mov gword ptr [rsp+38H], rcx cmp r12d, edi jae G_M40137_IG63 movsxd rcx, r12d mov rcx, gword ptr [r14+8*rcx+16] cmp r10d, edi jae G_M40137_IG63 mov dword ptr [rbp-3CH], r10d movsxd r9, r10d mov r9, gword ptr [r14+8*r9+16] mov gword ptr [rbp-58H], rax mov rdx, rax xor r8, r8 call DefaultBinder:FindMostSpecificMethod(MethodBase,ref,Type,MethodBase,ref,Type,ref,ref):int test eax, eax jne SHORT G_M40137_IG55 ;; bbWeight=4 PerfScore 64.00 G_M40137_IG54: mov r13d, 1 jmp SHORT G_M40137_IG56 ;; bbWeight=2 PerfScore 4.50 G_M40137_IG55: cmp eax, 2 jne SHORT G_M40137_IG56 xor r13d, r13d mov r15d, dword ptr [rbp-3CH] mov r12d, r15d mov dword ptr [rbp-3CH], r15d ;; bbWeight=2 PerfScore 7.50 G_M40137_IG56: mov r15d, dword ptr [rbp-3CH] inc r15d cmp r15d, ebx mov r10d, r15d mov rax, gword ptr [rbp-58H] jl SHORT G_M40137_IG53 ;; bbWeight=4 PerfScore 15.00 G_M40137_IG57: test r13d, r13d jne G_M40137_IG62 ;; bbWeight=0.50 PerfScore 0.63 G_M40137_IG58: cmp r12d, edi jae G_M40137_IG63 movsxd rax, r12d mov rax, gword ptr [r14+8*rax+16] ;; bbWeight=0.50 PerfScore 1.75 G_M40137_IG59: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M40137_IG60: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x4B99 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov dword ptr [rsi+112], 0xD1FFAB1E mov dword ptr [rsi+116], 0xD1FFAB1E lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov ecx, 0x19DA mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS lea rcx, bword ptr [rsi+120] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+116], 0xD1FFAB1E mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M40137_IG61: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x3C97 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x2194 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M40137_IG62: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x35D3 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call AmbiguousMatchException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M40137_IG63: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 2005, prolog size 33, PerfScore 2968.63, (MethodHash=660c6336) for method DefaultBinder:SelectMethod(int,ref,ref,ref):MethodBase:this ; ============================================================ ; Assembly listing for method RuntimeParameterInfo:get_ParameterType():Type:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 6 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T05] ( 3, 1.50) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 2, 2 ) ref -> rdx class-hnd "Inlining Arg" ; V04 tmp2 [V04,T04] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V05 tmp3 [V05,T01] ( 3, 3 ) ref -> rcx "arr expr" ; V06 tmp4 [V06,T02] ( 3, 3 ) int -> rdx "index expr" ; V07 cse0 [V07,T06] ( 3, 1.50) int -> rdx "CSE - moderate" ; ; Lcl frame size = 32 G_M62684_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M62684_IG02: cmp gword ptr [rsi+8], 0 jne SHORT G_M62684_IG06 ;; bbWeight=1 PerfScore 3.00 G_M62684_IG03: mov edx, dword ptr [rsi+44] cmp edx, -1 jne SHORT G_M62684_IG04 mov rdx, gword ptr [rsi+48] mov rdx, gword ptr [rdx+24] jmp SHORT G_M62684_IG05 ;; bbWeight=0.50 PerfScore 4.63 G_M62684_IG04: mov rcx, gword ptr [rsi+48] mov rcx, gword ptr [rcx+8] cmp edx, dword ptr [rcx+8] jae SHORT G_M62684_IG08 movsxd rdx, edx mov rdx, gword ptr [rcx+8*rdx+16] ;; bbWeight=0.50 PerfScore 4.63 G_M62684_IG05: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 0.75 G_M62684_IG06: mov rax, gword ptr [rsi+8] ;; bbWeight=1 PerfScore 2.00 G_M62684_IG07: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M62684_IG08: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 79, prolog size 5, PerfScore 26.15, (MethodHash=cdec0b23) for method RuntimeParameterInfo:get_ParameterType():Type:this ; ============================================================ ; Assembly listing for method SignatureTypeExtensions:MatchesParameterTypeExactly(Type,ParameterInfo):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rdi class-hnd ; V01 arg1 [V01,T00] ( 6, 4 ) ref -> rsi class-hnd ; V02 loc0 [V02,T02] ( 3, 2.50) ref -> rbx class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 2 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M53466_IG01: push rdi push rsi push rbx sub rsp, 32 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 3.75 G_M53466_IG02: mov rdx, rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS mov rbx, rax test rbx, rbx je SHORT G_M53466_IG05 ;; bbWeight=1 PerfScore 3.00 G_M53466_IG03: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+56]ParameterInfo:get_ParameterType():Type:this mov rdx, rax mov rcx, rbx ;; bbWeight=0.50 PerfScore 3.88 G_M53466_IG04: add rsp, 32 pop rbx pop rsi pop rdi jmp SignatureTypeExtensions:MatchesExactly(SignatureType,Type):bool ;; bbWeight=0.50 PerfScore 1.88 G_M53466_IG05: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+56]ParameterInfo:get_ParameterType():Type:this cmp rax, rdi sete al movzx rax, al ;; bbWeight=0.50 PerfScore 4.38 G_M53466_IG06: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 100, prolog size 7, PerfScore 28.25, (MethodHash=e7642f25) for method SignatureTypeExtensions:MatchesParameterTypeExactly(Type,ParameterInfo):bool ; ============================================================ ; Assembly listing for method RuntimeConstructorInfo:Invoke(int,Binder,ref,CultureInfo):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 6, 4.50) ref -> rdi this class-hnd ; V01 arg1 [V01,T04] ( 4, 3.50) int -> rbx ; V02 arg2 [V02,T06] ( 3, 2.50) ref -> rbp class-hnd ; V03 arg3 [V03,T01] ( 6, 8 ) ref -> rsi class-hnd ; V04 arg4 [V04,T14] ( 1, 0.50) ref -> [rsp+0x90] class-hnd ; V05 loc0 [V05,T11] ( 2, 2 ) int -> rax ; V06 loc1 [V06,T07] ( 5, 3.50) ref -> r14 class-hnd ; V07 loc2 [V07,T12] ( 2, 2 ) int -> rcx ; V08 loc3 [V08,T08] ( 3, 3 ) int -> rdx ; V09 loc4 [V09,T09] ( 3, 2 ) bool -> r15 ; V10 loc5 [V10,T03] ( 4, 5.50) ref -> rdi class-hnd ; V11 loc6 [V11,T13] ( 2, 1 ) ref -> r15 class-hnd ; V12 loc7 [V12,T00] ( 6, 20.50) int -> r14 ; V13 OutArgs [V13 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V14 tmp1 [V14,T10] ( 3, 2 ) int -> rdx ; V15 tmp2 [V15,T15] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V16 tmp3 [V16,T16] ( 2, 0 ) ref -> rcx "argument with side effect" ; V17 tmp4 [V17,T17] ( 2, 0 ) ref -> rdx "argument with side effect" ; V18 cse0 [V18,T05] ( 3, 5 ) int -> rbx "CSE - aggressive" ; ; Lcl frame size = 48 G_M15138_IG01: push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 48 mov rdi, rcx mov ebx, edx mov rbp, r8 mov rsi, r9 ;; bbWeight=1 PerfScore 8.25 G_M15138_IG02: mov rcx, rdi call RuntimeConstructorInfo:get_InvocationFlags():int:this test eax, 266 jne G_M15138_IG14 ;; bbWeight=1 PerfScore 2.50 G_M15138_IG03: mov rcx, rdi call RuntimeConstructorInfo:get_Signature():Signature:this mov r14, rax mov rcx, gword ptr [r14+8] mov ecx, dword ptr [rcx+8] test rsi, rsi jne SHORT G_M15138_IG05 ;; bbWeight=1 PerfScore 6.75 G_M15138_IG04: xor edx, edx jmp SHORT G_M15138_IG06 ;; bbWeight=0.50 PerfScore 1.13 G_M15138_IG05: mov edx, dword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.00 G_M15138_IG06: cmp ecx, edx jne G_M15138_IG15 ;; bbWeight=1 PerfScore 1.25 G_M15138_IG07: test ebx, 0xD1FFAB1E sete r15b movzx r15, r15b test edx, edx jle SHORT G_M15138_IG12 ;; bbWeight=1 PerfScore 2.75 G_M15138_IG08: mov r12, gword ptr [rsp+90H] mov gword ptr [rsp+20H], r12 mov gword ptr [rsp+28H], r14 mov rcx, rdi mov rdx, rsi mov r8, rbp mov r9d, ebx call MethodBase:CheckArguments(ref,Binder,int,CultureInfo,Signature):ref:this mov rdi, rax mov dword ptr [rsp+20H], r15d mov rdx, rdi mov r8, r14 xor rcx, rcx mov r9d, 1 call RuntimeMethodHandle:InvokeMethod(Object,ref,Signature,bool,bool):Object mov r15, rax xor r14d, r14d mov ebx, dword ptr [rdi+8] test ebx, ebx jle SHORT G_M15138_IG10 ;; bbWeight=0.50 PerfScore 6.00 G_M15138_IG09: movsxd r8, r14d mov r8, gword ptr [rdi+8*r8+16] mov rcx, rsi mov edx, r14d call CORINFO_HELP_ARRADDR_ST inc r14d cmp ebx, r14d jg SHORT G_M15138_IG09 ;; bbWeight=4 PerfScore 21.00 G_M15138_IG10: mov rax, r15 ;; bbWeight=0.50 PerfScore 0.13 G_M15138_IG11: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.38 G_M15138_IG12: mov dword ptr [rsp+90H], r15d mov r8, r14 xor rcx, rcx xor rdx, rdx mov r9d, 1 ;; bbWeight=0.50 PerfScore 1.00 G_M15138_IG13: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 jmp RuntimeMethodHandle:InvokeMethod(Object,ref,Signature,bool,bool):Object ;; bbWeight=0.50 PerfScore 2.88 G_M15138_IG14: mov rcx, rdi call RuntimeConstructorInfo:ThrowNoInvokeException():this int3 ;; bbWeight=0 PerfScore 0.00 G_M15138_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x50DB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call TargetParameterCountException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 337, prolog size 25, PerfScore 90.70, (MethodHash=f7a2c4dd) for method RuntimeConstructorInfo:Invoke(int,Binder,ref,CultureInfo):Object:this ; ============================================================ ; Assembly listing for method RuntimeConstructorInfo:get_InvocationFlags():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 11, 7.50) ref -> rsi this class-hnd ; V01 loc0 [V01,T02] ( 7, 3.50) int -> rdi ; V02 loc1 [V02,T01] ( 11, 5.50) ref -> rbx class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 2 ) ref -> rcx class-hnd "impAppendStmt" ; V05 tmp2 [V05,T07] ( 3, 1.50) ref -> rbx class-hnd "Inline return value spill temp" ; V06 tmp3 [V06,T04] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V07 tmp4 [V07,T05] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ; V08 tmp5 [V08,T08] ( 3, 1.50) ref -> rdx class-hnd "Inline return value spill temp" ; V09 tmp6 [V09,T06] ( 2, 2 ) ref -> rdx class-hnd "Inlining Arg" ; ; Lcl frame size = 32 G_M36024_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M36024_IG02: test byte ptr [rsi+88], 1 jne G_M36024_IG15 ;; bbWeight=1 PerfScore 3.00 G_M36024_IG03: mov edi, 16 mov rcx, gword ptr [rsi+16] cmp byte ptr [rcx+140], 0 jne SHORT G_M36024_IG04 mov rbx, gword ptr [rsi+8] jmp SHORT G_M36024_IG05 ;; bbWeight=0.50 PerfScore 4.63 G_M36024_IG04: xor rbx, rbx ;; bbWeight=0.50 PerfScore 0.13 G_M36024_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE cmp rax, rbx je SHORT G_M36024_IG07 test rbx, rbx je SHORT G_M36024_IG06 mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+168] call qword ptr [rax]Type:get_ContainsGenericParameters():bool:this test eax, eax jne SHORT G_M36024_IG07 ;; bbWeight=0.50 PerfScore 6.13 G_M36024_IG06: mov rcx, rsi call RuntimeConstructorInfo:get_Signature():Signature:this test byte ptr [rax+48], 2 je SHORT G_M36024_IG08 ;; bbWeight=0.50 PerfScore 2.13 G_M36024_IG07: mov edi, 18 jmp SHORT G_M36024_IG14 ;; bbWeight=0.50 PerfScore 1.13 G_M36024_IG08: test byte ptr [rsi+80], 16 jne SHORT G_M36024_IG09 test rbx, rbx je SHORT G_M36024_IG10 mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+112] call qword ptr [rax]Type:GetAttributeFlagsImpl():int:this test al, 128 je SHORT G_M36024_IG10 ;; bbWeight=0.50 PerfScore 6.38 G_M36024_IG09: mov edi, 24 jmp SHORT G_M36024_IG14 ;; bbWeight=0.50 PerfScore 1.13 G_M36024_IG10: test rbx, rbx je SHORT G_M36024_IG11 mov rcx, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+96] call qword ptr [rax+48]Type:get_IsByRefLike():bool:this test eax, eax je SHORT G_M36024_IG11 mov edi, 272 ;; bbWeight=0.50 PerfScore 5.00 G_M36024_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax mov rdx, gword ptr [rsi+16] cmp byte ptr [rdx+140], 0 jne SHORT G_M36024_IG12 mov rdx, gword ptr [rsi+8] jmp SHORT G_M36024_IG13 ;; bbWeight=0.50 PerfScore 5.25 G_M36024_IG12: xor rdx, rdx ;; bbWeight=0.50 PerfScore 0.13 G_M36024_IG13: mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]RuntimeType:IsAssignableFrom(Type):bool:this test eax, eax je SHORT G_M36024_IG14 or edi, 128 ;; bbWeight=0.50 PerfScore 3.38 G_M36024_IG14: mov eax, edi or eax, 1 mov dword ptr [rsi+88], eax ;; bbWeight=0.50 PerfScore 0.75 G_M36024_IG15: mov eax, dword ptr [rsi+88] ;; bbWeight=1 PerfScore 2.00 G_M36024_IG16: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 254, prolog size 7, PerfScore 72.78, (MethodHash=8a7f7347) for method RuntimeConstructorInfo:get_InvocationFlags():int:this ; ============================================================ ; Assembly listing for method WindowsClock:GetTimestamp():long:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 loc0 [V01 ] ( 2, 2 ) long -> [rbp-0x08] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 48 G_M45538_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M45538_IG02: lea rcx, [rbp-08H] call WindowsClock:QueryPerformanceCounter(byref):bool mov rax, qword ptr [rbp-08H] ;; bbWeight=1 PerfScore 2.50 G_M45538_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 35, prolog size 16, PerfScore 11.00, (MethodHash=7eee4e1d) for method WindowsClock:GetTimestamp():long:this ; ============================================================ ; Assembly listing for method Runnable_0:OverheadActionNoUnroll(long):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 4, 10 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T05] ( 4, 7 ) long -> rdi ; V02 loc0 [V02,T03] ( 4, 13 ) long -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 2, 16 ) ref -> rbp class-hnd "non-inline candidate call" ; V05 tmp2 [V05,T02] ( 2, 16 ) int -> rax "Inlining Arg" ; V06 rat0 [V06,T00] ( 3, 24 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 40 G_M12170_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 4.75 G_M12170_IG02: xor rbx, rbx test rdi, rdi jle SHORT G_M12170_IG04 ;; bbWeight=1 PerfScore 1.50 G_M12170_IG03: mov rbp, gword ptr [rsi+96] mov rax, gword ptr [rsi+80] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]OverheadDelegate:Invoke():int:this mov dword ptr [rbp+48], eax inc rbx cmp rbx, rdi jl SHORT G_M12170_IG03 ;; bbWeight=4 PerfScore 46.00 G_M12170_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 56, prolog size 8, PerfScore 61.10, (MethodHash=44ebd075) for method Runnable_0:OverheadActionNoUnroll(long):this ; ============================================================ ; Assembly listing for method Runnable_0:__Overhead():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M39024_IG01: ;; bbWeight=1 PerfScore 0.00 G_M39024_IG02: xor eax, eax ;; bbWeight=1 PerfScore 0.25 G_M39024_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 3, prolog size 0, PerfScore 1.55, (MethodHash=524d678f) for method Runnable_0:__Overhead():int:this ; ============================================================ ; Assembly listing for method StartedClock:GetElapsed():ClockSpan:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 5 ) byref -> rsi this ; V01 RetBuf [V01,T02] ( 4, 4 ) byref -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 2, 4 ) long -> rbx "non-inline candidate call" ; V04 tmp2 [V04,T04] ( 2, 4 ) long -> rbp "non-inline candidate call" ; V05 tmp3 [V05,T00] ( 5, 10 ) struct (24) [rsp+0x30] do-not-enreg[SFB] "NewObj constructor temp" ; V06 tmp4 [V06,T05] ( 2, 4 ) struct ( 8) [rsp+0x28] do-not-enreg[SB] "struct address for call/obj" ;* V07 tmp5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg" ; ; Lcl frame size = 72 G_M65398_IG01: push rdi push rsi push rbp push rbx sub rsp, 72 vzeroupper mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 5.75 G_M65398_IG02: mov rbx, qword ptr [rsi+8] mov rcx, gword ptr [rsi] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IClock:GetTimestamp():long:this mov rbp, rax xor ecx, ecx vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+30H], xmm0 mov qword ptr [rsp+40H], rcx mov rcx, gword ptr [rsi] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IClock:get_Frequency():Frequency:this mov qword ptr [rsp+28H], rax mov qword ptr [rsp+30H], rbx mov qword ptr [rsp+38H], rbp mov rax, qword ptr [rsp+28H] mov qword ptr [rsp+40H], rax vmovdqu xmm0, xmmword ptr [rsp+30H] vmovdqu xmmword ptr [rdi], xmm0 mov rax, qword ptr [rsp+40H] mov qword ptr [rdi+16], rax mov rax, rdi ;; bbWeight=1 PerfScore 25.08 G_M65398_IG03: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 147, prolog size 11, PerfScore 49.18, (MethodHash=ec200089) for method StartedClock:GetElapsed():ClockSpan:this ; ============================================================ ; Assembly listing for method ClockSpan:GetNanoseconds():double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rcx this ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 2, 4 ) double -> mm0 "impAppendStmt" ; V03 tmp2 [V03,T01] ( 2, 4 ) ref -> rax class-hnd exact "Inlining Arg" ; ; Lcl frame size = 40 G_M20813_IG01: sub rsp, 40 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M20813_IG02: call ClockSpan:GetSeconds():double:this mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] vxorps xmm1, xmm1 vcvtsi2sd xmm1, qword ptr [rax+24] vmulsd xmm0, xmm0, xmm1 ;; bbWeight=1 PerfScore 14.58 G_M20813_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 44, prolog size 7, PerfScore 21.68, (MethodHash=777eaeb2) for method ClockSpan:GetNanoseconds():double:this ; ============================================================ ; Assembly listing for method ClockSpan:GetSeconds():double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) byref -> rcx this ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "struct address for call/obj" ; V03 tmp2 [V03,T05] ( 3, 2 ) long -> rax "Inline return value spill temp" ;* V04 tmp3 [V04,T06] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V05 tmp4 [V05,T01] ( 3, 5 ) long -> rax "Inlining Arg" ; V06 tmp5 [V06,T07] ( 2, 4 ) double -> mm0 "Inlining Arg" ; V07 tmp6 [V07,T02] ( 2, 4 ) struct ( 8) [rsp+0x10] do-not-enreg[SFB] "NewObj constructor temp" ; V08 tmp7 [V08,T03] ( 2, 4 ) struct ( 8) [rsp+0x08] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V09 tmp8 [V09,T04] ( 2, 4 ) struct ( 8) [rsp+0x00] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V10 tmp9 [V10,T08] ( 2, 4 ) double -> mm0 "impAppendStmt" ; ; Lcl frame size = 24 G_M55171_IG01: sub rsp, 24 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M55171_IG02: mov rax, qword ptr [rcx+8] sub rax, qword ptr [rcx] test rax, rax jle SHORT G_M55171_IG04 ;; bbWeight=1 PerfScore 5.25 G_M55171_IG03: jmp SHORT G_M55171_IG05 ;; bbWeight=0.50 PerfScore 1.00 G_M55171_IG04: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M55171_IG05: vxorps xmm0, xmm0 vcvtsi2sd xmm0, rax vmovsd qword ptr [rsp+10H], xmm0 mov rax, qword ptr [rsp+10H] mov qword ptr [rsp+08H], rax mov rax, qword ptr [rcx+16] mov qword ptr [rsp], rax vmovsd xmm0, qword ptr [rsp+08H] vdivsd xmm0, xmm0, qword ptr [rsp] ;; bbWeight=1 PerfScore 26.83 G_M55171_IG06: add rsp, 24 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 72, prolog size 7, PerfScore 43.31, (MethodHash=1ef8287c) for method ClockSpan:GetSeconds():double:this ; ============================================================ ; Assembly listing for method Measurement:ToString():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 8, 7.50) byref -> rsi this ; V01 loc0 [V01,T20] ( 2, 2 ) int -> rbx ld-addr-op ; V02 loc1 [V02,T21] ( 2, 2 ) int -> rbp ld-addr-op ; V03 loc2 [V03,T22] ( 2, 2 ) int -> rbx ld-addr-op ; V04 loc3 [V04,T26] ( 2, 1 ) long -> rbx ld-addr-op ; V05 loc4 [V05,T29] ( 2, 2 ) double -> mm6 ld-addr-op ; V06 loc5 [V06 ] ( 2, 2 ) struct ( 8) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T00] ( 18, 34 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V09 tmp2 [V09,T03] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V10 tmp3 [V10,T08] ( 2, 4 ) ref -> rbx class-hnd "impAppendStmt" ; V11 tmp4 [V11,T04] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V12 tmp5 [V12,T07] ( 3, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V13 tmp6 [V13,T23] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ; V14 tmp7 [V14,T02] ( 4, 6 ) int -> rbx "Inlining Arg" ;* V15 tmp8 [V15 ] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V16 tmp9 [V16,T24] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ; V17 tmp10 [V17,T16] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ; V18 tmp11 [V18,T17] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" ; V19 tmp12 [V19,T06] ( 4, 4 ) long -> rbx "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V21 tmp14 [V21,T25] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ; V22 tmp15 [V22,T05] ( 3, 5 ) ref -> rcx class-hnd "Inlining Arg" ; V23 tmp16 [V23,T28] ( 2, 4 ) double -> mm6 "impAppendStmt" ; V24 tmp17 [V24,T18] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" ; V25 tmp18 [V25,T09] ( 2, 4 ) ref -> r8 class-hnd "Inlining Arg" ; V26 tmp19 [V26,T10] ( 2, 4 ) ref -> rdx "argument with side effect" ; V27 tmp20 [V27,T11] ( 2, 4 ) ref -> rbx "argument with side effect" ; V28 tmp21 [V28,T15] ( 2, 4 ) int -> rdx "argument with side effect" ; V29 tmp22 [V29,T12] ( 2, 4 ) ref -> rdx "argument with side effect" ; V30 tmp23 [V30,T19] ( 2, 2 ) ref -> rdx "argument with side effect" ; V31 tmp24 [V31,T13] ( 2, 4 ) ref -> rdx "argument with side effect" ; V32 tmp25 [V32,T14] ( 2, 4 ) ref -> rdx "argument with side effect" ;* V33 cse0 [V33,T27] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 72 G_M29654_IG01: push rdi push rsi push rbp push rbx sub rsp, 72 vzeroupper vmovaps qword ptr [rsp+30H], xmm6 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 9.75 G_M29654_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov dword ptr [rdi+32], 0xD1FFAB1E mov rcx, 0xD1FFAB1E mov edx, 16 call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rdi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov ebx, dword ptr [rsi] mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], ebx mov rcx, rax mov rax, 0xD1FFAB1E call gword ptr [rax]Enum:ToString():String:this mov rbx, rax mov ebp, dword ptr [rsi+4] mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], ebp mov rcx, rax mov rax, 0xD1FFAB1E call gword ptr [rax]Enum:ToString():String:this mov rdx, rax mov rcx, rbx call String:Concat(String,String):String mov rbx, rax mov rcx, 0xD1FFAB1E mov edx, 202 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov edx, dword ptr [rcx] mov rcx, rbx mov r8d, 32 cmp dword ptr [rcx], ecx call String:PadRight(int,ushort):String:this mov rdx, rax mov rcx, rdi call StringBuilder:Append(String):StringBuilder:this mov rcx, rdi mov edx, 32 call StringBuilder:Append(ushort):StringBuilder:this mov ebx, dword ptr [rsi+12] ;; bbWeight=1 PerfScore 35.50 G_M29654_IG03: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] test ebx, ebx jge SHORT G_M29654_IG07 ;; bbWeight=1 PerfScore 3.50 G_M29654_IG04: test rcx, rcx je SHORT G_M29654_IG05 call NumberFormatInfo:g__GetProviderNonNull|42_0(IFormatProvider):NumberFormatInfo jmp SHORT G_M29654_IG06 ;; bbWeight=0.50 PerfScore 2.13 G_M29654_IG05: call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo ;; bbWeight=0.50 PerfScore 0.50 G_M29654_IG06: mov r8, gword ptr [rax+40] mov ecx, ebx mov edx, -1 call Number:NegativeInt32ToDecStr(int,int,String):String jmp SHORT G_M29654_IG08 ;; bbWeight=0.50 PerfScore 2.75 G_M29654_IG07: mov ecx, ebx call Number:UInt32ToDecStr(int):String ;; bbWeight=0.50 PerfScore 0.63 G_M29654_IG08: mov rcx, rax mov edx, 2 mov r8d, 32 cmp dword ptr [rcx], ecx call String:PadLeft(int,ushort):String:this mov rdx, rax mov rcx, rdi call StringBuilder:Append(String):StringBuilder:this mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi call StringBuilder:Append(String):StringBuilder:this mov rbx, qword ptr [rsi+16] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] test rbx, rbx jge SHORT G_M29654_IG11 test rcx, rcx je SHORT G_M29654_IG09 call NumberFormatInfo:g__GetProviderNonNull|42_0(IFormatProvider):NumberFormatInfo jmp SHORT G_M29654_IG10 ;; bbWeight=0.50 PerfScore 9.25 G_M29654_IG09: call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo ;; bbWeight=0.50 PerfScore 0.50 G_M29654_IG10: mov r8, gword ptr [rax+40] mov rcx, rbx mov edx, -1 call Number:NegativeInt64ToDecStr(long,int,String):String jmp SHORT G_M29654_IG12 ;; bbWeight=0.50 PerfScore 2.75 G_M29654_IG11: mov rcx, rbx mov edx, -1 call Number:UInt64ToDecStr(long,int):String ;; bbWeight=0.50 PerfScore 0.75 G_M29654_IG12: mov rcx, rdi mov rdx, rax call StringBuilder:Append(String):StringBuilder:this mov rcx, rdi mov edx, 32 call StringBuilder:Append(ushort):StringBuilder:this mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi call StringBuilder:Append(String):StringBuilder:this mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi call StringBuilder:Append(String):StringBuilder:this vmovsd xmm6, qword ptr [rsi+24] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] test rcx, rcx je SHORT G_M29654_IG14 ;; bbWeight=1 PerfScore 15.50 G_M29654_IG13: call NumberFormatInfo:g__GetProviderNonNull|42_0(IFormatProvider):NumberFormatInfo jmp SHORT G_M29654_IG15 ;; bbWeight=0.50 PerfScore 1.50 G_M29654_IG14: call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo ;; bbWeight=0.50 PerfScore 0.50 G_M29654_IG15: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] vmovaps xmm0, xmm6 mov r8, rax call Number:FormatDouble(double,String,NumberFormatInfo):String mov rdx, rax mov rcx, rdi call StringBuilder:Append(String):StringBuilder:this mov rcx, rdi mov edx, 32 call StringBuilder:Append(ushort):StringBuilder:this mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi call StringBuilder:Append(String):StringBuilder:this mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi call StringBuilder:Append(String):StringBuilder:this mov rcx, rsi call Measurement:GetAverageTime():TimeInterval:this mov qword ptr [rsp+28H], rax mov r9, 0xD1FFAB1E mov r8, gword ptr [r9] xor r9, r9 mov gword ptr [rsp+20H], r9 mov r9, 0xD1FFAB1E mov r9, gword ptr [r9] lea rcx, bword ptr [rsp+28H] xor rdx, rdx call TimeInterval:ToString(TimeUnit,CultureInfo,String,UnitPresentation):String:this mov rcx, rax call AsciiHelper:ToAscii(String):String mov rdx, rax mov rcx, rdi call StringBuilder:Append(String):StringBuilder:this mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rdi call StringBuilder:Append(String):StringBuilder:this mov rcx, rdi mov rax, 0xD1FFAB1E call gword ptr [rax]StringBuilder:ToString():String:this nop ;; bbWeight=1 PerfScore 33.50 G_M29654_IG16: vmovaps xmm6, qword ptr [rsp+30H] add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 7.25 ; Total bytes of code 752, prolog size 24, PerfScore 201.85, (MethodHash=18768c29) for method Measurement:ToString():String:this ; ============================================================ ; Assembly listing for method Measurement:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) struct ( 8) [rbp-0x08] do-not-enreg[SB] must-init "struct address for call/obj" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init class-hnd exact "NewObj constructor temp" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd "impAppendStmt" ; V04 tmp4 [V04 ] ( 1, 1 ) struct ( 8) [rbp-0x20] do-not-enreg[SB] must-init "struct address for call/obj" ; V05 tmp5 [V05 ] ( 1, 1 ) int -> [rbp-0x24] "impAppendStmt" ; V06 tmp6 [V06 ] ( 1, 1 ) ref -> [rbp-0x30] must-init class-hnd exact "NewObj constructor temp" ; V07 tmp7 [V07 ] ( 1, 1 ) ref -> [rbp-0x38] must-init class-hnd "impAppendStmt" ; V08 tmp8 [V08 ] ( 1, 1 ) ref -> [rbp-0x40] must-init "argument with side effect" ; V09 tmp9 [V09 ] ( 1, 1 ) ref -> [rbp-0x48] must-init "argument with side effect" ; ; Lcl frame size = 112 G_M10540_IG01: push rbp sub rsp, 112 lea rbp, [rsp+70H] xor rax, rax mov qword ptr [rbp-48H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-40H], xmm4 vmovdqa xmmword ptr [rbp-30H], xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 7.33 G_M10540_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPEHANDLE mov gword ptr [rbp-08H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-08H] call Type:GetTypeFromHandle(RuntimeTypeHandle):Type mov rcx, rax call Enum:GetNames(Type):ref mov gword ptr [rbp-18H], rax mov rcx, 0xD1FFAB1E mov edx, 779 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-40H], rdx mov rdx, gword ptr [rbp-40H] mov r8, 0xD1FFAB1E mov rcx, gword ptr [rbp-10H] call MulticastDelegate:CtorClosed(Object,long):this mov r8, gword ptr [rbp-10H] mov rdx, gword ptr [rbp-18H] mov rcx, 0xD1FFAB1E call Enumerable:Max(IEnumerable`1,Func`2):int mov dword ptr [rbp-24H], eax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPEHANDLE mov gword ptr [rbp-20H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-30H], rax mov rcx, gword ptr [rbp-20H] call Type:GetTypeFromHandle(RuntimeTypeHandle):Type mov rcx, rax call Enum:GetNames(Type):ref mov gword ptr [rbp-38H], rax mov rcx, 0xD1FFAB1E mov edx, 779 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-48H], rdx mov rdx, gword ptr [rbp-48H] mov r8, 0xD1FFAB1E mov rcx, gword ptr [rbp-30H] call MulticastDelegate:CtorClosed(Object,long):this mov r8, gword ptr [rbp-30H] mov rdx, gword ptr [rbp-38H] mov rcx, 0xD1FFAB1E call Enumerable:Max(IEnumerable`1,Func`2):int ;; bbWeight=1 PerfScore 44.50 G_M10540_IG03: add eax, dword ptr [rbp-24H] mov rdx, 0xD1FFAB1E mov dword ptr [rdx], eax ;; bbWeight=1 PerfScore 2.25 G_M10540_IG04: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 376, prolog size 40, PerfScore 94.18, (MethodHash=704dd6d3) for method Measurement:.cctor() ; ============================================================ ; Assembly listing for method Enum:GetNames(Type):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 5 ) ref -> rcx class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M52675_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M52675_IG02: test rcx, rcx je SHORT G_M52675_IG05 ;; bbWeight=1 PerfScore 1.25 G_M52675_IG03: mov rax, qword ptr [rcx] mov rax, qword ptr [rax+160] mov rax, qword ptr [rax+48] ;; bbWeight=1 PerfScore 6.00 G_M52675_IG04: add rsp, 32 pop rsi rex.jmp rax ;; bbWeight=1 PerfScore 2.75 G_M52675_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 745 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 90, prolog size 5, PerfScore 20.25, (MethodHash=568c323c) for method Enum:GetNames(Type):ref ; ============================================================ ; Assembly listing for method RuntimeType:GetEnumNames():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T01] ( 4, 3 ) ref -> rcx class-hnd ; V02 loc1 [V02 ] ( 3, 3 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V05 tmp2 [V05,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V07 tmp4 [V07 ] ( 2, 2 ) byref -> [rsp+0x28] do-not-enreg[X] addr-exposed V02._pointer(offs=0x00) P-DEP "field V02._pointer (fldOffset=0x0)" ; V08 tmp5 [V08 ] ( 2, 2 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed V02._length(offs=0x08) P-DEP "field V02._length (fldOffset=0x8)" ; V09 tmp6 [V09,T02] ( 3, 2 ) byref -> rdx V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ; V10 tmp7 [V10,T03] ( 3, 2 ) int -> rax V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V11 tmp8 [V11,T04] ( 2, 1 ) byref -> rdx V06._value(offs=0x00) P-INDEP "field V06._value (fldOffset=0x0)" ; V12 tmp9 [V12,T06] ( 2, 0 ) ref -> rcx "argument with side effect" ; V13 tmp10 [V13,T07] ( 2, 0 ) ref -> rdi "argument with side effect" ; V14 tmp11 [V14,T08] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 56 G_M45667_IG01: push rdi push rsi sub rsp, 56 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 3.75 G_M45667_IG02: mov rcx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Type:get_IsEnum():bool:this test eax, eax je SHORT G_M45667_IG08 ;; bbWeight=1 PerfScore 6.75 G_M45667_IG03: mov rcx, rsi mov edx, 1 call Enum:GetEnumInfo(RuntimeType,bool):EnumInfo mov rcx, gword ptr [rax+16] test rcx, rcx jne SHORT G_M45667_IG05 ;; bbWeight=1 PerfScore 4.75 G_M45667_IG04: xor rdx, rdx xor eax, eax jmp SHORT G_M45667_IG06 ;; bbWeight=0.50 PerfScore 1.25 G_M45667_IG05: lea rdx, bword ptr [rcx+16] mov eax, dword ptr [rcx+8] ;; bbWeight=0.50 PerfScore 1.25 G_M45667_IG06: mov bword ptr [rsp+28H], rdx mov dword ptr [rsp+30H], eax lea rcx, bword ptr [rsp+28H] mov rdx, 0xD1FFAB1E call ReadOnlySpan`1:ToArray():ref:this nop ;; bbWeight=1 PerfScore 4.00 G_M45667_IG07: add rsp, 56 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M45667_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x4997 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 745 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 203, prolog size 13, PerfScore 44.30, (MethodHash=32f64d9c) for method RuntimeType:GetEnumNames():ref:this ; ============================================================ ; Assembly listing for method ReadOnlySpan`1:ToArray():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 3.50) byref -> rdi this ; V01 TypeCtx [V01,T00] ( 8, 4.75) long -> rsi ; V02 loc0 [V02,T11] ( 3, 1.50) ref -> r14 class-hnd exact ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T09] ( 2, 2 ) int -> r14 "bubbling QMark1" ; V05 tmp2 [V05,T04] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V07 tmp4 [V07,T07] ( 2, 2 ) byref -> r15 "bubbling QMark1" ; V08 tmp5 [V08,T08] ( 2, 2 ) byref -> rdi "bubbling QMark1" ; V09 tmp6 [V09,T10] ( 2, 2 ) long -> rbx "bubbling QMark1" ; V10 tmp7 [V10,T05] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V11 tmp8 [V11,T06] ( 3, 2 ) long -> rcx "spilling Runtime Lookup tree" ; V12 cse0 [V12,T12] ( 3, 1.25) long -> rcx "CSE - moderate" ; V13 cse1 [V13,T13] ( 3, 1.25) long -> rcx "CSE - moderate" ; V14 cse2 [V14,T14] ( 3, 1.25) long -> rcx "CSE - moderate" ; V15 cse3 [V15,T02] ( 5, 2.50) long -> rbp "CSE - aggressive" ; V16 cse4 [V16,T03] ( 4, 3 ) int -> rbx "CSE - aggressive" ; ; Lcl frame size = 40 G_M23471_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov qword ptr [rsp+20H], rdx mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 7.75 G_M23471_IG02: mov ebx, dword ptr [rdi+8] test ebx, ebx jne SHORT G_M23471_IG07 ;; bbWeight=1 PerfScore 3.25 G_M23471_IG03: mov rcx, qword ptr [rsi+48] mov rbp, qword ptr [rcx] mov rcx, qword ptr [rbp+40] test rcx, rcx je SHORT G_M23471_IG05 ;; bbWeight=0.50 PerfScore 3.63 G_M23471_IG04: jmp SHORT G_M23471_IG06 ;; bbWeight=0.25 PerfScore 0.50 G_M23471_IG05: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M23471_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 jmp Array:Empty():ref ;; bbWeight=0.50 PerfScore 2.63 G_M23471_IG07: mov r14d, ebx mov rcx, qword ptr [rsi+48] mov rbp, qword ptr [rcx] mov rcx, qword ptr [rbp+16] test rcx, rcx je SHORT G_M23471_IG09 ;; bbWeight=0.50 PerfScore 3.75 G_M23471_IG08: jmp SHORT G_M23471_IG10 ;; bbWeight=0.25 PerfScore 0.50 G_M23471_IG09: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M23471_IG10: movsxd rdx, r14d call CORINFO_HELP_NEWARR_1_OBJ mov r14, rax lea r15, bword ptr [r14+16] mov rdi, bword ptr [rdi] movsxd rbx, ebx mov rcx, qword ptr [rbp+32] test rcx, rcx je SHORT G_M23471_IG12 ;; bbWeight=0.50 PerfScore 3.75 G_M23471_IG11: jmp SHORT G_M23471_IG13 ;; bbWeight=0.25 PerfScore 0.50 G_M23471_IG12: mov rcx, rsi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rcx, rax ;; bbWeight=0.25 PerfScore 0.44 G_M23471_IG13: mov rdx, r15 mov r8, rdi mov r9, rbx call Buffer:Memmove(byref,byref,long) mov rax, r14 ;; bbWeight=0.50 PerfScore 1.00 G_M23471_IG14: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 ; Total bytes of code 211, prolog size 23, PerfScore 51.79, (MethodHash=0803a450) for method ReadOnlySpan`1:ToArray():ref:this ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method Enumerable:Max(IEnumerable`1,Func`2):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00,T08] ( 7, 6.50) long -> rdi ; V01 arg0 [V01,T10] ( 4, 4 ) ref -> rbx class-hnd ; V02 arg1 [V02,T06] ( 5, 20 ) ref -> rsi class-hnd ; V03 loc0 [V03,T05] ( 4, 26 ) int -> rbx ; V04 loc1 [V04,T04] ( 9, 37 ) ref -> [rbp-0x30] EH do-not-enreg[] class-hnd EH-live ; V05 loc2 [V05,T03] ( 3, 40 ) int -> rax ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T12] ( 4, 5 ) long -> r11 "spilling Runtime Lookup tree" ;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V09 tmp3 [V09,T13] ( 4, 5 ) long -> r11 "spilling Runtime Lookup tree" ;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V11 tmp5 [V11,T01] ( 4, 70 ) long -> r11 "spilling Runtime Lookup tree" ;* V12 tmp6 [V12 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ; V13 tmp7 [V13,T14] ( 2, 4 ) ref -> rdx "argument with side effect" ; V14 tmp8 [V14,T02] ( 2, 64 ) ref -> rdx "argument with side effect" ; V15 PSPSym [V15 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ; V16 tmp10 [V16,T15] ( 2, 2 ) ref -> rax "optAddCopies" ; V17 cse0 [V17,T07] ( 3, 9 ) long -> r11 "CSE - aggressive" ; V18 cse1 [V18,T09] ( 6, 7.50) long -> r14 "CSE - aggressive" ; V19 rat0 [V19,T11] ( 3, 6 ) ref -> rax "delegate invoke call" ; V20 rat1 [V20,T00] ( 3, 96 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 64 G_M1636_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 lea rbp, [rsp+60H] mov qword ptr [rbp-40H], rsp mov qword ptr [rbp-28H], rcx mov rdi, rcx mov rbx, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 8.50 G_M1636_IG02: test rbx, rbx je G_M1636_IG22 ;; bbWeight=1 PerfScore 1.25 G_M1636_IG03: test rsi, rsi je G_M1636_IG23 ;; bbWeight=1 PerfScore 1.25 G_M1636_IG04: mov r14, qword ptr [rdi+16] cmp qword ptr [r14+16], 0 je SHORT G_M1636_IG06 ;; bbWeight=1 PerfScore 5.00 G_M1636_IG05: mov r11, qword ptr [r14+16] jmp SHORT G_M1636_IG07 ;; bbWeight=0.25 PerfScore 1.00 G_M1636_IG06: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; bbWeight=0.25 PerfScore 0.44 G_M1636_IG07: mov rcx, rbx call gword ptr [r11] mov gword ptr [rbp-30H], rax ;; bbWeight=1 PerfScore 4.25 G_M1636_IG08: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M1636_IG17 ;; bbWeight=1 PerfScore 5.75 G_M1636_IG09: cmp qword ptr [r14+24], 0 je G_M1636_IG18 ;; bbWeight=1 PerfScore 3.00 G_M1636_IG10: mov r11, qword ptr [r14+24] ;; bbWeight=0.25 PerfScore 0.50 G_M1636_IG11: mov rcx, gword ptr [rbp-30H] call gword ptr [r11] mov rdx, rax mov rax, rsi mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`2:Invoke(__Canon):int:this mov ebx, eax mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M1636_IG20 ;; bbWeight=1 PerfScore 15.50 G_M1636_IG12: mov r11, qword ptr [r14+24] test r11, r11 je SHORT G_M1636_IG19 ;; bbWeight=4 PerfScore 13.00 G_M1636_IG13: mov rcx, gword ptr [rbp-30H] call gword ptr [r11] mov rdx, rax mov rax, rsi mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`2:Invoke(__Canon):int:this cmp eax, ebx jle SHORT G_M1636_IG15 ;; bbWeight=16 PerfScore 172.00 G_M1636_IG14: mov ebx, eax ;; bbWeight=8 PerfScore 2.00 G_M1636_IG15: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M1636_IG12 ;; bbWeight=16 PerfScore 92.00 G_M1636_IG16: jmp SHORT G_M1636_IG20 ;; bbWeight=0.50 PerfScore 1.00 G_M1636_IG17: call ThrowHelper:ThrowNoElementsException() int3 ;; bbWeight=0 PerfScore 0.00 G_M1636_IG18: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax jmp G_M1636_IG11 ;; bbWeight=0.25 PerfScore 0.94 G_M1636_IG19: mov rcx, rdi mov rdx, 0xD1FFAB1E call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax jmp SHORT G_M1636_IG13 ;; bbWeight=2 PerfScore 7.50 G_M1636_IG20: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this mov eax, ebx ;; bbWeight=1 PerfScore 4.75 G_M1636_IG21: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M1636_IG22: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M1636_IG23: mov ecx, 15 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M1636_IG24: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=0 PerfScore 0.00 G_M1636_IG25: cmp gword ptr [rbp-30H], 0 je SHORT G_M1636_IG26 mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M1636_IG26: nop ;; bbWeight=0 PerfScore 0.00 G_M1636_IG27: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 450, prolog size 32, PerfScore 388.63, (MethodHash=98c7f99b) for method Enumerable:Max(IEnumerable`1,Func`2):int ; ============================================================ ; Assembly listing for method <>c:<.cctor>b__31_0(String):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M13290_IG01: ;; bbWeight=1 PerfScore 0.00 G_M13290_IG02: mov eax, dword ptr [rdx+8] ;; bbWeight=1 PerfScore 2.00 G_M13290_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 3.40, (MethodHash=c5b4cc15) for method <>c:<.cctor>b__31_0(String):int:this ; ============================================================ ; Assembly listing for method <>c:<.cctor>b__31_1(String):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rdx class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M19467_IG01: ;; bbWeight=1 PerfScore 0.00 G_M19467_IG02: mov eax, dword ptr [rdx+8] ;; bbWeight=1 PerfScore 2.00 G_M19467_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 3.40, (MethodHash=1d10b3f4) for method <>c:<.cctor>b__31_1(String):int:this ; ============================================================ ; Assembly listing for method String:PadRight(int,ushort):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T05] ( 5, 4 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T02] ( 5, 4.50) int -> rdx ; V02 arg2 [V02,T01] ( 3, 6 ) ushort -> rsi ; V03 loc0 [V03,T03] ( 4, 6.50) int -> rbx ; V04 loc1 [V04,T04] ( 4, 6.50) int -> rbp ; V05 loc2 [V05,T07] ( 4, 2 ) ref -> r14 class-hnd ; V06 loc3 [V06,T06] ( 3, 5 ) long -> r15 ; V07 loc4 [V07 ] ( 3, 1.50) byref -> [rsp+0x30] must-init pinned ;* V08 loc5 [V08 ] ( 0, 0 ) long -> zero-ref ; V09 loc6 [V09 ] ( 3, 1.50) byref -> [rsp+0x28] must-init pinned ; V10 loc7 [V10,T00] ( 5, 16.50) int -> rax ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V12 tmp1 [V12,T10] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V13 tmp2 [V13,T11] ( 2, 0 ) ref -> rcx "argument with side effect" ; V14 tmp3 [V14,T12] ( 2, 0 ) ref -> rdi "argument with side effect" ; V15 tmp4 [V15,T13] ( 2, 0 ) ref -> r8 "argument with side effect" ; V16 tmp5 [V16,T08] ( 2, 2 ) long -> r15 "Cast away GC" ; V17 tmp6 [V17,T09] ( 2, 2 ) long -> rdx "Cast away GC" ; ; Lcl frame size = 56 G_M10794_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 xor rax, rax mov qword ptr [rsp+30H], rax mov qword ptr [rsp+28H], rax mov rdi, rcx mov esi, r8d ;; bbWeight=1 PerfScore 9.00 G_M10794_IG02: test edx, edx jl G_M10794_IG10 ;; bbWeight=1 PerfScore 1.25 G_M10794_IG03: mov ebx, dword ptr [rdi+8] mov ebp, edx sub ebp, ebx test ebp, ebp jg SHORT G_M10794_IG06 ;; bbWeight=1 PerfScore 3.75 G_M10794_IG04: mov rax, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M10794_IG05: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M10794_IG06: mov ecx, edx call String:FastAllocateString(int):String mov r14, rax cmp dword ptr [r14], r14d lea r8, bword ptr [r14+12] mov bword ptr [rsp+30H], r8 mov r15, bword ptr [rsp+30H] add rdi, 12 mov bword ptr [rsp+28H], rdi mov rdx, bword ptr [rsp+28H] lea r8d, [rbx+rbx] mov rcx, r15 call Buffer:Memmove(long,long,long) xor rax, rax mov bword ptr [rsp+28H], rax test ebp, ebp jle SHORT G_M10794_IG08 ;; bbWeight=0.50 PerfScore 6.25 G_M10794_IG07: lea ecx, [rbx+rax] movsxd rcx, ecx mov word ptr [r15+2*rcx], si inc eax cmp eax, ebp jl SHORT G_M10794_IG07 ;; bbWeight=4 PerfScore 13.00 G_M10794_IG08: xor rax, rax mov bword ptr [rsp+30H], rax mov rax, r14 ;; bbWeight=0.50 PerfScore 0.75 G_M10794_IG09: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.13 G_M10794_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x19A6 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA085 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 263, prolog size 30, PerfScore 64.68, (MethodHash=6611d5d5) for method String:PadRight(int,ushort):String:this ; ============================================================ ; Assembly listing for method StringBuilder:Append(String):StringBuilder:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 7, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T00] ( 8, 5.50) ref -> rdx class-hnd ; V02 loc0 [V02,T04] ( 5, 2.50) ref -> r8 class-hnd ; V03 loc1 [V03,T02] ( 7, 3.50) int -> rcx ; V04 loc2 [V04,T03] ( 6, 3 ) int -> r9 ; V05 loc3 [V05,T11] ( 3, 1.50) int -> rdi ;* V06 loc4 [V06 ] ( 0, 0 ) long -> zero-ref ; V07 loc5 [V07 ] ( 3, 1.50) byref -> [rsp+0x28] must-init pinned ;* V08 loc6 [V08 ] ( 0, 0 ) long -> zero-ref ; V09 loc7 [V09 ] ( 3, 1.50) byref -> [rsp+0x20] must-init pinned ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T13] ( 2, 1 ) long -> rdx ; V12 tmp2 [V12,T07] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store" ; V13 tmp3 [V13,T08] ( 2, 2 ) int -> r11 "Strict ordering of exceptions for Array store" ; V14 tmp4 [V14,T09] ( 2, 2 ) long -> rdx "Cast away GC" ; V15 tmp5 [V15,T10] ( 2, 2 ) long -> rcx "Cast away GC" ; V16 cse0 [V16,T05] ( 5, 2.50) int -> r10 "CSE - aggressive" ; V17 cse1 [V17,T06] ( 4, 2 ) int -> rax "CSE - aggressive" ; V18 cse2 [V18,T12] ( 3, 1.50) int -> rcx "CSE - moderate" ; ; Lcl frame size = 48 G_M63100_IG01: push rdi push rsi push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov qword ptr [rsp+20H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 5.75 G_M63100_IG02: test rdx, rdx je G_M63100_IG08 ;; bbWeight=1 PerfScore 1.25 G_M63100_IG03: mov r8, gword ptr [rsi+8] mov ecx, dword ptr [rsi+24] mov eax, dword ptr [rdx+8] mov r9d, eax lea edi, [rcx+r9] mov r10d, dword ptr [r8+8] cmp r10d, edi jle G_M63100_IG07 cmp r9d, 2 jg SHORT G_M63100_IG05 test r9d, r9d jle SHORT G_M63100_IG04 cmp eax, 0 jbe G_M63100_IG10 movzx r11, word ptr [rdx+12] cmp ecx, r10d jae G_M63100_IG10 movsxd rbx, ecx mov word ptr [r8+2*rbx+16], r11w ;; bbWeight=0.50 PerfScore 9.13 G_M63100_IG04: cmp r9d, 1 jle SHORT G_M63100_IG06 cmp eax, 1 jbe SHORT G_M63100_IG10 movzx rdx, word ptr [rdx+14] inc ecx cmp ecx, r10d jae SHORT G_M63100_IG10 movsxd r10, ecx mov word ptr [r8+2*r10+16], dx jmp SHORT G_M63100_IG06 ;; bbWeight=0.50 PerfScore 4.63 G_M63100_IG05: add rdx, 12 mov bword ptr [rsp+28H], rdx mov rdx, bword ptr [rsp+28H] cmp ecx, r10d jae SHORT G_M63100_IG10 movsxd rcx, ecx lea r8, bword ptr [r8+2*rcx+16] mov bword ptr [rsp+20H], r8 mov rcx, bword ptr [rsp+20H] add r9d, r9d mov r8d, r9d call Buffer:Memmove(long,long,long) xor rcx, rcx mov bword ptr [rsp+20H], rcx mov bword ptr [rsp+28H], rcx ;; bbWeight=0.50 PerfScore 5.25 G_M63100_IG06: mov dword ptr [rsi+24], edi jmp SHORT G_M63100_IG08 ;; bbWeight=0.50 PerfScore 1.50 G_M63100_IG07: mov rcx, rsi call StringBuilder:AppendHelper(String):this ;; bbWeight=0.50 PerfScore 0.63 G_M63100_IG08: mov rax, rsi ;; bbWeight=1 PerfScore 0.25 G_M63100_IG09: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M63100_IG10: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 227, prolog size 19, PerfScore 53.83, (MethodHash=edda0983) for method StringBuilder:Append(String):StringBuilder:this ; ============================================================ ; Assembly listing for method StringBuilder:AppendHelper(String):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rdx class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) long -> zero-ref ; V03 loc1 [V03 ] ( 3, 2 ) byref -> [rsp+0x20] must-init pinned ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 3, 2 ) long -> rax ; V06 tmp2 [V06,T03] ( 2, 2 ) long -> rax "Cast away GC" ; ; Lcl frame size = 40 G_M19892_IG01: sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax ;; bbWeight=1 PerfScore 1.50 G_M19892_IG02: test rdx, rdx jne SHORT G_M19892_IG04 ;; bbWeight=1 PerfScore 1.25 G_M19892_IG03: xor rax, rax jmp SHORT G_M19892_IG05 ;; bbWeight=0.50 PerfScore 1.13 G_M19892_IG04: lea rax, bword ptr [rdx+12] mov bword ptr [rsp+20H], rax mov rax, bword ptr [rsp+20H] ;; bbWeight=0.50 PerfScore 1.25 G_M19892_IG05: mov r8d, dword ptr [rdx+8] mov rdx, rax call StringBuilder:Append(long,int):StringBuilder:this xor rax, rax mov bword ptr [rsp+20H], rax ;; bbWeight=1 PerfScore 4.50 G_M19892_IG06: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 58, prolog size 11, PerfScore 16.68, (MethodHash=6c02b24b) for method StringBuilder:AppendHelper(String):this ; ============================================================ ; Assembly listing for method StringBuilder:Append(long,int):StringBuilder:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 13, 10 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 5, 3.50) long -> rbx ; V02 arg2 [V02,T01] ( 8, 7 ) int -> rdi ; V03 loc0 [V03,T05] ( 3, 3 ) int -> r8 ; V04 loc1 [V04,T07] ( 3, 2.50) int -> rbp ; V05 loc2 [V05,T06] ( 5, 2.50) int -> rbp ; V06 loc3 [V06,T08] ( 4, 2 ) int -> rdi ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp2 [V09,T10] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp3 [V10,T11] ( 2, 0 ) ref -> rcx "argument with side effect" ; V11 tmp4 [V11,T12] ( 2, 0 ) ref -> rdi "argument with side effect" ; V12 tmp5 [V12,T13] ( 2, 0 ) ref -> r8 "argument with side effect" ; V13 tmp6 [V13,T14] ( 2, 0 ) ref -> rcx "argument with side effect" ; V14 tmp7 [V14,T15] ( 2, 0 ) ref -> rdi "argument with side effect" ; V15 tmp8 [V15,T16] ( 2, 0 ) ref -> r8 "argument with side effect" ; V16 cse0 [V16,T03] ( 6, 4.50) int -> rax "CSE - aggressive" ; V17 cse1 [V17,T04] ( 5, 3.50) ref -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M53244_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rbx, rdx mov edi, r8d ;; bbWeight=1 PerfScore 5.00 G_M53244_IG02: test edi, edi jl G_M53244_IG10 ;; bbWeight=1 PerfScore 1.25 G_M53244_IG03: mov r8d, dword ptr [rsi+28] mov eax, dword ptr [rsi+24] add r8d, eax add r8d, edi cmp r8d, dword ptr [rsi+32] jg G_M53244_IG11 cmp r8d, edi jl G_M53244_IG11 ;; bbWeight=1 PerfScore 8.75 G_M53244_IG04: lea ebp, [rdi+rax] mov rdx, gword ptr [rsi+8] cmp dword ptr [rdx+8], ebp jl SHORT G_M53244_IG06 ;; bbWeight=1 PerfScore 5.50 G_M53244_IG05: mov r8d, eax mov rcx, rbx mov r9d, edi call StringBuilder:ThreadSafeCopy(long,ref,int,int) mov dword ptr [rsi+24], ebp jmp SHORT G_M53244_IG08 ;; bbWeight=0.50 PerfScore 2.38 G_M53244_IG06: mov ebp, dword ptr [rdx+8] sub ebp, eax test ebp, ebp jle SHORT G_M53244_IG07 mov r8d, eax mov rcx, rbx mov r9d, ebp call StringBuilder:ThreadSafeCopy(long,ref,int,int) mov rcx, gword ptr [rsi+8] mov ecx, dword ptr [rcx+8] mov dword ptr [rsi+24], ecx ;; bbWeight=0.50 PerfScore 5.13 G_M53244_IG07: sub edi, ebp mov rcx, rsi mov edx, edi call StringBuilder:ExpandByABlock(int):this movsxd rcx, ebp lea rcx, [rbx+2*rcx] mov rdx, gword ptr [rsi+8] mov r9d, edi xor r8d, r8d call StringBuilder:ThreadSafeCopy(long,ref,int,int) mov dword ptr [rsi+24], edi ;; bbWeight=0.50 PerfScore 3.50 G_M53244_IG08: mov rax, rsi ;; bbWeight=1 PerfScore 0.25 G_M53244_IG09: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M53244_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1A4FB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA1DB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M53244_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1A4FB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x9E11 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 357, prolog size 8, PerfScore 70.70, (MethodHash=f6323003) for method StringBuilder:Append(long,int):StringBuilder:this ; ============================================================ ; Assembly listing for method StringBuilder:ExpandByABlock(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 16, 16 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 6, 5.50) int -> rdx ; V02 loc0 [V02,T03] ( 6, 5 ) int -> rbx ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T16] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T01] ( 7, 14 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T17] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp4 [V08,T09] ( 4, 2.50) int -> rbx "Inline return value spill temp" ; V09 tmp5 [V09,T04] ( 3, 5 ) int -> rdi "Inlining Arg" ; V10 tmp6 [V10,T11] ( 3, 2 ) int -> rbx "Inline return value spill temp" ; V11 tmp7 [V11,T10] ( 3, 2 ) ref -> rdi class-hnd "Inline return value spill temp" ;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V13 tmp9 [V13 ] ( 2, 1 ) struct ( 8) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" ; V14 tmp10 [V14,T12] ( 2, 2 ) ref -> rax class-hnd "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V16 tmp12 [V16,T13] ( 2, 2 ) ref -> rdi class-hnd "Inlining Arg" ; V17 tmp13 [V17 ] ( 2, 1 ) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed V13.m_type(offs=0x00) P-DEP "field V13.m_type (fldOffset=0x0)" ; V18 tmp14 [V18,T15] ( 2, 1 ) ref -> rax V15.m_type(offs=0x00) P-INDEP "field V15.m_type (fldOffset=0x0)" ; V19 tmp15 [V19,T18] ( 2, 0 ) ref -> rcx "argument with side effect" ; V20 tmp16 [V20,T19] ( 2, 0 ) ref -> rdi "argument with side effect" ; V21 tmp17 [V21,T20] ( 2, 0 ) ref -> r8 "argument with side effect" ; V22 tmp18 [V22,T14] ( 2, 2 ) long -> rcx "argument with side effect" ; V23 cse0 [V23,T05] ( 3, 3 ) int -> rax "CSE - aggressive" ; V24 cse1 [V24,T06] ( 3, 3 ) int -> rcx "CSE - aggressive" ; V25 cse2 [V25,T07] ( 3, 3 ) int -> rcx "CSE - aggressive" ; V26 cse3 [V26,T08] ( 3, 3 ) int -> r8 "CSE - aggressive" ; ; Lcl frame size = 48 G_M61967_IG01: push rdi push rsi push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 4.75 G_M61967_IG02: mov ecx, dword ptr [rsi+28] lea eax, [rdx+rcx] mov r8d, dword ptr [rsi+24] add eax, r8d cmp eax, dword ptr [rsi+32] jg G_M61967_IG15 cmp eax, edx jl G_M61967_IG15 ;; bbWeight=1 PerfScore 9.00 G_M61967_IG03: add ecx, r8d mov edi, ecx cmp edi, 0x1F40 jle SHORT G_M61967_IG05 ;; bbWeight=1 PerfScore 1.75 G_M61967_IG04: mov ebx, 0x1F40 jmp SHORT G_M61967_IG06 ;; bbWeight=0.50 PerfScore 1.13 G_M61967_IG05: mov ebx, edi ;; bbWeight=0.50 PerfScore 0.13 G_M61967_IG06: cmp edx, ebx jge SHORT G_M61967_IG08 ;; bbWeight=1 PerfScore 1.25 G_M61967_IG07: jmp SHORT G_M61967_IG09 ;; bbWeight=0.50 PerfScore 1.00 G_M61967_IG08: mov ebx, edx ;; bbWeight=0.50 PerfScore 0.13 G_M61967_IG09: add ecx, ebx cmp ecx, ebx jl G_M61967_IG16 ;; bbWeight=1 PerfScore 1.50 G_M61967_IG10: cmp ebx, 0x400 jge SHORT G_M61967_IG12 ;; bbWeight=1 PerfScore 1.25 G_M61967_IG11: movsxd rdx, ebx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rdi, rax jmp SHORT G_M61967_IG13 ;; bbWeight=0.50 PerfScore 1.88 G_M61967_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov gword ptr [rsp+28H], rax lea rcx, bword ptr [rsp+28H] call RuntimeTypeHandle:get_Value():long:this mov rcx, rax mov edx, ebx mov r8d, 16 call GC:AllocateNewArray(long,int,int):Array mov rdi, rax ;; bbWeight=0.50 PerfScore 2.88 G_M61967_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov edx, dword ptr [rsi+24] mov dword ptr [rbx+24], edx mov edx, dword ptr [rsi+28] mov dword ptr [rbx+28], edx mov rdx, gword ptr [rsi+8] lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, gword ptr [rsi+16] lea rcx, bword ptr [rbx+16] call CORINFO_HELP_ASSIGN_REF mov edx, dword ptr [rsi+32] mov dword ptr [rbx+32], edx lea rcx, bword ptr [rsi+16] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov edx, dword ptr [rsi+24] add dword ptr [rsi+28], edx xor edx, edx mov dword ptr [rsi+24], edx lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 29.50 G_M61967_IG14: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M61967_IG15: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1A511 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA47F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M61967_IG16: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi call OutOfMemoryException:.ctor():this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 401, prolog size 14, PerfScore 98.98, (MethodHash=cee80df0) for method StringBuilder:ExpandByABlock(int):this ; ============================================================ ; Assembly listing for method StringBuilder:ThreadSafeCopy(long,ref,int,int) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 2.50) long -> rax ; V01 arg1 [V01,T02] ( 4, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T00] ( 6, 4 ) int -> r8 ; V03 arg3 [V03,T01] ( 5, 4 ) int -> r9 ;* V04 loc0 [V04 ] ( 0, 0 ) long -> zero-ref ; V05 loc1 [V05 ] ( 3, 1.50) byref -> [rsp+0x20] must-init pinned ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp2 [V08,T05] ( 2, 2 ) long -> rcx "Cast away GC" ; V09 tmp3 [V09,T07] ( 2, 0 ) ref -> rcx "argument with side effect" ; V10 tmp4 [V10,T08] ( 2, 0 ) ref -> rdi "argument with side effect" ; V11 tmp5 [V11,T09] ( 2, 0 ) ref -> r8 "argument with side effect" ; V12 cse0 [V12,T04] ( 4, 2 ) int -> rcx "CSE - aggressive" ; ; Lcl frame size = 40 G_M46904_IG01: push rdi push rsi sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov rax, rcx ;; bbWeight=1 PerfScore 3.75 G_M46904_IG02: test r9d, r9d jle SHORT G_M46904_IG05 ;; bbWeight=1 PerfScore 1.25 G_M46904_IG03: mov ecx, dword ptr [rdx+8] cmp ecx, r8d jb SHORT G_M46904_IG06 lea r10d, [r8+r9] cmp r10d, ecx jg SHORT G_M46904_IG06 cmp r8d, ecx jae G_M46904_IG07 movsxd r8, r8d lea r8, bword ptr [rdx+2*r8+16] mov bword ptr [rsp+20H], r8 mov rcx, bword ptr [rsp+20H] add r9d, r9d mov r8d, r9d mov rdx, rax call Buffer:Memmove(long,long,long) xor rcx, rcx mov bword ptr [rsp+20H], rcx ;; bbWeight=0.50 PerfScore 6.25 G_M46904_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M46904_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M46904_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 127 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x9B45 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M46904_IG07: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 200, prolog size 13, PerfScore 33.50, (MethodHash=066348c7) for method StringBuilder:ThreadSafeCopy(long,ref,int,int) ; ============================================================ ; Assembly listing for method Number:UInt64ToDecStr(long,int):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00 ] ( 7, 10 ) long -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V01 arg1 [V01,T01] ( 9, 9.50) int -> rsi ; V02 loc0 [V02,T06] ( 4, 3 ) int -> rdi ; V03 loc1 [V03,T09] ( 4, 2 ) ref -> rbx class-hnd ;* V04 loc2 [V04 ] ( 0, 0 ) long -> zero-ref ; V05 loc3 [V05 ] ( 3, 1.50) byref -> [rsp+0x28] must-init pinned ; V06 loc4 [V06,T05] ( 4, 5 ) long -> rdi ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T13] ( 3, 1.50) long -> rcx ; V09 tmp2 [V09,T03] ( 17, 6 ) int -> registers "Inline stloc first use temp" ; V10 tmp3 [V10,T04] ( 6, 6 ) long -> rdx "Inlining Arg" ; V11 tmp4 [V11,T08] ( 9, 2.50) int -> registers "Inline stloc first use temp" ; V12 tmp5 [V12,T10] ( 3, 2 ) int -> rdi "Inline return value spill temp" ; V13 tmp6 [V13,T00] ( 2, 16 ) long -> rcx "Inlining Arg" ; V14 tmp7 [V14,T11] ( 2, 2 ) long -> rdx "Inlining Arg" ; V15 tmp8 [V15,T07] ( 3, 3 ) ref -> rax "arr expr" ; V16 tmp9 [V16,T12] ( 2, 2 ) long -> rcx "Cast away GC" ; V17 tmp10 [V17,T02] ( 2, 8 ) int -> rdx "argument with side effect" ; V18 cse0 [V18,T14] ( 3, 1.50) long -> rcx "CSE - moderate" ; ; Lcl frame size = 48 G_M17360_IG01: push rdi push rsi push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov qword ptr [rsp+50H], rcx mov esi, edx ;; bbWeight=1 PerfScore 5.75 G_M17360_IG02: test esi, esi jg SHORT G_M17360_IG04 ;; bbWeight=1 PerfScore 1.25 G_M17360_IG03: mov esi, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M17360_IG04: mov rcx, qword ptr [rsp+50H] mov rdx, rcx mov ecx, 1 cmp rdx, 0xD1FFAB1E jb SHORT G_M17360_IG07 ;; bbWeight=1 PerfScore 2.75 G_M17360_IG05: mov rax, 0xD1FFAB1E cmp rdx, rax jb SHORT G_M17360_IG06 mov rcx, 0xD1FFAB1E mov rax, rdx mul rdx:rax, rcx shr rdx, 42 mov ecx, edx mov r8d, 15 jmp SHORT G_M17360_IG08 ;; bbWeight=0.25 PerfScore 2.13 G_M17360_IG06: mov rcx, 0xD1FFAB1E mov rax, rdx mul rdx:rax, rcx shr rdx, 23 mov ecx, edx mov r8d, 8 jmp SHORT G_M17360_IG08 ;; bbWeight=0.25 PerfScore 1.75 G_M17360_IG07: mov eax, edx mov r8d, ecx mov ecx, eax ;; bbWeight=0.25 PerfScore 0.19 G_M17360_IG08: cmp ecx, 10 jb SHORT G_M17360_IG15 ;; bbWeight=0.50 PerfScore 0.63 G_M17360_IG09: cmp ecx, 100 jae SHORT G_M17360_IG10 inc r8d jmp SHORT G_M17360_IG15 ;; bbWeight=0.25 PerfScore 0.88 G_M17360_IG10: cmp ecx, 0x3E8 jae SHORT G_M17360_IG11 add r8d, 2 jmp SHORT G_M17360_IG15 ;; bbWeight=0.25 PerfScore 0.88 G_M17360_IG11: cmp ecx, 0x2710 jae SHORT G_M17360_IG12 add r8d, 3 jmp SHORT G_M17360_IG15 ;; bbWeight=0.25 PerfScore 0.88 G_M17360_IG12: cmp ecx, 0x186A0 jae SHORT G_M17360_IG13 add r8d, 4 jmp SHORT G_M17360_IG15 ;; bbWeight=0.25 PerfScore 0.88 G_M17360_IG13: cmp ecx, 0xD1FFAB1E jae SHORT G_M17360_IG14 add r8d, 5 jmp SHORT G_M17360_IG15 ;; bbWeight=0.25 PerfScore 0.88 G_M17360_IG14: add r8d, 6 ;; bbWeight=0.25 PerfScore 0.06 G_M17360_IG15: cmp esi, r8d jge SHORT G_M17360_IG17 ;; bbWeight=1 PerfScore 1.25 G_M17360_IG16: mov edi, r8d jmp SHORT G_M17360_IG18 ;; bbWeight=0.50 PerfScore 1.13 G_M17360_IG17: mov edi, esi ;; bbWeight=0.50 PerfScore 0.13 G_M17360_IG18: cmp edi, 1 jne SHORT G_M17360_IG21 ;; bbWeight=1 PerfScore 1.25 G_M17360_IG19: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] mov rcx, qword ptr [rsp+50H] test rcx, rcx jl G_M17360_IG28 mov edx, dword ptr [rax+8] movsxd rdx, edx cmp rcx, rdx jae G_M17360_IG29 mov rax, gword ptr [rax+8*rcx+16] ;; bbWeight=0.50 PerfScore 5.00 G_M17360_IG20: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M17360_IG21: mov ecx, edi call String:FastAllocateString(int):String mov rbx, rax test rbx, rbx jne SHORT G_M17360_IG22 xor rcx, rcx jmp SHORT G_M17360_IG23 ;; bbWeight=0.50 PerfScore 2.50 G_M17360_IG22: lea rcx, bword ptr [rbx+12] mov bword ptr [rsp+28H], rcx mov rcx, bword ptr [rsp+28H] ;; bbWeight=0.50 PerfScore 1.25 G_M17360_IG23: movsxd rax, edi lea rdi, [rcx+2*rax] jmp SHORT G_M17360_IG25 ;; bbWeight=0.50 PerfScore 1.38 G_M17360_IG24: lea rcx, [rsp+50H] call Number:Int64DivMod1E9(byref):int mov edx, eax mov rcx, rdi mov r8d, 9 call Number:UInt32ToDecChars(long,int,int):long mov rdi, rax add esi, -9 ;; bbWeight=2 PerfScore 7.50 G_M17360_IG25: mov rcx, qword ptr [rsp+50H] mov rax, 0xD1FFAB1E and rcx, rax shr rcx, 32 test ecx, ecx jne SHORT G_M17360_IG24 ;; bbWeight=4 PerfScore 19.00 G_M17360_IG26: mov rdx, qword ptr [rsp+50H] mov rcx, rdi mov r8d, esi call Number:UInt32ToDecChars(long,int,int):long xor rax, rax mov bword ptr [rsp+28H], rax mov rax, rbx ;; bbWeight=0.50 PerfScore 2.00 G_M17360_IG27: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M17360_IG28: call CORINFO_HELP_OVERFLOW int3 ;; bbWeight=0 PerfScore 0.00 G_M17360_IG29: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 427, prolog size 14, PerfScore 106.83, (MethodHash=d640bc2f) for method Number:UInt64ToDecStr(long,int):String ; ============================================================ ; Assembly listing for method Grisu3:TryRunDouble(double,int,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T10] ( 5, 4 ) double -> mm0 ; V01 arg1 [V01,T01] ( 4, 3.50) int -> rdi ; V02 arg2 [V02,T00] ( 7, 4.50) byref -> rsi ; V03 loc0 [V03,T11] ( 3, 2 ) double -> mm0 ; V04 loc1 [V04 ] ( 6, 3 ) int -> [rsp+0xC0] do-not-enreg[X] addr-exposed ld-addr-op ; V05 loc2 [V05 ] ( 3, 1.50) int -> [rsp+0xB8] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc3 [V06,T02] ( 4, 3 ) bool -> rax ; V07 loc4 [V07 ] ( 2, 1 ) struct (16) [rsp+0xA8] do-not-enreg[XS] addr-exposed ld-addr-op ; V08 loc5 [V08 ] ( 2, 1 ) struct (16) [rsp+0x98] do-not-enreg[XS] addr-exposed ld-addr-op ; V09 loc6 [V09 ] ( 2, 1 ) struct (16) [rsp+0x88] do-not-enreg[XS] addr-exposed ld-addr-op ; V10 loc7 [V10 ] ( 4, 2 ) struct (16) [rsp+0x78] do-not-enreg[XSB] addr-exposed ld-addr-op ; V11 loc8 [V11 ] ( 2, 1 ) struct (16) [rsp+0x68] do-not-enreg[XS] addr-exposed ld-addr-op ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V13 tmp1 [V13,T12] ( 3, 2 ) double -> mm0 ; V14 tmp2 [V14 ] ( 4, 4 ) struct (16) [rsp+0x58] do-not-enreg[XSB] addr-exposed "NewObj constructor temp" ; V15 tmp3 [V15,T03] ( 3, 3 ) byref -> rdx "Span.get_Item ptrToSpan" ; V16 tmp4 [V16,T04] ( 2, 2 ) long -> rdx "Inline return value spill temp" ;* V17 tmp5 [V17 ] ( 0, 0 ) double -> zero-ref ld-addr-op "Inlining Arg" ; V18 tmp6 [V18,T13] ( 2, 2 ) simd16 -> mm1 "Inline stloc first use temp" ; V19 tmp7 [V19 ] ( 4, 2 ) struct (16) [rsp+0x48] do-not-enreg[XSB] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V20 tmp8 [V20 ] ( 2, 1 ) long -> [rsp+0xA8] do-not-enreg[X] addr-exposed V07.f(offs=0x00) P-DEP "field V07.f (fldOffset=0x0)" ; V21 tmp9 [V21 ] ( 2, 1 ) int -> [rsp+0xB0] do-not-enreg[X] addr-exposed V07.e(offs=0x08) P-DEP "field V07.e (fldOffset=0x8)" ; V22 tmp10 [V22 ] ( 2, 1 ) long -> [rsp+0x98] do-not-enreg[X] addr-exposed V08.f(offs=0x00) P-DEP "field V08.f (fldOffset=0x0)" ; V23 tmp11 [V23 ] ( 2, 1 ) int -> [rsp+0xA0] do-not-enreg[X] addr-exposed V08.e(offs=0x08) P-DEP "field V08.e (fldOffset=0x8)" ; V24 tmp12 [V24 ] ( 2, 1 ) long -> [rsp+0x88] do-not-enreg[X] addr-exposed V09.f(offs=0x00) P-DEP "field V09.f (fldOffset=0x0)" ; V25 tmp13 [V25 ] ( 2, 1 ) int -> [rsp+0x90] do-not-enreg[X] addr-exposed V09.e(offs=0x08) P-DEP "field V09.e (fldOffset=0x8)" ; V26 tmp14 [V26 ] ( 4, 2 ) long -> [rsp+0x78] do-not-enreg[X] addr-exposed V10.f(offs=0x00) P-DEP "field V10.f (fldOffset=0x0)" ; V27 tmp15 [V27 ] ( 4, 2 ) int -> [rsp+0x80] do-not-enreg[X] addr-exposed V10.e(offs=0x08) P-DEP "field V10.e (fldOffset=0x8)" ; V28 tmp16 [V28 ] ( 2, 1 ) long -> [rsp+0x68] do-not-enreg[X] addr-exposed V11.f(offs=0x00) P-DEP "field V11.f (fldOffset=0x0)" ; V29 tmp17 [V29 ] ( 2, 1 ) int -> [rsp+0x70] do-not-enreg[X] addr-exposed V11.e(offs=0x08) P-DEP "field V11.e (fldOffset=0x8)" ; V30 tmp18 [V30 ] ( 3, 2.50) long -> [rsp+0x58] do-not-enreg[X] addr-exposed V14.f(offs=0x00) P-DEP "field V14.f (fldOffset=0x0)" ; V31 tmp19 [V31 ] ( 3, 2.50) int -> [rsp+0x60] do-not-enreg[X] addr-exposed V14.e(offs=0x08) P-DEP "field V14.e (fldOffset=0x8)" ; V32 tmp20 [V32 ] ( 3, 1.50) long -> [rsp+0x48] do-not-enreg[X] addr-exposed V19.f(offs=0x00) P-DEP "field V19.f (fldOffset=0x0)" ; V33 tmp21 [V33 ] ( 3, 1.50) int -> [rsp+0x50] do-not-enreg[X] addr-exposed V19.e(offs=0x08) P-DEP "field V19.e (fldOffset=0x8)" ; V34 tmp22 [V34 ] ( 4, 4 ) struct (16) [rsp+0x38] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V35 tmp23 [V35,T05] ( 2, 2 ) long -> rcx "argument with side effect" ; V36 tmp24 [V36,T06] ( 2, 2 ) long -> rdx "argument with side effect" ; V37 tmp25 [V37,T07] ( 2, 2 ) long -> r8 "argument with side effect" ; V38 tmp26 [V38,T08] ( 2, 2 ) long -> rcx "argument with side effect" ; V39 tmp27 [V39,T09] ( 2, 2 ) int -> rdx "argument with side effect" ; ; Lcl frame size = 200 G_M21043_IG01: push rdi push rsi sub rsp, 200 vzeroupper xor rax, rax mov qword ptr [rsp+38H], rax mov edi, edx mov rsi, r8 ;; bbWeight=1 PerfScore 5.00 G_M21043_IG02: vmovaps xmm1, xmm0 vmovd rdx, xmm1 test rdx, rdx jl SHORT G_M21043_IG04 ;; bbWeight=1 PerfScore 2.50 G_M21043_IG03: jmp SHORT G_M21043_IG05 ;; bbWeight=0.50 PerfScore 1.00 G_M21043_IG04: vmovsd xmm1, qword ptr [reloc @RWD08] vxorps xmm0, xmm1 ;; bbWeight=0.50 PerfScore 1.17 G_M21043_IG05: cmp edi, -1 jne G_M21043_IG09 ;; bbWeight=1 PerfScore 1.25 G_M21043_IG06: lea rdx, bword ptr [rsp+50H] call Number:ExtractFractionAndBiasedExponent(double,byref):long mov qword ptr [rsp+48H], rax lea rcx, bword ptr [rsp+48H] lea r9, bword ptr [rsp+88H] lea r8, bword ptr [rsp+98H] mov edx, 52 call DiyFp:GetBoundaries(int,byref,byref):this vmovupd xmm0, xmmword ptr [rsp+48H] vmovupd xmmword ptr [rsp+78H], xmm0 lea rcx, bword ptr [rsp+78H] lea rdx, bword ptr [rsp+A8H] call DiyFp:Normalize():DiyFp:this lea rcx, bword ptr [rsp+98H] lea rdx, bword ptr [rsp+A8H] lea r8, bword ptr [rsp+88H] ;; bbWeight=0.50 PerfScore 6.88 G_M21043_IG07: vmovdqu xmm0, xmmword ptr [rsi+16] vmovdqu xmmword ptr [rsp+38H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M21043_IG08: lea r9, [rsp+C0H] mov qword ptr [rsp+20H], r9 lea r9, [rsp+B8H] mov qword ptr [rsp+28H], r9 lea r9, bword ptr [rsp+38H] call Grisu3:TryRunShortest(byref,byref,byref,Span`1,byref,byref):bool jmp SHORT G_M21043_IG12 ;; bbWeight=0.50 PerfScore 3.25 G_M21043_IG09: vxorps xmm1, xmm1 vmovdqu xmmword ptr [rsp+58H], xmm1 lea rdx, bword ptr [rsp+60H] call Number:ExtractFractionAndBiasedExponent(double,byref):long mov qword ptr [rsp+58H], rax vmovupd xmm0, xmmword ptr [rsp+58H] vmovupd xmmword ptr [rsp+78H], xmm0 lea rcx, bword ptr [rsp+78H] lea rdx, bword ptr [rsp+68H] call DiyFp:Normalize():DiyFp:this lea rcx, bword ptr [rsp+68H] mov edx, edi ;; bbWeight=0.50 PerfScore 5.79 G_M21043_IG10: vmovdqu xmm0, xmmword ptr [rsi+16] vmovdqu xmmword ptr [rsp+38H], xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M21043_IG11: lea r8, [rsp+B8H] mov qword ptr [rsp+20H], r8 lea r8, bword ptr [rsp+38H] lea r9, [rsp+C0H] call Grisu3:TryRunCounted(byref,int,Span`1,byref,byref):bool ;; bbWeight=0.50 PerfScore 1.75 G_M21043_IG12: test eax, eax je SHORT G_M21043_IG14 ;; bbWeight=1 PerfScore 1.25 G_M21043_IG13: mov edx, dword ptr [rsp+C0H] add edx, dword ptr [rsp+B8H] mov dword ptr [rsi+4], edx lea rdx, bword ptr [rsi+16] mov ecx, dword ptr [rdx+8] cmp dword ptr [rsp+C0H], ecx jae SHORT G_M21043_IG15 mov rdx, bword ptr [rdx] mov ecx, dword ptr [rsp+C0H] movsxd rcx, ecx mov byte ptr [rdx+rcx], 0 mov edx, dword ptr [rsp+C0H] mov dword ptr [rsi], edx ;; bbWeight=0.50 PerfScore 6.88 G_M21043_IG14: add rsp, 200 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M21043_IG15: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 8000000000000000h ; Total bytes of code 390, prolog size 19, PerfScore 82.26, (MethodHash=92a2adcc) for method Grisu3:TryRunDouble(double,int,byref):bool ; ============================================================ ; Assembly listing for method DiyFp:Normalize():DiyFp:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) byref -> rax this ; V01 RetBuf [V01,T00] ( 5, 5 ) byref -> rdx ;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V05 tmp2 [V05,T05] ( 3, 3 ) int -> r9 "Inline return value spill temp" ; V06 tmp3 [V06,T02] ( 2, 4 ) long -> rcx "Inlining Arg" ; V07 tmp4 [V07,T03] ( 2, 4 ) long -> r8 "Inlining Arg" ; V08 tmp5 [V08,T04] ( 2, 4 ) int -> rax "Inlining Arg" ; V09 tmp6 [V09,T07] ( 2, 2 ) long -> r8 V04.f(offs=0x00) P-INDEP "field V04.f (fldOffset=0x0)" ; V10 tmp7 [V10,T08] ( 2, 2 ) int -> rax V04.e(offs=0x08) P-INDEP "field V04.e (fldOffset=0x8)" ; V11 cse0 [V11,T06] ( 3, 3 ) long -> r8 "CSE - aggressive" ; ; Lcl frame size = 0 G_M11938_IG01: mov rax, rcx ;; bbWeight=1 PerfScore 0.25 G_M11938_IG02: mov r8, qword ptr [rax] mov rcx, r8 lzcnt rcx, rcx mov r9d, ecx mov ecx, r9d shl r8, cl mov eax, dword ptr [rax+8] sub eax, r9d mov qword ptr [rdx], r8 mov dword ptr [rdx+8], eax mov rax, rdx ;; bbWeight=1 PerfScore 11.25 G_M11938_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 39, prolog size 0, PerfScore 16.40, (MethodHash=7f84d15d) for method DiyFp:Normalize():DiyFp:this ; ============================================================ ; Assembly listing for method Grisu3:TryRunCounted(byref,int,Span`1,byref,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 4 ) byref -> rdi ; V01 arg1 [V01,T03] ( 3, 3 ) int -> rbp ; V02 arg2 [V02,T00] ( 3, 6 ) byref -> rsi ; V03 arg3 [V03,T02] ( 3, 3 ) byref -> rbx ; V04 arg4 [V04,T08] ( 1, 1 ) byref -> [rsp+0xA0] ; V05 loc0 [V05,T05] ( 2, 2 ) int -> rdx ; V06 loc1 [V06,T06] ( 2, 2 ) int -> r8 ; V07 loc2 [V07 ] ( 2, 2 ) struct (16) [rsp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op ; V08 loc3 [V08 ] ( 2, 2 ) int -> [rsp+0x40] do-not-enreg[X] addr-exposed ld-addr-op ; V09 loc4 [V09 ] ( 2, 2 ) struct (16) [rsp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op ; V10 loc5 [V10,T07] ( 2, 2 ) bool -> rax ; V11 loc6 [V11 ] ( 2, 2 ) int -> [rsp+0x28] do-not-enreg[X] addr-exposed ld-addr-op ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) byref -> zero-ref V19._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ;* V14 tmp2 [V14 ] ( 0, 0 ) int -> zero-ref V19._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V15 tmp3 [V15 ] ( 2, 2 ) long -> [rsp+0x48] do-not-enreg[X] addr-exposed V07.f(offs=0x00) P-DEP "field V07.f (fldOffset=0x0)" ; V16 tmp4 [V16 ] ( 2, 2 ) int -> [rsp+0x50] do-not-enreg[X] addr-exposed V07.e(offs=0x08) P-DEP "field V07.e (fldOffset=0x8)" ; V17 tmp5 [V17 ] ( 2, 2 ) long -> [rsp+0x30] do-not-enreg[X] addr-exposed V09.f(offs=0x00) P-DEP "field V09.f (fldOffset=0x0)" ; V18 tmp6 [V18 ] ( 2, 2 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed V09.e(offs=0x08) P-DEP "field V09.e (fldOffset=0x8)" ;* V19 tmp7 [V19 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V20 cse0 [V20,T04] ( 3, 3 ) int -> r8 "CSE - aggressive" ; ; Lcl frame size = 88 G_M22956_IG01: push rdi push rsi push rbp push rbx sub rsp, 88 mov rdi, rcx mov ebp, edx mov rsi, r8 mov rbx, r9 ;; bbWeight=1 PerfScore 5.25 G_M22956_IG02: mov ecx, dword ptr [rdi+8] add ecx, 64 mov r8d, ecx neg r8d lea edx, [r8-60] add r8d, -32 lea rcx, bword ptr [rsp+48H] lea r9, [rsp+40H] call Grisu3:GetCachedPowerForBinaryExponentRange(int,int,byref):DiyFp lea r8, bword ptr [rsp+48H] lea rdx, bword ptr [rsp+30H] mov rcx, rdi call DiyFp:Multiply(byref):DiyFp:this lea rcx, [rsp+28H] mov qword ptr [rsp+20H], rcx lea rcx, bword ptr [rsp+30H] mov edx, ebp mov r8, rsi mov r9, rbx call Grisu3:TryDigitGenCounted(byref,int,Span`1,byref,byref):bool mov edx, dword ptr [rsp+40H] neg edx add edx, dword ptr [rsp+28H] mov rsi, bword ptr [rsp+A0H] mov dword ptr [rsi], edx ;; bbWeight=1 PerfScore 15.75 G_M22956_IG03: add rsp, 88 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 129, prolog size 8, PerfScore 37.15, (MethodHash=22eaa653) for method Grisu3:TryRunCounted(byref,int,Span`1,byref,byref):bool ; ============================================================ ; Assembly listing for method Grisu3:GetCachedPowerForBinaryExponentRange(int,int,byref):DiyFp ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T00] ( 5, 5 ) byref -> rsi ; V01 arg0 [V01,T07] ( 3, 3 ) int -> rdx ;* V02 arg1 [V02 ] ( 0, 0 ) int -> zero-ref ; V03 arg2 [V03,T06] ( 3, 3 ) byref -> rdi ; V04 loc0 [V04,T14] ( 2, 2 ) double -> mm0 ; V05 loc1 [V05,T05] ( 5, 5 ) int -> rbx ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V08 tmp2 [V08,T09] ( 2, 4 ) long -> rax "Inlining Arg" ; V09 tmp3 [V09,T10] ( 2, 4 ) int -> rdx "Inlining Arg" ; V10 tmp4 [V10,T11] ( 2, 2 ) long -> rax V07.f(offs=0x00) P-INDEP "field V07.f (fldOffset=0x0)" ; V11 tmp5 [V11,T12] ( 2, 2 ) int -> rdx V07.e(offs=0x08) P-INDEP "field V07.e (fldOffset=0x8)" ; V12 tmp6 [V12,T01] ( 3, 6 ) ref -> rax "arr expr" ; V13 tmp7 [V13,T02] ( 3, 6 ) ref -> rax "arr expr" ; V14 tmp8 [V14,T03] ( 3, 6 ) ref -> rcx "arr expr" ;* V15 cse0 [V15,T13] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; V16 cse1 [V16,T08] ( 4, 4 ) long -> rdx "CSE - aggressive" ; V17 rat0 [V17,T04] ( 3, 6 ) int -> rbx "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 40 G_M41635_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 vzeroupper mov rsi, rcx mov rdi, r9 ;; bbWeight=1 PerfScore 5.75 G_M41635_IG02: add edx, 63 vxorps xmm0, xmm0 vcvtsi2sd xmm0, edx vmulsd xmm0, xmm0, qword ptr [reloc @RWD08] vroundsd xmm0, xmm0, 10 vcvttsd2si ebx, xmm0 add ebx, 347 mov ebp, ebx sar ebp, 31 and ebp, 7 add ebx, ebp sar ebx, 3 inc ebx mov rcx, 0xD1FFAB1E mov edx, 362 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] cmp ebx, dword ptr [rax+8] jae SHORT G_M41635_IG04 movsxd rdx, ebx movsx rax, word ptr [rax+2*rdx+16] mov dword ptr [rdi], eax mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] cmp ebx, dword ptr [rax+8] jae SHORT G_M41635_IG04 mov rax, qword ptr [rax+8*rdx+16] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] cmp ebx, dword ptr [rcx+8] jae SHORT G_M41635_IG04 movsx rdx, word ptr [rcx+2*rdx+16] mov qword ptr [rsi], rax mov dword ptr [rsi+8], edx mov rax, rsi ;; bbWeight=1 PerfScore 54.58 G_M41635_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M41635_IG04: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 3FD34413509F79FFh ; Total bytes of code 187, prolog size 11, PerfScore 82.68, (MethodHash=21235d5c) for method Grisu3:GetCachedPowerForBinaryExponentRange(int,int,byref):DiyFp ; ============================================================ ; Assembly listing for method Grisu3:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "dup spill" ; V02 tmp2 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[SB] must-init "struct address for call/obj" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init class-hnd exact "dup spill" ; V04 tmp4 [V04 ] ( 1, 1 ) struct ( 8) [rbp-0x20] do-not-enreg[SB] must-init "struct address for call/obj" ; V05 tmp5 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] must-init class-hnd exact "dup spill" ; V06 tmp6 [V06 ] ( 1, 1 ) struct ( 8) [rbp-0x30] do-not-enreg[SB] must-init "struct address for call/obj" ; V07 tmp7 [V07 ] ( 1, 1 ) ref -> [rbp-0x38] must-init class-hnd exact "dup spill" ; V08 tmp8 [V08 ] ( 1, 1 ) struct ( 8) [rbp-0x40] do-not-enreg[SB] must-init "struct address for call/obj" ; ; Lcl frame size = 96 G_M32399_IG01: push rbp sub rsp, 96 lea rbp, [rsp+60H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-40H], xmm4 vmovdqa xmmword ptr [rbp-30H], xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 6.08 G_M32399_IG02: mov rcx, 0xD1FFAB1E mov edx, 87 call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rbp-08H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_FIELDDESC_TO_STUBRUNTIMEFIELD mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-08H] mov rdx, gword ptr [rbp-10H] call RuntimeHelpers:InitializeArray(Array,RuntimeFieldHandle) mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 87 call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rbp-18H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_FIELDDESC_TO_STUBRUNTIMEFIELD mov gword ptr [rbp-20H], rax mov rcx, gword ptr [rbp-18H] mov rdx, gword ptr [rbp-20H] call RuntimeHelpers:InitializeArray(Array,RuntimeFieldHandle) mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-18H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 87 call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rbp-28H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_FIELDDESC_TO_STUBRUNTIMEFIELD mov gword ptr [rbp-30H], rax mov rcx, gword ptr [rbp-28H] mov rdx, gword ptr [rbp-30H] call RuntimeHelpers:InitializeArray(Array,RuntimeFieldHandle) mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-28H] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E mov edx, 10 call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rbp-38H], rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_FIELDDESC_TO_STUBRUNTIMEFIELD mov gword ptr [rbp-40H], rax mov rcx, gword ptr [rbp-38H] mov rdx, gword ptr [rbp-40H] call RuntimeHelpers:InitializeArray(Array,RuntimeFieldHandle) mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-38H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 40.25 G_M32399_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 341, prolog size 34, PerfScore 82.93, (MethodHash=09628170) for method Grisu3:.cctor() ; ============================================================ ; Assembly listing for method DiyFp:Multiply(byref):DiyFp:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) byref -> rcx this ; V01 RetBuf [V01,T01] ( 5, 5 ) byref -> rdx ; V02 arg1 [V02,T02] ( 5, 5 ) byref -> r8 ; V03 loc0 [V03,T05] ( 3, 3 ) int -> rax ; V04 loc1 [V04,T06] ( 3, 3 ) int -> r9 ; V05 loc2 [V05,T07] ( 3, 3 ) int -> r10 ; V06 loc3 [V06,T08] ( 3, 3 ) int -> r11 ; V07 loc4 [V07,T11] ( 2, 2 ) long -> rsi ; V08 loc5 [V08,T09] ( 3, 3 ) long -> r10 ; V09 loc6 [V09,T10] ( 3, 3 ) long -> rax ; V10 loc7 [V10,T12] ( 2, 2 ) long -> r9 ; V11 loc8 [V11,T03] ( 4, 4 ) long -> r9 ;# V12 OutArgs [V12 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V14 tmp2 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V15 tmp3 [V15,T04] ( 2, 4 ) int -> rcx "Inlining Arg" ; V16 tmp4 [V16,T13] ( 2, 2 ) long -> rax V13.f(offs=0x00) P-INDEP "field V13.f (fldOffset=0x0)" ; V17 tmp5 [V17,T14] ( 2, 2 ) int -> rcx V13.e(offs=0x08) P-INDEP "field V13.e (fldOffset=0x8)" ; ; Lcl frame size = 0 G_M33025_IG01: push rdi push rsi ;; bbWeight=1 PerfScore 2.00 G_M33025_IG02: mov rax, qword ptr [rcx] shr rax, 32 mov r9d, dword ptr [rcx] mov r10, qword ptr [r8] shr r10, 32 mov r11d, dword ptr [r8] mov esi, eax mov edi, r10d imul rsi, rdi mov edi, r9d mov r10d, r10d imul r10, rdi mov eax, eax mov edi, r11d imul rax, rdi mov r9d, r9d mov r11d, r11d imul r9, r11 shr r9, 32 mov r11d, eax add r9, r11 mov r11d, r10d add r9, r11 mov r11d, 0xD1FFAB1E add r9, r11 mov ecx, dword ptr [rcx+8] mov r8d, dword ptr [r8+8] lea ecx, [rcx+r8+64] shr rax, 32 add rax, rsi shr r10, 32 add rax, r10 mov r8, r9 shr r8, 32 add rax, r8 mov qword ptr [rdx], rax mov dword ptr [rdx+8], ecx mov rax, rdx ;; bbWeight=1 PerfScore 39.75 G_M33025_IG03: pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 133, prolog size 2, PerfScore 57.05, (MethodHash=e3707efe) for method DiyFp:Multiply(byref):DiyFp:this ; ============================================================ ; Assembly listing for method Grisu3:TryDigitGenCounted(byref,int,Span`1,byref,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T14] ( 4, 4 ) byref -> rax ; V01 arg1 [V01,T00] ( 13, 24.50) int -> rsi ; V02 arg2 [V02,T09] ( 4, 8 ) byref -> r8 ld-addr-op ; V03 arg3 [V03,T01] ( 13, 22.50) byref -> rdi ; V04 arg4 [V04,T03] ( 11, 19 ) byref -> rbx ; V05 loc0 [V05,T10] ( 5, 9.50) long -> r15 ;* V06 loc1 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V07 loc2 [V07,T06] ( 7, 14.50) int -> [rsp+0x5C] ld-addr-op ; V08 loc3 [V08,T04] ( 10, 17 ) long -> [rsp+0x50] ; V09 loc4 [V09,T05] ( 6, 17 ) int -> r9 ;* V10 loc5 [V10 ] ( 0, 0 ) int -> zero-ref ; V11 loc6 [V11,T26] ( 2, 1 ) long -> r8 ; V12 loc7 [V12,T16] ( 2, 4 ) int -> rax ; V13 OutArgs [V13 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V14 tmp1 [V14,T02] ( 3, 24 ) int -> rdx "Span.get_Item index" ; V15 tmp2 [V15,T07] ( 3, 12 ) int -> rcx "Span.get_Item index" ; V16 tmp3 [V16,T17] ( 2, 4 ) long -> r13 "Inlining Arg" ; V17 tmp4 [V17,T18] ( 2, 4 ) int -> rdx "Inlining Arg" ;* V18 tmp5 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V19 tmp6 [V19,T08] ( 3, 12 ) int -> rax "Inline stloc first use temp" ; V20 tmp7 [V20,T11] ( 6, 8.50) byref -> rbp V24._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ; V21 tmp8 [V21,T12] ( 6, 8.50) int -> r14 V24._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V22 tmp9 [V22,T24] ( 3, 2.50) long -> r13 V06.f(offs=0x00) P-INDEP "field V06.f (fldOffset=0x0)" ; V23 tmp10 [V23,T25] ( 2, 1.50) int -> rdx V06.e(offs=0x08) P-INDEP "field V06.e (fldOffset=0x8)" ;* V24 tmp11 [V24 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V25 tmp12 [V25,T19] ( 3, 3 ) ref -> rax "arr expr" ; V26 tmp13 [V26 ] ( 4, 4 ) struct (16) [rsp+0x40] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V27 tmp14 [V27,T20] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V28 tmp15 [V28,T21] ( 3, 3 ) byref -> rcx stack-byref "BlockOp address local" ; V29 cse0 [V29,T13] ( 6, 6 ) int -> r12 "CSE - moderate" ; V30 cse1 [V30,T22] ( 3, 3 ) int -> rdx "CSE - moderate" ; V31 cse2 [V31,T15] ( 3, 4 ) long -> [rsp+0x38] "CSE - moderate" ; V32 cse3 [V32,T23] ( 3, 3 ) long -> r9 "CSE - moderate" ; TEMP_01 byref -> [rsp+0x60] ; ; Lcl frame size = 104 G_M30590_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 104 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 vmovdqa xmmword ptr [rsp+50H], xmm4 xor rax, rax mov qword ptr [rsp+60H], rax mov rax, rcx mov esi, edx mov rdi, r9 mov rbx, bword ptr [rsp+D0H] ;; bbWeight=1 PerfScore 13.58 G_M30590_IG02: mov rbp, bword ptr [r8] mov r14d, dword ptr [r8+8] ;; bbWeight=1 PerfScore 4.00 G_M30590_IG03: mov r15d, 1 mov edx, dword ptr [rax+8] mov r12d, edx neg r12d and r12d, 63 mov r13d, 1 mov ecx, r12d shl r13, cl mov r9, qword ptr [rax] mov ecx, r12d mov rax, r9 shr rax, cl mov r10d, eax lea r11, [r13-1] mov qword ptr [rsp+38H], r11 and r9, r11 mov r8, r9 mov qword ptr [rsp+50H], r8 test r8, r8 jne SHORT G_M30590_IG07 ;; bbWeight=1 PerfScore 14.50 G_M30590_IG04: cmp esi, 11 jge SHORT G_M30590_IG05 mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] lea ecx, [rsi-1] cmp ecx, dword ptr [rax+8] jae G_M30590_IG20 lea ecx, [rsi-1] movsxd rcx, ecx cmp dword ptr [rax+4*rcx+16], r10d jbe SHORT G_M30590_IG07 ;; bbWeight=0.50 PerfScore 5.38 G_M30590_IG05: xor eax, eax mov dword ptr [rdi], eax mov dword ptr [rbx], eax ;; bbWeight=0.50 PerfScore 1.13 G_M30590_IG06: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M30590_IG07: neg edx neg edx add edx, 64 mov dword ptr [rsp+5CH], r10d mov ecx, r10d mov r8, rbx call Grisu3:BiggestPowerTen(int,int,byref):int mov r9d, eax xor eax, eax mov dword ptr [rdi], eax cmp dword ptr [rbx], 0 jle G_M30590_IG12 ;; bbWeight=0.50 PerfScore 3.88 G_M30590_IG08: mov eax, dword ptr [rsp+5CH] xor rdx, rdx div edx:eax, r9d mov edx, eax imul edx, r9d mov ecx, dword ptr [rsp+5CH] sub ecx, edx mov edx, dword ptr [rdi] cmp edx, r14d jae G_M30590_IG20 movsxd rdx, edx add eax, 48 mov byte ptr [rdx+rbp], al inc dword ptr [rdi] dec esi dec dword ptr [rbx] test esi, esi je SHORT G_M30590_IG09 mov edx, 0xD1FFAB1E mov eax, r9d mul edx:eax, edx mov r9d, edx shr r9d, 3 cmp dword ptr [rbx], 0 jg SHORT G_M30590_IG11 ;; bbWeight=4 PerfScore 219.00 G_M30590_IG09: test esi, esi jne G_M30590_IG14 mov r8d, ecx mov ecx, r12d shl r8, cl add r8, qword ptr [rsp+50H] lea rcx, bword ptr [rsp+40H] mov bword ptr [rcx], rbp mov dword ptr [rcx+8], r14d mov qword ptr [rsp+20H], 1 mov bword ptr [rsp+28H], rbx lea rcx, bword ptr [rsp+40H] mov bword ptr [rsp+60H], rcx mov r9d, r9d mov ecx, r12d shl r9, cl mov edx, dword ptr [rdi] mov rcx, bword ptr [rsp+60H] call Grisu3:TryRoundWeedCounted(Span`1,int,long,long,long,byref):bool nop ;; bbWeight=0.50 PerfScore 8.75 G_M30590_IG10: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M30590_IG11: mov dword ptr [rsp+5CH], ecx jmp G_M30590_IG08 ;; bbWeight=2 PerfScore 6.00 G_M30590_IG12: mov ecx, dword ptr [rsp+5CH] jmp SHORT G_M30590_IG09 ;; bbWeight=0.25 PerfScore 0.75 G_M30590_IG13: lea r9, [r9+4*r9] add r9, r9 lea r15, [r15+4*r15] add r15, r15 mov ecx, r12d mov rax, r9 shr rax, cl mov ecx, dword ptr [rdi] cmp ecx, r14d jae G_M30590_IG20 movsxd rcx, ecx add eax, 48 mov byte ptr [rcx+rbp], al inc dword ptr [rdi] dec esi dec dword ptr [rbx] mov rax, qword ptr [rsp+38H] and r9, rax mov qword ptr [rsp+50H], r9 mov qword ptr [rsp+38H], rax ;; bbWeight=2 PerfScore 44.50 G_M30590_IG14: test esi, esi jle SHORT G_M30590_IG17 mov r9, qword ptr [rsp+50H] cmp r9, r15 ja SHORT G_M30590_IG13 ;; bbWeight=4 PerfScore 14.00 G_M30590_IG15: test esi, esi je SHORT G_M30590_IG18 cmp r14d, 0 jbe SHORT G_M30590_IG20 mov byte ptr [rbp], 0 xor eax, eax mov dword ptr [rdi], eax mov dword ptr [rbx], eax ;; bbWeight=0.50 PerfScore 2.88 G_M30590_IG16: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M30590_IG17: mov r9, qword ptr [rsp+50H] jmp SHORT G_M30590_IG15 ;; bbWeight=2 PerfScore 6.00 G_M30590_IG18: lea rcx, bword ptr [rsp+40H] mov bword ptr [rcx], rbp mov dword ptr [rcx+8], r14d mov qword ptr [rsp+20H], r15 mov bword ptr [rsp+28H], rbx lea rcx, bword ptr [rsp+40H] mov edx, dword ptr [rdi] mov r8, r9 mov r9, r13 call Grisu3:TryRoundWeedCounted(Span`1,int,long,long,long,byref):bool nop ;; bbWeight=0.50 PerfScore 4.38 G_M30590_IG19: add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M30590_IG20: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 612, prolog size 55, PerfScore 420.71, (MethodHash=c3768881) for method Grisu3:TryDigitGenCounted(byref,int,Span`1,byref,byref):bool ; ============================================================ ; Assembly listing for method Grisu3:BiggestPowerTen(int,int,byref):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 3 ) int -> rcx ; V01 arg1 [V01,T04] ( 3, 3 ) int -> rdx ; V02 arg2 [V02,T02] ( 3, 3 ) byref -> r8 ; V03 loc0 [V03,T00] ( 8, 6 ) int -> rax ; V04 loc1 [V04,T05] ( 4, 3.50) int -> r9 ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T01] ( 3, 6 ) ref -> r9 "arr expr" ; V07 tmp2 [V07,T08] ( 2, 2 ) ref -> rdx "arr expr" ; V08 cse0 [V08,T06] ( 3, 2.50) ref -> rdx "CSE - aggressive" ; V09 cse1 [V09,T07] ( 3, 2.50) int -> r10 "CSE - aggressive" ; ; Lcl frame size = 40 G_M1698_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M1698_IG02: inc edx imul eax, edx, 0x4D1 sar eax, 12 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r9, rdx mov r10d, dword ptr [r9+8] cmp eax, r10d jae SHORT G_M1698_IG06 movsxd r11, eax mov r9d, dword ptr [r9+4*r11+16] cmp ecx, r9d jae SHORT G_M1698_IG04 ;; bbWeight=1 PerfScore 13.50 G_M1698_IG03: dec eax cmp eax, r10d jae SHORT G_M1698_IG06 movsxd r9, eax mov r9d, dword ptr [rdx+4*r9+16] ;; bbWeight=0.50 PerfScore 1.88 G_M1698_IG04: inc eax mov dword ptr [r8], eax mov eax, r9d ;; bbWeight=1 PerfScore 1.50 G_M1698_IG05: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 G_M1698_IG06: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 87, prolog size 4, PerfScore 27.08, (MethodHash=9888f95d) for method Grisu3:BiggestPowerTen(int,int,byref):int ; ============================================================ ; Assembly listing for method Number:NumberToStringFormat(byref,byref,ReadOnlySpan`1,NumberFormatInfo) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T127] ( 3, 3 ) byref -> rcx ; V01 arg1 [V01,T128] ( 3, 3 ) byref -> rdx ; V02 arg2 [V02,T99] ( 3, 6 ) byref -> r8 ld-addr-op ; V03 arg3 [V03,T129] ( 3, 3 ) ref -> r9 class-hnd ; V04 loc0 [V04,T10] ( 15, 96 ) int -> r13 ; V05 loc1 [V05,T19] ( 18, 55 ) int -> [rsp+0x1EC] ptr ; V06 loc2 [V06,T47] ( 9, 29.50) int -> [rsp+0x1E8] ptr ; V07 loc3 [V07,T62] ( 7, 22.50) int -> [rsp+0x1E4] ptr ; V08 loc4 [V08,T26] ( 14, 47.50) int -> r14 ; V09 loc5 [V09,T53] ( 6, 25 ) bool -> [rsp+0x1E0] ; V10 loc6 [V10,T29] ( 6, 42 ) int -> r8 ; V11 loc7 [V11,T51] ( 5, 27 ) int -> r14 ; V12 loc8 [V12,T48] ( 6, 29 ) bool -> [rsp+0x1DC] ; V13 loc9 [V13,T20] ( 8, 48 ) int -> rcx ; V14 loc10 [V14,T28] ( 11, 42 ) int -> r12 ; V15 loc11 [V15,T66] ( 6, 18.50) int -> [rsp+0x1D8] ptr ; V16 loc12 [V16,T00] ( 61,917.50) int -> [rsp+0x1D4] ptr ; V17 loc13 [V17,T72] ( 6, 17 ) long -> [rsp+0x1C8] ptr ; V18 loc14 [V18,T04] ( 37,240 ) ushort -> [rsp+0x1C4] ptr ;* V19 loc15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V20 loc16 [V20,T13] ( 16, 71 ) int -> [rsp+0x1C0] ptr ; V21 loc17 [V21,T130] ( 3, 5 ) bool -> [rsp+0x1BC] ; V22 loc18 [V22,T07] ( 8,184 ) long -> r12 ; V23 loc19 [V23 ] ( 2, 16 ) byref -> [rsp+0x1B0] must-init pinned ptr ;* V24 loc20 [V24 ] ( 0, 0 ) int -> zero-ref ptr ;* V25 loc21 [V25 ] ( 0, 0 ) struct (16) zero-ref ; V26 loc22 [V26,T120] ( 6, 6 ) ref -> [rsp+0xE8] class-hnd ptr ; V27 loc23 [V27,T78] ( 6, 12.50) int -> [rsp+0x1AC] ptr ; V28 loc24 [V28,T71] ( 7, 17.50) int -> [rsp+0x1A8] ptr ; V29 loc25 [V29,T131] ( 3, 5 ) int -> [rsp+0x1A4] ptr ; V30 loc26 [V30,T85] ( 5, 11 ) int -> [rsp+0x1A0] ptr ; V31 loc27 [V31,T169] ( 3, 1.50) int -> r15 ; V32 loc28 [V32,T132] ( 3, 5 ) int -> [rsp+0x19C] ptr ; V33 loc29 [V33,T86] ( 5, 10 ) ref -> r15 class-hnd exact ; V34 loc30 [V34,T14] ( 14, 71 ) long -> [rsp+0x190] ptr ; V35 loc31 [V35 ] ( 2, 2 ) byref -> [rsp+0x188] must-init pinned ptr ; V36 loc32 [V36,T34] ( 8, 33 ) long -> [rsp+0x180] ptr ; V37 loc33 [V37,T123] ( 3, 6 ) bool -> [rsp+0x17C] ; V38 loc34 [V38,T52] ( 7, 26 ) int -> [rsp+0x178] ;* V39 loc35 [V39 ] ( 0, 0 ) int -> zero-ref ptr ; V40 OutArgs [V40 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) struct (16) zero-ref ;* V42 tmp2 [V42 ] ( 0, 0 ) struct (16) zero-ref ; V43 tmp3 [V43,T156] ( 4, 2.50) int -> rax ; V44 tmp4 [V44,T160] ( 3, 2 ) int -> rcx ; V45 tmp5 [V45,T161] ( 3, 2 ) int -> rcx ; V46 tmp6 [V46,T170] ( 3, 1.50) int -> r14 ; V47 tmp7 [V47 ] ( 1, 1 ) blk (16) [rsp+0x48] do-not-enreg[X] addr-exposed unsafe-buffer "stackallocLocal" ;* V48 tmp8 [V48 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V49 tmp9 [V49,T56] ( 3, 24 ) int -> rcx "impSpillLclRefs" ; V50 tmp10 [V50,T77] ( 2, 16 ) int -> rcx "dup spill" ; V51 tmp11 [V51,T79] ( 3, 12 ) int -> [rsp+0x174] ptr "impSpillLclRefs" ; V52 tmp12 [V52,T117] ( 2, 8 ) int -> rcx "impSpillLclRefs" ; V53 tmp13 [V53,T43] ( 2, 32 ) int -> rcx "impSpillLclRefs" ; V54 tmp14 [V54,T15] ( 2, 64 ) int -> r10 "dup spill" ; V55 tmp15 [V55,T124] ( 3, 6 ) int -> r8 ; V56 tmp16 [V56,T80] ( 3, 12 ) long -> rcx "impSpillLclRefs" ; V57 tmp17 [V57,T97] ( 4, 8 ) int -> rcx ; V58 tmp18 [V58,T125] ( 3, 6 ) int -> rcx ; V59 tmp19 [V59,T44] ( 2, 32 ) int -> r10 "impSpillLclRefs" ;* V60 tmp20 [V60,T119] ( 0, 0 ) byref -> zero-ref ptr ; V61 tmp21 [V61,T45] ( 2, 32 ) long -> r15 "impSpillLclRefs" ;* V62 tmp22 [V62,T75] ( 0, 0 ) byref -> zero-ref ptr ; V63 tmp23 [V63,T57] ( 3, 24 ) int -> r11 ; V64 tmp24 [V64,T171] ( 3, 1.50) int -> r15 ; V65 tmp25 [V65,T172] ( 3, 1.50) int -> [rsp+0x170] ptr ; V66 tmp26 [V66,T173] ( 3, 1.50) int -> [rsp+0x16C] ptr ; V67 tmp27 [V67,T174] ( 3, 1.50) int -> r15 ;* V68 tmp28 [V68 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V69 tmp29 [V69,T54] ( 3, 24 ) byref -> r8 "dup spill" ; V70 tmp30 [V70,T100] ( 3, 8 ) int -> [rsp+0x168] ptr ; V71 tmp31 [V71,T11] ( 3, 96 ) int -> r15 "impSpillLclRefs" ; V72 tmp32 [V72,T16] ( 2, 64 ) int -> r15 "dup spill" ; V73 tmp33 [V73,T02] ( 2,256 ) int -> rsi "dup spill" ; V74 tmp34 [V74,T03] ( 2,256 ) int -> r15 "impSpillLclRefs" ;* V75 tmp35 [V75 ] ( 0, 0 ) struct (16) zero-ref ; V76 tmp36 [V76,T121] ( 3, 6 ) byref -> rcx "Span.get_Item ptrToSpan" ; V77 tmp37 [V77,T139] ( 2, 4 ) byref -> r15 "Inlining Arg" ;* V78 tmp38 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V79 tmp39 [V79 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V80 tmp40 [V80 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V81 tmp41 [V81 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V82 tmp42 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V83 tmp43 [V83 ] ( 0, 0 ) int -> zero-ref ptr "impAppendStmt" ;* V84 tmp44 [V84 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V85 tmp45 [V85 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V86 tmp46 [V86 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V87 tmp47 [V87,T118] ( 2, 8 ) long -> r8 "Inlining Arg" ;* V88 tmp48 [V88 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V89 tmp49 [V89 ] ( 0, 0 ) byref -> zero-ref ptr "impAppendStmt" ;* V90 tmp50 [V90 ] ( 0, 0 ) byref -> zero-ref ptr "impAppendStmt" ;* V91 tmp51 [V91 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V92 tmp52 [V92 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V93 tmp53 [V93 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V94 tmp54 [V94,T133] ( 5, 4.50) ref -> [rsp+0xE0] class-hnd ptr "Inlining Arg" ; V95 tmp55 [V95,T167] ( 4, 1.50) int -> [rsp+0x164] ptr "Inline stloc first use temp" ; V96 tmp56 [V96,T163] ( 2, 2 ) byref -> r15 "Span.get_Item ptrToSpan" ; V97 tmp57 [V97,T177] ( 2, 1 ) byref -> rsi "Inlining Arg" ;* V98 tmp58 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V99 tmp59 [V99,T30] ( 5, 40 ) int -> r8 "Inline stloc first use temp" ; V100 tmp60 [V100,T21] ( 3, 48 ) ushort -> r11 "Inlining Arg" ; V101 tmp61 [V101,T36] ( 2, 32 ) byref -> r9 "Span.get_Item ptrToSpan" ; V102 tmp62 [V102,T37] ( 2, 32 ) byref -> r9 "Inlining Arg" ; V103 tmp63 [V103,T12] ( 5, 72 ) ref -> r9 class-hnd "Inlining Arg" ; V104 tmp64 [V104,T35] ( 5, 32 ) int -> r11 "Inline stloc first use temp" ; V105 tmp65 [V105,T38] ( 2, 32 ) byref -> rdx "Span.get_Item ptrToSpan" ; V106 tmp66 [V106,T76] ( 2, 16 ) byref -> r8 "Inlining Arg" ; V107 tmp67 [V107,T87] ( 5, 10 ) int -> rcx "Inline stloc first use temp" ; V108 tmp68 [V108,T101] ( 2, 8 ) byref -> rbx "Span.get_Item ptrToSpan" ; V109 tmp69 [V109,T102] ( 2, 8 ) byref -> r11 "Inlining Arg" ; V110 tmp70 [V110,T67] ( 5, 18 ) ref -> [rsp+0xD8] class-hnd ptr "Inlining Arg" ; V111 tmp71 [V111,T93] ( 5, 8 ) int -> [rsp+0x160] ptr "Inline stloc first use temp" ; V112 tmp72 [V112,T103] ( 2, 8 ) byref -> rsi "Span.get_Item ptrToSpan" ; V113 tmp73 [V113,T140] ( 2, 4 ) byref -> rdi "Inlining Arg" ; V114 tmp74 [V114,T68] ( 5, 18 ) ref -> [rsp+0xD0] class-hnd ptr "Inlining Arg" ; V115 tmp75 [V115,T94] ( 5, 8 ) int -> [rsp+0x15C] ptr "Inline stloc first use temp" ; V116 tmp76 [V116,T104] ( 2, 8 ) byref -> [rsp+0xC8] ptr "Span.get_Item ptrToSpan" ; V117 tmp77 [V117,T141] ( 2, 4 ) byref -> r10 "Inlining Arg" ; V118 tmp78 [V118,T69] ( 5, 18 ) ref -> [rsp+0xC0] class-hnd ptr "Inlining Arg" ; V119 tmp79 [V119,T95] ( 5, 8 ) int -> [rsp+0x158] ptr "Inline stloc first use temp" ; V120 tmp80 [V120,T105] ( 2, 8 ) byref -> [rsp+0xB8] ptr "Span.get_Item ptrToSpan" ; V121 tmp81 [V121,T142] ( 2, 4 ) byref -> r11 "Inlining Arg" ; V122 tmp82 [V122,T70] ( 5, 18 ) ref -> [rsp+0xB0] class-hnd ptr "Inlining Arg" ; V123 tmp83 [V123,T96] ( 5, 8 ) int -> [rsp+0x154] ptr "Inline stloc first use temp" ; V124 tmp84 [V124,T106] ( 2, 8 ) byref -> [rsp+0xA8] ptr "Span.get_Item ptrToSpan" ; V125 tmp85 [V125,T143] ( 2, 4 ) byref -> rsi "Inlining Arg" ; V126 tmp86 [V126,T31] ( 5, 40 ) int -> r8 "Inline stloc first use temp" ; V127 tmp87 [V127,T22] ( 3, 48 ) ushort -> r11 "Inlining Arg" ; V128 tmp88 [V128,T39] ( 2, 32 ) byref -> rdx "Span.get_Item ptrToSpan" ; V129 tmp89 [V129,T40] ( 2, 32 ) byref -> r9 "Inlining Arg" ; V130 tmp90 [V130,T88] ( 5, 10 ) int -> [rsp+0x150] ptr "Inline stloc first use temp" ; V131 tmp91 [V131,T81] ( 3, 12 ) ushort -> [rsp+0x14C] ptr "Inlining Arg" ; V132 tmp92 [V132,T107] ( 2, 8 ) byref -> [rsp+0xA0] ptr "Span.get_Item ptrToSpan" ; V133 tmp93 [V133,T108] ( 2, 8 ) byref -> r11 "Inlining Arg" ; V134 tmp94 [V134,T89] ( 5, 10 ) int -> [rsp+0x148] ptr "Inline stloc first use temp" ; V135 tmp95 [V135,T109] ( 2, 8 ) byref -> [rsp+0x98] ptr "Span.get_Item ptrToSpan" ; V136 tmp96 [V136,T110] ( 2, 8 ) byref -> r8 "Inlining Arg" ; V137 tmp97 [V137,T90] ( 5, 10 ) int -> [rsp+0x144] ptr "Inline stloc first use temp" ; V138 tmp98 [V138,T111] ( 2, 8 ) byref -> [rsp+0x90] ptr "Span.get_Item ptrToSpan" ; V139 tmp99 [V139,T112] ( 2, 8 ) byref -> r8 "Inlining Arg" ; V140 tmp100 [V140,T91] ( 5, 10 ) int -> [rsp+0x140] ptr "Inline stloc first use temp" ; V141 tmp101 [V141,T82] ( 3, 12 ) ushort -> [rsp+0x13C] ptr "Inlining Arg" ; V142 tmp102 [V142,T113] ( 2, 8 ) byref -> [rsp+0x88] ptr "Span.get_Item ptrToSpan" ; V143 tmp103 [V143,T114] ( 2, 8 ) byref -> r11 "Inlining Arg" ; V144 tmp104 [V144,T32] ( 5, 40 ) int -> r11 "Inline stloc first use temp" ; V145 tmp105 [V145,T23] ( 3, 48 ) ushort -> r10 "Inlining Arg" ; V146 tmp106 [V146,T41] ( 2, 32 ) byref -> rdx "Span.get_Item ptrToSpan" ; V147 tmp107 [V147,T42] ( 2, 32 ) byref -> rdx "Inlining Arg" ; V148 tmp108 [V148,T92] ( 5, 10 ) int -> [rsp+0x138] ptr "Inline stloc first use temp" ; V149 tmp109 [V149,T115] ( 2, 8 ) byref -> [rsp+0x80] ptr "Span.get_Item ptrToSpan" ; V150 tmp110 [V150,T116] ( 2, 8 ) byref -> r8 "Inlining Arg" ; V151 tmp111 [V151,T65] ( 6, 19 ) byref -> [rsp+0x78] ptr V19._pointer(offs=0x00) P-INDEP "field V19._pointer (fldOffset=0x0)" ; V152 tmp112 [V152,T50] ( 9, 27 ) int -> [rsp+0x134] ptr V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)" ; V153 tmp113 [V153,T164] ( 2, 2 ) byref -> r15 V25._pointer(offs=0x00) P-INDEP "field V25._pointer (fldOffset=0x0)" ;* V154 tmp114 [V154,T178] ( 0, 0 ) int -> zero-ref ptr V25._length(offs=0x08) P-INDEP "field V25._length (fldOffset=0x8)" ; V155 tmp115 [V155,T159] ( 3, 2 ) byref -> rcx V41._pointer(offs=0x00) P-INDEP "field V41._pointer (fldOffset=0x0)" ; V156 tmp116 [V156,T162] ( 3, 2 ) int -> rdx V41._length(offs=0x08) P-INDEP "field V41._length (fldOffset=0x8)" ; V157 tmp117 [V157,T155] ( 4, 2.50) byref -> rcx V42._pointer(offs=0x00) P-INDEP "field V42._pointer (fldOffset=0x0)" ; V158 tmp118 [V158,T157] ( 4, 2.50) int -> rdx V42._length(offs=0x08) P-INDEP "field V42._length (fldOffset=0x8)" ; V159 tmp119 [V159,T165] ( 2, 2 ) byref -> r15 V48._pointer(offs=0x00) P-INDEP "field V48._pointer (fldOffset=0x0)" ;* V160 tmp120 [V160,T179] ( 0, 0 ) int -> zero-ref ptr V48._length(offs=0x08) P-INDEP "field V48._length (fldOffset=0x8)" ; V161 tmp121 [V161,T144] ( 2, 4 ) byref -> rcx V68._pointer(offs=0x00) P-INDEP "field V68._pointer (fldOffset=0x0)" ;* V162 tmp122 [V162 ] ( 0, 0 ) int -> zero-ref ptr V68._length(offs=0x08) P-INDEP "field V68._length (fldOffset=0x8)" ; V163 tmp123 [V163,T168] ( 3, 1.50) byref -> rcx V75._pointer(offs=0x00) P-INDEP "field V75._pointer (fldOffset=0x0)" ; V164 tmp124 [V164,T175] ( 3, 1.50) int -> rdx V75._length(offs=0x08) P-INDEP "field V75._length (fldOffset=0x8)" ; V165 tmp125 [V165,T55] ( 3, 24 ) byref -> r12 V78._pointer(offs=0x00) P-INDEP "field V78._pointer (fldOffset=0x0)" ;* V166 tmp126 [V166 ] ( 0, 0 ) int -> zero-ref ptr V78._length(offs=0x08) P-INDEP "field V78._length (fldOffset=0x8)" ; V167 tmp127 [V167,T166] ( 2, 2 ) byref -> r15 V79._value(offs=0x00) P-INDEP "field V79._value (fldOffset=0x0)" ; V168 tmp128 [V168,T145] ( 2, 4 ) byref -> rcx V80._pointer(offs=0x00) P-INDEP "field V80._pointer (fldOffset=0x0)" ; V169 tmp129 [V169,T150] ( 2, 4 ) int -> r8 V80._length(offs=0x08) P-INDEP "field V80._length (fldOffset=0x8)" ; V170 tmp130 [V170,T146] ( 2, 4 ) byref -> rcx V81._value(offs=0x00) P-INDEP "field V81._value (fldOffset=0x0)" ; V171 tmp131 [V171,T147] ( 2, 4 ) byref -> rcx V82._pointer(offs=0x00) P-INDEP "field V82._pointer (fldOffset=0x0)" ;* V172 tmp132 [V172 ] ( 0, 0 ) int -> zero-ref ptr V82._length(offs=0x08) P-INDEP "field V82._length (fldOffset=0x8)" ; V173 tmp133 [V173,T148] ( 2, 4 ) byref -> rdx V92._pointer(offs=0x00) P-INDEP "field V92._pointer (fldOffset=0x0)" ; V174 tmp134 [V174,T151] ( 2, 4 ) int -> rax V92._length(offs=0x08) P-INDEP "field V92._length (fldOffset=0x8)" ; V175 tmp135 [V175,T149] ( 2, 4 ) byref -> rdx V93._value(offs=0x00) P-INDEP "field V93._value (fldOffset=0x0)" ; V176 tmp136 [V176,T154] ( 3, 3 ) byref -> rsi V98._pointer(offs=0x00) P-INDEP "field V98._pointer (fldOffset=0x0)" ;* V177 tmp137 [V177 ] ( 0, 0 ) int -> zero-ref ptr V98._length(offs=0x08) P-INDEP "field V98._length (fldOffset=0x8)" ; V178 tmp138 [V178,T152] ( 2, 4 ) long -> r15 "Cast away GC" ; V179 tmp139 [V179 ] ( 4, 20 ) struct (16) [rsp+0x120] do-not-enreg[XSB] must-init addr-exposed ptr "by-value struct argument" ; V180 tmp140 [V180,T122] ( 3, 6 ) byref -> r8 stack-byref "BlockOp address local" ; V181 tmp141 [V181,T46] ( 2, 32 ) long -> r12 "Cast away GC" ; V182 tmp142 [V182,T153] ( 2, 4 ) long -> rsi "Cast away GC" ; V183 GsCookie [V183 ] ( 1, 1 ) long -> [rsp+0x1F0] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V184 tmp144 [V184,T05] ( 60,182.50) byref -> rbp "shadowVar" ; V185 tmp145 [V185,T64] ( 15, 19.50) byref -> [rsp+0x70] ptr "shadowVar" ; V186 tmp146 [V186,T08] ( 14,128 ) byref -> [rsp+0x68] ptr "shadowVar" ; V187 tmp147 [V187,T63] ( 11, 21 ) ref -> [rsp+0x60] ptr "shadowVar" ; V188 cse0 [V188,T06] ( 3,192 ) int -> [rsp+0x11C] "CSE - aggressive" ; V189 cse1 [V189,T17] ( 6, 60 ) int -> r11 "CSE - moderate" ; V190 cse2 [V190,T33] ( 3, 40 ) int -> r10 "CSE - moderate" ; V191 cse3 [V191,T18] ( 7, 56 ) int -> registers "CSE - moderate" ; V192 cse4 [V192,T98] ( 4, 8 ) int -> r10 "CSE - conservative" ; V193 cse5 [V193,T180] ( 2, 0.50) int -> rsi "CSE - conservative" ; V194 cse6 [V194,T01] ( 7,280 ) int -> [rsp+0x118] "CSE - aggressive" ; V195 cse7 [V195,T49] ( 7, 28 ) int -> registers "CSE - conservative" ; V196 cse8 [V196,T27] ( 24, 42 ) int -> registers "CSE - moderate" ; V197 cse9 [V197,T73] ( 3, 16 ) int -> r8 "CSE - conservative" ; V198 cse10 [V198,T58] ( 3, 24 ) int -> r11 "CSE - conservative" ; V199 cse11 [V199,T59] ( 3, 24 ) int -> [rsp+0x114] "CSE - conservative" ; V200 cse12 [V200,T60] ( 3, 24 ) int -> r9 "CSE - conservative" ; V201 cse13 [V201,T61] ( 3, 24 ) int -> [rsp+0x110] "CSE - conservative" ; V202 cse14 [V202,T134] ( 3, 4 ) int -> [rsp+0x10C] "CSE - conservative" ; V203 cse15 [V203,T126] ( 3, 6 ) int -> [rsp+0x108] "CSE - conservative" ; V204 cse16 [V204,T158] ( 4, 2 ) int -> r12 "CSE - conservative" ; V205 cse17 [V205,T09] ( 41,126 ) byref -> [rsp+0x58] "CSE - aggressive" ; V206 cse18 [V206,T74] ( 3, 16 ) int -> [rsp+0x104] "CSE - conservative" ; V207 cse19 [V207,T135] ( 3, 4 ) int -> [rsp+0x100] "CSE - conservative" ; V208 cse20 [V208,T136] ( 3, 4 ) int -> [rsp+0xFC] "CSE - conservative" ; V209 cse21 [V209,T137] ( 3, 4 ) int -> [rsp+0xF8] "CSE - conservative" ; V210 cse22 [V210,T138] ( 3, 4 ) int -> [rsp+0xF4] "CSE - conservative" ; V211 cse23 [V211,T176] ( 3, 1 ) int -> [rsp+0xF0] "CSE - conservative" ; V212 rat0 [V212,T24] ( 3, 48 ) int -> r10 "ReplaceWithLclVar is creating a new local variable" ; V213 rat1 [V213,T25] ( 3, 48 ) int -> r10 "ReplaceWithLclVar is creating a new local variable" ; V214 rat2 [V214,T83] ( 3, 12 ) int -> r11 "ReplaceWithLclVar is creating a new local variable" ; V215 rat3 [V215,T84] ( 3, 12 ) int -> r11 "ReplaceWithLclVar is creating a new local variable" ; TEMP_02 byref -> [rsp+0x40] ; TEMP_01 long -> [rsp+0x38] ; ; Lcl frame size = 504 G_M26773_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 504 vzeroupper vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 vmovdqa xmmword ptr [rsp+50H], xmm4 mov rax, -336 vmovdqa xmmword ptr [rsp+rax+1B0H], xmm4 vmovdqa xmmword ptr [rsp+rax+1C0H], xmm4 vmovdqa xmmword ptr [rsp+rax+1D0H], xmm4 add rax, 48 jne SHORT -5 instr mov qword ptr [rsp+1B0H], rax mov rax, 0xD1FFAB1E mov qword ptr [rsp+1F0H], rax ;; bbWeight=1 PerfScore 18.33 G_M26773_IG02: mov gword ptr [rsp+60H], r9 mov rdi, r8 mov rbx, rdx mov rbp, rcx ;; bbWeight=1 PerfScore 1.75 G_M26773_IG03: xor r14d, r14d lea rcx, bword ptr [rbx+16] cmp dword ptr [rcx+8], 0 jbe G_M26773_IG188 mov r15, bword ptr [rcx] mov rcx, bword ptr [rdi] mov edx, dword ptr [rdi+8] mov qword ptr [rsp+1C8H], r15 cmp byte ptr [r15], 0 je SHORT G_M26773_IG06 ;; bbWeight=1 PerfScore 13.75 G_M26773_IG04: mov bword ptr [rsp+70H], rbx cmp byte ptr [rbx+8], 0 jne SHORT G_M26773_IG05 xor eax, eax jmp SHORT G_M26773_IG07 ;; bbWeight=0.50 PerfScore 3.13 G_M26773_IG05: mov eax, 1 jmp SHORT G_M26773_IG07 ;; bbWeight=0.50 PerfScore 1.13 G_M26773_IG06: mov eax, 2 mov bword ptr [rsp+70H], rbx ;; bbWeight=0.50 PerfScore 0.63 G_M26773_IG07: lea r8, bword ptr [rsp+120H] mov bword ptr [r8], rcx mov dword ptr [r8+8], edx lea rcx, bword ptr [rsp+120H] mov edx, eax call Number:FindSection(ReadOnlySpan`1,int):int mov r12d, eax ;; bbWeight=1 PerfScore 4.50 G_M26773_IG08: xor r13d, r13d mov eax, -1 mov dword ptr [rsp+1E8H], 0xD1FFAB1E xor r10d, r10d mov dword ptr [rsp+1E4H], r10d xor r11d, r11d mov r8d, -1 xor edx, edx xor ecx, ecx mov dword ptr [rsp+1D8H], r12d mov r15d, r12d mov r12, bword ptr [rdi] mov bword ptr [rsp+1B0H], r12 jmp G_M26773_IG35 ;; bbWeight=8 PerfScore 80.00 G_M26773_IG09: cmp r15d, 69 ja G_M26773_IG14 lea r10d, [r15-34] cmp r10d, 5 ja SHORT G_M26773_IG11 mov bword ptr [rsp+68H], rdi mov dword ptr [rsp+1E0H], r11d mov r10d, r10d lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*r10] lea r11, G_M26773_IG02 add rdi, r11 jmp rdi ;; bbWeight=8 PerfScore 88.00 G_M26773_IG10: mov r15d, esi mov rdi, bword ptr [rsp+68H] mov r11d, dword ptr [rsp+1E0H] jmp G_M26773_IG35 ;; bbWeight=4 PerfScore 17.00 G_M26773_IG11: lea r10d, [r15-44] cmp r10d, 4 ja SHORT G_M26773_IG13 mov bword ptr [rsp+68H], rdi mov r10d, r10d lea r15, [reloc @RWD24] mov r15d, dword ptr [r15+4*r10] lea rdi, G_M26773_IG02 add r15, rdi jmp r15 ;; bbWeight=8 PerfScore 70.00 G_M26773_IG12: mov r15d, esi mov rdi, bword ptr [rsp+68H] jmp G_M26773_IG35 ;; bbWeight=4 PerfScore 13.00 G_M26773_IG13: cmp r15d, 69 je G_M26773_IG29 mov r15d, esi jmp G_M26773_IG35 ;; bbWeight=8 PerfScore 28.00 G_M26773_IG14: cmp r15d, 92 je G_M26773_IG28 cmp r15d, 101 je G_M26773_IG29 cmp r15d, 0x2030 je G_M26773_IG23 mov r15d, esi jmp G_M26773_IG35 ;; bbWeight=8 PerfScore 48.00 G_M26773_IG15: inc r13d mov r15d, esi mov rdi, bword ptr [rsp+68H] mov r11d, dword ptr [rsp+1E0H] jmp G_M26773_IG35 ;; bbWeight=8 PerfScore 36.00 G_M26773_IG16: mov r9d, dword ptr [rsp+1E8H] cmp r9d, 0xD1FFAB1E jne SHORT G_M26773_IG17 mov r9d, r13d ;; bbWeight=8 PerfScore 20.00 G_M26773_IG17: inc r13d mov edi, r13d mov dword ptr [rsp+1E8H], r9d mov dword ptr [rsp+1E4H], edi mov r15d, esi mov rdi, bword ptr [rsp+68H] jmp G_M26773_IG35 ;; bbWeight=8 PerfScore 46.00 G_M26773_IG18: test eax, eax mov r15d, esi mov rdi, bword ptr [rsp+68H] jge G_M26773_IG35 mov eax, r13d jmp G_M26773_IG35 ;; bbWeight=8 PerfScore 38.00 G_M26773_IG19: test r13d, r13d mov r15d, esi mov rdi, bword ptr [rsp+68H] jle G_M26773_IG35 mov dword ptr [rsp+1ECH], eax test eax, eax mov eax, dword ptr [rsp+1ECH] jge G_M26773_IG35 test r8d, r8d jl SHORT G_M26773_IG21 cmp r8d, r13d jne SHORT G_M26773_IG20 inc r14d jmp G_M26773_IG35 ;; bbWeight=8 PerfScore 84.00 G_M26773_IG20: mov dword ptr [rsp+1DCH], 1 mov edx, dword ptr [rsp+1DCH] ;; bbWeight=8 PerfScore 16.00 G_M26773_IG21: mov r8d, r13d mov r14d, 1 jmp G_M26773_IG35 ;; bbWeight=8 PerfScore 20.00 G_M26773_IG22: add ecx, 2 mov r15d, esi mov rdi, bword ptr [rsp+68H] mov r11d, dword ptr [rsp+1E0H] jmp G_M26773_IG35 ;; bbWeight=8 PerfScore 36.00 G_M26773_IG23: add ecx, 3 mov r15d, esi jmp G_M26773_IG35 ;; bbWeight=8 PerfScore 20.00 G_M26773_IG24: cmp esi, ebx mov dword ptr [rsp+118H], ebx mov dword ptr [rsp+1C4H], r15d mov r15d, esi mov r11d, dword ptr [rsp+1E0H] jge SHORT G_M26773_IG27 movsxd rdi, r15d movzx rdi, word ptr [r12+2*rdi] test edi, edi mov dword ptr [rsp+11CH], edi je SHORT G_M26773_IG26 inc r15d mov dword ptr [rsp+1D4H], r15d mov edi, dword ptr [rsp+1C4H] cmp dword ptr [rsp+11CH], edi mov dword ptr [rsp+1E0H], r11d mov r15d, edi mov ebx, dword ptr [rsp+118H] mov esi, dword ptr [rsp+1D4H] jne SHORT G_M26773_IG24 ;; bbWeight=64 PerfScore 1056.00 G_M26773_IG25: mov r15d, esi mov rdi, bword ptr [rsp+68H] mov r11d, dword ptr [rsp+1E0H] jmp G_M26773_IG35 ;; bbWeight=8 PerfScore 34.00 G_M26773_IG26: mov rdi, bword ptr [rsp+68H] jmp G_M26773_IG35 ;; bbWeight=32 PerfScore 96.00 G_M26773_IG27: mov rdi, bword ptr [rsp+68H] jmp G_M26773_IG35 ;; bbWeight=32 PerfScore 96.00 G_M26773_IG28: cmp esi, ebx mov r15d, esi jge SHORT G_M26773_IG35 movsxd rbx, r15d movzx rbx, word ptr [r12+2*rbx] test ebx, ebx je SHORT G_M26773_IG35 inc r15d jmp SHORT G_M26773_IG35 ;; bbWeight=8 PerfScore 58.00 G_M26773_IG29: cmp esi, ebx jge SHORT G_M26773_IG30 movsxd r15, esi movzx r15, word ptr [r12+2*r15] cmp r15d, 48 je SHORT G_M26773_IG33 ;; bbWeight=8 PerfScore 38.00 G_M26773_IG30: lea r15d, [rsi+1] cmp r15d, ebx mov dword ptr [rsp+118H], ebx mov r15d, esi jge SHORT G_M26773_IG35 movsxd rbx, r15d movzx rbx, word ptr [r12+2*rbx] cmp ebx, 43 je SHORT G_M26773_IG31 cmp ebx, 45 jne SHORT G_M26773_IG35 ;; bbWeight=8 PerfScore 62.00 G_M26773_IG31: lea ebx, [r15+1] movsxd rbx, ebx cmp word ptr [r12+2*rbx], 48 mov ebx, dword ptr [rsp+118H] jne SHORT G_M26773_IG35 ;; bbWeight=8 PerfScore 38.00 G_M26773_IG32: mov esi, r15d ;; bbWeight=4 PerfScore 1.00 G_M26773_IG33: inc esi cmp esi, ebx jge SHORT G_M26773_IG34 movsxd r11, esi cmp word ptr [r12+2*r11], 48 je SHORT G_M26773_IG33 ;; bbWeight=64 PerfScore 304.00 G_M26773_IG34: mov r11d, 1 mov r15d, esi ;; bbWeight=8 PerfScore 4.00 G_M26773_IG35: mov ebx, dword ptr [rdi+8] cmp r15d, ebx jge SHORT G_M26773_IG37 ;; bbWeight=64 PerfScore 208.00 G_M26773_IG36: lea esi, [r15+1] movsxd r15, r15d movzx r15, word ptr [r12+2*r15] test r15d, r15d je SHORT G_M26773_IG37 cmp r15d, 59 jne G_M26773_IG09 ;; bbWeight=16 PerfScore 84.00 G_M26773_IG37: xor rbx, rbx mov bword ptr [rsp+1B0H], rbx test eax, eax jge SHORT G_M26773_IG39 ;; bbWeight=8 PerfScore 20.00 G_M26773_IG38: mov eax, r13d ;; bbWeight=2 PerfScore 0.50 G_M26773_IG39: test r8d, r8d jl SHORT G_M26773_IG42 ;; bbWeight=8 PerfScore 10.00 G_M26773_IG40: cmp r8d, eax jne SHORT G_M26773_IG41 lea r8d, [r14+2*r14] sub ecx, r8d jmp SHORT G_M26773_IG42 ;; bbWeight=2 PerfScore 8.00 G_M26773_IG41: mov dword ptr [rsp+1DCH], 1 mov edx, dword ptr [rsp+1DCH] ;; bbWeight=2 PerfScore 4.00 G_M26773_IG42: mov r15, qword ptr [rsp+1C8H] cmp byte ptr [r15], 0 je G_M26773_IG49 ;; bbWeight=8 PerfScore 32.00 G_M26773_IG43: mov rbx, bword ptr [rsp+70H] lea r8, bword ptr [rbx+4] add dword ptr [r8], ecx mov dword ptr [rsp+1E0H], r11d test r11d, r11d jne SHORT G_M26773_IG45 ;; bbWeight=4 PerfScore 35.00 G_M26773_IG44: mov ecx, r13d add ecx, dword ptr [rbx+4] mov dword ptr [rsp+1ECH], eax sub ecx, eax mov dword ptr [rsp+1DCH], edx mov dword ptr [rsp+168H], ecx jmp SHORT G_M26773_IG46 ;; bbWeight=2 PerfScore 15.00 G_M26773_IG45: mov dword ptr [rsp+168H], r13d mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1DCH], edx ;; bbWeight=2 PerfScore 6.00 G_M26773_IG46: mov rcx, rbx mov edx, dword ptr [rsp+168H] xor r8d, r8d call Number:RoundNumber(byref,int,bool) mov qword ptr [rsp+1C8H], r15 cmp byte ptr [r15], 0 jne G_M26773_IG51 ;; bbWeight=4 PerfScore 26.00 G_M26773_IG47: vmovdqu xmm0, xmmword ptr [rdi] vmovdqu xmmword ptr [rsp+120H], xmm0 ;; bbWeight=4 PerfScore 12.00 G_M26773_IG48: lea rcx, bword ptr [rsp+120H] mov edx, 2 call Number:FindSection(ReadOnlySpan`1,int):int mov r12d, eax mov eax, dword ptr [rsp+1D8H] cmp r12d, eax mov dword ptr [rsp+1D8H], eax je SHORT G_M26773_IG51 mov eax, r12d mov bword ptr [rsp+70H], rbx mov r12d, eax jmp G_M26773_IG08 ;; bbWeight=4 PerfScore 35.00 G_M26773_IG49: mov rbx, bword ptr [rsp+70H] cmp byte ptr [rbx+10], 3 je SHORT G_M26773_IG50 mov byte ptr [rbx+8], 0 ;; bbWeight=0.50 PerfScore 2.50 G_M26773_IG50: xor ecx, ecx mov dword ptr [rbx+4], ecx mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1DCH], edx mov dword ptr [rsp+1E0H], r11d mov qword ptr [rsp+1C8H], r15 ;; bbWeight=0.50 PerfScore 2.63 G_M26773_IG51: mov r9d, dword ptr [rsp+1E8H] mov eax, dword ptr [rsp+1ECH] cmp r9d, eax jl SHORT G_M26773_IG53 ;; bbWeight=1 PerfScore 3.25 G_M26773_IG52: xor ecx, ecx jmp SHORT G_M26773_IG54 ;; bbWeight=0.50 PerfScore 1.13 G_M26773_IG53: mov ecx, eax sub ecx, r9d ;; bbWeight=0.50 PerfScore 0.25 G_M26773_IG54: mov r9d, ecx mov r10d, dword ptr [rsp+1E4H] cmp r10d, eax jg SHORT G_M26773_IG56 ;; bbWeight=1 PerfScore 2.50 G_M26773_IG55: xor ecx, ecx jmp SHORT G_M26773_IG57 ;; bbWeight=0.50 PerfScore 1.13 G_M26773_IG56: mov ecx, eax sub ecx, r10d ;; bbWeight=0.50 PerfScore 0.25 G_M26773_IG57: mov dword ptr [rsp+1E4H], ecx cmp dword ptr [rsp+1E0H], 0 je SHORT G_M26773_IG59 ;; bbWeight=1 PerfScore 3.00 G_M26773_IG58: mov r14d, eax xor r12d, r12d mov bword ptr [rsp+70H], rbx jmp SHORT G_M26773_IG62 ;; bbWeight=0.50 PerfScore 1.75 G_M26773_IG59: mov bword ptr [rsp+70H], rbx mov r12d, dword ptr [rbx+4] cmp r12d, eax jg SHORT G_M26773_IG60 mov r14d, eax jmp SHORT G_M26773_IG61 ;; bbWeight=0.50 PerfScore 3.25 G_M26773_IG60: mov r14d, r12d ;; bbWeight=0.50 PerfScore 0.13 G_M26773_IG61: mov dword ptr [rsp+1ECH], eax sub r12d, eax mov eax, dword ptr [rsp+1ECH] ;; bbWeight=0.50 PerfScore 1.13 G_M26773_IG62: mov r8d, dword ptr [rsp+1D8H] mov dword ptr [rsp+1D4H], r8d lea r15, bword ptr [rsp+48H] mov bword ptr [rsp+78H], r15 mov r8d, 4 mov ebx, -1 cmp dword ptr [rsp+1DCH], 0 je G_M26773_IG75 ;; bbWeight=1 PerfScore 6.00 G_M26773_IG63: mov rsi, gword ptr [rsp+60H] mov r15, gword ptr [rsi+56] cmp dword ptr [r15+8], 0 jle G_M26773_IG65 mov gword ptr [rsp+60H], rsi mov r15, gword ptr [rsi+8] mov gword ptr [rsp+E8H], r15 xor r15d, r15d mov dword ptr [rsp+1ACH], r15d xor r15d, r15d mov dword ptr [rsp+1A8H], r15d mov r15, gword ptr [rsp+E8H] mov r15d, dword ptr [r15+8] mov dword ptr [rsp+1A4H], r15d test r15d, r15d je SHORT G_M26773_IG64 mov r15, gword ptr [rsp+E8H] cmp dword ptr [r15+8], 0 jbe G_M26773_IG188 mov gword ptr [rsp+E8H], r15 mov r15d, dword ptr [r15+16] mov dword ptr [rsp+1A8H], r15d ;; bbWeight=0.50 PerfScore 12.88 G_M26773_IG64: mov r15d, dword ptr [rsp+1A8H] mov dword ptr [rsp+1A0H], r15d mov r15d, r14d test r12d, r12d jl SHORT G_M26773_IG66 mov dword ptr [rsp+170H], r15d xor r15d, r15d mov dword ptr [rsp+16CH], r15d jmp SHORT G_M26773_IG67 ;; bbWeight=0.50 PerfScore 3.88 G_M26773_IG65: mov gword ptr [rsp+60H], rsi jmp G_M26773_IG75 ;; bbWeight=0.25 PerfScore 0.75 G_M26773_IG66: mov dword ptr [rsp+170H], r15d mov dword ptr [rsp+16CH], r12d ;; bbWeight=0.50 PerfScore 1.00 G_M26773_IG67: mov r15d, dword ptr [rsp+170H] add r15d, dword ptr [rsp+16CH] cmp r9d, r15d jg SHORT G_M26773_IG68 jmp SHORT G_M26773_IG69 ;; bbWeight=0.50 PerfScore 2.63 G_M26773_IG68: mov dword ptr [rsp+1E8H], r9d mov r15d, r9d mov r9d, dword ptr [rsp+1E8H] ;; bbWeight=0.50 PerfScore 1.13 G_M26773_IG69: mov dword ptr [rsp+19CH], r15d mov esi, dword ptr [rsp+1A0H] cmp r15d, esi jle G_M26773_IG75 ;; bbWeight=0.50 PerfScore 1.63 G_M26773_IG70: mov dword ptr [rsp+1A0H], esi test esi, esi je G_M26773_IG75 inc ebx cmp ebx, r8d jl G_M26773_IG72 ;; bbWeight=4 PerfScore 15.00 G_M26773_IG71: mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d mov dword ptr [rsp+134H], r8d lea r15d, [r8+r8] movsxd rdx, r15d mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov r15, rax lea rcx, bword ptr [r15+16] mov r8d, dword ptr [r15+8] mov eax, dword ptr [rsp+134H] cmp eax, r8d ja G_M26773_IG187 movsxd r8, eax shl r8, 2 mov rdx, bword ptr [rsp+78H] call Buffer:Memmove(byref,byref,long) lea rdx, bword ptr [r15+16] mov eax, dword ptr [r15+8] mov r15, rdx mov bword ptr [rsp+78H], r15 mov r8d, eax mov eax, dword ptr [rsp+1ECH] mov r9d, dword ptr [rsp+1E8H] ;; bbWeight=2 PerfScore 40.50 G_M26773_IG72: mov dword ptr [rsp+134H], r8d cmp ebx, r8d jae G_M26773_IG188 movsxd r15, ebx mov rsi, bword ptr [rsp+78H] mov r10d, dword ptr [rsp+1A8H] mov dword ptr [rsi+4*r15], r10d mov r15d, dword ptr [rsp+1A4H] dec r15d cmp dword ptr [rsp+1ACH], r15d jge SHORT G_M26773_IG74 ;; bbWeight=4 PerfScore 35.00 G_M26773_IG73: mov r15d, dword ptr [rsp+1ACH] inc r15d mov r10, gword ptr [rsp+E8H] cmp r15d, dword ptr [r10+8] jae G_M26773_IG188 mov dword ptr [rsp+1ACH], r15d movsxd r10, r15d mov r15, gword ptr [rsp+E8H] mov r10d, dword ptr [r15+4*r10+16] mov dword ptr [rsp+1A0H], r10d ;; bbWeight=2 PerfScore 21.00 G_M26773_IG74: mov r10d, dword ptr [rsp+1A8H] mov r15d, dword ptr [rsp+1A0H] add r10d, r15d cmp dword ptr [rsp+19CH], r10d mov dword ptr [rsp+1A8H], r10d mov esi, r15d mov r8d, dword ptr [rsp+134H] jg G_M26773_IG70 ;; bbWeight=4 PerfScore 26.00 G_M26773_IG75: mov r15, bword ptr [rsp+70H] cmp byte ptr [r15+8], 0 je G_M26773_IG82 ;; bbWeight=1 PerfScore 4.00 G_M26773_IG76: cmp dword ptr [rsp+1D4H], 0 jne G_M26773_IG81 mov bword ptr [rsp+70H], r15 cmp dword ptr [r15+4], 0 je G_M26773_IG84 mov rsi, gword ptr [rsp+60H] mov r15, gword ptr [rsi+40] mov gword ptr [rsp+E0H], r15 test r15, r15 je G_M26773_IG84 ;; bbWeight=0.50 PerfScore 5.63 G_M26773_IG77: mov r15d, dword ptr [rbp+8] mov dword ptr [rsp+164H], r15d mov r15, gword ptr [rsp+E0H] mov r15d, dword ptr [r15+8] mov dword ptr [rsp+F0H], r15d cmp r15d, 1 jne SHORT G_M26773_IG80 lea r15, bword ptr [rbp+16] mov rsi, r15 mov esi, dword ptr [rsi+8] cmp dword ptr [rsp+164H], esi jae SHORT G_M26773_IG79 ;; bbWeight=0.25 PerfScore 3.25 G_M26773_IG78: mov rsi, bword ptr [r15] mov bword ptr [rsp+40H], rsi mov r15d, dword ptr [rsp+164H] movsxd r15, r15d cmp dword ptr [rsp+F0H], 0 jbe G_M26773_IG188 mov rsi, gword ptr [rsp+E0H] movzx rsi, word ptr [rsi+12] mov r10, bword ptr [rsp+40H] mov word ptr [r10+2*r15], si mov r15d, dword ptr [rsp+164H] inc r15d mov dword ptr [rbp+8], r15d jmp SHORT G_M26773_IG84 ;; bbWeight=0.50 PerfScore 7.75 G_M26773_IG79: mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d mov dword ptr [rsp+134H], r8d jmp SHORT G_M26773_IG83 ;; bbWeight=0.12 PerfScore 0.60 G_M26773_IG80: mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d mov dword ptr [rsp+134H], r8d jmp SHORT G_M26773_IG83 ;; bbWeight=0.12 PerfScore 0.60 G_M26773_IG81: mov bword ptr [rsp+70H], r15 jmp SHORT G_M26773_IG84 ;; bbWeight=0.25 PerfScore 0.75 G_M26773_IG82: mov bword ptr [rsp+70H], r15 jmp SHORT G_M26773_IG84 ;; bbWeight=0.50 PerfScore 1.50 G_M26773_IG83: mov rcx, rbp mov rdx, gword ptr [rsp+E0H] call ValueStringBuilder:AppendSlow(String):this mov eax, dword ptr [rsp+1ECH] mov r8d, dword ptr [rsp+134H] mov r9d, dword ptr [rsp+1E8H] ;; bbWeight=0.50 PerfScore 2.63 G_M26773_IG84: xor esi, esi mov dword ptr [rsp+1BCH], esi mov rsi, bword ptr [rdi] mov bword ptr [rsp+188H], rsi mov r15, qword ptr [rsp+1C8H] jmp G_M26773_IG180 ;; bbWeight=1 PerfScore 7.25 G_M26773_IG85: test r12d, r12d jle G_M26773_IG100 cmp ecx, 35 je G_M26773_IG99 cmp ecx, 46 je G_M26773_IG99 mov dword ptr [rsp+1C4H], ecx cmp ecx, 48 je SHORT G_M26773_IG86 mov ecx, dword ptr [rsp+1C4H] jmp G_M26773_IG100 ;; bbWeight=2 PerfScore 18.00 G_M26773_IG86: mov ecx, dword ptr [rsp+1C4H] jmp G_M26773_IG99 ;; bbWeight=1 PerfScore 3.00 G_M26773_IG87: movzx r11, byte ptr [r15] test r11d, r11d jne SHORT G_M26773_IG88 mov r11d, 48 mov dword ptr [rsp+1E8H], r9d mov dword ptr [rsp+134H], r8d jmp SHORT G_M26773_IG89 ;; bbWeight=8 PerfScore 60.00 G_M26773_IG88: inc r15 mov qword ptr [rsp+180H], r15 mov dword ptr [rsp+1E8H], r9d mov dword ptr [rsp+134H], r8d mov r15, qword ptr [rsp+180H] ;; bbWeight=8 PerfScore 34.00 G_M26773_IG89: movzx r11, r11w mov r8d, dword ptr [rbp+8] lea rdx, bword ptr [rbp+16] mov r9, rdx mov r9d, dword ptr [r9+8] mov dword ptr [rsp+114H], r9d cmp r8d, r9d jae SHORT G_M26773_IG90 mov qword ptr [rsp+180H], r15 mov bword ptr [rsp+58H], rdx mov r9, rdx cmp r8d, dword ptr [rsp+114H] jae G_M26773_IG188 mov r9, bword ptr [r9] mov bword ptr [rsp+40H], r9 movsxd r9, r8d mov r15, bword ptr [rsp+40H] mov word ptr [r15+2*r9], r11w inc r8d mov dword ptr [rbp+8], r8d jmp SHORT G_M26773_IG91 ;; bbWeight=8 PerfScore 160.00 G_M26773_IG90: mov dword ptr [rsp+1C4H], ecx mov bword ptr [rsp+58H], rdx mov dword ptr [rsp+1ECH], eax mov rcx, rbp mov edx, r11d call ValueStringBuilder:GrowAndAppend(ushort):this mov qword ptr [rsp+180H], r15 mov eax, dword ptr [rsp+1ECH] mov ecx, dword ptr [rsp+1C4H] ;; bbWeight=8 PerfScore 60.00 G_M26773_IG91: cmp dword ptr [rsp+1DCH], 0 je G_M26773_IG98 cmp r14d, 1 jle G_M26773_IG98 test ebx, ebx jl G_M26773_IG98 cmp ebx, dword ptr [rsp+134H] jae G_M26773_IG188 movsxd r11, ebx mov r9, bword ptr [rsp+78H] mov r11d, dword ptr [r9+4*r11] inc r11d cmp r11d, r14d jne G_M26773_IG98 mov r11, gword ptr [rsp+60H] mov r9, gword ptr [r11+56] test r9, r9 je G_M26773_IG97 ;; bbWeight=8 PerfScore 124.00 G_M26773_IG92: mov r11d, dword ptr [rbp+8] mov r8d, dword ptr [r9+8] mov dword ptr [rsp+104H], r8d cmp r8d, 1 jne SHORT G_M26773_IG95 mov rdx, bword ptr [rsp+58H] mov r8, rdx mov r8d, dword ptr [r8+8] cmp r11d, r8d jae SHORT G_M26773_IG94 ;; bbWeight=4 PerfScore 43.00 G_M26773_IG93: cmp r11d, r8d jae G_M26773_IG188 mov rdx, bword ptr [rdx] movsxd r8, r11d cmp dword ptr [rsp+104H], 0 jbe G_M26773_IG188 movzx r9, word ptr [r9+12] mov word ptr [rdx+2*r8], r9w inc r11d mov dword ptr [rbp+8], r11d jmp SHORT G_M26773_IG97 ;; bbWeight=8 PerfScore 94.00 G_M26773_IG94: mov dword ptr [rsp+1C4H], ecx mov dword ptr [rsp+1ECH], eax jmp SHORT G_M26773_IG96 ;; bbWeight=2 PerfScore 8.00 G_M26773_IG95: mov dword ptr [rsp+1C4H], ecx mov dword ptr [rsp+1ECH], eax jmp SHORT G_M26773_IG96 ;; bbWeight=2 PerfScore 8.00 G_M26773_IG96: mov rcx, rbp mov rdx, r9 call ValueStringBuilder:AppendSlow(String):this mov eax, dword ptr [rsp+1ECH] mov ecx, dword ptr [rsp+1C4H] ;; bbWeight=8 PerfScore 28.00 G_M26773_IG97: dec ebx ;; bbWeight=8 PerfScore 2.00 G_M26773_IG98: dec r14d dec r12d mov r8d, dword ptr [rsp+134H] mov r9d, dword ptr [rsp+1E8H] mov r15, qword ptr [rsp+180H] ;; bbWeight=8 PerfScore 28.00 G_M26773_IG99: test r12d, r12d jg G_M26773_IG87 ;; bbWeight=16 PerfScore 20.00 G_M26773_IG100: cmp ecx, 69 ja G_M26773_IG107 lea r11d, [rcx-34] cmp r11d, 5 ja SHORT G_M26773_IG102 mov bword ptr [rsp+68H], rdi mov qword ptr [rsp+190H], rsi mov r11d, r11d lea rsi, [reloc @RWD44] mov esi, dword ptr [rsi+4*r11] lea rdi, G_M26773_IG02 add rsi, rdi jmp rsi ;; bbWeight=2 PerfScore 22.00 G_M26773_IG101: mov dword ptr [rsp+134H], r8d mov rsi, qword ptr [rsp+190H] mov rdi, bword ptr [rsp+68H] jmp G_M26773_IG178 ;; bbWeight=1 PerfScore 5.00 G_M26773_IG102: lea r11d, [rcx-44] cmp r11d, 4 ja SHORT G_M26773_IG106 mov dword ptr [rsp+1C4H], ecx mov dword ptr [rsp+134H], r8d mov r11d, r11d lea rcx, [reloc @RWD68] mov ecx, dword ptr [rcx+4*r11] lea r8, G_M26773_IG02 add rcx, r8 jmp rcx ;; bbWeight=2 PerfScore 19.50 G_M26773_IG103: mov bword ptr [rsp+68H], rdi mov qword ptr [rsp+190H], rsi mov r8d, dword ptr [rsp+134H] jmp SHORT G_M26773_IG108 ;; bbWeight=1 PerfScore 5.00 G_M26773_IG104: mov ecx, dword ptr [rsp+1C4H] jmp G_M26773_IG178 ;; bbWeight=1 PerfScore 3.00 G_M26773_IG105: mov r8d, dword ptr [rsp+134H] jmp G_M26773_IG180 ;; bbWeight=1 PerfScore 3.00 G_M26773_IG106: cmp ecx, 69 je G_M26773_IG157 mov dword ptr [rsp+134H], r8d jmp G_M26773_IG178 ;; bbWeight=2 PerfScore 8.50 G_M26773_IG107: cmp ecx, 92 je G_M26773_IG155 cmp ecx, 101 je G_M26773_IG157 cmp ecx, 0x2030 je G_M26773_IG136 mov dword ptr [rsp+134H], r8d jmp G_M26773_IG178 ;; bbWeight=2 PerfScore 13.50 G_M26773_IG108: test r12d, r12d jge SHORT G_M26773_IG111 inc r12d mov dword ptr [rsp+1E8H], r9d cmp r14d, r9d jle SHORT G_M26773_IG109 xor ecx, ecx jmp SHORT G_M26773_IG110 ;; bbWeight=2 PerfScore 12.00 G_M26773_IG109: mov ecx, 48 ;; bbWeight=2 PerfScore 0.50 G_M26773_IG110: movzx rcx, cx mov edi, ecx jmp SHORT G_M26773_IG115 ;; bbWeight=2 PerfScore 5.00 G_M26773_IG111: cmp byte ptr [r15], 0 jne SHORT G_M26773_IG113 cmp r14d, dword ptr [rsp+1E4H] jg SHORT G_M26773_IG112 xor ecx, ecx jmp SHORT G_M26773_IG114 ;; bbWeight=2 PerfScore 14.50 G_M26773_IG112: mov ecx, 48 jmp SHORT G_M26773_IG114 ;; bbWeight=2 PerfScore 4.50 G_M26773_IG113: mov rcx, r15 lea r15, [rcx+1] movzx rcx, byte ptr [rcx] ;; bbWeight=2 PerfScore 5.50 G_M26773_IG114: movzx rcx, cx mov esi, ecx mov dword ptr [rsp+1E8H], r9d mov edi, esi ;; bbWeight=2 PerfScore 3.50 G_M26773_IG115: test edi, edi je G_M26773_IG127 mov ecx, dword ptr [rbp+8] lea r11, bword ptr [rbp+16] mov rsi, r11 mov r11, rsi mov r11d, dword ptr [r11+8] cmp ecx, r11d jae SHORT G_M26773_IG116 mov dword ptr [rsp+1C0H], ebx mov rbx, rsi cmp ecx, r11d jae G_M26773_IG188 mov r11, bword ptr [rbx] movsxd rbx, ecx mov word ptr [r11+2*rbx], di inc ecx mov dword ptr [rbp+8], ecx jmp SHORT G_M26773_IG117 ;; bbWeight=2 PerfScore 33.00 G_M26773_IG116: mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+134H], r8d mov rcx, rbp mov edx, edi call ValueStringBuilder:GrowAndAppend(ushort):this mov dword ptr [rsp+1C0H], ebx mov eax, dword ptr [rsp+1ECH] mov r8d, dword ptr [rsp+134H] ;; bbWeight=2 PerfScore 13.00 G_M26773_IG117: cmp dword ptr [rsp+1DCH], 0 je G_M26773_IG124 cmp r14d, 1 jle G_M26773_IG123 mov ebx, dword ptr [rsp+1C0H] test ebx, ebx jl G_M26773_IG127 mov dword ptr [rsp+134H], r8d cmp ebx, r8d jae G_M26773_IG188 movsxd rcx, ebx mov rdi, bword ptr [rsp+78H] mov ecx, dword ptr [rdi+4*rcx] inc ecx cmp ecx, r14d jne G_M26773_IG122 mov r11, gword ptr [rsp+60H] mov rcx, gword ptr [r11+56] test rcx, rcx je G_M26773_IG126 ;; bbWeight=2 PerfScore 33.50 G_M26773_IG118: mov edi, dword ptr [rbp+8] mov dword ptr [rsp+160H], edi mov edi, dword ptr [rcx+8] mov dword ptr [rsp+100H], edi cmp edi, 1 jne SHORT G_M26773_IG121 mov rdi, rsi mov edi, dword ptr [rdi+8] mov dword ptr [rsp+10CH], edi cmp dword ptr [rsp+160H], edi jae SHORT G_M26773_IG120 ;; bbWeight=1 PerfScore 12.50 G_M26773_IG119: mov edi, dword ptr [rsp+160H] cmp edi, dword ptr [rsp+10CH] jae G_M26773_IG188 mov rsi, bword ptr [rsi] mov dword ptr [rsp+160H], edi movsxd rdi, edi cmp dword ptr [rsp+100H], 0 jbe G_M26773_IG188 movzx rcx, word ptr [rcx+12] mov word ptr [rsi+2*rdi], cx mov edi, dword ptr [rsp+160H] inc edi mov dword ptr [rbp+8], edi jmp SHORT G_M26773_IG126 ;; bbWeight=2 PerfScore 31.00 G_M26773_IG120: mov dword ptr [rsp+1ECH], eax mov gword ptr [rsp+D8H], rcx jmp SHORT G_M26773_IG125 ;; bbWeight=0.50 PerfScore 2.00 G_M26773_IG121: mov dword ptr [rsp+1ECH], eax mov gword ptr [rsp+D8H], rcx jmp SHORT G_M26773_IG125 ;; bbWeight=0.50 PerfScore 2.00 G_M26773_IG122: mov r8d, dword ptr [rsp+134H] jmp SHORT G_M26773_IG127 ;; bbWeight=1 PerfScore 3.00 G_M26773_IG123: mov ebx, dword ptr [rsp+1C0H] jmp SHORT G_M26773_IG127 ;; bbWeight=1 PerfScore 3.00 G_M26773_IG124: mov ebx, dword ptr [rsp+1C0H] jmp SHORT G_M26773_IG127 ;; bbWeight=1 PerfScore 3.00 G_M26773_IG125: mov rcx, rbp mov rdx, gword ptr [rsp+D8H] call ValueStringBuilder:AppendSlow(String):this mov eax, dword ptr [rsp+1ECH] ;; bbWeight=2 PerfScore 6.50 G_M26773_IG126: dec ebx mov r8d, dword ptr [rsp+134H] ;; bbWeight=2 PerfScore 2.50 G_M26773_IG127: dec r14d mov rsi, qword ptr [rsp+190H] mov rdi, bword ptr [rsp+68H] mov r9d, dword ptr [rsp+1E8H] jmp G_M26773_IG180 ;; bbWeight=2 PerfScore 10.50 G_M26773_IG128: test r14d, r14d setne cl movzx rcx, cl mov r8d, dword ptr [rsp+1BCH] or ecx, r8d mov dword ptr [rsp+1BCH], r8d mov r8d, dword ptr [rsp+134H] jne G_M26773_IG180 cmp dword ptr [rsp+1E4H], 0 jl SHORT G_M26773_IG129 mov dword ptr [rsp+1ECH], eax cmp eax, r13d mov eax, dword ptr [rsp+1ECH] jge G_M26773_IG180 cmp byte ptr [r15], 0 je G_M26773_IG180 ;; bbWeight=2 PerfScore 28.00 G_M26773_IG129: mov r11, gword ptr [rsp+60H] mov r11, gword ptr [r11+48] mov gword ptr [rsp+D0H], r11 test r11, r11 je G_M26773_IG135 ;; bbWeight=2 PerfScore 10.50 G_M26773_IG130: mov r11d, dword ptr [rbp+8] mov dword ptr [rsp+15CH], r11d mov r11, gword ptr [rsp+D0H] mov r11d, dword ptr [r11+8] mov dword ptr [rsp+FCH], r11d cmp r11d, 1 jne G_M26773_IG133 lea r11, bword ptr [rbp+16] mov r10, r11 mov r10d, dword ptr [r10+8] cmp dword ptr [rsp+15CH], r10d mov dword ptr [rsp+134H], r8d jae SHORT G_M26773_IG132 ;; bbWeight=1 PerfScore 14.00 G_M26773_IG131: mov bword ptr [rsp+C8H], r11 mov r11d, dword ptr [rsp+15CH] cmp r11d, r10d jae G_M26773_IG188 mov r10, bword ptr [rsp+C8H] mov r10, bword ptr [r10] mov bword ptr [rsp+40H], r10 mov dword ptr [rsp+15CH], r11d movsxd r11, r11d cmp dword ptr [rsp+FCH], 0 jbe G_M26773_IG188 mov r10, gword ptr [rsp+D0H] movzx r10, word ptr [r10+12] mov r8, bword ptr [rsp+40H] mov word ptr [r8+2*r11], r10w mov r11d, dword ptr [rsp+15CH] inc r11d mov dword ptr [rbp+8], r11d mov r8d, dword ptr [rsp+134H] jmp SHORT G_M26773_IG135 ;; bbWeight=2 PerfScore 41.50 G_M26773_IG132: mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d jmp SHORT G_M26773_IG134 ;; bbWeight=0.50 PerfScore 2.00 G_M26773_IG133: mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d mov dword ptr [rsp+134H], r8d jmp SHORT G_M26773_IG134 ;; bbWeight=0.50 PerfScore 2.50 G_M26773_IG134: mov rcx, rbp mov rdx, gword ptr [rsp+D0H] call ValueStringBuilder:AppendSlow(String):this mov eax, dword ptr [rsp+1ECH] mov r8d, dword ptr [rsp+134H] mov r9d, dword ptr [rsp+1E8H] ;; bbWeight=2 PerfScore 10.50 G_M26773_IG135: mov r11d, 1 mov dword ptr [rsp+1BCH], r11d jmp G_M26773_IG180 ;; bbWeight=2 PerfScore 6.50 G_M26773_IG136: mov rcx, gword ptr [rsp+60H] mov rcx, gword ptr [rcx+136] test rcx, rcx mov gword ptr [rsp+C0H], rcx je G_M26773_IG180 ;; bbWeight=2 PerfScore 10.50 G_M26773_IG137: mov r10d, dword ptr [rbp+8] mov dword ptr [rsp+158H], r10d mov r10, gword ptr [rsp+C0H] mov r10d, dword ptr [r10+8] mov dword ptr [rsp+F8H], r10d cmp r10d, 1 jne G_M26773_IG140 lea r10, bword ptr [rbp+16] mov r11, r10 mov r11d, dword ptr [r11+8] cmp dword ptr [rsp+158H], r11d mov dword ptr [rsp+134H], r8d jae SHORT G_M26773_IG139 ;; bbWeight=1 PerfScore 14.00 G_M26773_IG138: mov bword ptr [rsp+B8H], r10 mov r10d, dword ptr [rsp+158H] cmp r10d, r11d jae G_M26773_IG188 mov r11, bword ptr [rsp+B8H] mov r11, bword ptr [r11] mov dword ptr [rsp+158H], r10d movsxd r10, r10d mov qword ptr [rsp+38H], r10 cmp dword ptr [rsp+F8H], 0 jbe G_M26773_IG188 mov r10, gword ptr [rsp+C0H] movzx r10, word ptr [r10+12] mov r8, qword ptr [rsp+38H] mov word ptr [r11+2*r8], r10w mov r10d, dword ptr [rsp+158H] inc r10d mov dword ptr [rbp+8], r10d mov r8d, dword ptr [rsp+134H] jmp G_M26773_IG180 ;; bbWeight=2 PerfScore 41.50 G_M26773_IG139: mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d jmp SHORT G_M26773_IG141 ;; bbWeight=0.50 PerfScore 2.00 G_M26773_IG140: mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d mov dword ptr [rsp+134H], r8d jmp SHORT G_M26773_IG141 ;; bbWeight=0.50 PerfScore 2.50 G_M26773_IG141: mov rcx, rbp mov rdx, gword ptr [rsp+C0H] call ValueStringBuilder:AppendSlow(String):this mov eax, dword ptr [rsp+1ECH] mov r8d, dword ptr [rsp+134H] mov r9d, dword ptr [rsp+1E8H] jmp G_M26773_IG180 ;; bbWeight=2 PerfScore 14.50 G_M26773_IG142: mov r11, gword ptr [rsp+60H] mov rcx, gword ptr [r11+128] test rcx, rcx mov gword ptr [rsp+60H], r11 mov gword ptr [rsp+B0H], rcx je G_M26773_IG147 ;; bbWeight=2 PerfScore 12.50 G_M26773_IG143: mov esi, dword ptr [rbp+8] mov dword ptr [rsp+154H], esi mov rdi, gword ptr [rsp+B0H] mov r11d, dword ptr [rdi+8] mov dword ptr [rsp+F4H], r11d cmp r11d, 1 jne G_M26773_IG146 lea r11, bword ptr [rbp+16] mov rsi, r11 mov esi, dword ptr [rsi+8] cmp dword ptr [rsp+154H], esi jae SHORT G_M26773_IG145 ;; bbWeight=1 PerfScore 13.00 G_M26773_IG144: mov bword ptr [rsp+A8H], r11 mov r11d, dword ptr [rsp+154H] cmp r11d, esi jae G_M26773_IG188 mov rsi, bword ptr [rsp+A8H] mov rsi, bword ptr [rsi] mov dword ptr [rsp+154H], r11d movsxd r11, r11d cmp dword ptr [rsp+F4H], 0 jbe G_M26773_IG188 movzx rdi, word ptr [rdi+12] mov word ptr [rsi+2*r11], di mov r11d, dword ptr [rsp+154H] inc r11d mov dword ptr [rbp+8], r11d mov rsi, qword ptr [rsp+190H] mov rdi, bword ptr [rsp+68H] jmp G_M26773_IG180 ;; bbWeight=2 PerfScore 37.50 G_M26773_IG145: mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d mov dword ptr [rsp+134H], r8d jmp SHORT G_M26773_IG148 ;; bbWeight=0.50 PerfScore 2.50 G_M26773_IG146: mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d mov dword ptr [rsp+134H], r8d jmp SHORT G_M26773_IG148 ;; bbWeight=0.50 PerfScore 2.50 G_M26773_IG147: mov rsi, qword ptr [rsp+190H] mov rdi, bword ptr [rsp+68H] jmp G_M26773_IG180 ;; bbWeight=1 PerfScore 4.00 G_M26773_IG148: mov rcx, rbp mov rdx, rdi call ValueStringBuilder:AppendSlow(String):this mov eax, dword ptr [rsp+1ECH] mov rsi, qword ptr [rsp+190H] mov rdi, bword ptr [rsp+68H] mov r8d, dword ptr [rsp+134H] mov r9d, dword ptr [rsp+1E8H] jmp G_M26773_IG180 ;; bbWeight=2 PerfScore 17.00 G_M26773_IG149: mov dword ptr [rsp+1E8H], r9d mov dword ptr [rsp+134H], r8d inc r10d mov dword ptr [rsp+1D4H], r10d mov r8d, dword ptr [rbp+8] lea rdx, bword ptr [rbp+16] mov r9, rdx mov r9d, dword ptr [r9+8] cmp r8d, r9d jae SHORT G_M26773_IG150 cmp r8d, r9d jae G_M26773_IG188 mov rdx, bword ptr [rdx] movsxd r9, r8d mov word ptr [rdx+2*r9], r11w inc r8d mov dword ptr [rbp+8], r8d mov bword ptr [rsp+68H], rdi mov qword ptr [rsp+190H], rsi mov ecx, dword ptr [rsp+1C4H] mov r8d, dword ptr [rsp+134H] mov r9d, dword ptr [rsp+1E8H] jmp SHORT G_M26773_IG151 ;; bbWeight=8 PerfScore 176.00 G_M26773_IG150: mov dword ptr [rsp+1ECH], eax mov rcx, rbp mov edx, r11d call ValueStringBuilder:GrowAndAppend(ushort):this mov bword ptr [rsp+68H], rdi mov qword ptr [rsp+190H], rsi mov eax, dword ptr [rsp+1ECH] mov ecx, dword ptr [rsp+1C4H] mov r8d, dword ptr [rsp+134H] mov r9d, dword ptr [rsp+1E8H] ;; bbWeight=8 PerfScore 68.00 G_M26773_IG151: mov r10d, dword ptr [rsp+1D4H] mov rdi, bword ptr [rsp+68H] cmp r10d, dword ptr [rdi+8] jge SHORT G_M26773_IG153 movsxd r11, r10d mov rsi, qword ptr [rsp+190H] movzx r11, word ptr [rsi+2*r11] test r11d, r11d je SHORT G_M26773_IG154 mov dword ptr [rsp+1C4H], ecx cmp r11d, ecx jne G_M26773_IG149 ;; bbWeight=16 PerfScore 188.00 G_M26773_IG152: mov qword ptr [rsp+190H], rsi ;; bbWeight=8 PerfScore 8.00 G_M26773_IG153: cmp r10d, dword ptr [rdi+8] mov dword ptr [rsp+1D4H], r10d mov rsi, qword ptr [rsp+190H] jge G_M26773_IG180 mov ecx, dword ptr [rsp+1D4H] movsxd r11, ecx movzx r11, word ptr [rsi+2*r11] test r11d, r11d mov dword ptr [rsp+1D4H], ecx je G_M26773_IG180 mov ecx, dword ptr [rsp+1D4H] inc ecx mov dword ptr [rsp+1D4H], ecx jmp G_M26773_IG180 ;; bbWeight=2 PerfScore 29.50 G_M26773_IG154: mov qword ptr [rsp+190H], rsi jmp SHORT G_M26773_IG153 ;; bbWeight=8 PerfScore 24.00 G_M26773_IG155: mov ecx, dword ptr [rdi+8] mov r10d, dword ptr [rsp+1D4H] cmp r10d, ecx mov dword ptr [rsp+1D4H], r10d jge G_M26773_IG180 mov ecx, dword ptr [rsp+1D4H] movsxd r10, ecx cmp word ptr [rsi+2*r10], 0 mov dword ptr [rsp+1D4H], ecx je G_M26773_IG180 mov ecx, dword ptr [rsp+1D4H] mov dword ptr [rsp+174H], ecx inc ecx mov dword ptr [rsp+1D4H], ecx mov r10d, dword ptr [rsp+174H] movsxd r10, r10d movzx r10, word ptr [rsi+2*r10] mov dword ptr [rsp+14CH], r10d mov r10d, dword ptr [rbp+8] mov dword ptr [rsp+150H], r10d lea r10, bword ptr [rbp+16] mov r11, r10 mov r11d, dword ptr [r11+8] cmp dword ptr [rsp+150H], r11d jae SHORT G_M26773_IG156 mov dword ptr [rsp+134H], r8d mov bword ptr [rsp+A0H], r10 mov r10d, dword ptr [rsp+150H] cmp r10d, r11d jae G_M26773_IG188 mov r11, bword ptr [rsp+A0H] mov r11, bword ptr [r11] mov bword ptr [rsp+40H], r11 mov dword ptr [rsp+150H], r10d movsxd r11, r10d mov r10, bword ptr [rsp+40H] mov r8d, dword ptr [rsp+14CH] mov word ptr [r10+2*r11], r8w mov r10d, dword ptr [rsp+150H] inc r10d mov dword ptr [rbp+8], r10d mov r8d, dword ptr [rsp+134H] jmp G_M26773_IG180 ;; bbWeight=2 PerfScore 87.00 G_M26773_IG156: mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d mov dword ptr [rsp+134H], r8d mov rcx, rbp mov edx, dword ptr [rsp+14CH] call ValueStringBuilder:GrowAndAppend(ushort):this mov eax, dword ptr [rsp+1ECH] mov r8d, dword ptr [rsp+134H] mov r9d, dword ptr [rsp+1E8H] jmp G_M26773_IG180 ;; bbWeight=2 PerfScore 20.50 G_M26773_IG157: xor r11d, r11d mov dword ptr [rsp+17CH], r11d xor r11d, r11d mov dword ptr [rsp+178H], r11d cmp dword ptr [rsp+1E0H], 0 je G_M26773_IG169 mov dword ptr [rsp+134H], r8d mov r8d, dword ptr [rdi+8] mov r10d, dword ptr [rsp+1D4H] cmp r10d, r8d jge SHORT G_M26773_IG158 movsxd r11, r10d cmp word ptr [rsi+2*r11], 48 jne SHORT G_M26773_IG158 mov dword ptr [rsp+178H], 1 jmp G_M26773_IG163 ;; bbWeight=2 PerfScore 32.00 G_M26773_IG158: lea r11d, [r10+1] cmp r11d, r8d jge SHORT G_M26773_IG159 movsxd r11, r10d cmp word ptr [rsi+2*r11], 43 jne SHORT G_M26773_IG159 lea r11d, [r10+1] movsxd r11, r11d cmp word ptr [rsi+2*r11], 48 jne SHORT G_M26773_IG159 mov dword ptr [rsp+17CH], 1 jmp G_M26773_IG163 ;; bbWeight=2 PerfScore 23.50 G_M26773_IG159: lea r11d, [r10+1] cmp r11d, r8d jge SHORT G_M26773_IG160 movsxd r11, r10d cmp word ptr [rsi+2*r11], 45 jne SHORT G_M26773_IG160 mov dword ptr [rsp+1D4H], r10d lea r11d, [r10+1] movsxd r11, r11d cmp word ptr [rsi+2*r11], 48 mov r10d, dword ptr [rsp+1D4H] je G_M26773_IG163 ;; bbWeight=2 PerfScore 21.50 G_M26773_IG160: mov r8d, dword ptr [rbp+8] mov dword ptr [rsp+148H], r8d lea r11, bword ptr [rbp+16] mov r8, r11 mov r8d, dword ptr [r8+8] cmp dword ptr [rsp+148H], r8d jae SHORT G_M26773_IG161 mov bword ptr [rsp+98H], r11 mov r11d, dword ptr [rsp+148H] cmp r11d, r8d jae G_M26773_IG188 mov r8, bword ptr [rsp+98H] mov r8, bword ptr [r8] mov bword ptr [rsp+40H], r8 mov dword ptr [rsp+148H], r11d movsxd r8, r11d mov r11, bword ptr [rsp+40H] mov word ptr [r11+2*r8], cx mov r11d, dword ptr [rsp+148H] inc r11d mov dword ptr [rbp+8], r11d mov dword ptr [rsp+1D4H], r10d mov r8d, dword ptr [rsp+134H] jmp G_M26773_IG180 ;; bbWeight=2 PerfScore 49.00 G_M26773_IG161: mov dword ptr [rsp+1D4H], r10d mov dword ptr [rsp+1C4H], ecx mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d mov rcx, rbp mov edx, dword ptr [rsp+1C4H] call ValueStringBuilder:GrowAndAppend(ushort):this mov eax, dword ptr [rsp+1ECH] mov r8d, dword ptr [rsp+134H] mov r9d, dword ptr [rsp+1E8H] jmp G_M26773_IG180 ;; bbWeight=2 PerfScore 22.50 G_M26773_IG162: mov r11d, dword ptr [rsp+178H] inc r11d mov dword ptr [rsp+178H], r11d mov r10d, dword ptr [rsp+1D4H] ;; bbWeight=8 PerfScore 26.00 G_M26773_IG163: inc r10d cmp r10d, r8d jge SHORT G_M26773_IG165 mov dword ptr [rsp+1D4H], r10d movsxd r11, r10d cmp word ptr [rsi+2*r11], 48 je SHORT G_M26773_IG162 ;; bbWeight=16 PerfScore 92.00 G_M26773_IG164: mov r10d, dword ptr [rsp+1D4H] ;; bbWeight=8 PerfScore 8.00 G_M26773_IG165: mov r11d, dword ptr [rsp+178H] cmp r11d, 10 jle SHORT G_M26773_IG166 mov r11d, 10 ;; bbWeight=2 PerfScore 5.00 G_M26773_IG166: mov r8, qword ptr [rsp+1C8H] cmp byte ptr [r8], 0 je SHORT G_M26773_IG167 mov r8, bword ptr [rsp+70H] mov r8d, dword ptr [r8+4] mov dword ptr [rsp+1ECH], eax sub r8d, eax mov dword ptr [rsp+1D4H], r10d mov dword ptr [rsp+1C4H], ecx mov dword ptr [rsp+1E8H], r9d jmp SHORT G_M26773_IG168 ;; bbWeight=2 PerfScore 26.50 G_M26773_IG167: xor r8d, r8d mov dword ptr [rsp+1D4H], r10d mov dword ptr [rsp+1C4H], ecx mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d ;; bbWeight=2 PerfScore 8.50 G_M26773_IG168: mov dword ptr [rsp+20H], r11d mov r11d, dword ptr [rsp+17CH] mov dword ptr [rsp+28H], r11d mov rcx, rbp mov rdx, gword ptr [rsp+60H] mov r9d, dword ptr [rsp+1C4H] call Number:FormatExponent(byref,NumberFormatInfo,int,ushort,int,bool) xor eax, eax mov dword ptr [rsp+1E0H], eax mov eax, dword ptr [rsp+1ECH] mov r8d, dword ptr [rsp+134H] mov r9d, dword ptr [rsp+1E8H] jmp G_M26773_IG180 ;; bbWeight=2 PerfScore 25.00 G_M26773_IG169: mov dword ptr [rsp+134H], r8d mov r11d, dword ptr [rbp+8] mov dword ptr [rsp+144H], r11d lea r11, bword ptr [rbp+16] mov r8, r11 mov r8d, dword ptr [r8+8] cmp dword ptr [rsp+144H], r8d jae SHORT G_M26773_IG170 mov bword ptr [rsp+58H], r11 mov bword ptr [rsp+90H], r11 mov edx, dword ptr [rsp+144H] cmp edx, r8d jae G_M26773_IG188 mov r8, bword ptr [rsp+90H] mov r8, bword ptr [r8] mov bword ptr [rsp+40H], r8 mov dword ptr [rsp+144H], edx movsxd r8, edx mov rdx, bword ptr [rsp+40H] mov word ptr [rdx+2*r8], cx mov edx, dword ptr [rsp+144H] inc edx mov dword ptr [rbp+8], edx jmp SHORT G_M26773_IG171 ;; bbWeight=2 PerfScore 49.00 G_M26773_IG170: mov dword ptr [rsp+1C4H], ecx mov bword ptr [rsp+58H], r11 mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d mov rcx, rbp mov edx, dword ptr [rsp+1C4H] call ValueStringBuilder:GrowAndAppend(ushort):this mov eax, dword ptr [rsp+1ECH] mov r9d, dword ptr [rsp+1E8H] ;; bbWeight=2 PerfScore 16.50 G_M26773_IG171: mov r10d, dword ptr [rsp+1D4H] cmp r10d, dword ptr [rdi+8] mov dword ptr [rsp+1D4H], r10d mov r8d, dword ptr [rsp+134H] jge G_M26773_IG180 mov ecx, dword ptr [rsp+1D4H] movsxd r10, ecx movzx r10, word ptr [rsi+2*r10] cmp r10d, 43 je SHORT G_M26773_IG172 cmp r10d, 45 jne G_M26773_IG176 ;; bbWeight=2 PerfScore 23.50 G_M26773_IG172: inc ecx mov dword ptr [rsp+1D4H], ecx mov dword ptr [rsp+13CH], r10d mov r10d, dword ptr [rbp+8] mov dword ptr [rsp+140H], r10d mov r10, bword ptr [rsp+58H] mov r11, r10 mov r11d, dword ptr [r11+8] mov dword ptr [rsp+108H], r11d cmp dword ptr [rsp+140H], r11d jae SHORT G_M26773_IG173 mov dword ptr [rsp+134H], r8d mov bword ptr [rsp+58H], r10 mov bword ptr [rsp+88H], r10 mov r11d, dword ptr [rsp+140H] cmp r11d, dword ptr [rsp+108H] jae G_M26773_IG188 mov r11, bword ptr [rsp+88H] mov r11, bword ptr [r11] mov bword ptr [rsp+40H], r11 mov r11d, dword ptr [rsp+140H] movsxd r11, r11d mov r8, bword ptr [rsp+40H] mov edx, dword ptr [rsp+13CH] mov word ptr [r8+2*r11], dx mov r11d, dword ptr [rsp+140H] inc r11d mov dword ptr [rbp+8], r11d mov ecx, dword ptr [rsp+1D4H] mov r8d, dword ptr [rsp+134H] jmp G_M26773_IG176 ;; bbWeight=2 PerfScore 64.00 G_M26773_IG173: mov bword ptr [rsp+58H], r10 mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d mov dword ptr [rsp+134H], r8d mov rcx, rbp mov edx, dword ptr [rsp+13CH] call ValueStringBuilder:GrowAndAppend(ushort):this mov eax, dword ptr [rsp+1ECH] mov ecx, dword ptr [rsp+1D4H] mov r8d, dword ptr [rsp+134H] mov r9d, dword ptr [rsp+1E8H] jmp G_M26773_IG176 ;; bbWeight=2 PerfScore 24.50 G_M26773_IG174: mov dword ptr [rsp+134H], r8d inc ecx mov dword ptr [rsp+1D4H], ecx mov r11d, dword ptr [rbp+8] mov r8, bword ptr [rsp+58H] mov rdx, r8 mov edx, dword ptr [rdx+8] mov dword ptr [rsp+110H], edx cmp r11d, edx jae SHORT G_M26773_IG175 mov dword ptr [rsp+1E8H], r9d mov bword ptr [rsp+58H], r8 mov rdx, r8 cmp r11d, dword ptr [rsp+110H] jae G_M26773_IG188 mov rdx, bword ptr [rdx] movsxd r9, r11d mov word ptr [rdx+2*r9], r10w inc r11d mov dword ptr [rbp+8], r11d mov ecx, dword ptr [rsp+1D4H] mov r8d, dword ptr [rsp+134H] mov r9d, dword ptr [rsp+1E8H] jmp SHORT G_M26773_IG176 ;; bbWeight=8 PerfScore 188.00 G_M26773_IG175: mov bword ptr [rsp+58H], r8 mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d mov rcx, rbp mov edx, r10d call ValueStringBuilder:GrowAndAppend(ushort):this mov eax, dword ptr [rsp+1ECH] mov ecx, dword ptr [rsp+1D4H] mov r8d, dword ptr [rsp+134H] mov r9d, dword ptr [rsp+1E8H] ;; bbWeight=8 PerfScore 68.00 G_M26773_IG176: cmp ecx, dword ptr [rdi+8] mov dword ptr [rsp+1D4H], ecx jge G_M26773_IG180 mov ecx, dword ptr [rsp+1D4H] movsxd r10, ecx movzx r10, word ptr [rsi+2*r10] cmp r10d, 48 je G_M26773_IG174 ;; bbWeight=16 PerfScore 136.00 G_M26773_IG177: mov dword ptr [rsp+1D4H], ecx jmp G_M26773_IG180 ;; bbWeight=2 PerfScore 6.00 G_M26773_IG178: mov r11d, dword ptr [rbp+8] mov dword ptr [rsp+138H], r11d lea r11, bword ptr [rbp+16] mov r8, r11 mov r8d, dword ptr [r8+8] cmp dword ptr [rsp+138H], r8d jae SHORT G_M26773_IG179 mov bword ptr [rsp+80H], r11 mov r11d, dword ptr [rsp+138H] cmp r11d, r8d jae G_M26773_IG188 mov r8, bword ptr [rsp+80H] mov r8, bword ptr [r8] mov bword ptr [rsp+40H], r8 mov dword ptr [rsp+138H], r11d movsxd r8, r11d mov r11, bword ptr [rsp+40H] mov word ptr [r11+2*r8], cx mov r11d, dword ptr [rsp+138H] inc r11d mov dword ptr [rbp+8], r11d mov r8d, dword ptr [rsp+134H] jmp SHORT G_M26773_IG180 ;; bbWeight=2 PerfScore 47.00 G_M26773_IG179: mov dword ptr [rsp+1C4H], ecx mov dword ptr [rsp+1ECH], eax mov dword ptr [rsp+1E8H], r9d mov rcx, rbp mov edx, dword ptr [rsp+1C4H] call ValueStringBuilder:GrowAndAppend(ushort):this mov eax, dword ptr [rsp+1ECH] mov r8d, dword ptr [rsp+134H] mov r9d, dword ptr [rsp+1E8H] ;; bbWeight=2 PerfScore 16.50 G_M26773_IG180: mov ecx, dword ptr [rsp+1D4H] cmp ecx, dword ptr [rdi+8] jge SHORT G_M26773_IG182 ;; bbWeight=8 PerfScore 32.00 G_M26773_IG181: lea r10d, [rcx+1] mov dword ptr [rsp+1D4H], r10d movsxd rcx, ecx movzx rcx, word ptr [rsi+2*rcx] test ecx, ecx je SHORT G_M26773_IG182 cmp ecx, 59 jne G_M26773_IG85 ;; bbWeight=4 PerfScore 25.00 G_M26773_IG182: xor r8, r8 mov bword ptr [rsp+188H], r8 mov r15, bword ptr [rsp+70H] cmp byte ptr [r15+8], 0 je SHORT G_M26773_IG184 ;; bbWeight=1 PerfScore 5.25 G_M26773_IG183: cmp dword ptr [rsp+1D8H], 0 jne SHORT G_M26773_IG184 cmp dword ptr [r15+4], 0 jne SHORT G_M26773_IG184 cmp dword ptr [rbp+8], 0 jle SHORT G_M26773_IG184 mov rsi, gword ptr [rsp+60H] mov r8, gword ptr [rsi+40] mov rcx, rbp xor edx, edx call ValueStringBuilder:Insert(int,String):this ;; bbWeight=0.50 PerfScore 6.25 G_M26773_IG184: mov rcx, 0xD1FFAB1E cmp qword ptr [rsp+1F0H], rcx je SHORT G_M26773_IG185 call CORINFO_HELP_FAIL_FAST ;; bbWeight=1 PerfScore 3.25 G_M26773_IG185: nop ;; bbWeight=1 PerfScore 0.25 G_M26773_IG186: add rsp, 504 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M26773_IG187: call ThrowHelper:ThrowArgumentException_DestinationTooShort() int3 ;; bbWeight=0 PerfScore 0.00 G_M26773_IG188: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M26773_IG24 - G_M26773_IG02 dd G_M26773_IG15 - G_M26773_IG02 dd G_M26773_IG10 - G_M26773_IG02 dd G_M26773_IG22 - G_M26773_IG02 dd G_M26773_IG10 - G_M26773_IG02 dd G_M26773_IG24 - G_M26773_IG02 RWD24 dd G_M26773_IG19 - G_M26773_IG02 dd G_M26773_IG12 - G_M26773_IG02 dd G_M26773_IG18 - G_M26773_IG02 dd G_M26773_IG12 - G_M26773_IG02 dd G_M26773_IG16 - G_M26773_IG02 RWD44 dd G_M26773_IG151 - G_M26773_IG02 dd G_M26773_IG108 - G_M26773_IG02 dd G_M26773_IG101 - G_M26773_IG02 dd G_M26773_IG142 - G_M26773_IG02 dd G_M26773_IG101 - G_M26773_IG02 dd G_M26773_IG151 - G_M26773_IG02 RWD68 dd G_M26773_IG105 - G_M26773_IG02 dd G_M26773_IG104 - G_M26773_IG02 dd G_M26773_IG128 - G_M26773_IG02 dd G_M26773_IG104 - G_M26773_IG02 dd G_M26773_IG103 - G_M26773_IG02 ; Total bytes of code 7128, prolog size 107, PerfScore 6845.96, (MethodHash=8201976a) for method Number:NumberToStringFormat(byref,byref,ReadOnlySpan`1,NumberFormatInfo) ; ============================================================ ; Assembly listing for method Number:FindSection(ReadOnlySpan`1,int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T09] ( 6, 4.50) int -> rdx ; V02 loc0 [V02,T00] ( 15, 32 ) int -> registers ; V03 loc1 [V03,T01] ( 7, 24.50) ushort -> registers ; V04 loc2 [V04,T08] ( 5, 9.50) long -> r8 ; V05 loc3 [V05 ] ( 1, 0.50) byref -> [rsp+0x00] must-init pinned ; V06 loc4 [V06,T10] ( 3, 5 ) ushort -> r10 ;# V07 OutArgs [V07 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T02] ( 3, 24 ) int -> rax "impSpillLclRefs" ; V09 tmp2 [V09,T03] ( 2, 16 ) int -> rax "dup spill" ; V10 tmp3 [V10,T04] ( 2, 16 ) int -> rax "impSpillLclRefs" ; V11 tmp4 [V11,T13] ( 2, 2 ) int -> rdx "dup spill" ;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V13 tmp6 [V13,T12] ( 3, 2 ) byref -> r8 V17._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V14 tmp7 [V14,T06] ( 5, 10 ) int -> rcx V17._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V15 tmp8 [V15,T15] ( 0, 0 ) byref -> zero-ref V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ;* V16 tmp9 [V16 ] ( 0, 0 ) int -> zero-ref V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ;* V17 tmp10 [V17 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V18 tmp11 [V18,T14] ( 2, 2 ) long -> r8 "Cast away GC" ; V19 cse0 [V19,T05] ( 3, 12 ) int -> r10 "CSE - aggressive" ; V20 cse1 [V20,T11] ( 5, 2.50) int -> r9 "CSE - moderate" ; ; Lcl frame size = 8 G_M54595_IG01: push rax xor rax, rax mov qword ptr [rsp], rax ;; bbWeight=1 PerfScore 2.25 G_M54595_IG02: mov r8, bword ptr [rcx] mov ecx, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M54595_IG03: test edx, edx jne SHORT G_M54595_IG06 ;; bbWeight=1 PerfScore 1.25 G_M54595_IG04: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M54595_IG05: add rsp, 8 ret ;; bbWeight=0.50 PerfScore 0.63 G_M54595_IG06: mov bword ptr [rsp], r8 xor eax, eax ;; bbWeight=0.50 PerfScore 0.63 G_M54595_IG07: cmp eax, ecx jge G_M54595_IG17 ;; bbWeight=4 PerfScore 5.00 G_M54595_IG08: lea r9d, [rax+1] movsxd rax, eax movzx rax, word ptr [r8+2*rax] mov r10d, eax cmp eax, 34 ja SHORT G_M54595_IG09 test eax, eax je G_M54595_IG19 cmp eax, 34 je SHORT G_M54595_IG10 mov eax, r9d jmp SHORT G_M54595_IG07 ;; bbWeight=4 PerfScore 36.00 G_M54595_IG09: cmp eax, 39 je SHORT G_M54595_IG10 cmp r10d, 59 je SHORT G_M54595_IG15 cmp r10d, 92 je SHORT G_M54595_IG14 mov eax, r9d jmp SHORT G_M54595_IG07 ;; bbWeight=0.50 PerfScore 3.00 G_M54595_IG10: cmp r9d, ecx jge SHORT G_M54595_IG13 xchg rax, r9 movsxd r10, eax movzx r10, word ptr [r8+2*r10] test r10d, r10d je SHORT G_M54595_IG07 inc eax cmp r10d, r9d jne SHORT G_M54595_IG12 ;; bbWeight=4 PerfScore 29.00 G_M54595_IG11: mov r9d, eax mov eax, r9d jmp SHORT G_M54595_IG07 ;; bbWeight=0.50 PerfScore 1.25 G_M54595_IG12: xchg rax, r9 jmp SHORT G_M54595_IG10 ;; bbWeight=2 PerfScore 6.00 G_M54595_IG13: mov eax, r9d jmp SHORT G_M54595_IG07 ;; bbWeight=2 PerfScore 4.50 G_M54595_IG14: cmp r9d, ecx mov eax, r9d jge SHORT G_M54595_IG07 movsxd r9, eax movzx r9, word ptr [r8+2*r9] test r9d, r9d je G_M54595_IG07 inc eax jmp G_M54595_IG07 ;; bbWeight=0.50 PerfScore 3.63 G_M54595_IG15: dec edx mov eax, r9d jne G_M54595_IG07 cmp eax, ecx jge SHORT G_M54595_IG19 movsxd rdx, eax movzx r9, word ptr [r8+2*rdx] test r9d, r9d je SHORT G_M54595_IG19 cmp r9d, 59 je SHORT G_M54595_IG19 ;; bbWeight=0.50 PerfScore 3.75 G_M54595_IG16: add rsp, 8 ret ;; bbWeight=0.50 PerfScore 0.63 G_M54595_IG17: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M54595_IG18: add rsp, 8 ret ;; bbWeight=0.50 PerfScore 0.63 G_M54595_IG19: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M54595_IG20: add rsp, 8 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 229, prolog size 7, PerfScore 126.03, (MethodHash=95312abc) for method Number:FindSection(ReadOnlySpan`1,int):int ; ============================================================ ; Assembly listing for method Measurement:GetAverageTime():TimeInterval:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) byref -> rcx this ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) double -> mm0 "impAppendStmt" ; ; Lcl frame size = 0 G_M63143_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M63143_IG02: vmovsd xmm0, qword ptr [rcx+24] vxorps xmm1, xmm1 vcvtsi2sd xmm1, qword ptr [rcx+16] vdivsd xmm0, xmm0, xmm1 ;; bbWeight=1 PerfScore 22.33 G_M63143_IG03: jmp TimeInterval:FromNanoseconds(double):TimeInterval ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 27, prolog size 3, PerfScore 28.33, (MethodHash=bc4f0958) for method Measurement:GetAverageTime():TimeInterval:this ; ============================================================ ; Assembly listing for method TimeInterval:FromNanoseconds(double):TimeInterval ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 3 ) double -> mm0 ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 2, 4 ) struct ( 8) [rsp+0x10] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V03 tmp2 [V03,T01] ( 2, 4 ) struct ( 8) [rsp+0x08] do-not-enreg[SFB] "NewObj constructor temp" ; V04 tmp3 [V04,T03] ( 2, 4 ) double -> mm0 "Inlining Arg" ; ; Lcl frame size = 24 G_M2869_IG01: sub rsp, 24 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M2869_IG02: mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] mov rdx, qword ptr [rax+8] mov qword ptr [rsp+10H], rdx vmulsd xmm0, xmm0, qword ptr [rsp+10H] vmovsd qword ptr [rsp+08H], xmm0 mov rax, qword ptr [rsp+08H] ;; bbWeight=1 PerfScore 11.75 G_M2869_IG03: add rsp, 24 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 51, prolog size 7, PerfScore 19.55, (MethodHash=acf0f4ca) for method TimeInterval:FromNanoseconds(double):TimeInterval ; ============================================================ ; Assembly listing for method AsciiHelper:ToAscii(String):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 3.50) ref -> rcx class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M53606_IG01: ;; bbWeight=1 PerfScore 0.00 G_M53606_IG02: test rcx, rcx jne SHORT G_M53606_IG05 ;; bbWeight=1 PerfScore 1.25 G_M53606_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M53606_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M53606_IG05: mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] ;; bbWeight=0.50 PerfScore 2.25 G_M53606_IG06: jmp String:Replace(String,String):String:this ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 39, prolog size 0, PerfScore 9.03, (MethodHash=fbe12e99) for method AsciiHelper:ToAscii(String):String ; ============================================================ ; Assembly listing for method String:Replace(String,String):String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T08] ( 7, 6 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T03] ( 5, 20 ) ref -> rsi class-hnd ; V02 arg2 [V02,T09] ( 5, 4 ) ref -> rbx class-hnd ; V03 loc0 [V03 ] ( 15, 15.50) struct (32) [rbp+0x28] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ; V04 loc1 [V04,T26] ( 2, 1 ) ref -> rsi class-hnd ;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ; V06 loc3 [V06,T12] ( 2, 5 ) long -> r15 ; V07 loc4 [V07 ] ( 3, 3 ) byref -> [rbp+0x20] must-init pinned ; V08 loc5 [V08,T05] ( 8, 19 ) int -> r12 ; V09 loc6 [V09,T11] ( 3, 6 ) int -> r13 ; V10 loc7 [V10,T04] ( 2, 20 ) long -> rcx ; V11 loc8 [V11,T00] ( 5, 68 ) int -> rax ; V12 OutArgs [V12 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V14 tmp2 [V14,T23] ( 2, 2 ) int -> rdx "impAppendStmt" ;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V16 tmp4 [V16,T36] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V17 tmp5 [V17,T37] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V18 tmp6 [V18,T13] ( 2, 4 ) long -> rcx "Inlining Arg" ;* V19 tmp7 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V20 tmp8 [V20 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V21 tmp9 [V21,T07] ( 5, 10 ) int -> [rbp+0x1C] "Inline stloc first use temp" ; V22 tmp10 [V22,T06] ( 3, 12 ) byref -> rcx "Span.get_Item ptrToSpan" ;* V23 tmp11 [V23 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V24 tmp12 [V24,T16] ( 3, 3 ) int -> rcx "Inlining Arg" ;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V26 tmp14 [V26,T17] ( 2, 2 ) byref -> r8 "Inlining Arg" ;* V27 tmp15 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V28 tmp16 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V29 tmp17 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V30 tmp18 [V30 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V31 tmp19 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V32 tmp20 [V32 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V33 tmp21 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V34 tmp22 [V34,T18] ( 2, 2 ) byref -> rcx V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ;* V35 tmp23 [V35,T24] ( 0, 0 ) int -> zero-ref V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ; V36 tmp24 [V36,T19] ( 2, 2 ) byref -> rcx V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ;* V37 tmp25 [V37,T34] ( 0, 0 ) int -> zero-ref V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V38 tmp26 [V38,T27] ( 2, 1 ) byref -> r8 V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ; V39 tmp27 [V39,T31] ( 2, 1 ) int -> rcx V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ; V40 tmp28 [V40,T20] ( 2, 2 ) byref -> rcx V19._value(offs=0x00) P-INDEP "field V19._value (fldOffset=0x0)" ; V41 tmp29 [V41,T21] ( 2, 2 ) byref -> rcx V20._pointer(offs=0x00) P-INDEP "field V20._pointer (fldOffset=0x0)" ;* V42 tmp30 [V42,T35] ( 0, 0 ) int -> zero-ref V20._length(offs=0x08) P-INDEP "field V20._length (fldOffset=0x8)" ;* V43 tmp31 [V43 ] ( 0, 0 ) byref -> zero-ref V23._pointer(offs=0x00) P-INDEP "field V23._pointer (fldOffset=0x0)" ;* V44 tmp32 [V44 ] ( 0, 0 ) int -> zero-ref V23._length(offs=0x08) P-INDEP "field V23._length (fldOffset=0x8)" ;* V45 tmp33 [V45 ] ( 0, 0 ) byref -> zero-ref V25._pointer(offs=0x00) P-INDEP "field V25._pointer (fldOffset=0x0)" ;* V46 tmp34 [V46 ] ( 0, 0 ) int -> zero-ref V25._length(offs=0x08) P-INDEP "field V25._length (fldOffset=0x8)" ;* V47 tmp35 [V47 ] ( 0, 0 ) byref -> zero-ref V28._value(offs=0x00) P-INDEP "field V28._value (fldOffset=0x0)" ;* V48 tmp36 [V48 ] ( 0, 0 ) byref -> zero-ref V29._pointer(offs=0x00) P-INDEP "field V29._pointer (fldOffset=0x0)" ;* V49 tmp37 [V49 ] ( 0, 0 ) int -> zero-ref V29._length(offs=0x08) P-INDEP "field V29._length (fldOffset=0x8)" ; V50 tmp38 [V50,T28] ( 2, 1 ) byref -> r8 V30._pointer(offs=0x00) P-INDEP "field V30._pointer (fldOffset=0x0)" ; V51 tmp39 [V51,T32] ( 2, 1 ) int -> rcx V30._length(offs=0x08) P-INDEP "field V30._length (fldOffset=0x8)" ; V52 tmp40 [V52,T29] ( 2, 1 ) byref -> r8 V32._value(offs=0x00) P-INDEP "field V32._value (fldOffset=0x0)" ; V53 tmp41 [V53,T38] ( 2, 0 ) ref -> rdx "argument with side effect" ; V54 tmp42 [V54,T39] ( 2, 0 ) ref -> rcx "argument with side effect" ; V55 tmp43 [V55,T40] ( 2, 0 ) ref -> rdi "argument with side effect" ; V56 tmp44 [V56,T41] ( 2, 0 ) ref -> r8 "argument with side effect" ; V57 tmp45 [V57,T10] ( 3, 6 ) byref -> rax stack-byref "BlockOp address local" ; V58 tmp46 [V58,T14] ( 2, 4 ) long -> r15 "Cast away GC" ; V59 tmp47 [V59 ] ( 2, 2 ) struct (16) [rbp+0x08] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V60 tmp48 [V60,T15] ( 3, 3 ) byref -> r9 stack-byref "BlockOp address local" ;* V61 tmp49 [V61,T33] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V62 tmp50 [V62,T25] ( 2, 2 ) int -> rdx "argument with side effect" ; V63 tmp51 [V63,T22] ( 2, 2 ) ref -> rbx "argument with side effect" ; V64 tmp52 [V64,T30] ( 2, 1 ) ref -> rcx "argument with side effect" ; V65 GsCookie [V65 ] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V66 cse0 [V66,T02] ( 7, 25.50) int -> r14 "CSE - aggressive" ; V67 cse1 [V67,T01] ( 3, 48 ) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 104 G_M21767_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 104 lea rbp, [rsp+20H] xor rax, rax mov qword ptr [rbp+08H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp+10H], xmm4 vmovdqa xmmword ptr [rbp+20H], xmm4 vmovdqa xmmword ptr [rbp+30H], xmm4 mov qword ptr [rbp+40H], rax mov rax, 0xD1FFAB1E mov qword ptr [rbp], rax mov rdi, rcx mov rsi, rdx mov rbx, r8 ;; bbWeight=1 PerfScore 16.33 G_M21767_IG02: test rsi, rsi je G_M21767_IG24 ;; bbWeight=1 PerfScore 1.25 G_M21767_IG03: mov r14d, dword ptr [rsi+8] test r14d, r14d je G_M21767_IG25 ;; bbWeight=1 PerfScore 3.25 G_M21767_IG04: test rbx, rbx jne SHORT G_M21767_IG06 ;; bbWeight=1 PerfScore 1.25 G_M21767_IG05: mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] ;; bbWeight=0.50 PerfScore 1.13 G_M21767_IG06: add rsp, 32 test dword ptr [rsp], esp sub rsp, 512 sub rsp, 32 lea rcx, [rsp+20H] lea rax, bword ptr [rbp+38H] mov bword ptr [rax], rcx mov dword ptr [rax+8], 128 xor rcx, rcx mov gword ptr [rbp+28H], rcx mov dword ptr [rbp+30H], ecx cmp dword ptr [rdi], edi lea rcx, bword ptr [rdi+12] mov bword ptr [rbp+20H], rcx mov r15, bword ptr [rbp+20H] xor r12d, r12d mov r13d, dword ptr [rdi+8] sub r13d, r14d test r13d, r13d jl SHORT G_M21767_IG14 ;; bbWeight=1 PerfScore 16.25 G_M21767_IG07: movsxd rcx, r12d lea rcx, [r15+2*rcx] xor eax, eax test r14d, r14d jle SHORT G_M21767_IG09 ;; bbWeight=4 PerfScore 9.00 G_M21767_IG08: movsxd rdx, eax movzx r8, word ptr [rcx+2*rdx] cmp r8w, word ptr [rsi+2*rdx+12] jne SHORT G_M21767_IG12 inc eax cmp r14d, eax jg SHORT G_M21767_IG08 ;; bbWeight=16 PerfScore 108.00 G_M21767_IG09: mov eax, dword ptr [rbp+30H] mov dword ptr [rbp+1CH], eax cmp eax, dword ptr [rbp+40H] jl SHORT G_M21767_IG11 ;; bbWeight=2 PerfScore 8.00 G_M21767_IG10: lea rcx, bword ptr [rbp+28H] call ValueListBuilder`1:Grow():this ;; bbWeight=1 PerfScore 1.50 G_M21767_IG11: lea rcx, bword ptr [rbp+38H] mov eax, dword ptr [rbp+1CH] cmp eax, dword ptr [rcx+8] jae G_M21767_IG27 mov rcx, bword ptr [rcx] movsxd rdx, eax mov dword ptr [rcx+4*rdx], r12d inc eax mov dword ptr [rbp+30H], eax add r12d, r14d jmp SHORT G_M21767_IG13 ;; bbWeight=2 PerfScore 22.50 G_M21767_IG12: inc r12d ;; bbWeight=2 PerfScore 0.50 G_M21767_IG13: cmp r12d, r13d jle SHORT G_M21767_IG07 ;; bbWeight=4 PerfScore 5.00 G_M21767_IG14: xor rax, rax mov bword ptr [rbp+20H], rax cmp dword ptr [rbp+30H], 0 jne SHORT G_M21767_IG18 ;; bbWeight=1 PerfScore 3.25 G_M21767_IG15: mov rax, rdi mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx je SHORT G_M21767_IG16 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.75 G_M21767_IG16: nop ;; bbWeight=0.50 PerfScore 0.13 G_M21767_IG17: lea rsp, [rbp+48H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M21767_IG18: mov edx, r14d mov ecx, dword ptr [rbp+30H] mov r8d, ecx mov r9d, dword ptr [rbp+40H] cmp r8, r9 ja G_M21767_IG26 ;; bbWeight=0.50 PerfScore 1.88 G_M21767_IG19: mov r8, bword ptr [rbp+38H] lea r9, bword ptr [rbp+08H] mov bword ptr [r9], r8 mov dword ptr [r9+8], ecx mov rcx, rdi mov r8, rbx lea r9, bword ptr [rbp+08H] call String:ReplaceHelper(int,String,ReadOnlySpan`1):String:this mov rsi, rax cmp gword ptr [rbp+28H], 0 je SHORT G_M21767_IG21 ;; bbWeight=0.50 PerfScore 3.88 G_M21767_IG20: mov rcx, 0xD1FFAB1E mov edx, 39 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, gword ptr [rbp+28H] xor r8d, r8d mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]TlsOverPerCoreLockedStacksArrayPool`1:Return(ref,bool):this xor rax, rax mov gword ptr [rbp+28H], rax ;; bbWeight=0.25 PerfScore 2.88 G_M21767_IG21: mov rax, rsi mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx je SHORT G_M21767_IG22 call CORINFO_HELP_FAIL_FAST ;; bbWeight=0.50 PerfScore 1.75 G_M21767_IG22: nop ;; bbWeight=0.50 PerfScore 0.13 G_M21767_IG23: lea rsp, [rbp+48H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.75 G_M21767_IG24: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x19BC mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M21767_IG25: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x8A3F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 0x19BC mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M21767_IG26: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 G_M21767_IG27: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 669, prolog size 73, PerfScore 282.38, (MethodHash=bacdaaf8) for method String:Replace(String,String):String:this ; ============================================================ OverheadJitting 1: 1 op, 11204200.00 ns, 11.2042 ms/op ; Assembly listing for method DeadCodeEliminationHelper:KeepAliveWithoutBoxing(Measurement) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) byref -> zero-ref ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M16422_IG01: ;; bbWeight=1 PerfScore 0.00 G_M16422_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=a2e5bfd9) for method DeadCodeEliminationHelper:KeepAliveWithoutBoxing(Measurement) ; ============================================================ ; Assembly listing for method Runnable_0:Dummy2():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 67, 67 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 cse0 [V02,T01] ( 3, 3 ) int -> rax "CSE - aggressive" ; V03 cse1 [V03,T02] ( 3, 3 ) int -> rax "CSE - aggressive" ; V04 cse2 [V04,T03] ( 3, 3 ) int -> rax "CSE - aggressive" ; V05 cse3 [V05,T04] ( 3, 3 ) int -> rax "CSE - aggressive" ; V06 cse4 [V06,T05] ( 3, 3 ) int -> rax "CSE - aggressive" ; V07 cse5 [V07,T06] ( 3, 3 ) int -> rax "CSE - aggressive" ; V08 cse6 [V08,T07] ( 3, 3 ) int -> rax "CSE - aggressive" ; V09 cse7 [V09,T08] ( 3, 3 ) int -> rax "CSE - aggressive" ; V10 cse8 [V10,T09] ( 3, 3 ) int -> rax "CSE - aggressive" ; V11 cse9 [V11,T10] ( 3, 3 ) int -> rax "CSE - aggressive" ; V12 cse10 [V12,T11] ( 3, 3 ) int -> rax "CSE - aggressive" ; V13 cse11 [V13,T12] ( 3, 3 ) int -> rax "CSE - aggressive" ; V14 cse12 [V14,T13] ( 3, 3 ) int -> rax "CSE - aggressive" ; V15 cse13 [V15,T14] ( 3, 3 ) int -> rax "CSE - aggressive" ; V16 cse14 [V16,T15] ( 3, 3 ) int -> rax "CSE - aggressive" ; V17 cse15 [V17,T16] ( 3, 3 ) int -> rax "CSE - aggressive" ; V18 cse16 [V18,T17] ( 3, 3 ) int -> rax "CSE - aggressive" ; V19 cse17 [V19,T18] ( 3, 3 ) int -> rax "CSE - aggressive" ; V20 cse18 [V20,T19] ( 3, 3 ) int -> rax "CSE - aggressive" ; V21 cse19 [V21,T20] ( 3, 3 ) int -> rax "CSE - aggressive" ; V22 cse20 [V22,T21] ( 3, 3 ) int -> rax "CSE - aggressive" ; V23 cse21 [V23,T22] ( 3, 3 ) int -> rax "CSE - aggressive" ; V24 cse22 [V24,T23] ( 3, 3 ) int -> rax "CSE - aggressive" ; V25 cse23 [V25,T24] ( 3, 3 ) int -> rax "CSE - aggressive" ; V26 cse24 [V26,T25] ( 3, 3 ) int -> rax "CSE - aggressive" ; V27 cse25 [V27,T26] ( 3, 3 ) int -> rax "CSE - aggressive" ; V28 cse26 [V28,T27] ( 3, 3 ) int -> rax "CSE - aggressive" ; V29 cse27 [V29,T28] ( 3, 3 ) int -> rax "CSE - aggressive" ; V30 cse28 [V30,T29] ( 3, 3 ) int -> rax "CSE - aggressive" ; V31 cse29 [V31,T30] ( 3, 3 ) int -> rax "CSE - aggressive" ; V32 cse30 [V32,T31] ( 3, 3 ) int -> rax "CSE - aggressive" ; V33 cse31 [V33,T32] ( 3, 3 ) int -> rax "CSE - aggressive" ; V34 cse32 [V34,T33] ( 3, 3 ) int -> rax "CSE - aggressive" ; V35 cse33 [V35,T34] ( 3, 3 ) int -> rax "CSE - aggressive" ; V36 cse34 [V36,T35] ( 3, 3 ) int -> rax "CSE - aggressive" ; V37 cse35 [V37,T36] ( 3, 3 ) int -> rax "CSE - aggressive" ; V38 cse36 [V38,T37] ( 3, 3 ) int -> rax "CSE - aggressive" ; V39 cse37 [V39,T38] ( 3, 3 ) int -> rax "CSE - aggressive" ; V40 cse38 [V40,T39] ( 3, 3 ) int -> rax "CSE - aggressive" ; V41 cse39 [V41,T40] ( 3, 3 ) int -> rax "CSE - aggressive" ; V42 cse40 [V42,T41] ( 3, 3 ) int -> rax "CSE - aggressive" ; V43 cse41 [V43,T42] ( 3, 3 ) int -> rax "CSE - aggressive" ; V44 cse42 [V44,T43] ( 3, 3 ) int -> rax "CSE - aggressive" ; V45 cse43 [V45,T44] ( 3, 3 ) int -> rax "CSE - aggressive" ; V46 cse44 [V46,T45] ( 3, 3 ) int -> rax "CSE - aggressive" ; V47 cse45 [V47,T46] ( 3, 3 ) int -> rax "CSE - aggressive" ; V48 cse46 [V48,T47] ( 3, 3 ) int -> rax "CSE - aggressive" ; V49 cse47 [V49,T48] ( 3, 3 ) int -> rax "CSE - aggressive" ; V50 cse48 [V50,T49] ( 3, 3 ) int -> rax "CSE - aggressive" ; V51 cse49 [V51,T50] ( 3, 3 ) int -> rax "CSE - aggressive" ; V52 cse50 [V52,T51] ( 3, 3 ) int -> rax "CSE - aggressive" ; V53 cse51 [V53,T52] ( 3, 3 ) int -> rax "CSE - aggressive" ; V54 cse52 [V54,T53] ( 3, 3 ) int -> rax "CSE - aggressive" ; V55 cse53 [V55,T54] ( 3, 3 ) int -> rax "CSE - aggressive" ; V56 cse54 [V56,T55] ( 3, 3 ) int -> rax "CSE - aggressive" ; V57 cse55 [V57,T56] ( 3, 3 ) int -> rax "CSE - aggressive" ; V58 cse56 [V58,T57] ( 3, 3 ) int -> rax "CSE - aggressive" ; V59 cse57 [V59,T58] ( 3, 3 ) int -> rax "CSE - aggressive" ; V60 cse58 [V60,T59] ( 3, 3 ) int -> rax "CSE - aggressive" ; V61 cse59 [V61,T60] ( 3, 3 ) int -> rax "CSE - aggressive" ; V62 cse60 [V62,T61] ( 3, 3 ) int -> rax "CSE - aggressive" ; V63 cse61 [V63,T62] ( 3, 3 ) int -> rax "CSE - aggressive" ; V64 cse62 [V64,T63] ( 3, 3 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 0 G_M23557_IG01: ;; bbWeight=1 PerfScore 0.00 G_M23557_IG02: mov eax, dword ptr [rcx+108] inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax ;; bbWeight=1 PerfScore 44.75 G_M23557_IG03: mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax ;; bbWeight=1 PerfScore 37.25 G_M23557_IG04: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 324, prolog size 0, PerfScore 115.40, (MethodHash=d295a3fa) for method Runnable_0:Dummy2():this ; ============================================================ ; Assembly listing for method <>c:<.ctor>b__3_1():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M40261_IG01: ;; bbWeight=1 PerfScore 0.00 G_M40261_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=61fc62ba) for method <>c:<.ctor>b__3_1():this ; ============================================================ ; Assembly listing for method Runnable_0:WorkloadActionNoUnroll(long):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 4, 10 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T05] ( 4, 7 ) long -> rdi ; V02 loc0 [V02,T03] ( 4, 13 ) long -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 2, 16 ) ref -> rbp class-hnd "non-inline candidate call" ; V05 tmp2 [V05,T02] ( 2, 16 ) int -> rax "Inlining Arg" ; V06 rat0 [V06,T00] ( 3, 24 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 40 G_M29963_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 4.75 G_M29963_IG02: xor rbx, rbx test rdi, rdi jle SHORT G_M29963_IG04 ;; bbWeight=1 PerfScore 1.50 G_M29963_IG03: mov rbp, gword ptr [rsi+96] mov rax, gword ptr [rsi+88] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]WorkloadDelegate:Invoke():int:this mov dword ptr [rbp+48], eax inc rbx cmp rbx, rdi jl SHORT G_M29963_IG03 ;; bbWeight=4 PerfScore 46.00 G_M29963_IG04: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 56, prolog size 8, PerfScore 61.10, (MethodHash=8e2f8af4) for method Runnable_0:WorkloadActionNoUnroll(long):this ; ============================================================ ; Assembly listing for method Span`1:IndexOfValue():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V03 tmp2 [V03,T01] ( 4, 6 ) ref -> rdx class-hnd "Inlining Arg" ;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V05 tmp4 [V05,T06] ( 2, 2 ) int -> rax "Inline return value spill temp" ;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V07 tmp6 [V07,T02] ( 2, 4 ) ushort -> rdx ld-addr-op "Inlining Arg" ;* V08 tmp7 [V08 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V10 tmp9 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V11 tmp10 [V11,T03] ( 2, 4 ) int -> rdx "impAppendStmt" ;* V12 tmp11 [V12 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V14 tmp13 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V15 tmp14 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V16 tmp15 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V17 tmp16 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V18 tmp17 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V19 tmp18 [V19,T04] ( 3, 2 ) byref -> r8 V02._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ; V20 tmp19 [V20,T05] ( 3, 2 ) int -> rax V02._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V21 tmp20 [V21,T07] ( 2, 1 ) byref -> r8 V04._value(offs=0x00) P-INDEP "field V04._value (fldOffset=0x0)" ;* V22 tmp21 [V22 ] ( 0, 0 ) byref -> zero-ref V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ;* V24 tmp23 [V24 ] ( 0, 0 ) byref -> zero-ref V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ;* V25 tmp24 [V25 ] ( 0, 0 ) int -> zero-ref V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ;* V26 tmp25 [V26 ] ( 0, 0 ) byref -> zero-ref V16._pointer(offs=0x00) P-INDEP "field V16._pointer (fldOffset=0x0)" ;* V27 tmp26 [V27 ] ( 0, 0 ) int -> zero-ref V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)" ;* V28 tmp27 [V28 ] ( 0, 0 ) byref -> zero-ref V18._pointer(offs=0x00) P-INDEP "field V18._pointer (fldOffset=0x0)" ;* V29 tmp28 [V29 ] ( 0, 0 ) int -> zero-ref V18._length(offs=0x08) P-INDEP "field V18._length (fldOffset=0x8)" ; ; Lcl frame size = 40 G_M15221_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M15221_IG02: mov rdx, gword ptr [rcx+24] test rdx, rdx jne SHORT G_M15221_IG04 ;; bbWeight=1 PerfScore 3.25 G_M15221_IG03: xor r8, r8 xor eax, eax jmp SHORT G_M15221_IG05 ;; bbWeight=0.50 PerfScore 1.25 G_M15221_IG04: lea r8, bword ptr [rdx+16] mov eax, dword ptr [rdx+8] ;; bbWeight=0.50 PerfScore 1.25 G_M15221_IG05: movzx rdx, word ptr [rcx+44] mov rcx, r8 mov r8d, eax call SpanHelpers:IndexOf(byref,ushort,int):int nop ;; bbWeight=1 PerfScore 3.75 G_M15221_IG06: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 48, prolog size 4, PerfScore 15.80, (MethodHash=d2c4c48a) for method Span`1:IndexOfValue():int:this ; ============================================================ ; Assembly listing for method <>c:<.ctor>b__3_2():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M26854_IG01: ;; bbWeight=1 PerfScore 0.00 G_M26854_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=68219719) for method <>c:<.ctor>b__3_2():this ; ============================================================ WorkloadJitting 1: 1 op, 19873800.00 ns, 19.8738 ms/op ; Assembly listing for method Runnable_0:Dummy3():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 67, 67 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 cse0 [V02,T01] ( 3, 3 ) int -> rax "CSE - aggressive" ; V03 cse1 [V03,T02] ( 3, 3 ) int -> rax "CSE - aggressive" ; V04 cse2 [V04,T03] ( 3, 3 ) int -> rax "CSE - aggressive" ; V05 cse3 [V05,T04] ( 3, 3 ) int -> rax "CSE - aggressive" ; V06 cse4 [V06,T05] ( 3, 3 ) int -> rax "CSE - aggressive" ; V07 cse5 [V07,T06] ( 3, 3 ) int -> rax "CSE - aggressive" ; V08 cse6 [V08,T07] ( 3, 3 ) int -> rax "CSE - aggressive" ; V09 cse7 [V09,T08] ( 3, 3 ) int -> rax "CSE - aggressive" ; V10 cse8 [V10,T09] ( 3, 3 ) int -> rax "CSE - aggressive" ; V11 cse9 [V11,T10] ( 3, 3 ) int -> rax "CSE - aggressive" ; V12 cse10 [V12,T11] ( 3, 3 ) int -> rax "CSE - aggressive" ; V13 cse11 [V13,T12] ( 3, 3 ) int -> rax "CSE - aggressive" ; V14 cse12 [V14,T13] ( 3, 3 ) int -> rax "CSE - aggressive" ; V15 cse13 [V15,T14] ( 3, 3 ) int -> rax "CSE - aggressive" ; V16 cse14 [V16,T15] ( 3, 3 ) int -> rax "CSE - aggressive" ; V17 cse15 [V17,T16] ( 3, 3 ) int -> rax "CSE - aggressive" ; V18 cse16 [V18,T17] ( 3, 3 ) int -> rax "CSE - aggressive" ; V19 cse17 [V19,T18] ( 3, 3 ) int -> rax "CSE - aggressive" ; V20 cse18 [V20,T19] ( 3, 3 ) int -> rax "CSE - aggressive" ; V21 cse19 [V21,T20] ( 3, 3 ) int -> rax "CSE - aggressive" ; V22 cse20 [V22,T21] ( 3, 3 ) int -> rax "CSE - aggressive" ; V23 cse21 [V23,T22] ( 3, 3 ) int -> rax "CSE - aggressive" ; V24 cse22 [V24,T23] ( 3, 3 ) int -> rax "CSE - aggressive" ; V25 cse23 [V25,T24] ( 3, 3 ) int -> rax "CSE - aggressive" ; V26 cse24 [V26,T25] ( 3, 3 ) int -> rax "CSE - aggressive" ; V27 cse25 [V27,T26] ( 3, 3 ) int -> rax "CSE - aggressive" ; V28 cse26 [V28,T27] ( 3, 3 ) int -> rax "CSE - aggressive" ; V29 cse27 [V29,T28] ( 3, 3 ) int -> rax "CSE - aggressive" ; V30 cse28 [V30,T29] ( 3, 3 ) int -> rax "CSE - aggressive" ; V31 cse29 [V31,T30] ( 3, 3 ) int -> rax "CSE - aggressive" ; V32 cse30 [V32,T31] ( 3, 3 ) int -> rax "CSE - aggressive" ; V33 cse31 [V33,T32] ( 3, 3 ) int -> rax "CSE - aggressive" ; V34 cse32 [V34,T33] ( 3, 3 ) int -> rax "CSE - aggressive" ; V35 cse33 [V35,T34] ( 3, 3 ) int -> rax "CSE - aggressive" ; V36 cse34 [V36,T35] ( 3, 3 ) int -> rax "CSE - aggressive" ; V37 cse35 [V37,T36] ( 3, 3 ) int -> rax "CSE - aggressive" ; V38 cse36 [V38,T37] ( 3, 3 ) int -> rax "CSE - aggressive" ; V39 cse37 [V39,T38] ( 3, 3 ) int -> rax "CSE - aggressive" ; V40 cse38 [V40,T39] ( 3, 3 ) int -> rax "CSE - aggressive" ; V41 cse39 [V41,T40] ( 3, 3 ) int -> rax "CSE - aggressive" ; V42 cse40 [V42,T41] ( 3, 3 ) int -> rax "CSE - aggressive" ; V43 cse41 [V43,T42] ( 3, 3 ) int -> rax "CSE - aggressive" ; V44 cse42 [V44,T43] ( 3, 3 ) int -> rax "CSE - aggressive" ; V45 cse43 [V45,T44] ( 3, 3 ) int -> rax "CSE - aggressive" ; V46 cse44 [V46,T45] ( 3, 3 ) int -> rax "CSE - aggressive" ; V47 cse45 [V47,T46] ( 3, 3 ) int -> rax "CSE - aggressive" ; V48 cse46 [V48,T47] ( 3, 3 ) int -> rax "CSE - aggressive" ; V49 cse47 [V49,T48] ( 3, 3 ) int -> rax "CSE - aggressive" ; V50 cse48 [V50,T49] ( 3, 3 ) int -> rax "CSE - aggressive" ; V51 cse49 [V51,T50] ( 3, 3 ) int -> rax "CSE - aggressive" ; V52 cse50 [V52,T51] ( 3, 3 ) int -> rax "CSE - aggressive" ; V53 cse51 [V53,T52] ( 3, 3 ) int -> rax "CSE - aggressive" ; V54 cse52 [V54,T53] ( 3, 3 ) int -> rax "CSE - aggressive" ; V55 cse53 [V55,T54] ( 3, 3 ) int -> rax "CSE - aggressive" ; V56 cse54 [V56,T55] ( 3, 3 ) int -> rax "CSE - aggressive" ; V57 cse55 [V57,T56] ( 3, 3 ) int -> rax "CSE - aggressive" ; V58 cse56 [V58,T57] ( 3, 3 ) int -> rax "CSE - aggressive" ; V59 cse57 [V59,T58] ( 3, 3 ) int -> rax "CSE - aggressive" ; V60 cse58 [V60,T59] ( 3, 3 ) int -> rax "CSE - aggressive" ; V61 cse59 [V61,T60] ( 3, 3 ) int -> rax "CSE - aggressive" ; V62 cse60 [V62,T61] ( 3, 3 ) int -> rax "CSE - aggressive" ; V63 cse61 [V63,T62] ( 3, 3 ) int -> rax "CSE - aggressive" ; V64 cse62 [V64,T63] ( 3, 3 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 0 G_M49124_IG01: ;; bbWeight=1 PerfScore 0.00 G_M49124_IG02: mov eax, dword ptr [rcx+108] inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax ;; bbWeight=1 PerfScore 44.75 G_M49124_IG03: mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax inc eax mov dword ptr [rcx+108], eax ;; bbWeight=1 PerfScore 37.25 G_M49124_IG04: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 324, prolog size 0, PerfScore 115.40, (MethodHash=b0f8401b) for method Runnable_0:Dummy3():this ; ============================================================ ; Assembly listing for method EngineParameters:get_IterationTime():TimeInterval:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M20786_IG01: ;; bbWeight=1 PerfScore 0.00 G_M20786_IG02: mov rcx, gword ptr [rcx+72] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r8, 0xD1FFAB1E mov r8, gword ptr [r8] cmp dword ptr [rcx], ecx ;; bbWeight=1 PerfScore 8.50 G_M20786_IG03: jmp CharacteristicObject:ResolveValue(Characteristic`1,IResolver):TimeInterval:this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 37, prolog size 0, PerfScore 14.20, (MethodHash=9d43aecd) for method EngineParameters:get_IterationTime():TimeInterval:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass2_0`1:b__0(CharacteristicObject):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> rbx class-hnd exact "Single-def Box Helper" ; V04 rat0 [V04,T01] ( 3, 6 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 32 G_M44026_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M44026_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, gword ptr [rsi+8] mov rcx, gword ptr [rax+8] mov rdx, rdi call qword ptr [rax+24]Func`2:Invoke(__Canon):int:this mov dword ptr [rbx+8], eax mov rax, rbx ;; bbWeight=1 PerfScore 10.00 G_M44026_IG03: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 59, prolog size 7, PerfScore 22.40, (MethodHash=f0415405) for method <>c__DisplayClass2_0`1:b__0(CharacteristicObject):Object:this ; ============================================================ ; Assembly listing for method <>c:<.ctor>b__2_2(CharacteristicObject):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rcx class-hnd ; V02 loc0 [V02,T01] ( 4, 2.50) int -> rsi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V05 tmp2 [V05,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp3 [V06,T04] ( 2, 0 ) ref -> rcx "argument with side effect" ; V07 tmp4 [V07,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M58310_IG01: push rdi push rsi sub rsp, 40 mov rcx, rdx ;; bbWeight=1 PerfScore 2.50 G_M58310_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] xor r8d, r8d cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,int):int:this mov esi, eax test esi, esi je SHORT G_M58310_IG06 ;; bbWeight=1 PerfScore 7.00 G_M58310_IG03: lea eax, [rsi-1] cmp eax, 1 ja SHORT G_M58310_IG08 ;; bbWeight=0.50 PerfScore 0.88 G_M58310_IG04: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M58310_IG05: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M58310_IG06: mov eax, 16 ;; bbWeight=0.50 PerfScore 0.13 G_M58310_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M58310_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov dword ptr [rdi+8], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xF031 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax mov rdx, rdi call String:Format(String,Object):String mov rdx, rax mov rcx, rsi call NotSupportedException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 160, prolog size 6, PerfScore 28.88, (MethodHash=e16a1c39) for method <>c:<.ctor>b__2_2(CharacteristicObject):int:this ; ============================================================ ; Assembly listing for method CharacteristicObject:ResolveValue(Characteristic`1,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 4 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 6, 4.50) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 3, 2.50) int -> rbx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T05] ( 3, 3 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V05 tmp2 [V05,T03] ( 4, 3.50) ref -> rdi "inline UNBOX clone1" ; V06 tmp3 [V06,T04] ( 4, 3.50) ref -> rsi "inline UNBOX clone1" ; ; Lcl frame size = 32 G_M24464_IG01: push rdi push rsi push rbx sub rsp, 32 mov rdi, rcx mov rsi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 4.00 G_M24464_IG02: mov rcx, rdi mov rdx, rsi call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax jne SHORT G_M24464_IG07 ;; bbWeight=1 PerfScore 2.75 G_M24464_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], ebx mov r8, rax mov rcx, rsi mov rdx, rdi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+32]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rdi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rdi], rdx je SHORT G_M24464_IG05 ;; bbWeight=0.50 PerfScore 6.75 G_M24464_IG04: mov rdx, rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M24464_IG05: mov eax, dword ptr [rdi+8] ;; bbWeight=0.50 PerfScore 1.00 G_M24464_IG06: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M24464_IG07: mov rcx, rdi mov rdx, rsi call CharacteristicObject:GetValue(Characteristic):Object:this mov rsi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rsi], rdx je SHORT G_M24464_IG09 ;; bbWeight=0.50 PerfScore 2.50 G_M24464_IG08: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M24464_IG09: mov eax, dword ptr [rsi+8] ;; bbWeight=0.50 PerfScore 1.00 G_M24464_IG10: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 173, prolog size 7, PerfScore 38.80, (MethodHash=34c7a06f) for method CharacteristicObject:ResolveValue(Characteristic`1,int):int:this ; ============================================================ ; Assembly listing for method Characteristic`1:ResolveValueCore(CharacteristicObject,Object):Object:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 5, 3.50) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 4, 3 ) ref -> r8 class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T09] ( 2, 2 ) ref -> rdi class-hnd "impAppendStmt" ; V05 tmp2 [V05,T03] ( 4, 3.50) ref -> rbx "inline UNBOX clone1" ; V06 tmp3 [V06,T05] ( 3, 3 ) ref -> rbp class-hnd exact "Single-def Box Helper" ; V07 tmp4 [V07,T04] ( 4, 3.50) ref -> rdi "inline UNBOX clone1" ; V08 tmp5 [V08,T06] ( 3, 3 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V09 cse0 [V09,T08] ( 3, 2.50) ref -> rdi "CSE - aggressive" ; V10 rat0 [V10,T07] ( 3, 3 ) ref -> rdi "delegate invoke call" ; ; Lcl frame size = 40 G_M41771_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rdx ;; bbWeight=1 PerfScore 4.50 G_M41771_IG02: mov rdi, gword ptr [rcx+48] test rdi, rdi jne SHORT G_M41771_IG07 ;; bbWeight=1 PerfScore 3.25 G_M41771_IG03: mov rdx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rdi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rdi], rdx je SHORT G_M41771_IG05 ;; bbWeight=0.50 PerfScore 3.50 G_M41771_IG04: mov rdx, rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41771_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov ecx, dword ptr [rdi+8] mov dword ptr [rax+8], ecx ;; bbWeight=0.50 PerfScore 2.13 G_M41771_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M41771_IG07: mov rdx, rsi mov rax, 0xD1FFAB1E call gword ptr [rax]Characteristic:ResolveValueCore(CharacteristicObject,Object):Object:this mov rbx, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rbx], rdx je SHORT G_M41771_IG09 ;; bbWeight=0.50 PerfScore 3.50 G_M41771_IG08: mov rdx, rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M41771_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov r8d, dword ptr [rbx+8] mov rcx, gword ptr [rdi+8] mov rdx, rsi call qword ptr [rdi+24]Func`3:Invoke(__Canon,int):int:this mov dword ptr [rbp+8], eax mov rax, rbp ;; bbWeight=0.50 PerfScore 5.00 G_M41771_IG10: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 199, prolog size 8, PerfScore 45.78, (MethodHash=f6005cd4) for method Characteristic`1:ResolveValueCore(CharacteristicObject,Object):Object:this ; ============================================================ ; Assembly listing for method JobExtensions:WithMinInvokeCount(Job,int):Job ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi ; V02 loc0 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd exact ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T00] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 32 G_M56722_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M56722_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov dword ptr [rbx+8], edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, rsi mov rdx, rdi ;; bbWeight=1 PerfScore 7.50 G_M56722_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp JobExtensions:WithCore(Job,Action`1):Job ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 95, prolog size 12, PerfScore 24.50, (MethodHash=1b95226d) for method JobExtensions:WithMinInvokeCount(Job,int):Job ; ============================================================ ; Assembly listing for method <>c__DisplayClass56_0:b__0(Job):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T05] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> rax class-hnd exact "Inlining Arg" ; V04 tmp2 [V04,T06] ( 3, 4.24) ref -> rax "CASTCLASS eval op1" ; V05 tmp3 [V05,T08] ( 3, 1.24) long -> rcx "fgInsertCommaFormTemp is creating a new local variable" ; V06 tmp4 [V06,T00] ( 6, 8.74) ref -> rdi class-hnd "spilling QMark2" ; V07 tmp5 [V07,T07] ( 2, 4 ) int -> rsi "Inlining Arg" ; V08 tmp6 [V08,T03] ( 3, 6 ) ref -> rbx class-hnd exact "Inlining Arg" ; V09 tmp7 [V09,T04] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; ; Lcl frame size = 32 G_M40072_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M40072_IG02: cmp dword ptr [rdx], edx mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] cmp dword ptr [rax], eax mov rcx, rdx mov rdx, rax call CharacteristicObject:GetValue(Characteristic):Object:this mov rdi, rax test rdi, rdi je SHORT G_M40072_IG05 ;; bbWeight=1 PerfScore 9.25 G_M40072_IG03: mov rcx, 0xD1FFAB1E cmp qword ptr [rdi], rcx je SHORT G_M40072_IG05 ;; bbWeight=0.25 PerfScore 0.81 G_M40072_IG04: mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rdi, rax ;; bbWeight=0.12 PerfScore 0.18 G_M40072_IG05: mov esi, dword ptr [rsi+8] cmp dword ptr [rdi], edi mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] cmp dword ptr [rbx], ebx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], esi mov r8, rax mov rcx, rdi mov rdx, rbx ;; bbWeight=1 PerfScore 11.25 G_M40072_IG06: add rsp, 32 pop rbx pop rsi pop rdi jmp CharacteristicObject:SetValue(Characteristic,Object):this ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 131, prolog size 7, PerfScore 41.84, (MethodHash=1b4e6377) for method <>c__DisplayClass56_0:b__0(Job):this ; ============================================================ ; Assembly listing for method <>c:<.ctor>b__2_3():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M32719_IG01: ;; bbWeight=1 PerfScore 0.00 G_M32719_IG02: mov eax, 1 ;; bbWeight=1 PerfScore 0.25 G_M32719_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 6, prolog size 0, PerfScore 1.85, (MethodHash=31648030) for method <>c:<.ctor>b__2_3():int:this ; ============================================================ ; Assembly listing for method Engine:Run():RunResults:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 26, 19 ) ref -> rsi this class-hnd ; V01 RetBuf [V01,T03] ( 4, 4 ) byref -> rbx ; V02 loc0 [V02,T05] ( 7, 4.50) long -> rdi ; V03 loc1 [V03,T20] ( 3, 2.50) ref -> rbp class-hnd ; V04 loc2 [V04,T27] ( 2, 2 ) ref -> r14 class-hnd ; V05 loc3 [V05,T23] ( 3, 2 ) struct (32) [rsp+0x118] do-not-enreg[SB] must-init ;* V06 loc4 [V06 ] ( 0, 0 ) struct (24) zero-ref ; V07 loc5 [V07,T30] ( 2, 2 ) int -> rax ;* V08 loc6 [V08 ] ( 0, 0 ) struct (24) zero-ref ; V09 loc7 [V09 ] ( 3, 1.50) struct (56) [rsp+0xE0] do-not-enreg[XSFB] must-init addr-exposed ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T04] ( 3, 6 ) ref -> rcx class-hnd "impAppendStmt" ; V12 tmp2 [V12,T13] ( 2, 4 ) int -> rdx "impAppendStmt" ; V13 tmp3 [V13,T02] ( 7, 7 ) struct (32) [rsp+0xC0] do-not-enreg[SFB] "NewObj constructor temp" ; V14 tmp4 [V14,T07] ( 2, 4 ) ref -> rcx class-hnd "impAppendStmt" ; V15 tmp5 [V15,T08] ( 2, 4 ) ref -> rdx class-hnd exact "impAppendStmt" ; V16 tmp6 [V16 ] ( 6, 12 ) struct (80) [rsp+0x70] do-not-enreg[XSFB] must-init addr-exposed "NewObj constructor temp" ; V17 tmp7 [V17,T15] ( 3, 3 ) ref -> rcx class-hnd exact "impAppendStmt" ; V18 tmp8 [V18,T31] ( 2, 2 ) struct (32) [rsp+0x50] do-not-enreg[SB] "impAppendStmt" ; V19 tmp9 [V19,T16] ( 3, 3 ) ref -> rcx class-hnd "impAppendStmt" ; V20 tmp10 [V20,T32] ( 2, 2 ) int -> r9 "impAppendStmt" ; V21 tmp11 [V21,T17] ( 3, 3 ) ref -> rcx class-hnd "impAppendStmt" ; V22 tmp12 [V22,T18] ( 3, 3 ) ref -> rcx class-hnd "impAppendStmt" ; V23 tmp13 [V23,T19] ( 3, 3 ) ref -> rcx class-hnd exact "impAppendStmt" ; V24 tmp14 [V24,T09] ( 2, 4 ) ref -> r8 class-hnd exact "Inlining Arg" ; V25 tmp15 [V25,T28] ( 2, 2 ) ref -> r8 class-hnd "Inlining Arg" ; V26 tmp16 [V26,T33] ( 2, 2 ) int -> r9 "Inlining Arg" ; V27 tmp17 [V27,T34] ( 2, 2 ) int -> r9 "Inlining Arg" ; V28 tmp18 [V28,T35] ( 2, 2 ) int -> rdx "Inlining Arg" ; V29 tmp19 [V29,T10] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ; V30 tmp20 [V30,T14] ( 2, 4 ) bool -> r8 "Inlining Arg" ; V31 tmp21 [V31,T11] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ;* V32 tmp22 [V32 ] ( 0, 0 ) struct (24) zero-ref "NewObj constructor temp" ;* V33 tmp23 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V34 tmp24 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V35 tmp25 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V36 tmp26 [V36,T36] ( 2, 2 ) int -> rcx "Inlining Arg" ; V37 tmp27 [V37,T12] ( 2, 4 ) ref -> r8 class-hnd exact "Inlining Arg" ; V38 tmp28 [V38,T29] ( 2, 2 ) ref -> r8 class-hnd "Inlining Arg" ;* V39 tmp29 [V39 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SB] "Inlining Arg" ;* V40 tmp30 [V40 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" ; V41 tmp31 [V41,T24] ( 3, 2 ) long -> r15 V06.k__BackingField(offs=0x00) P-INDEP "field V06.k__BackingField (fldOffset=0x0)" ; V42 tmp32 [V42,T25] ( 3, 2 ) long -> r12 V06.k__BackingField(offs=0x08) P-INDEP "field V06.k__BackingField (fldOffset=0x8)" ; V43 tmp33 [V43,T26] ( 3, 2 ) long -> r13 V06.k__BackingField(offs=0x10) P-INDEP "field V06.k__BackingField (fldOffset=0x10)" ;* V44 tmp34 [V44,T42] ( 0, 0 ) long -> zero-ref V08.k__BackingField(offs=0x00) P-INDEP "field V08.k__BackingField (fldOffset=0x0)" ;* V45 tmp35 [V45,T43] ( 0, 0 ) long -> zero-ref V08.k__BackingField(offs=0x08) P-INDEP "field V08.k__BackingField (fldOffset=0x8)" ;* V46 tmp36 [V46,T44] ( 0, 0 ) long -> zero-ref V08.k__BackingField(offs=0x10) P-INDEP "field V08.k__BackingField (fldOffset=0x10)" ;* V47 tmp37 [V47,T45] ( 0, 0 ) long -> zero-ref V32.k__BackingField(offs=0x00) P-INDEP "field V32.k__BackingField (fldOffset=0x0)" ;* V48 tmp38 [V48,T46] ( 0, 0 ) long -> zero-ref V32.k__BackingField(offs=0x08) P-INDEP "field V32.k__BackingField (fldOffset=0x8)" ;* V49 tmp39 [V49,T47] ( 0, 0 ) long -> zero-ref V32.k__BackingField(offs=0x10) P-INDEP "field V32.k__BackingField (fldOffset=0x10)" ; V50 tmp40 [V50,T37] ( 2, 2 ) long -> r15 V40.k__BackingField(offs=0x00) P-INDEP "field V40.k__BackingField (fldOffset=0x0)" ; V51 tmp41 [V51,T38] ( 2, 2 ) long -> r12 V40.k__BackingField(offs=0x08) P-INDEP "field V40.k__BackingField (fldOffset=0x8)" ; V52 tmp42 [V52,T39] ( 2, 2 ) long -> r13 V40.k__BackingField(offs=0x10) P-INDEP "field V40.k__BackingField (fldOffset=0x10)" ; V53 tmp43 [V53 ] ( 2, 2 ) struct (32) [rsp+0x30] do-not-enreg[XSB] addr-exposed "by-value struct argument" ;* V54 tmp44 [V54,T41] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V55 tmp45 [V55,T40] ( 2, 2 ) long -> rdx "argument with side effect" ; V56 tmp46 [V56,T06] ( 4, 4 ) byref -> rcx stack-byref "BlockOp address local" ; V57 tmp47 [V57,T01] ( 4, 8 ) byref -> rcx stack-byref "BlockOp address local" ; V58 cse0 [V58,T21] ( 3, 2.50) ref -> rcx "CSE - moderate" ; V59 cse1 [V59,T22] ( 3, 2.50) ref -> rcx "CSE - moderate" ; ; Lcl frame size = 312 G_M15507_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 312 vzeroupper vxorps xmm4, xmm4 mov rax, -192 vmovdqa xmmword ptr [rsp+rax+130H], xmm4 vmovdqa xmmword ptr [rsp+rax+140H], xmm4 vmovdqa xmmword ptr [rsp+rax+150H], xmm4 add rax, 48 jne SHORT -5 instr mov qword ptr [rsp+130H], rax mov rsi, rcx mov rbx, rdx ;; bbWeight=1 PerfScore 15.58 G_M15507_IG02: mov ecx, dword ptr [rsi+168] movsxd rdi, ecx xor rbp, rbp mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov r8, rcx cmp byte ptr [r8+157], 0 je SHORT G_M15507_IG04 ;; bbWeight=1 PerfScore 8.00 G_M15507_IG03: mov r8, gword ptr [rsi+112] cmp dword ptr [rcx], ecx mov edx, 1 call EventSource:WriteEvent(int,String):this ;; bbWeight=0.50 PerfScore 2.63 G_M15507_IG04: cmp dword ptr [rsi+164], 1 je G_M15507_IG07 ;; bbWeight=1 PerfScore 3.00 G_M15507_IG05: cmp dword ptr [rsi+164], 2 je SHORT G_M15507_IG06 mov rcx, gword ptr [rsi+128] cmp dword ptr [rcx], ecx call EnginePilotStage:Run():long:this mov rdi, rax cmp byte ptr [rsi+173], 0 je SHORT G_M15507_IG06 mov rcx, gword ptr [rsi+136] mov r9d, dword ptr [rsi+160] cmp dword ptr [rcx], ecx xor edx, edx mov dword ptr [rsp+20H], edx mov rdx, rdi xor r8d, r8d call EngineWarmupStage:Run(long,int,int,int):List`1:this mov rcx, gword ptr [rsi+144] mov r9d, dword ptr [rsi+160] cmp dword ptr [rcx], ecx mov rdx, rdi xor r8d, r8d call EngineActualStage:RunAuto(long,int,int):List`1:this mov rbp, rax ;; bbWeight=0.50 PerfScore 13.88 G_M15507_IG06: mov rcx, gword ptr [rsi+136] mov r9d, dword ptr [rsi+160] mov edx, dword ptr [rsi+164] cmp dword ptr [rcx], ecx mov dword ptr [rsp+20H], edx mov rdx, rdi mov r8d, 1 call EngineWarmupStage:Run(long,int,int,int):List`1:this ;; bbWeight=0.50 PerfScore 5.25 G_M15507_IG07: mov rcx, gword ptr [rsi+8] mov r11, 0xD1FFAB1E mov edx, 2 mov rax, 0xD1FFAB1E call qword ptr [rax]IHost:SendSignal(int):this mov rcx, gword ptr [rsi+144] mov edx, dword ptr [rsi+160] cmp dword ptr [rsi+164], 2 sete r8b movzx r8, r8b cmp dword ptr [rcx], ecx mov dword ptr [rsp+20H], edx mov dword ptr [rsp+28H], r8d mov rdx, rdi mov r8d, 1 xor r9d, r9d call EngineActualStage:Run(long,int,bool,int,bool):IReadOnlyList`1:this mov r14, rax mov rcx, gword ptr [rsi+8] mov r11, 0xD1FFAB1E mov edx, 3 mov rax, 0xD1FFAB1E call qword ptr [rax]IHost:SendSignal(int):this cmp byte ptr [rsi+174], 0 jne SHORT G_M15507_IG09 ;; bbWeight=1 PerfScore 27.75 G_M15507_IG08: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] vmovdqu xmm0, xmmword ptr [rcx+8] vmovdqu xmmword ptr [rsp+50H], xmm0 vmovdqu xmm0, xmmword ptr [rcx+24] vmovdqu xmmword ptr [rsp+60H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+50H] vmovdqu xmmword ptr [rsp+118H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+60H] vmovdqu xmmword ptr [rsp+128H], xmm0 xor r15, r15 xor r12, r12 xor r13, r13 jmp G_M15507_IG10 ;; bbWeight=0.50 PerfScore 7.50 G_M15507_IG09: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+C0H], xmm0 vmovdqu xmmword ptr [rsp+D0H], xmm0 mov ecx, dword ptr [rsi+160] mov dword ptr [rsp+C0H], 1 mov dword ptr [rsp+C4H], 3 xor edx, edx mov dword ptr [rsp+C8H], edx mov qword ptr [rsp+D0H], rdi mov dword ptr [rsp+D8H], ecx lea rdx, [rsp+E0H] vmovdqu xmm0, xmmword ptr [rsp+C0H] vmovdqu xmmword ptr [rsp+30H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+D0H] vmovdqu xmmword ptr [rsp+40H], xmm0 mov rcx, rsi lea r8, bword ptr [rsp+30H] call Engine:GetExtraStats(IterationData):ValueTuple`2:this vmovdqu xmm0, xmmword ptr [rsp+E0H] vmovdqu xmmword ptr [rsp+118H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+F0H] vmovdqu xmmword ptr [rsp+128H], xmm0 lea rcx, bword ptr [rsp+100H] mov r15, qword ptr [rcx] mov r12, qword ptr [rcx+8] mov r13, qword ptr [rcx+16] ;; bbWeight=0.50 PerfScore 13.17 G_M15507_IG10: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov r8, rcx cmp byte ptr [r8+157], 0 je SHORT G_M15507_IG12 ;; bbWeight=1 PerfScore 5.50 G_M15507_IG11: mov r8, gword ptr [rsi+112] cmp dword ptr [rcx], ecx mov edx, 2 call EventSource:WriteEvent(int,String):this ;; bbWeight=0.50 PerfScore 2.63 G_M15507_IG12: mov rcx, gword ptr [rsi+56] mov r8, 0xD1FFAB1E mov rdx, gword ptr [r8] mov r8, gword ptr [rsi+96] cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this mov dword ptr [rsp+80H], eax mov gword ptr [rsp+70H], rbp mov gword ptr [rsp+78H], r14 vmovdqu xmm0, xmmword ptr [rsp+118H] vmovdqu xmmword ptr [rsp+88H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+128H] vmovdqu xmmword ptr [rsp+98H], xmm0 lea rcx, bword ptr [rsp+A8H] mov qword ptr [rcx], r15 mov qword ptr [rcx+8], r12 mov qword ptr [rcx+16], r13 mov rdi, rbx lea rsi, bword ptr [rsp+70H] call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF mov ecx, 8 rep movsq mov rax, rbx ;; bbWeight=1 PerfScore 48.00 G_M15507_IG13: add rsp, 312 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 ; Total bytes of code 867, prolog size 77, PerfScore 247.53, (MethodHash=dbbdc36c) for method Engine:Run():RunResults:this ; ============================================================ ; Assembly listing for method EnginePilotStage:Run():long:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T04] ( 3, 3 ) ref -> rax class-hnd "Inlining Arg" ; V03 tmp2 [V03,T05] ( 3, 3 ) ref -> rdx class-hnd exact "Inlining Arg" ; V04 tmp3 [V04,T07] ( 3, 2.24) ref -> rax "CASTCLASS eval op1" ; V05 tmp4 [V05,T09] ( 3, 1.24) long -> rdx "fgInsertCommaFormTemp is creating a new local variable" ; V06 tmp5 [V06,T01] ( 6, 4.74) ref -> rcx class-hnd "spilling QMark2" ; V07 tmp6 [V07,T06] ( 3, 3 ) ref -> rdx class-hnd exact "Inlining Arg" ; V08 tmp7 [V08,T03] ( 4, 3.50) ref -> rsi "inline UNBOX clone1" ; V09 tmp8 [V09,T02] ( 2, 4 ) ref -> rcx "argument with side effect" ; V10 tmp9 [V10,T08] ( 2, 2 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 32 G_M54336_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M54336_IG02: mov rcx, gword ptr [rsi+8] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] cmp dword ptr [rcx], ecx call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax je G_M54336_IG10 ;; bbWeight=1 PerfScore 12.25 G_M54336_IG03: mov rcx, gword ptr [rsi+8] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this cmp dword ptr [rax], eax mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rcx] cmp dword ptr [rdx], edx mov rcx, rax call CharacteristicObject:GetValue(Characteristic):Object:this mov rcx, rax test rcx, rcx je SHORT G_M54336_IG06 ;; bbWeight=0.50 PerfScore 7.25 G_M54336_IG04: mov rdx, 0xD1FFAB1E cmp qword ptr [rcx], rdx je SHORT G_M54336_IG06 ;; bbWeight=0.25 PerfScore 0.81 G_M54336_IG05: mov rcx, rdx mov rdx, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rcx, rax ;; bbWeight=0.12 PerfScore 0.21 G_M54336_IG06: cmp dword ptr [rcx], ecx mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] cmp dword ptr [rdx], edx call CharacteristicObject:GetValue(Characteristic):Object:this mov rsi, rax mov rdx, 0xD1FFAB1E cmp qword ptr [rsi], rdx je SHORT G_M54336_IG08 ;; bbWeight=0.50 PerfScore 5.38 G_M54336_IG07: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_UNBOX ;; bbWeight=0.25 PerfScore 0.38 G_M54336_IG08: mov eax, dword ptr [rsi+8] movsxd rax, eax ;; bbWeight=0.50 PerfScore 1.13 G_M54336_IG09: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M54336_IG10: mov rcx, gword ptr [rsi+8] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] cmp dword ptr [rcx], ecx call CharacteristicObject:HasValue(Characteristic):bool:this test eax, eax jne SHORT G_M54336_IG12 mov rcx, rsi ;; bbWeight=0.50 PerfScore 6.25 G_M54336_IG11: add rsp, 32 pop rsi jmp EnginePilotStage:RunAuto():long:this ;; bbWeight=0.50 PerfScore 1.38 G_M54336_IG12: mov rcx, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M54336_IG13: add rsp, 32 pop rsi jmp EnginePilotStage:RunSpecific():long:this ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 302, prolog size 5, PerfScore 69.10, (MethodHash=fc762bbf) for method EnginePilotStage:Run():long:this ; ============================================================ ; Assembly listing for method EnginePilotStage:RunSpecific():long:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 9, 44 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T02] ( 7, 38 ) long -> rdi ; V02 loc1 [V02,T06] ( 4, 25 ) int -> rbx ; V03 loc2 [V03,T08] ( 4, 9 ) int -> rbp ; V04 loc3 [V04 ] ( 2, 16 ) struct (32) [rsp+0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ; V05 loc4 [V05,T09] ( 2, 16 ) double -> mm0 ; V06 loc5 [V06,T05] ( 4, 28 ) long -> rax ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T07] ( 3, 12 ) long -> [rsp+0x40] "Inline return value spill temp" ; V09 tmp2 [V09,T03] ( 3, 36 ) long -> rdx "Inlining Arg" ; V10 tmp3 [V10,T04] ( 3, 36 ) long -> rcx "Inlining Arg" ; V11 tmp4 [V11,T00] ( 6, 54 ) long -> rcx "Inlining Arg" ; ; Lcl frame size = 104 G_M27616_IG01: push rdi push rsi push rbp push rbx sub rsp, 104 vzeroupper xor rax, rax mov qword ptr [rsp+48H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+50H], xmm4 mov qword ptr [rsp+60H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 9.08 G_M27616_IG02: mov rcx, rsi mov edx, 4 call EnginePilotStage:Autocorrect(long):long:this mov rdi, rax xor ebx, ebx xor ebp, ebp ;; bbWeight=1 PerfScore 2.25 G_M27616_IG03: inc ebx mov dword ptr [rsp+20H], ebx mov qword ptr [rsp+28H], rdi mov edx, dword ptr [rsi+40] mov dword ptr [rsp+30H], edx lea rdx, [rsp+48H] mov rcx, rsi mov r8d, 1 mov r9d, 1 call EngineStage:RunIteration(int,int,int,long,int):Measurement:this vmovsd xmm0, qword ptr [rsp+60H] mov ecx, dword ptr [rsi+44] movsxd rdx, ecx vxorps xmm1, xmm1 vcvtsi2sd xmm1, rdi vmulsd xmm1, xmm1, qword ptr [rsi+24] vdivsd xmm0, xmm1, xmm0 vroundsd xmm0, xmm0, 4 vcvttsd2si rcx, xmm0 cmp rdx, rcx jge SHORT G_M27616_IG05 ;; bbWeight=8 PerfScore 386.67 G_M27616_IG04: mov qword ptr [rsp+40H], rcx jmp SHORT G_M27616_IG06 ;; bbWeight=2 PerfScore 6.00 G_M27616_IG05: mov qword ptr [rsp+40H], rdx ;; bbWeight=2 PerfScore 2.00 G_M27616_IG06: mov rcx, rsi mov rdx, qword ptr [rsp+40H] call EnginePilotStage:Autocorrect(long):long:this cmp rax, rdi jge SHORT G_M27616_IG08 ;; bbWeight=8 PerfScore 28.00 G_M27616_IG07: inc ebp ;; bbWeight=2 PerfScore 0.50 G_M27616_IG08: mov rcx, rax sub rcx, rdi test rcx, rcx jge SHORT G_M27616_IG10 ;; bbWeight=8 PerfScore 14.00 G_M27616_IG09: neg rcx test rcx, rcx jl SHORT G_M27616_IG14 ;; bbWeight=1 PerfScore 1.50 G_M27616_IG10: cmp rcx, 1 jle SHORT G_M27616_IG12 ;; bbWeight=8 PerfScore 10.00 G_M27616_IG11: cmp ebp, 3 jge SHORT G_M27616_IG12 mov rdi, rax jmp G_M27616_IG03 ;; bbWeight=4 PerfScore 14.00 G_M27616_IG12: mov rcx, gword ptr [rsi+8] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEngine:WriteLine():this mov rax, rdi ;; bbWeight=1 PerfScore 5.75 G_M27616_IG13: add rsp, 104 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M27616_IG14: call Math:ThrowAbsOverflow() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 259, prolog size 33, PerfScore 509.50, (MethodHash=c343941f) for method EnginePilotStage:RunSpecific():long:this ; ============================================================ ; Assembly listing for method EnginePilotStage:Autocorrect(long):long:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) long -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 cse0 [V03,T02] ( 4, 4 ) long -> rcx "CSE - aggressive" ; ; Lcl frame size = 0 G_M14514_IG01: ;; bbWeight=1 PerfScore 0.00 G_M14514_IG02: mov eax, dword ptr [rcx+40] movsxd rcx, eax lea rax, [rdx+rcx-1] cdq idiv rdx:rax, rcx imul rax, rcx ;; bbWeight=1 PerfScore 74.25 G_M14514_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 21, prolog size 0, PerfScore 77.35, (MethodHash=d5e4c74d) for method EnginePilotStage:Autocorrect(long):long:this ; ============================================================ ; Assembly listing for method EngineStage:RunIteration(int,int,int,long,int):Measurement:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> rcx this class-hnd ; V01 RetBuf [V01,T01] ( 4, 4 ) byref -> rsi ; V02 arg1 [V02,T03] ( 3, 3 ) int -> r8 ; V03 arg2 [V03,T04] ( 3, 3 ) int -> r9 ; V04 arg3 [V04,T10] ( 1, 1 ) int -> [rsp+0xA0] ; V05 arg4 [V05,T08] ( 3, 2 ) long -> rdi ; V06 arg5 [V06,T09] ( 3, 2 ) int -> rbx ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T00] ( 7, 14 ) struct (32) [rsp+0x40] do-not-enreg[SFB] "NewObj constructor temp" ; V09 tmp2 [V09,T05] ( 2, 4 ) ref -> rcx class-hnd "impAppendStmt" ; V10 tmp3 [V10,T11] ( 3, 0 ) ref -> rsi class-hnd exact "Single-def Box Helper" ; V11 tmp4 [V11,T12] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V12 tmp5 [V12,T13] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V13 tmp6 [V13,T14] ( 2, 0 ) ref -> rcx "argument with side effect" ; V14 tmp7 [V14,T15] ( 2, 0 ) ref -> rdx "argument with side effect" ; V15 tmp8 [V15 ] ( 2, 4 ) struct (32) [rsp+0x20] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V16 tmp9 [V16,T06] ( 2, 4 ) ref -> rcx "argument with side effect" ; V17 tmp10 [V17,T07] ( 2, 4 ) byref -> rdx "argument with side effect" ; ; Lcl frame size = 96 G_M24275_IG01: push rdi push rsi push rbx sub rsp, 96 vzeroupper mov rsi, rdx mov rdi, qword ptr [rsp+A8H] mov ebx, dword ptr [rsp+B0H] ;; bbWeight=1 PerfScore 6.50 G_M24275_IG02: movsxd r11, ebx mov rax, rdi cdq idiv rdx:rax, r11 test rdx, rdx jne G_M24275_IG05 ;; bbWeight=1 PerfScore 70.75 G_M24275_IG03: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+40H], xmm0 vmovdqu xmmword ptr [rsp+50H], xmm0 mov rcx, gword ptr [rcx+8] mov dword ptr [rsp+40H], r8d mov dword ptr [rsp+44H], r9d mov r8d, dword ptr [rsp+A0H] mov dword ptr [rsp+48H], r8d mov qword ptr [rsp+50H], rdi mov dword ptr [rsp+58H], ebx mov rdx, rsi vmovdqu xmm0, xmmword ptr [rsp+40H] vmovdqu xmmword ptr [rsp+20H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+50H] vmovdqu xmmword ptr [rsp+30H], xmm0 lea r8, bword ptr [rsp+20H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEngine:RunIteration(IterationData):Measurement:this mov rax, rsi ;; bbWeight=1 PerfScore 18.83 G_M24275_IG04: add rsp, 96 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M24275_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov qword ptr [rsi+8], rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov dword ptr [rdi+8], ebx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov ecx, 0xF063 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax mov rdx, rsi mov r8, rdi call String:Format(String,Object,Object):String mov rdx, rax mov rcx, rbx call ArgumentOutOfRangeException:.ctor(String):this mov rcx, rbx call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 280, prolog size 10, PerfScore 127.53, (MethodHash=e95fa12c) for method EngineStage:RunIteration(int,int,int,long,int):Measurement:this ; ============================================================ ; Assembly listing for method StringBuilder:Append(ushort,int):StringBuilder:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 11, 13 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T06] ( 3, 4 ) ushort -> rbx ; V02 arg2 [V02,T00] ( 11, 15.50) int -> rsi ; V03 loc0 [V03,T07] ( 3, 1.50) int -> rcx ; V04 loc1 [V04,T03] ( 7, 13 ) int -> registers ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T09] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T01] ( 4, 16 ) int -> rdx "impSpillLclRefs" ; V08 tmp3 [V08,T10] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp4 [V09,T11] ( 2, 0 ) ref -> rcx "argument with side effect" ; V10 tmp5 [V10,T12] ( 2, 0 ) ref -> rdi "argument with side effect" ; V11 tmp6 [V11,T13] ( 2, 0 ) ref -> r8 "argument with side effect" ; V12 tmp7 [V12,T14] ( 2, 0 ) ref -> rcx "argument with side effect" ; V13 tmp8 [V13,T15] ( 2, 0 ) ref -> rdi "argument with side effect" ; V14 tmp9 [V14,T16] ( 2, 0 ) ref -> r8 "argument with side effect" ; V15 tmp10 [V15,T04] ( 3, 12 ) ref -> rcx "arr expr" ; V16 cse0 [V16,T05] ( 3, 10 ) ref -> rcx "CSE - aggressive" ; V17 cse1 [V17,T08] ( 3, 1.50) int -> rdx "CSE - moderate" ; ; Lcl frame size = 32 G_M20433_IG01: push rdi push rsi push rbx sub rsp, 32 mov rdi, rcx mov ebx, edx mov esi, r8d ;; bbWeight=1 PerfScore 4.00 G_M20433_IG02: test esi, esi jl SHORT G_M20433_IG16 ;; bbWeight=1 PerfScore 1.25 G_M20433_IG03: test esi, esi jne SHORT G_M20433_IG06 ;; bbWeight=1 PerfScore 1.25 G_M20433_IG04: mov rax, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M20433_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M20433_IG06: mov ecx, dword ptr [rdi+28] mov edx, dword ptr [rdi+24] add ecx, edx add ecx, esi cmp ecx, dword ptr [rdi+32] jg G_M20433_IG17 cmp ecx, esi jl G_M20433_IG17 ;; bbWeight=0.50 PerfScore 4.38 G_M20433_IG07: test esi, esi jle SHORT G_M20433_IG10 ;; bbWeight=0.50 PerfScore 0.63 G_M20433_IG08: mov rcx, gword ptr [rdi+8] cmp dword ptr [rcx+8], edx jle SHORT G_M20433_IG11 ;; bbWeight=4 PerfScore 20.00 G_M20433_IG09: lea eax, [rdx+1] cmp edx, dword ptr [rcx+8] jae G_M20433_IG18 movsxd rdx, edx mov word ptr [rcx+2*rdx+16], bx dec esi jmp SHORT G_M20433_IG12 ;; bbWeight=2 PerfScore 14.00 G_M20433_IG10: mov eax, edx jmp SHORT G_M20433_IG13 ;; bbWeight=0.25 PerfScore 0.56 G_M20433_IG11: mov dword ptr [rdi+24], edx mov rcx, rdi mov edx, esi call StringBuilder:ExpandByABlock(int):this xor edx, edx mov eax, edx ;; bbWeight=2 PerfScore 6.00 G_M20433_IG12: test esi, esi jg SHORT G_M20433_IG15 ;; bbWeight=4 PerfScore 5.00 G_M20433_IG13: mov dword ptr [rdi+24], eax mov rax, rdi ;; bbWeight=0.50 PerfScore 0.63 G_M20433_IG14: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M20433_IG15: mov edx, eax jmp SHORT G_M20433_IG08 ;; bbWeight=2 PerfScore 4.50 G_M20433_IG16: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1A4E3 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xA1DB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M20433_IG17: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1A4E3 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x9E11 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M20433_IG18: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 334, prolog size 15, PerfScore 98.46, (MethodHash=f4f3b02e) for method StringBuilder:Append(ushort,int):StringBuilder:this ; ============================================================ WorkloadPilot 1: 4 op, 800.00 ns, 200.0000 ns/op ; Assembly listing for method Number:UInt32ToDecChars(long,int,int):long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 6, 9 ) long -> rcx ; V01 arg1 [V01,T02] ( 6, 16 ) int -> registers ; V02 arg2 [V02,T01] ( 5, 26 ) int -> r8 ; V03 loc0 [V03,T06] ( 2, 4 ) int -> r9 ld-addr-op ;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T00] ( 2, 32 ) int -> r8 "dup spill" ; V06 tmp2 [V06,T04] ( 2, 8 ) long -> rcx "dup spill" ; V07 tmp3 [V07,T05] ( 3, 6 ) int -> rdx "Inline stloc first use temp" ; ; Lcl frame size = 0 G_M1229_IG01: mov r9d, edx ;; bbWeight=1 PerfScore 0.25 G_M1229_IG02: jmp SHORT G_M1229_IG04 ;; bbWeight=1 PerfScore 2.00 G_M1229_IG03: mov edx, 0xD1FFAB1E mov eax, r9d mul edx:eax, edx shr edx, 3 lea eax, [rdx+4*rdx] add eax, eax sub r9d, eax add rcx, -2 add r9d, 48 mov word ptr [rcx], r9w mov r9d, edx ;; bbWeight=2 PerfScore 14.50 G_M1229_IG04: dec r8d test r8d, r8d jge SHORT G_M1229_IG03 test r9d, r9d jne SHORT G_M1229_IG03 ;; bbWeight=8 PerfScore 22.00 G_M1229_IG05: mov rax, rcx ;; bbWeight=1 PerfScore 0.25 G_M1229_IG06: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 58, prolog size 3, PerfScore 45.80, (MethodHash=7372fb32) for method Number:UInt32ToDecChars(long,int,int):long ; ============================================================ ; Assembly listing for method Grisu3:TryRoundWeedCounted(Span`1,int,long,long,long,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T05] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T09] ( 3, 2.50) int -> rdx ; V02 arg2 [V02,T08] ( 7, 4.50) long -> r8 ; V03 arg3 [V03,T07] ( 8, 5.50) long -> r9 ; V04 arg4 [V04,T10] ( 6, 3.50) long -> r10 ; V05 arg5 [V05,T14] ( 2, 1 ) byref -> [rsp+0x58] ; V06 loc0 [V06,T01] ( 7, 21 ) int -> rdx ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T11] ( 3, 3 ) byref -> rax "dup spill" ; V09 tmp2 [V09,T00] ( 3, 24 ) byref -> rax "dup spill" ; V10 tmp3 [V10,T03] ( 7, 14.50) byref -> r11 V12._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V11 tmp4 [V11,T06] ( 4, 9.50) int -> rcx V12._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V13 cse0 [V13,T02] ( 4, 16 ) int -> rdx "CSE - aggressive" ; V14 cse1 [V14,T12] ( 4, 2 ) long -> r8 "CSE - aggressive" ; V15 cse2 [V15,T13] ( 4, 2 ) int -> rdx "CSE - aggressive" ; V16 cse3 [V16,T04] ( 3, 12 ) long -> rax "CSE - aggressive" ; ; Lcl frame size = 32 G_M10578_IG01: push rsi sub rsp, 32 mov r10, qword ptr [rsp+50H] ;; bbWeight=1 PerfScore 2.25 G_M10578_IG02: mov r11, bword ptr [rcx] mov ecx, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M10578_IG03: cmp r10, r9 jae SHORT G_M10578_IG05 ;; bbWeight=1 PerfScore 1.25 G_M10578_IG04: mov rax, r9 sub rax, r10 cmp rax, r10 ja SHORT G_M10578_IG07 ;; bbWeight=0.50 PerfScore 0.88 G_M10578_IG05: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M10578_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M10578_IG07: mov rax, r9 sub rax, r8 cmp rax, r8 jbe SHORT G_M10578_IG09 lea rax, [r8+r8] mov rsi, r9 sub rsi, rax lea rax, [r10+r10] cmp rsi, rax jb SHORT G_M10578_IG09 mov eax, 1 ;; bbWeight=0.50 PerfScore 2.38 G_M10578_IG08: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M10578_IG09: cmp r8, r10 jbe SHORT G_M10578_IG15 sub r8, r10 cmp r8, r9 jae SHORT G_M10578_IG10 sub r9, r8 cmp r9, r8 ja SHORT G_M10578_IG15 ;; bbWeight=0.50 PerfScore 2.13 G_M10578_IG10: dec edx cmp edx, ecx jae SHORT G_M10578_IG17 movsxd rax, edx add rax, r11 inc byte ptr [rax] test edx, edx jle SHORT G_M10578_IG12 ;; bbWeight=0.50 PerfScore 4.13 G_M10578_IG11: cmp edx, ecx jae SHORT G_M10578_IG17 movsxd rax, edx cmp byte ptr [r11+rax], 58 jne SHORT G_M10578_IG12 mov byte ptr [r11+rax], 48 dec edx cmp edx, ecx jae SHORT G_M10578_IG17 movsxd rax, edx add rax, r11 inc byte ptr [rax] test edx, edx jg SHORT G_M10578_IG11 ;; bbWeight=4 PerfScore 55.00 G_M10578_IG12: cmp byte ptr [r11], 58 jne SHORT G_M10578_IG13 mov byte ptr [r11], 49 mov rax, bword ptr [rsp+58H] inc dword ptr [rax] ;; bbWeight=0.50 PerfScore 5.00 G_M10578_IG13: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M10578_IG14: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M10578_IG15: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M10578_IG16: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M10578_IG17: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 199, prolog size 10, PerfScore 100.78, (MethodHash=b261d6ad) for method Grisu3:TryRoundWeedCounted(Span`1,int,long,long,long,byref):bool ; ============================================================ WorkloadPilot 2: 1250000 op, 17121900.00 ns, 13.6975 ns/op WorkloadPilot 3: 18251479 op, 237428400.00 ns, 13.0087 ns/op ; Assembly listing for method BigInteger:Multiply(byref,byref,byref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T12] ( 6, 4.50) byref -> [rsp+0x80] ; V01 arg1 [V01,T14] ( 6, 4 ) byref -> rdx ; V02 arg2 [V02,T04] ( 12, 39.50) byref -> rsi ; V03 loc0 [V03,T06] ( 4, 33 ) byref -> rbp ; V04 loc1 [V04,T09] ( 5, 18 ) int -> r14 ; V05 loc2 [V05,T07] ( 5, 25 ) byref -> r15 ; V06 loc3 [V06,T13] ( 6, 6.50) int -> r12 ; V07 loc4 [V07,T18] ( 5, 2.50) int -> [rsp+0x34] ; V08 loc5 [V08,T10] ( 5, 16.50) int -> rax ; V09 loc6 [V09,T11] ( 4, 10.50) int -> rdx ; V10 loc7 [V10,T00] ( 5, 66 ) int -> r8 ; V11 loc8 [V11,T01] ( 5, 52 ) int -> r9 ; V12 loc9 [V12,T05] ( 4, 36 ) long -> r10 ; V13 loc10 [V13,T02] ( 3, 48 ) long -> rdi ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V15 tmp1 [V15 ] ( 0, 0 ) byref -> zero-ref "dup spill" ; V16 tmp2 [V16,T22] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V17 tmp3 [V17,T20] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V18 tmp4 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V19 tmp5 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V20 tmp6 [V20,T15] ( 5, 4.50) long -> [rsp+0x28] "Inlining Arg" ; V21 tmp7 [V21,T17] ( 3, 3 ) byref -> rcx "Inlining Arg" ;* V22 tmp8 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V23 tmp9 [V23,T21] ( 2, 2 ) long -> rcx "Cast away GC" ; V24 cse0 [V24,T19] ( 5, 2.50) int -> rbx "CSE - moderate" ; V25 cse1 [V25,T16] ( 4, 3 ) int -> rdi "CSE - moderate" ; V26 cse2 [V26,T08] ( 3, 24 ) long -> rcx "CSE - aggressive" ; V27 cse3 [V27,T03] ( 3, 48 ) long -> r11 "CSE - aggressive" ; ; Lcl frame size = 56 G_M24749_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 mov rsi, r8 ;; bbWeight=1 PerfScore 8.50 G_M24749_IG02: mov bword ptr [rsp+80H], rcx mov edi, dword ptr [rcx] test edi, edi je SHORT G_M24749_IG04 ;; bbWeight=1 PerfScore 4.25 G_M24749_IG03: mov ebx, dword ptr [rdx] cmp ebx, 1 jne SHORT G_M24749_IG06 cmp dword ptr [rdx+4], 1 sete al movzx rax, al test eax, eax je SHORT G_M24749_IG06 ;; bbWeight=0.50 PerfScore 3.88 G_M24749_IG04: mov rcx, rsi mov rdx, bword ptr [rsp+80H] ;; bbWeight=0.50 PerfScore 0.63 G_M24749_IG05: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 jmp BigInteger:SetValue(byref,byref) ;; bbWeight=0.50 PerfScore 3.13 G_M24749_IG06: test ebx, ebx jne SHORT G_M24749_IG08 xor ecx, ecx mov dword ptr [rsi], ecx ;; bbWeight=0.50 PerfScore 1.25 G_M24749_IG07: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M24749_IG08: mov rcx, bword ptr [rsp+80H] mov rbp, rcx mov r14d, edi mov r15, rdx mov r12d, ebx cmp r14d, r12d jge SHORT G_M24749_IG09 mov rbp, rdx mov r14d, ebx mov r15, rcx mov r12d, edi ;; bbWeight=0.50 PerfScore 2.13 G_M24749_IG09: lea edi, [r12+r14] mov dword ptr [rsi], edi lea rcx, bword ptr [rsi+4] mov dword ptr [rsp+34H], edi mov edx, edi shl edx, 2 test rdx, rdx je SHORT G_M24749_IG13 ;; bbWeight=0.50 PerfScore 3.25 G_M24749_IG10: mov qword ptr [rsp+28H], rdx cmp rdx, 768 ja SHORT G_M24749_IG12 ;; bbWeight=0.25 PerfScore 0.56 G_M24749_IG11: xor edx, edx mov r8, qword ptr [rsp+28H] call CORINFO_HELP_MEMSET jmp SHORT G_M24749_IG13 ;; bbWeight=0.50 PerfScore 2.13 G_M24749_IG12: mov rdx, qword ptr [rsp+28H] call Buffer:_ZeroMemory(byref,long) ;; bbWeight=0.50 PerfScore 1.00 G_M24749_IG13: xor eax, eax xor edx, edx test r12d, r12d jle SHORT G_M24749_IG19 ;; bbWeight=0.50 PerfScore 0.88 G_M24749_IG14: cmp dword ptr [r15], r15d movsxd rcx, eax cmp dword ptr [r15+4*rcx+4], 0 je SHORT G_M24749_IG18 ;; bbWeight=4 PerfScore 21.00 G_M24749_IG15: xor r8d, r8d mov r9d, edx xor r10, r10 ;; bbWeight=2 PerfScore 1.50 G_M24749_IG16: movsxd r11, r9d mov ebx, dword ptr [rsi+4*r11+4] mov r13d, dword ptr [r15+4*rcx+4] cmp dword ptr [rbp], ebp movsxd rdi, r8d mov edi, dword ptr [rbp+4*rdi+4] imul rdi, r13 add rdi, rbx add rdi, r10 mov r10, rdi shr r10, 32 mov dword ptr [rsi+4*r11+4], edi inc r9d inc r8d cmp r8d, r14d jl SHORT G_M24749_IG16 ;; bbWeight=16 PerfScore 256.00 G_M24749_IG17: movsxd rcx, r9d mov dword ptr [rsi+4*rcx+4], r10d ;; bbWeight=2 PerfScore 2.50 G_M24749_IG18: inc eax inc edx cmp eax, r12d jl SHORT G_M24749_IG14 ;; bbWeight=4 PerfScore 7.00 G_M24749_IG19: mov edi, dword ptr [rsp+34H] test edi, edi jle SHORT G_M24749_IG20 dec edi movsxd rax, edi cmp dword ptr [rsi+4*rax+4], 0 jne SHORT G_M24749_IG20 dec dword ptr [rsi] ;; bbWeight=0.50 PerfScore 5.38 G_M24749_IG20: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 ; Total bytes of code 354, prolog size 19, PerfScore 365.59, (MethodHash=47049f52) for method BigInteger:Multiply(byref,byref,byref) ; ============================================================ WorkloadPilot 4: 19217877 op, 248025700.00 ns, 12.9060 ns/op WorkloadPilot 5: 19370852 op, 255999200.00 ns, 13.2157 ns/op WorkloadPilot 6: 18916907 op, 246436900.00 ns, 13.0273 ns/op WorkloadPilot 7: 19190416 op, 254241500.00 ns, 13.2484 ns/op WorkloadPilot 8: 18870263 op, 242268600.00 ns, 12.8386 ns/op WorkloadPilot 9: 19472461 op, 250426400.00 ns, 12.8605 ns/op ; Assembly listing for method Engine:WriteLine():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M29792_IG01: ;; bbWeight=1 PerfScore 0.00 G_M29792_IG02: mov rcx, gword ptr [rcx+8] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=1 PerfScore 4.50 G_M29792_IG03: rex.jmp rax ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 30, prolog size 0, PerfScore 9.50, (MethodHash=037c8b9f) for method Engine:WriteLine():this ; ============================================================ ; Assembly listing for method EngineWarmupStage:Run(long,int,int,int):List`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T03] ( 3, 3 ) long -> rbx ; V02 arg2 [V02,T01] ( 4, 4 ) int -> rdi ; V03 arg3 [V03,T04] ( 3, 3 ) int -> rbp ; V04 arg4 [V04,T08] ( 1, 1 ) int -> [rsp+0x90] ; V05 loc0 [V05,T07] ( 2, 2 ) ref -> rdx class-hnd ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T02] ( 3, 6 ) ref -> r14 class-hnd "non-inline candidate call" ; V08 tmp2 [V08,T05] ( 2, 4 ) ref -> r15 class-hnd "non-inline candidate call" ; V09 tmp3 [V09,T06] ( 2, 4 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 48 G_M50766_IG01: push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 48 mov rsi, rcx mov rbx, rdx mov edi, r8d mov ebp, r9d ;; bbWeight=1 PerfScore 8.25 G_M50766_IG02: mov rcx, 0xD1FFAB1E mov edx, 397 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r14, gword ptr [rcx] mov rcx, gword ptr [rsi+16] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_TargetJob():Job:this mov r15, rax mov rcx, gword ptr [rsi+16] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEngine:get_Resolver():IResolver:this mov r8, rax mov r12d, dword ptr [rsp+90H] mov dword ptr [rsp+20H], r12d mov rdx, r15 mov rcx, r14 mov r9d, edi mov rax, qword ptr [r14] mov rax, qword ptr [rax+64] call gword ptr [rax+48]DefaultStoppingCriteriaFactory:CreateWarmup(Job,IResolver,int,int):IStoppingCriteria:this mov rdx, rax mov dword ptr [rsp+20H], 2 mov dword ptr [rsp+28H], ebp mov rcx, rsi mov r8, rbx mov r9d, edi call EngineStage:Run(IStoppingCriteria,long,int,int,int):List`1:this nop ;; bbWeight=1 PerfScore 29.25 G_M50766_IG03: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.75 ; Total bytes of code 194, prolog size 14, PerfScore 61.65, (MethodHash=a54639b1) for method EngineWarmupStage:Run(long,int,int,int):List`1:this ; ============================================================ ; Assembly listing for method DefaultStoppingCriteriaFactory:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M14850_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M14850_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call DefaultStoppingCriteriaFactory:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M14850_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=117cc5fd) for method DefaultStoppingCriteriaFactory:.cctor() ; ============================================================ ; Assembly listing for method DefaultStoppingCriteriaFactory:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M797_IG01: ;; bbWeight=1 PerfScore 0.00 G_M797_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=1d06fce2) for method DefaultStoppingCriteriaFactory:.ctor():this ; ============================================================ ; Assembly listing for method DefaultStoppingCriteriaFactory:CreateWarmup(Job,IResolver,int,int):IStoppingCriteria:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T02] ( 3, 2.50) ref -> rdx class-hnd ; V02 arg2 [V02,T03] ( 3, 2.50) ref -> r8 class-hnd ; V03 arg3 [V03,T01] ( 5, 3.50) int -> rsi ; V04 arg4 [V04,T04] ( 1, 0.50) int -> [rsp+0x60] ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T05] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V07 tmp2 [V07,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V08 tmp3 [V08,T07] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M52733_IG01: push rdi push rsi sub rsp, 40 mov esi, r9d ;; bbWeight=1 PerfScore 2.50 G_M52733_IG02: test esi, esi je SHORT G_M52733_IG06 ;; bbWeight=1 PerfScore 1.25 G_M52733_IG03: cmp esi, 1 jne SHORT G_M52733_IG08 ;; bbWeight=0.50 PerfScore 0.63 G_M52733_IG04: mov r9d, dword ptr [rsp+60H] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+32] ;; bbWeight=0.50 PerfScore 3.50 G_M52733_IG05: add rsp, 40 pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.63 G_M52733_IG06: mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+40] ;; bbWeight=0.50 PerfScore 3.00 G_M52733_IG07: add rsp, 40 pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.63 G_M52733_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov dword ptr [rdi+8], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xF3C3 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov r8, rdi mov rcx, rsi xor r9, r9 call ArgumentOutOfRangeException:.ctor(String,Object,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 148, prolog size 9, PerfScore 28.93, (MethodHash=bd4b3202) for method DefaultStoppingCriteriaFactory:CreateWarmup(Job,IResolver,int,int):IStoppingCriteria:this ; ============================================================ ; Assembly listing for method DefaultStoppingCriteriaFactory:CreateWarmupWorkload(Job,IResolver,int):IStoppingCriteria:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rsi class-hnd ; V02 arg2 [V02,T01] ( 4, 3 ) ref -> rdi class-hnd ; V03 arg3 [V03,T02] ( 3, 2.50) int -> rbx ; V04 loc0 [V04 ] ( 5, 3.50) struct ( 8) [rsp+0x28] do-not-enreg[SB] ld-addr-op ; V05 loc1 [V05,T08] ( 2, 1 ) int -> rsi ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T07] ( 2, 2 ) int -> rbx "non-inline candidate call" ; V08 tmp2 [V08,T03] ( 3, 3 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V09 tmp3 [V09,T04] ( 3, 3 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V10 tmp4 [V10,T05] ( 3, 2.50) bool -> [rsp+0x28] do-not-enreg[] V04.hasValue(offs=0x00) P-DEP "field V04.hasValue (fldOffset=0x0)" ; V11 tmp5 [V11,T06] ( 3, 2 ) int -> [rsp+0x2C] do-not-enreg[] V04.value(offs=0x04) P-DEP "field V04.value (fldOffset=0x4)" ; ; Lcl frame size = 48 G_M25605_IG01: push rdi push rsi push rbx sub rsp, 48 mov rsi, rdx mov rdi, r8 mov ebx, r9d ;; bbWeight=1 PerfScore 4.00 G_M25605_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rsi cmp dword ptr [rcx], ecx call CharacteristicObject:ResolveValueAsNullable(Characteristic`1):Nullable`1:this mov qword ptr [rsp+28H], rax cmp byte ptr [rsp+28H], 0 je SHORT G_M25605_IG05 ;; bbWeight=1 PerfScore 8.50 G_M25605_IG03: cmp byte ptr [rsp+28H], 0 je G_M25605_IG10 ;; bbWeight=0.50 PerfScore 1.00 G_M25605_IG04: cmp dword ptr [rsp+2CH], -1 jne SHORT G_M25605_IG06 ;; bbWeight=0.50 PerfScore 1.00 G_M25605_IG05: cmp ebx, 2 jne SHORT G_M25605_IG08 ;; bbWeight=0.50 PerfScore 0.63 G_M25605_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, rsi mov edx, dword ptr [rsp+2CH] call FixedStoppingCriteria:.ctor(int):this mov rax, rsi ;; bbWeight=0.50 PerfScore 2.00 G_M25605_IG07: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M25605_IG08: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rsi mov r8, rdi call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this mov ebx, eax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov rcx, rsi mov r8, rdi call CharacteristicObject:ResolveValue(Characteristic`1,IResolver):int:this mov esi, eax mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov edx, ebx mov r8d, esi mov r9d, 4 call AutoWarmupStoppingCriteria:.ctor(int,int,int):this mov rax, rdi ;; bbWeight=0.50 PerfScore 5.88 G_M25605_IG09: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M25605_IG10: call ThrowHelper:ThrowInvalidOperationException_InvalidOperation_NoValue() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 221, prolog size 7, PerfScore 47.85, (MethodHash=e1d99bfa) for method DefaultStoppingCriteriaFactory:CreateWarmupWorkload(Job,IResolver,int):IStoppingCriteria:this ; ============================================================ ; Assembly listing for method FixedStoppingCriteria:.ctor(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 4, 4 ) int -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct (32) zero-ref "NewObj constructor temp" ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V07 tmp5 [V07,T06] ( 2, 2 ) ref -> rax V05._arg0(offs=0x00) P-INDEP "field V05._arg0 (fldOffset=0x0)" ;* V08 tmp6 [V08,T08] ( 0, 0 ) ref -> zero-ref V05._arg1(offs=0x08) P-INDEP "field V05._arg1 (fldOffset=0x8)" ; V09 tmp7 [V09,T05] ( 3, 3 ) ref -> r8 V05._arg2(offs=0x10) P-INDEP "field V05._arg2 (fldOffset=0x10)" ; V10 tmp8 [V10,T07] ( 2, 2 ) ref -> rdx V05._args(offs=0x18) P-INDEP "field V05._args (fldOffset=0x18)" ; V11 tmp9 [V11 ] ( 2, 4 ) struct (32) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V12 tmp10 [V12,T00] ( 5, 10 ) byref -> r10 stack-byref "BlockOp address local" ; V13 tmp11 [V13,T04] ( 2, 4 ) ref -> r9 "argument with side effect" ; TEMP_01 byref -> [rsp+0x40] ; ; Lcl frame size = 72 G_M51399_IG01: push rdi push rsi sub rsp, 72 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 xor rax, rax mov qword ptr [rsp+40H], rax mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 6.33 G_M51399_IG02: mov rcx, rsi call StoppingCriteriaBase:.ctor():this mov dword ptr [rsi+40], edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], edi xor r8, r8 mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+32] mov bword ptr [rsp+40H], rcx mov r9, 0xD1FFAB1E mov r9, gword ptr [r9] lea r10, bword ptr [rsp+20H] mov gword ptr [r10], rax mov gword ptr [r10+8], r8 mov gword ptr [r10+16], r8 mov gword ptr [r10+24], rdx lea r8, bword ptr [rsp+20H] mov rdx, r9 xor rcx, rcx call String:FormatHelper(IFormatProvider,String,ParamsArray):String mov rcx, bword ptr [rsp+40H] mov rdx, rax call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 19.75 G_M51399_IG03: add rsp, 72 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 157, prolog size 29, PerfScore 44.33, (MethodHash=55193738) for method FixedStoppingCriteria:.ctor(int):this ; ============================================================ ; Assembly listing for method StoppingCriteriaBase:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 11, 11 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T04] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V04 tmp3 [V04,T02] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V05 tmp4 [V05,T05] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V06 tmp5 [V06,T03] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V07 tmp6 [V07,T06] ( 3, 6 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V08 tmp7 [V08,T07] ( 2, 4 ) long -> rbx "Inlining Arg" ; V09 tmp8 [V09,T08] ( 2, 4 ) long -> rbx "Inlining Arg" ;* V10 tmp9 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 32 G_M32503_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M32503_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov rbx, rax test rsi, rsi je G_M32503_IG05 ;; bbWeight=1 PerfScore 4.75 G_M32503_IG03: lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov qword ptr [rdi+24], rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, rbx mov rdx, rdi mov r8d, 2 xor r9d, r9d call Lazy`1:.ctor(Func`1,int,bool):this lea rcx, bword ptr [rsi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov rbx, rax lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov qword ptr [rdi+24], rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, rbx mov rdx, rdi mov r8d, 2 xor r9d, r9d call Lazy`1:.ctor(Func`1,int,bool):this lea rcx, bword ptr [rsi+16] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax lea rcx, bword ptr [rdi+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, rbx mov rdx, rdi mov r8d, 2 xor r9d, r9d call Lazy`1:.ctor(Func`1,int,bool):this lea rcx, bword ptr [rsi+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 29.50 G_M32503_IG04: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M32503_IG05: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 358, prolog size 7, PerfScore 76.30, (MethodHash=4fae8108) for method StoppingCriteriaBase:.ctor():this ; ============================================================ ; Assembly listing for method Lazy`1:.ctor(Func`1,int,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) int -> rbx ; V03 arg3 [V03,T02] ( 4, 3.50) bool -> rdi ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M20372_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov ebx, r8d mov edi, r9d ;; bbWeight=1 PerfScore 4.00 G_M20372_IG02: test rdx, rdx jne SHORT G_M20372_IG04 ;; bbWeight=1 PerfScore 1.25 G_M20372_IG03: test dil, dil je SHORT G_M20372_IG06 ;; bbWeight=0.50 PerfScore 0.63 G_M20372_IG04: lea rcx, bword ptr [rsi+16] call CORINFO_HELP_ASSIGN_REF movzx rdx, dil mov ecx, ebx call LazyHelper:Create(int,bool):LazyHelper lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 5.00 G_M20372_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M20372_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x277A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 125, prolog size 7, PerfScore 26.13, (MethodHash=b213b06b) for method Lazy`1:.ctor(Func`1,int,bool):this ; ============================================================ ; Assembly listing for method LazyHelper:Create(int,bool):LazyHelper ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 4 ) int -> rcx ; V01 arg1 [V01,T02] ( 5, 3.50) bool -> rdx ;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T04] ( 3, 1.50) int -> rsi ; V06 tmp3 [V06,T03] ( 3, 3 ) ref -> rax class-hnd exact "NewObj constructor temp" ; V07 tmp4 [V07,T00] ( 6, 7 ) ref -> rax "Single return block return value" ; V08 tmp5 [V08,T06] ( 2, 0 ) ref -> rcx "argument with side effect" ; V09 tmp6 [V09,T07] ( 2, 0 ) ref -> rdi "argument with side effect" ; V10 tmp7 [V10,T08] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M622_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M622_IG02: cmp ecx, 2 ja G_M622_IG11 mov ecx, ecx lea rax, [reloc @RWD00] mov eax, dword ptr [rax+4*rcx] lea r8, G_M622_IG02 add rax, r8 jmp rax ;; bbWeight=1 PerfScore 7.25 G_M622_IG03: test dl, dl jne SHORT G_M622_IG04 mov rcx, 0xD1FFAB1E mov edx, 332 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp G_M622_IG10 ;; bbWeight=0.50 PerfScore 3.50 G_M622_IG04: mov rcx, 0xD1FFAB1E mov edx, 332 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp SHORT G_M622_IG10 ;; bbWeight=0.50 PerfScore 2.88 G_M622_IG05: test dl, dl jne SHORT G_M622_IG06 mov rcx, 0xD1FFAB1E mov edx, 332 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp SHORT G_M622_IG10 ;; bbWeight=0.50 PerfScore 3.50 G_M622_IG06: mov rcx, 0xD1FFAB1E mov edx, 332 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] jmp SHORT G_M622_IG10 ;; bbWeight=0.50 PerfScore 2.88 G_M622_IG07: test dl, dl jne SHORT G_M622_IG08 mov esi, 8 jmp SHORT G_M622_IG09 ;; bbWeight=0.50 PerfScore 1.75 G_M622_IG08: mov esi, 7 ;; bbWeight=0.50 PerfScore 0.13 G_M622_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+16], esi ;; bbWeight=0.50 PerfScore 1.13 G_M622_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M622_IG11: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 619 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xE2ED mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M622_IG03 - G_M622_IG02 dd G_M622_IG05 - G_M622_IG02 dd G_M622_IG07 - G_M622_IG02 ; Total bytes of code 325, prolog size 6, PerfScore 60.00, (MethodHash=7cdbfd91) for method LazyHelper:Create(int,bool):LazyHelper ; ============================================================ ; Assembly listing for method Lazy`1:.ctor(Func`1,int,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 arg2 [V02,T03] ( 3, 3 ) int -> rbx ; V03 arg3 [V03,T02] ( 4, 3.50) bool -> rdi ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M20372_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov ebx, r8d mov edi, r9d ;; bbWeight=1 PerfScore 4.00 G_M20372_IG02: test rdx, rdx jne SHORT G_M20372_IG04 ;; bbWeight=1 PerfScore 1.25 G_M20372_IG03: test dil, dil je SHORT G_M20372_IG06 ;; bbWeight=0.50 PerfScore 0.63 G_M20372_IG04: lea rcx, bword ptr [rsi+16] call CORINFO_HELP_ASSIGN_REF movzx rdx, dil mov ecx, ebx call LazyHelper:Create(int,bool):LazyHelper lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 5.00 G_M20372_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M20372_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x277A mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 125, prolog size 7, PerfScore 26.13, (MethodHash=b213b06b) for method Lazy`1:.ctor(Func`1,int,bool):this ; ============================================================ ; Assembly listing for method EngineStage:Run(IStoppingCriteria,long,int,int,int):List`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T05] ( 4, 11 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T06] ( 4, 11 ) ref -> rdi class-hnd ; V02 arg2 [V02,T07] ( 3, 10 ) long -> rbx ; V03 arg3 [V03,T08] ( 3, 10 ) int -> rbp ; V04 arg4 [V04,T09] ( 1, 8 ) int -> r14 ; V05 arg5 [V05,T10] ( 1, 8 ) int -> r15 ; V06 loc0 [V06,T00] ( 9, 46 ) ref -> r12 class-hnd exact ; V07 loc1 [V07,T01] ( 4, 25 ) int -> r13 ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T11] ( 3, 6 ) ref -> r12 class-hnd exact "NewObj constructor temp" ; V10 tmp2 [V10 ] ( 2, 32 ) struct (32) [rsp+0x88] do-not-enreg[XSB] addr-exposed "struct address for call/obj" ; V11 tmp3 [V11 ] ( 2, 32 ) struct (16) [rsp+0x78] do-not-enreg[XS] must-init addr-exposed "struct address for call/obj" ; V12 tmp4 [V12,T04] ( 3, 18 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V13 tmp5 [V13,T03] ( 4, 20 ) int -> rdx "Inline stloc first use temp" ; V14 tmp6 [V14,T02] ( 3, 24 ) struct (32) [rsp+0x58] do-not-enreg[SB] "Inlining Arg" ; V15 tmp7 [V15 ] ( 1, 16 ) ref -> [rsp+0x78] do-not-enreg[X] addr-exposed V11.Message(offs=0x00) P-DEP "field V11.Message (fldOffset=0x0)" ; V16 tmp8 [V16 ] ( 2, 24 ) bool -> [rsp+0x80] do-not-enreg[X] addr-exposed V11.IsFinished(offs=0x08) P-DEP "field V11.IsFinished (fldOffset=0x8)" ; V17 tmp9 [V17,T12] ( 2, 4 ) int -> rdx "argument with side effect" ; V18 tmp10 [V18 ] ( 2, 8 ) struct (32) [rsp+0x38] do-not-enreg[XSB] addr-exposed "by-value struct argument" ;* V19 tmp11 [V19,T13] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; ; Lcl frame size = 168 G_M53020_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 168 vzeroupper xor rax, rax mov qword ptr [rsp+78H], rax mov qword ptr [rsp+80H], rax mov rsi, rcx mov rdi, rdx mov rbx, r8 mov ebp, r9d mov r14d, dword ptr [rsp+110H] mov r15d, dword ptr [rsp+118H] ;; bbWeight=1 PerfScore 14.50 G_M53020_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r12, rax mov rcx, rdi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IStoppingCriteria:get_MaxIterationCount():int:this mov edx, eax mov rcx, r12 call List`1:.ctor(int):this xor r13d, r13d ;; bbWeight=1 PerfScore 7.00 G_M53020_IG03: inc r13d mov dword ptr [rsp+20H], r13d mov qword ptr [rsp+28H], rbx mov dword ptr [rsp+30H], r15d lea rdx, [rsp+88H] mov rcx, rsi mov r8d, ebp mov r9d, r14d call EngineStage:RunIteration(int,int,int,long,int):Measurement:this vmovdqu xmm0, xmmword ptr [rsp+88H] vmovdqu xmmword ptr [rsp+58H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+98H] vmovdqu xmmword ptr [rsp+68H], xmm0 inc dword ptr [r12+20] mov rcx, gword ptr [r12+8] mov edx, dword ptr [r12+16] cmp dword ptr [rcx+8], edx jbe SHORT G_M53020_IG05 ;; bbWeight=8 PerfScore 172.00 G_M53020_IG04: lea eax, [rdx+1] mov dword ptr [r12+16], eax movsxd rdx, edx shl rdx, 5 vmovdqu xmm0, xmmword ptr [rsp+58H] vmovdqu xmmword ptr [rcx+rdx+16], xmm0 vmovdqu xmm0, xmmword ptr [rsp+68H] vmovdqu xmmword ptr [rcx+rdx+32], xmm0 jmp SHORT G_M53020_IG06 ;; bbWeight=2 PerfScore 19.50 G_M53020_IG05: vmovdqu xmm0, xmmword ptr [rsp+58H] vmovdqu xmmword ptr [rsp+38H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+68H] vmovdqu xmmword ptr [rsp+48H], xmm0 mov rcx, r12 lea rdx, bword ptr [rsp+38H] call List`1:AddWithResize(Measurement):this ;; bbWeight=2 PerfScore 11.50 G_M53020_IG06: lea rdx, bword ptr [rsp+78H] mov rcx, rdi mov r8, r12 mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IStoppingCriteria:Evaluate(IReadOnlyList`1):StoppingResult:this cmp byte ptr [rsp+80H], 0 je G_M53020_IG03 ;; bbWeight=8 PerfScore 52.00 G_M53020_IG07: mov rcx, gword ptr [rsi+8] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEngine:WriteLine():this mov rax, r12 ;; bbWeight=1 PerfScore 5.75 G_M53020_IG08: add rsp, 168 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 ; Total bytes of code 385, prolog size 37, PerfScore 327.20, (MethodHash=b30d30e3) for method EngineStage:Run(IStoppingCriteria,long,int,int,int):List`1:this ; ============================================================ ; Assembly listing for method StoppingCriteriaBase:get_MaxIterationCount():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 2, 1 ) int -> rax "Inline return value spill temp" ; V03 tmp2 [V03,T00] ( 4, 6 ) ref -> rcx class-hnd "Inlining Arg" ; ; Lcl frame size = 0 G_M24691_IG01: ;; bbWeight=1 PerfScore 0.00 G_M24691_IG02: mov rcx, gword ptr [rcx+16] cmp gword ptr [rcx+8], 0 je SHORT G_M24691_IG04 ;; bbWeight=1 PerfScore 5.00 G_M24691_IG03: jmp Lazy`1:CreateValue():int:this ;; bbWeight=0.50 PerfScore 1.00 G_M24691_IG04: mov eax, dword ptr [rcx+24] ;; bbWeight=0.50 PerfScore 1.00 G_M24691_IG05: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 20, prolog size 0, PerfScore 9.50, (MethodHash=8efc9f8c) for method StoppingCriteriaBase:get_MaxIterationCount():int:this ; ============================================================ ; Assembly listing for method Lazy`1:CreateValue():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 13, 35 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T01] ( 8, 26 ) ref -> rdi class-hnd ; V02 loc1 [V02,T03] ( 3, 6 ) int -> rdx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 2 ) int -> rax "Inline return value spill temp" ; V05 tmp2 [V05,T02] ( 2, 8 ) int -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M54500_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M54500_IG02: mov rdi, gword ptr [rsi+8] test rdi, rdi je G_M54500_IG11 ;; bbWeight=8 PerfScore 26.00 G_M54500_IG03: mov edx, dword ptr [rdi+16] cmp edx, 8 ja G_M54500_IG14 mov eax, edx lea rdx, [reloc @RWD00] mov edx, dword ptr [rdx+4*rax] lea rcx, G_M54500_IG02 add rdx, rcx jmp rdx ;; bbWeight=2 PerfScore 18.50 G_M54500_IG04: call LazyHelper:CreateViaDefaultConstructor():int mov dword ptr [rsi+24], eax xor rcx, rcx mov gword ptr [rsi+8], rcx jmp SHORT G_M54500_IG11 ;; bbWeight=2 PerfScore 10.50 G_M54500_IG05: mov rcx, rsi xor edx, edx call Lazy`1:ViaFactory(int):this jmp SHORT G_M54500_IG11 ;; bbWeight=2 PerfScore 7.00 G_M54500_IG06: call LazyHelper:CreateViaDefaultConstructor():int mov r8d, eax mov rdx, rdi mov rcx, rsi call Lazy`1:PublicationOnly(LazyHelper,int):this jmp SHORT G_M54500_IG11 ;; bbWeight=2 PerfScore 9.50 G_M54500_IG07: mov rcx, rsi mov rdx, rdi call Lazy`1:PublicationOnlyViaFactory(LazyHelper):this jmp SHORT G_M54500_IG11 ;; bbWeight=2 PerfScore 7.00 G_M54500_IG08: mov rcx, rsi call Lazy`1:PublicationOnlyWaitForOtherThreadToPublish():this jmp SHORT G_M54500_IG11 ;; bbWeight=2 PerfScore 6.50 G_M54500_IG09: mov rcx, rsi mov rdx, rdi mov r8d, 1 call Lazy`1:ExecutionAndPublication(LazyHelper,bool):this jmp SHORT G_M54500_IG11 ;; bbWeight=2 PerfScore 7.50 G_M54500_IG10: mov rcx, rsi mov rdx, rdi xor r8d, r8d call Lazy`1:ExecutionAndPublication(LazyHelper,bool):this ;; bbWeight=2 PerfScore 3.50 G_M54500_IG11: cmp gword ptr [rsi+8], 0 jne G_M54500_IG02 ;; bbWeight=8 PerfScore 24.00 G_M54500_IG12: mov eax, dword ptr [rsi+24] ;; bbWeight=1 PerfScore 2.00 G_M54500_IG13: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M54500_IG14: mov rcx, gword ptr [rdi+8] cmp dword ptr [rcx], ecx call ExceptionDispatchInfo:Throw():this int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M54500_IG04 - G_M54500_IG02 dd G_M54500_IG05 - G_M54500_IG02 dd G_M54500_IG14 - G_M54500_IG02 dd G_M54500_IG06 - G_M54500_IG02 dd G_M54500_IG07 - G_M54500_IG02 dd G_M54500_IG08 - G_M54500_IG02 dd G_M54500_IG14 - G_M54500_IG02 dd G_M54500_IG09 - G_M54500_IG02 dd G_M54500_IG10 - G_M54500_IG02 ; Total bytes of code 196, prolog size 9, PerfScore 146.35, (MethodHash=9d052b1b) for method Lazy`1:CreateValue():int:this ; ============================================================ ; Assembly listing for method Lazy`1:ExecutionAndPublication(LazyHelper,bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 3, 2.50) bool -> rbx ; V03 loc0 [V03,T03] ( 4, 2.50) ref -> [rbp-0x28] EH do-not-enreg[] class-hnd EH-live ; V04 loc1 [V04 ] ( 5, 4 ) bool -> [rbp-0x20] do-not-enreg[XF] addr-exposed ld-addr-op ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 PSPSym [V06 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 56 G_M45869_IG01: push rbp push rdi push rsi push rbx sub rsp, 56 lea rbp, [rsp+50H] mov qword ptr [rbp-30H], rsp mov rsi, rcx mov rdi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 6.50 G_M45869_IG02: mov gword ptr [rbp-28H], rdi xor edx, edx mov dword ptr [rbp-20H], edx ;; bbWeight=1 PerfScore 2.25 G_M45869_IG03: cmp byte ptr [rbp-20H], 0 jne SHORT G_M45869_IG07 ;; bbWeight=1 PerfScore 2.00 G_M45869_IG04: lea rdx, [rbp-20H] mov rcx, gword ptr [rbp-28H] call Monitor:ReliableEnter(Object,byref) ;; bbWeight=1 PerfScore 2.50 G_M45869_IG05: cmp gword ptr [rsi+8], rdi jne SHORT G_M45869_IG09 ;; bbWeight=1 PerfScore 3.00 G_M45869_IG06: test bl, bl je SHORT G_M45869_IG08 call LazyHelper:CreateViaDefaultConstructor():int mov dword ptr [rsi+24], eax xor rcx, rcx mov gword ptr [rsi+8], rcx jmp SHORT G_M45869_IG09 ;; bbWeight=0.50 PerfScore 3.25 G_M45869_IG07: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M45869_IG08: mov rcx, rsi mov edx, 2 call Lazy`1:ViaFactory(int):this nop ;; bbWeight=0.50 PerfScore 0.88 G_M45869_IG09: cmp byte ptr [rbp-20H], 0 je SHORT G_M45869_IG11 ;; bbWeight=1 PerfScore 2.00 G_M45869_IG10: mov rcx, gword ptr [rbp-28H] call Monitor:Exit(Object) ;; bbWeight=0.50 PerfScore 1.00 G_M45869_IG11: nop ;; bbWeight=1 PerfScore 0.25 G_M45869_IG12: lea rsp, [rbp-18H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.50 G_M45869_IG13: push rbp push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=0 PerfScore 0.00 G_M45869_IG14: cmp byte ptr [rbp-20H], 0 je SHORT G_M45869_IG15 mov rcx, gword ptr [rbp-28H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M45869_IG15: nop ;; bbWeight=0 PerfScore 0.00 G_M45869_IG16: add rsp, 40 pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 171, prolog size 26, PerfScore 44.23, (MethodHash=3e1f4cd2) for method Lazy`1:ExecutionAndPublication(LazyHelper,bool):this ; ============================================================ ; Assembly listing for method Lazy`1:ViaFactory(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 6 ) ref -> [rbp+0x10] EH do-not-enreg[] this class-hnd EH-live ; V01 arg1 [V01,T02] ( 3, 2 ) int -> [rbp+0x18] EH do-not-enreg[] EH-live ; V02 loc0 [V02,T03] ( 3, 3 ) ref -> rax class-hnd ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T06] ( 2, 0 ) ref -> rsi class-hnd "impSpillSpecialSideEff" ; V07 tmp3 [V07,T05] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V08 tmp4 [V08,T07] ( 2, 0 ) ref -> rcx "argument with side effect" ; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; V10 PSPSym [V10 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "PSPSym" ;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref "optAddCopies" ; V12 rat0 [V12,T01] ( 3, 6 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 48 G_M52539_IG01: push rbp push rdi push rsi sub rsp, 48 lea rbp, [rsp+40H] mov qword ptr [rbp-20H], rsp mov gword ptr [rbp+10H], rcx mov dword ptr [rbp+18H], edx ;; bbWeight=1 PerfScore 6.75 G_M52539_IG02: mov rcx, gword ptr [rbp+10H] mov rax, gword ptr [rcx+16] test rax, rax je SHORT G_M52539_IG04 ;; bbWeight=1 PerfScore 4.25 G_M52539_IG03: mov rcx, gword ptr [rbp+10H] xor rdx, rdx mov gword ptr [rcx+16], rdx mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`1:Invoke():int:this mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+24], eax mov rcx, gword ptr [rbp+10H] xor rax, rax mov gword ptr [rcx+8], rax jmp SHORT G_M52539_IG05 ;; bbWeight=1 PerfScore 13.50 G_M52539_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0xE397 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 G_M52539_IG05: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 G_M52539_IG06: push rbp push rdi push rsi sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+40H] ;; bbWeight=0 PerfScore 0.00 G_M52539_IG07: mov rsi, rdx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov edx, dword ptr [rbp+18H] mov r8, rsi call LazyHelper:.ctor(int,Exception):this mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF call CORINFO_HELP_RETHROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 225, prolog size 23, PerfScore 50.00, (MethodHash=ee1932c4) for method Lazy`1:ViaFactory(int):this ; ============================================================ ; Assembly listing for method FixedStoppingCriteria:GetMaxIterationCount():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M63247_IG01: ;; bbWeight=1 PerfScore 0.00 G_M63247_IG02: mov eax, dword ptr [rcx+40] ;; bbWeight=1 PerfScore 2.00 G_M63247_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 3.40, (MethodHash=4e4408f0) for method FixedStoppingCriteria:GetMaxIterationCount():int:this ; ============================================================ ; Assembly listing for method List`1:.ctor(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T00] ( 5, 4.50) int -> rdx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M12153_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M12153_IG02: test edx, edx jl SHORT G_M12153_IG08 ;; bbWeight=1 PerfScore 1.25 G_M12153_IG03: test edx, edx jne SHORT G_M12153_IG06 ;; bbWeight=1 PerfScore 1.25 G_M12153_IG04: mov rcx, 0xD1FFAB1E mov edx, 41 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 2.75 G_M12153_IG05: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M12153_IG06: movsxd rdx, edx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 1.75 G_M12153_IG07: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M12153_IG08: mov ecx, 22 mov edx, 11 call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 118, prolog size 5, PerfScore 22.05, (MethodHash=b98bd086) for method List`1:.ctor(int):this ; ============================================================ WorkloadWarmup 1: 19472461 op, 253412100.00 ns, 13.0139 ns/op ; Assembly listing for method FixedStoppingCriteria:Evaluate(IReadOnlyList`1):StoppingResult:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 3.50) ref -> rbp this class-hnd ; V01 RetBuf [V01,T00] ( 7, 4.50) byref -> rbx ; V02 arg1 [V02,T03] ( 3, 3 ) ref -> r8 class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 4 ) int -> rsi "impAppendStmt" ; V05 tmp2 [V05,T05] ( 3, 2 ) int -> rax "Inline return value spill temp" ; V06 tmp3 [V06,T01] ( 4, 6 ) ref -> rcx class-hnd "Inlining Arg" ; V07 tmp4 [V07,T06] ( 2, 2 ) ref -> rdx class-hnd "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V09 tmp6 [V09,T07] ( 2, 1 ) ref -> rdx V08.Message(offs=0x00) P-INDEP "field V08.Message (fldOffset=0x0)" ; V10 tmp7 [V10,T08] ( 2, 1 ) bool -> rsi V08.IsFinished(offs=0x08) P-INDEP "field V08.IsFinished (fldOffset=0x8)" ; ; Lcl frame size = 40 G_M38380_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rbp, rcx mov rbx, rdx ;; bbWeight=1 PerfScore 4.75 G_M38380_IG02: mov rcx, r8 mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IReadOnlyCollection`1:get_Count():int:this mov esi, eax mov rcx, gword ptr [rbp+16] cmp gword ptr [rcx+8], 0 je SHORT G_M38380_IG04 ;; bbWeight=1 PerfScore 9.00 G_M38380_IG03: call Lazy`1:CreateValue():int:this jmp SHORT G_M38380_IG05 ;; bbWeight=0.50 PerfScore 1.50 G_M38380_IG04: mov eax, dword ptr [rcx+24] ;; bbWeight=0.50 PerfScore 1.00 G_M38380_IG05: cmp esi, eax jge SHORT G_M38380_IG08 ;; bbWeight=1 PerfScore 1.25 G_M38380_IG06: mov rcx, 0xD1FFAB1E mov edx, 401 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rax, 0xD1FFAB1E mov rsi, gword ptr [rax] add rsi, 8 mov rdi, rbx call CORINFO_HELP_ASSIGN_BYREF movsq mov rax, rbx ;; bbWeight=0.50 PerfScore 3.25 G_M38380_IG07: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M38380_IG08: mov rdx, gword ptr [rbp+32] mov esi, 1 mov rcx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov byte ptr [rbx+8], sil mov rax, rbx ;; bbWeight=0.50 PerfScore 2.38 G_M38380_IG09: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 158, prolog size 8, PerfScore 42.18, (MethodHash=b9146a13) for method FixedStoppingCriteria:Evaluate(IReadOnlyList`1):StoppingResult:this ; ============================================================ ; Assembly listing for method List`1:get_Count():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M7693_IG01: ;; bbWeight=1 PerfScore 0.00 G_M7693_IG02: mov eax, dword ptr [rcx+16] ;; bbWeight=1 PerfScore 2.00 G_M7693_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 3.40, (MethodHash=287de1f2) for method List`1:get_Count():int:this ; ============================================================ // BeforeActualRun ; Assembly listing for method EngineActualStage:Run(long,int,bool,int,bool):IReadOnlyList`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 3 ) long -> rdx ; V02 arg2 [V02,T02] ( 4, 3 ) int -> r8 ; V03 arg3 [V03,T03] ( 3, 3 ) bool -> r9 ; V04 arg4 [V04,T12] ( 2, 1 ) int -> [rsp+0x50] ; V05 arg5 [V05,T16] ( 1, 0.50) bool -> [rsp+0x58] ;* V06 loc0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ;* V08 tmp1 [V08,T15] ( 0, 0 ) ref -> zero-ref ; V09 tmp2 [V09,T06] ( 3, 1.50) long -> rdx ; V10 tmp3 [V10,T07] ( 3, 1.50) int -> r8 ;* V11 tmp4 [V11,T11] ( 0, 0 ) ref -> zero-ref ; V12 tmp5 [V12,T08] ( 3, 1.50) long -> rdx ; V13 tmp6 [V13,T09] ( 3, 1.50) int -> r8 ; V14 tmp7 [V14,T10] ( 3, 1.50) int -> r9 ; V15 tmp8 [V15,T05] ( 2, 2 ) byref -> r9 "Inlining Arg" ; V16 tmp9 [V16,T13] ( 2, 1 ) bool -> rax V06.hasValue(offs=0x00) P-INDEP "field V06.hasValue (fldOffset=0x0)" ; V17 tmp10 [V17,T14] ( 2, 1 ) int -> r9 V06.value(offs=0x04) P-INDEP "field V06.value (fldOffset=0x4)" ; V18 tmp11 [V18,T04] ( 3, 3 ) byref -> r9 "BlockOp address local" ; ; Lcl frame size = 40 G_M1692_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M1692_IG02: test r9b, r9b jne SHORT G_M1692_IG04 ;; bbWeight=1 PerfScore 1.25 G_M1692_IG03: lea r9, bword ptr [rcx+40] cmp byte ptr [r9], 0 jne SHORT G_M1692_IG05 ;; bbWeight=0.50 PerfScore 1.75 G_M1692_IG04: cmp byte ptr [rsp+58H], 0 je SHORT G_M1692_IG08 ;; bbWeight=0.50 PerfScore 1.00 G_M1692_IG05: lea r9, bword ptr [rcx+40] movzx rax, byte ptr [r9] mov r9d, dword ptr [r9+4] test al, al jne SHORT G_M1692_IG06 mov r9d, 10 jmp SHORT G_M1692_IG06 ;; bbWeight=0.50 PerfScore 4.00 G_M1692_IG06: mov eax, dword ptr [rsp+50H] mov dword ptr [rsp+20H], eax call EngineActualStage:RunSpecific(long,int,int,int):List`1:this nop ;; bbWeight=0.50 PerfScore 1.63 G_M1692_IG07: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M1692_IG08: mov r9d, dword ptr [rsp+50H] call EngineActualStage:RunAuto(long,int,int):List`1:this nop ;; bbWeight=0.50 PerfScore 1.13 G_M1692_IG09: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 ; Total bytes of code 85, prolog size 4, PerfScore 20.75, (MethodHash=8ac7f963) for method EngineActualStage:Run(long,int,bool,int,bool):IReadOnlyList`1:this ; ============================================================ ; Assembly listing for method EngineActualStage:RunAuto(long,int,int):List`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 11, 41.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T14] ( 3, 10 ) long -> rbx ; V02 arg2 [V02,T13] ( 4, 11 ) int -> rdi ; V03 arg3 [V03,T15] ( 3, 10 ) int -> rbp ; V04 loc0 [V04,T02] ( 8, 38 ) ref -> r14 class-hnd exact ; V05 loc1 [V05,T00] ( 8, 45 ) ref -> r15 class-hnd exact ; V06 loc2 [V06,T03] ( 7, 37.50) int -> r12 ; V07 loc3 [V07,T18] ( 3, 6 ) bool -> r13 ; V08 loc4 [V08,T31] ( 2, 9 ) double -> mm6 ; V09 loc5 [V09 ] ( 3, 24 ) struct (32) [rsp+0x120] do-not-enreg[XSB] must-init addr-exposed ; V10 loc6 [V10 ] ( 3, 24 ) struct (72) [rsp+0xD8] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ; V11 loc7 [V11,T29] ( 2, 10 ) double -> mm0 ; V12 loc8 [V12,T24] ( 5, 21 ) double -> mm2 ; V13 loc9 [V13,T30] ( 2, 10 ) double -> mm2 ; V14 loc10 [V14,T12] ( 2, 16 ) struct (56) [rsp+0xA0] do-not-enreg[SFB] must-init ld-addr-op ; V15 loc11 [V15,T19] ( 2, 4 ) struct ( 8) [rsp+0x98] do-not-enreg[SFB] must-init ld-addr-op ; V16 OutArgs [V16 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V17 tmp1 [V17,T16] ( 3, 6 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V18 tmp2 [V18,T17] ( 3, 6 ) ref -> r15 class-hnd exact "NewObj constructor temp" ; V19 tmp3 [V19,T32] ( 3, 2 ) double -> mm6 ; V20 tmp4 [V20,T04] ( 2, 32 ) byref -> rcx "dup spill" ; V21 tmp5 [V21,T23] ( 2, 32 ) double -> mm1 "impAppendStmt" ; V22 tmp6 [V22,T27] ( 3, 12 ) double -> mm1 ; V23 tmp7 [V23,T09] ( 3, 18 ) byref -> rcx ; V24 tmp8 [V24,T25] ( 9, 20 ) double -> mm1 ; V25 tmp9 [V25,T28] ( 3, 12 ) double -> mm2 ; V26 tmp10 [V26,T10] ( 3, 18 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V27 tmp11 [V27,T07] ( 4, 20 ) int -> rdx "Inline stloc first use temp" ; V28 tmp12 [V28,T05] ( 3, 24 ) struct (32) [rsp+0x78] do-not-enreg[SB] "Inlining Arg" ; V29 tmp13 [V29,T11] ( 3, 18 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V30 tmp14 [V30,T08] ( 4, 20 ) int -> rdx "Inline stloc first use temp" ; V31 tmp15 [V31,T06] ( 3, 24 ) struct (32) [rsp+0x58] do-not-enreg[SB] "Inlining Arg" ; V32 tmp16 [V32,T26] ( 5, 16 ) double -> mm2 "Inline return value spill temp" ; V33 tmp17 [V33,T22] ( 2, 2 ) long -> rcx "Inline return value spill temp" ;* V34 tmp18 [V34 ] ( 0, 0 ) double -> zero-ref ld-addr-op "Inlining Arg" ; V35 tmp19 [V35,T33] ( 2, 2 ) simd16 -> mm3 "Inline stloc first use temp" ; V36 tmp20 [V36 ] ( 4, 16 ) struct (32) [rsp+0x38] do-not-enreg[XSB] addr-exposed "by-value struct argument" ;* V37 tmp21 [V37,T20] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V38 tmp22 [V38,T21] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; ; Lcl frame size = 344 G_M16252_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 344 vzeroupper vmovaps qword ptr [rsp+140H], xmm6 xor rax, rax mov qword ptr [rsp+98H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+A0H], xmm4 mov rax, -144 vmovdqa xmmword ptr [rsp+rax+140H], xmm4 vmovdqa xmmword ptr [rsp+rax+150H], xmm4 vmovdqa xmmword ptr [rsp+rax+160H], xmm4 add rax, 48 jne SHORT -5 instr mov rsi, rcx mov rbx, rdx mov edi, r8d mov ebp, r9d ;; bbWeight=1 PerfScore 20.33 G_M16252_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov edx, dword ptr [rsi+32] mov rcx, r14 call List`1:.ctor(int):this mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov edx, dword ptr [rsi+32] mov rcx, r15 call List`1:.ctor(int):this xor r12d, r12d test edi, edi sete r13b movzx r13, r13b test r13d, r13d jne SHORT G_M16252_IG04 ;; bbWeight=1 PerfScore 12.50 G_M16252_IG03: vmovsd xmm6, qword ptr [rsi+16] jmp SHORT G_M16252_IG05 ;; bbWeight=0.50 PerfScore 2.00 G_M16252_IG04: vmovsd xmm6, qword ptr [reloc @RWD08] ;; bbWeight=0.50 PerfScore 1.00 G_M16252_IG05: inc r12d mov dword ptr [rsp+20H], r12d mov qword ptr [rsp+28H], rbx mov dword ptr [rsp+30H], ebp lea rdx, [rsp+120H] mov rcx, rsi mov r8d, edi mov r9d, 3 call EngineStage:RunIteration(int,int,int,long,int):Measurement:this vmovdqu xmm0, xmmword ptr [rsp+120H] vmovdqu xmmword ptr [rsp+78H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+130H] vmovdqu xmmword ptr [rsp+88H], xmm0 inc dword ptr [r14+20] mov rcx, gword ptr [r14+8] mov edx, dword ptr [r14+16] cmp dword ptr [rcx+8], edx jbe SHORT G_M16252_IG07 ;; bbWeight=8 PerfScore 172.00 G_M16252_IG06: lea eax, [rdx+1] mov dword ptr [r14+16], eax movsxd rdx, edx shl rdx, 5 vmovdqu xmm0, xmmword ptr [rsp+78H] vmovdqu xmmword ptr [rcx+rdx+16], xmm0 vmovdqu xmm0, xmmword ptr [rsp+88H] vmovdqu xmmword ptr [rcx+rdx+32], xmm0 jmp SHORT G_M16252_IG08 ;; bbWeight=2 PerfScore 19.50 G_M16252_IG07: vmovdqu xmm0, xmmword ptr [rsp+78H] vmovdqu xmmword ptr [rsp+38H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+88H] vmovdqu xmmword ptr [rsp+48H], xmm0 mov rcx, r14 lea rdx, bword ptr [rsp+38H] call List`1:AddWithResize(Measurement):this ;; bbWeight=2 PerfScore 11.50 G_M16252_IG08: vmovdqu xmm0, xmmword ptr [rsp+120H] vmovdqu xmmword ptr [rsp+58H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+130H] vmovdqu xmmword ptr [rsp+68H], xmm0 inc dword ptr [r15+20] mov rcx, gword ptr [r15+8] mov edx, dword ptr [r15+16] cmp dword ptr [rcx+8], edx jbe SHORT G_M16252_IG10 ;; bbWeight=8 PerfScore 128.00 G_M16252_IG09: lea eax, [rdx+1] mov dword ptr [r15+16], eax movsxd rdx, edx shl rdx, 5 vmovdqu xmm0, xmmword ptr [rsp+58H] vmovdqu xmmword ptr [rcx+rdx+16], xmm0 vmovdqu xmm0, xmmword ptr [rsp+68H] vmovdqu xmmword ptr [rcx+rdx+32], xmm0 jmp SHORT G_M16252_IG11 ;; bbWeight=2 PerfScore 19.50 G_M16252_IG10: vmovdqu xmm0, xmmword ptr [rsp+58H] vmovdqu xmmword ptr [rsp+38H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+68H] vmovdqu xmmword ptr [rsp+48H], xmm0 mov rcx, r15 lea rdx, bword ptr [rsp+38H] call List`1:AddWithResize(Measurement):this ;; bbWeight=2 PerfScore 11.50 G_M16252_IG11: mov r8d, dword ptr [rsi+24] lea rcx, [rsp+D8H] mov rdx, r15 call MeasurementsStatistics:Calculate(List`1,int):MeasurementsStatistics vmovdqu xmm0, xmmword ptr [rsp+E8H] vmovdqu xmmword ptr [rsp+A0H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+F8H] vmovdqu xmmword ptr [rsp+B0H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+108H] vmovdqu xmmword ptr [rsp+C0H], xmm0 mov rcx, qword ptr [rsp+118H] mov qword ptr [rsp+D0H], rcx vmovsd xmm0, qword ptr [rsp+C0H] vmulsd xmm1, xmm6, qword ptr [rsp+E0H] lea rcx, bword ptr [rsi+48] cmp byte ptr [rcx], 0 jne SHORT G_M16252_IG13 ;; bbWeight=8 PerfScore 178.00 G_M16252_IG12: vmovsd xmm2, qword ptr [reloc @RWD24] jmp SHORT G_M16252_IG14 ;; bbWeight=2 PerfScore 8.00 G_M16252_IG13: mov r11, qword ptr [rcx+8] mov qword ptr [rsp+98H], r11 vmovsd xmm2, qword ptr [rsp+98H] ;; bbWeight=2 PerfScore 10.00 G_M16252_IG14: vucomisd xmm1, xmm2 jp SHORT G_M16252_IG15 je SHORT G_M16252_IG18 ;; bbWeight=8 PerfScore 24.00 G_M16252_IG15: vucomisd xmm1, xmm1 jp SHORT G_M16252_IG18 vucomisd xmm2, xmm1 ja SHORT G_M16252_IG17 ;; bbWeight=1 PerfScore 4.00 G_M16252_IG16: jmp SHORT G_M16252_IG21 ;; bbWeight=2 PerfScore 4.00 G_M16252_IG17: vmovaps xmm2, xmm1 jmp SHORT G_M16252_IG21 ;; bbWeight=2 PerfScore 4.50 G_M16252_IG18: vmovaps xmm3, xmm1 vmovd rcx, xmm3 test rcx, rcx jl SHORT G_M16252_IG20 ;; bbWeight=1 PerfScore 2.50 G_M16252_IG19: jmp SHORT G_M16252_IG21 ;; bbWeight=2 PerfScore 4.00 G_M16252_IG20: vmovaps xmm2, xmm1 ;; bbWeight=2 PerfScore 0.50 G_M16252_IG21: cmp r12d, dword ptr [rsi+28] jl SHORT G_M16252_IG23 ;; bbWeight=8 PerfScore 24.00 G_M16252_IG22: vucomisd xmm2, xmm0 ja SHORT G_M16252_IG25 ;; bbWeight=2 PerfScore 4.00 G_M16252_IG23: cmp r12d, dword ptr [rsi+32] jge SHORT G_M16252_IG25 test r13d, r13d je G_M16252_IG05 ;; bbWeight=4 PerfScore 17.00 G_M16252_IG24: cmp r12d, 20 jl G_M16252_IG05 ;; bbWeight=0.50 PerfScore 0.63 G_M16252_IG25: mov rcx, gword ptr [rsi+8] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEngine:WriteLine():this mov rax, r14 ;; bbWeight=1 PerfScore 5.75 G_M16252_IG26: vmovaps xmm6, qword ptr [rsp+140H] add rsp, 344 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 9.25 RWD00 dq 0000000000000000h RWD08 dq 3FA999999999999Ah RWD16 dq 0000000000000000h RWD24 dq 7FEFFFFFFFFFFFFFh ; Total bytes of code 790, prolog size 97, PerfScore 781.96, (MethodHash=fda5c083) for method EngineActualStage:RunAuto(long,int,int):List`1:this ; ============================================================ WorkloadActual 1: 19472461 op, 253874900.00 ns, 13.0376 ns/op ; Assembly listing for method MeasurementsStatistics:Calculate(List`1,int):MeasurementsStatistics ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T01] ( 6, 4 ) byref -> rdi ; V01 arg0 [V01,T00] ( 15, 10 ) ref -> rsi class-hnd ; V02 arg1 [V02,T02] ( 5, 4 ) int -> rbx ; V03 loc0 [V03 ] ( 12, 9 ) int -> [rsp+0x1A8] do-not-enreg[X] addr-exposed ld-addr-op ; V04 loc1 [V04 ] ( 4, 3 ) double -> [rsp+0x1A0] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V05 loc2 [V05,T11] ( 8, 5.50) double -> mm6 ; V06 loc3 [V06,T12] ( 6, 4 ) double -> mm7 ; V07 loc4 [V07 ] ( 4, 2.50) struct (56) [rsp+0x168] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V08 loc5 [V08,T14] ( 4, 2 ) double -> [rsp+0x160] ; V09 loc6 [V09,T13] ( 5, 2.50) double -> mm0 ; V10 loc7 [V10,T19] ( 2, 1 ) double -> mm2 ; V11 loc8 [V11,T16] ( 3, 1.50) double -> [rsp+0x158] ; V12 loc9 [V12,T17] ( 3, 1.50) double -> [rsp+0x150] ; V13 loc10 [V13,T10] ( 2, 1 ) struct (32) [rsp+0x130] do-not-enreg[SFB] must-init ld-addr-op ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15,T03] ( 5, 5 ) struct (72) [rsp+0xE8] do-not-enreg[SFB] "NewObj constructor temp" ; V16 tmp2 [V16,T15] ( 2, 2 ) double -> mm0 "dup spill" ; V17 tmp3 [V17,T04] ( 5, 5 ) struct (72) [rsp+0xA0] do-not-enreg[SFB] "NewObj constructor temp" ; V18 tmp4 [V18,T20] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V19 tmp5 [V19,T08] ( 2, 2 ) struct (56) [rsp+0x68] do-not-enreg[SB] "Inlining Arg" ; V20 tmp6 [V20,T09] ( 2, 2 ) struct (56) [rsp+0x30] do-not-enreg[SB] "Inlining Arg" ; V21 tmp7 [V21,T21] ( 2, 0 ) ref -> rdx "argument with side effect" ; V22 tmp8 [V22,T05] ( 3, 3 ) ref -> rdx "arr expr" ; V23 cse0 [V23,T18] ( 3, 1.50) double -> mm2 "CSE - moderate" ; V24 rat0 [V24,T06] ( 3, 3 ) int -> rdx "ReplaceWithLclVar is creating a new local variable" ; V25 rat1 [V25,T07] ( 3, 3 ) int -> rdx "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 464 G_M50483_IG01: push rdi push rsi push rbx sub rsp, 464 vzeroupper vmovaps qword ptr [rsp+1C0H], xmm6 vmovaps qword ptr [rsp+1B0H], xmm7 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+130H], xmm4 mov rax, -96 vmovdqa xmmword ptr [rsp+rax+1A0H], xmm4 vmovdqa xmmword ptr [rsp+rax+1B0H], xmm4 vmovdqa xmmword ptr [rsp+rax+1C0H], xmm4 add rax, 48 jne SHORT -5 instr mov qword ptr [rsp+1A0H], rax mov rdi, rcx mov rsi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 17.83 G_M50483_IG02: mov ecx, dword ptr [rsi+16] mov dword ptr [rsp+1A8H], ecx cmp dword ptr [rsp+1A8H], 0 je G_M50483_IG12 ;; bbWeight=1 PerfScore 5.00 G_M50483_IG03: mov rcx, rsi call MeasurementsStatistics:Sum(List`1):double vmovsd qword ptr [rsp+1A0H], xmm0 vmovsd xmm2, qword ptr [rsp+1A0H] vxorps xmm0, xmm0 vcvtsi2sd xmm0, dword ptr [rsp+1A8H] vdivsd xmm6, xmm2, xmm0 mov rcx, rsi mov edx, dword ptr [rsp+1A8H] vmovaps xmm2, xmm6 call MeasurementsStatistics:Variance(List`1,int,double):double vsqrtsd xmm0, xmm0 vxorps xmm1, xmm1 vcvtsi2sd xmm1, dword ptr [rsp+1A8H] vsqrtsd xmm1, xmm1 vdivsd xmm7, xmm0, xmm1 mov dword ptr [rsp+20H], 12 lea rcx, bword ptr [rsp+168H] vmovaps xmm1, xmm6 vmovaps xmm2, xmm7 mov r9d, dword ptr [rsp+1A8H] call ConfidenceInterval:.ctor(double,double,int,int):this test ebx, ebx jne G_M50483_IG06 ;; bbWeight=1 PerfScore 56.17 G_M50483_IG04: xor edx, edx vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+A0H], xmm0 vmovdqu xmmword ptr [rsp+B0H], xmm0 vmovdqu xmmword ptr [rsp+C0H], xmm0 vmovdqu xmmword ptr [rsp+D0H], xmm0 mov qword ptr [rsp+E0H], rdx vmovdqu xmm0, xmmword ptr [rsp+168H] vmovdqu xmmword ptr [rsp+68H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+178H] vmovdqu xmmword ptr [rsp+78H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+188H] vmovdqu xmmword ptr [rsp+88H], xmm0 mov rdx, qword ptr [rsp+198H] mov qword ptr [rsp+98H], rdx vmovsd qword ptr [rsp+A0H], xmm7 vmovsd qword ptr [rsp+A8H], xmm6 vmovdqu xmm0, xmmword ptr [rsp+68H] vmovdqu xmmword ptr [rsp+B0H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+78H] vmovdqu xmmword ptr [rsp+C0H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+88H] vmovdqu xmmword ptr [rsp+D0H], xmm0 mov rdx, qword ptr [rsp+98H] mov qword ptr [rsp+E0H], rdx mov rcx, rdi lea rdx, bword ptr [rsp+A0H] mov r8d, 72 call CORINFO_HELP_MEMCPY mov rax, rdi ;; bbWeight=0.50 PerfScore 12.42 G_M50483_IG05: vmovaps xmm6, qword ptr [rsp+1C0H] vmovaps xmm7, qword ptr [rsp+1B0H] add rsp, 464 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 5.38 G_M50483_IG06: mov r8d, dword ptr [rsi+16] mov rcx, rsi xor edx, edx xor r9, r9 call List`1:Sort(int,int,IComparer`1):this cmp dword ptr [rsp+1A8H], 1 jne SHORT G_M50483_IG08 cmp dword ptr [rsi+16], 0 je G_M50483_IG13 ;; bbWeight=0.50 PerfScore 4.38 G_M50483_IG07: mov rdx, gword ptr [rsi+8] cmp dword ptr [rdx+8], 0 jbe G_M50483_IG14 vmovdqu xmm0, xmmword ptr [rdx+16] vmovdqu xmmword ptr [rsp+130H], xmm0 vmovdqu xmm0, xmmword ptr [rdx+32] vmovdqu xmmword ptr [rsp+140H], xmm0 vmovsd xmm0, qword ptr [rsp+148H] vmovaps xmm1, xmm0 jmp SHORT G_M50483_IG09 ;; bbWeight=0.50 PerfScore 7.63 G_M50483_IG08: mov edx, dword ptr [rsi+16] mov ecx, edx shr ecx, 31 add edx, ecx sar edx, 1 mov rcx, rsi call MeasurementsStatistics:GetQuartile(List`1,int):double vmovsd qword ptr [rsp+160H], xmm0 mov edx, dword ptr [rsi+16] lea edx, [rdx+2*rdx] mov ecx, edx shr ecx, 31 add edx, ecx sar edx, 1 mov rcx, rsi call MeasurementsStatistics:GetQuartile(List`1,int):double vmovsd xmm1, qword ptr [rsp+160H] ;; bbWeight=0.50 PerfScore 7.75 G_M50483_IG09: vsubsd xmm2, xmm0, xmm1 vmulsd xmm2, xmm2, qword ptr [reloc @RWD08] vsubsd xmm3, xmm1, xmm2 vaddsd xmm2, xmm0, xmm2 vmovsd qword ptr [rsp+150H], xmm2 lea rcx, [rsp+1A0H] mov qword ptr [rsp+20H], rcx lea rcx, [rsp+1A8H] mov qword ptr [rsp+28H], rcx mov ecx, ebx mov rdx, rsi vmovsd qword ptr [rsp+158H], xmm3 vmovaps xmm2, xmm3 vmovsd xmm3, qword ptr [rsp+150H] call MeasurementsStatistics:SumWithoutOutliers(int,List`1,double,double,byref,byref) vmovsd xmm3, qword ptr [rsp+1A0H] vxorps xmm0, xmm0 vcvtsi2sd xmm0, dword ptr [rsp+1A8H] vdivsd xmm6, xmm3, xmm0 vmovsd xmm2, qword ptr [rsp+158H] vmovsd qword ptr [rsp+20H], xmm2 vmovsd xmm3, qword ptr [rsp+150H] vmovsd qword ptr [rsp+28H], xmm3 mov ecx, ebx mov rdx, rsi mov r8d, dword ptr [rsp+1A8H] vmovaps xmm3, xmm6 call MeasurementsStatistics:VarianceWithoutOutliers(int,List`1,int,double,double,double):double vsqrtsd xmm0, xmm0 vxorps xmm1, xmm1 vcvtsi2sd xmm1, dword ptr [rsp+1A8H] vsqrtsd xmm1, xmm1 vdivsd xmm7, xmm0, xmm1 mov dword ptr [rsp+20H], 12 lea rcx, bword ptr [rsp+168H] vmovaps xmm1, xmm6 vmovaps xmm2, xmm7 mov r9d, dword ptr [rsp+1A8H] call ConfidenceInterval:.ctor(double,double,int,int):this xor edx, edx vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+E8H], xmm0 vmovdqu xmmword ptr [rsp+F8H], xmm0 vmovdqu xmmword ptr [rsp+108H], xmm0 vmovdqu xmmword ptr [rsp+118H], xmm0 mov qword ptr [rsp+128H], rdx vmovdqu xmm0, xmmword ptr [rsp+168H] vmovdqu xmmword ptr [rsp+30H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+178H] vmovdqu xmmword ptr [rsp+40H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+188H] vmovdqu xmmword ptr [rsp+50H], xmm0 mov rdx, qword ptr [rsp+198H] mov qword ptr [rsp+60H], rdx vmovsd qword ptr [rsp+E8H], xmm7 vmovsd qword ptr [rsp+F0H], xmm6 vmovdqu xmm0, xmmword ptr [rsp+30H] vmovdqu xmmword ptr [rsp+F8H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+40H] ;; bbWeight=0.50 PerfScore 48.88 G_M50483_IG10: vmovdqu xmmword ptr [rsp+108H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+50H] vmovdqu xmmword ptr [rsp+118H], xmm0 mov rdx, qword ptr [rsp+60H] mov qword ptr [rsp+128H], rdx mov rcx, rdi lea rdx, bword ptr [rsp+E8H] mov r8d, 72 call CORINFO_HELP_MEMCPY mov rax, rdi ;; bbWeight=0.50 PerfScore 3.63 G_M50483_IG11: vmovaps xmm6, qword ptr [rsp+1C0H] vmovaps xmm7, qword ptr [rsp+1B0H] add rsp, 464 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 5.38 G_M50483_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x9A94 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M50483_IG13: call ThrowHelper:ThrowArgumentOutOfRange_IndexException() int3 ;; bbWeight=0 PerfScore 0.00 G_M50483_IG14: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 3FF8000000000000h ; Total bytes of code 1199, prolog size 95, PerfScore 303.72, (MethodHash=96273acc) for method MeasurementsStatistics:Calculate(List`1,int):MeasurementsStatistics ; ============================================================ ; Assembly listing for method MeasurementsStatistics:Sum(List`1):double ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 4, 4 ) ref -> rcx class-hnd ; V01 loc0 [V01,T03] ( 4, 10 ) double -> mm6 ; V02 loc1 [V02 ] ( 4, 10 ) struct (48) [rsp+0x70] do-not-enreg[XSFB] addr-exposed ld-addr-op ; V03 loc2 [V03,T01] ( 2, 8 ) struct (32) [rsp+0x50] do-not-enreg[SFB] must-init ld-addr-op ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T00] ( 5, 10 ) struct (48) [rsp+0x20] do-not-enreg[SFB] must-init "NewObj constructor temp" ; ; Lcl frame size = 184 G_M30250_IG01: sub rsp, 184 vzeroupper vmovaps qword ptr [rsp+A0H], xmm6 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 vmovdqa xmmword ptr [rsp+50H], xmm4 vmovdqa xmmword ptr [rsp+60H], xmm4 ;; bbWeight=1 PerfScore 9.58 G_M30250_IG02: vxorps xmm6, xmm6 mov gword ptr [rsp+20H], rcx xor eax, eax mov dword ptr [rsp+28H], eax mov ecx, dword ptr [rcx+20] mov dword ptr [rsp+2CH], ecx vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+30H], xmm0 vmovdqu xmmword ptr [rsp+40H], xmm0 ;; bbWeight=1 PerfScore 7.92 G_M30250_IG03: vmovdqu xmm0, xmmword ptr [rsp+20H] vmovdqu xmmword ptr [rsp+70H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+30H] vmovdqu xmmword ptr [rsp+80H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+40H] vmovdqu xmmword ptr [rsp+90H], xmm0 ;; bbWeight=1 PerfScore 6.00 G_M30250_IG04: lea rcx, bword ptr [rsp+70H] call Enumerator:MoveNext():bool:this test eax, eax je SHORT G_M30250_IG06 ;; bbWeight=1 PerfScore 2.75 G_M30250_IG05: vmovdqu xmm0, xmmword ptr [rsp+80H] vmovdqu xmmword ptr [rsp+50H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+90H] vmovdqu xmmword ptr [rsp+60H], xmm0 vaddsd xmm6, xmm6, qword ptr [rsp+68H] lea rcx, bword ptr [rsp+70H] call Enumerator:MoveNext():bool:this test eax, eax jne SHORT G_M30250_IG05 ;; bbWeight=4 PerfScore 47.00 G_M30250_IG06: vmovaps xmm0, xmm6 ;; bbWeight=1 PerfScore 0.25 G_M30250_IG07: vmovaps xmm6, qword ptr [rsp+A0H] add rsp, 184 ret ;; bbWeight=1 PerfScore 5.25 ; Total bytes of code 218, prolog size 53, PerfScore 102.95, (MethodHash=0f3589d5) for method MeasurementsStatistics:Sum(List`1):double ; ============================================================ ; Assembly listing for method Enumerator:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 9, 6.50) byref -> rcx this ; V01 loc0 [V01,T01] ( 4, 3 ) ref -> rax class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) ref -> rax "arr expr" ; V04 tmp2 [V04,T03] ( 3, 3 ) int -> rdx "index expr" ; V05 cse0 [V05,T04] ( 3, 1.50) int -> rdx "CSE - moderate" ; ; Lcl frame size = 40 G_M65171_IG01: sub rsp, 40 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M65171_IG02: mov rax, gword ptr [rcx] mov edx, dword ptr [rcx+12] cmp edx, dword ptr [rax+20] jne SHORT G_M65171_IG05 ;; bbWeight=1 PerfScore 7.00 G_M65171_IG03: mov edx, dword ptr [rcx+8] cmp edx, dword ptr [rax+16] jae SHORT G_M65171_IG05 mov rax, gword ptr [rax+8] cmp edx, dword ptr [rax+8] jae SHORT G_M65171_IG06 movsxd rdx, edx shl rdx, 5 vmovdqu xmm0, xmmword ptr [rax+rdx+16] vmovdqu xmmword ptr [rcx+16], xmm0 vmovdqu xmm0, xmmword ptr [rax+rdx+32] vmovdqu xmmword ptr [rcx+32], xmm0 inc dword ptr [rcx+8] mov eax, 1 ;; bbWeight=0.50 PerfScore 11.75 G_M65171_IG04: add rsp, 40 ret ;; bbWeight=0.50 PerfScore 0.63 G_M65171_IG05: add rsp, 40 jmp Enumerator:MoveNextRare():bool:this ;; bbWeight=0.50 PerfScore 1.13 G_M65171_IG06: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 92, prolog size 7, PerfScore 31.35, (MethodHash=94cf016c) for method Enumerator:MoveNext():bool:this ; ============================================================ ; Assembly listing for method Enumerator:MoveNextRare():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) byref -> rcx this ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 cse0 [V02,T01] ( 3, 3 ) ref -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M58487_IG01: sub rsp, 40 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M58487_IG02: mov eax, dword ptr [rcx+12] mov rdx, gword ptr [rcx] cmp eax, dword ptr [rdx+20] jne SHORT G_M58487_IG05 ;; bbWeight=1 PerfScore 7.00 G_M58487_IG03: mov eax, dword ptr [rdx+16] inc eax mov dword ptr [rcx+8], eax vxorps xmm0, xmm0 vmovdqu xmmword ptr [rcx+16], xmm0 vmovdqu xmmword ptr [rcx+32], xmm0 xor eax, eax ;; bbWeight=1 PerfScore 5.83 G_M58487_IG04: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 G_M58487_IG05: call ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 53, prolog size 7, PerfScore 20.93, (MethodHash=649d1b88) for method Enumerator:MoveNextRare():bool:this ; ============================================================ ; Assembly listing for method MeasurementsStatistics:Variance(List`1,int,double):double ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 4, 3 ) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 4, 3.50) int -> rsi ; V02 arg2 [V02,T07] ( 3, 6 ) double -> mm6 ; V03 loc0 [V03,T06] ( 4, 9 ) double -> mm7 ; V04 loc1 [V04 ] ( 4, 9 ) struct (48) [rsp+0x70] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ; V05 loc2 [V05,T00] ( 2, 8 ) struct (32) [rsp+0x50] do-not-enreg[SFB] must-init ld-addr-op ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T04] ( 2, 16 ) double -> mm1 "impAppendStmt" ; V08 tmp2 [V08,T02] ( 5, 5 ) struct (48) [rsp+0x20] do-not-enreg[SFB] must-init "NewObj constructor temp" ; V09 cse0 [V09,T08] ( 2, 4.50) double -> mm8 "CSE - aggressive" ; V10 cse1 [V10,T05] ( 3, 12 ) double -> mm0 "CSE - aggressive" ; ; Lcl frame size = 208 G_M48834_IG01: push rsi sub rsp, 208 vzeroupper vmovaps qword ptr [rsp+C0H], xmm6 vmovaps qword ptr [rsp+B0H], xmm7 vmovaps qword ptr [rsp+A0H], xmm8 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 mov rax, -96 vmovdqa xmmword ptr [rsp+rax+A0H], xmm4 vmovdqa xmmword ptr [rsp+rax+B0H], xmm4 vmovdqa xmmword ptr [rsp+rax+C0H], xmm4 add rax, 48 jne SHORT -5 instr mov esi, edx vmovaps xmm6, xmm2 ;; bbWeight=1 PerfScore 18.58 G_M48834_IG02: cmp esi, 1 jne SHORT G_M48834_IG05 ;; bbWeight=1 PerfScore 1.25 G_M48834_IG03: vxorps xmm0, xmm0 ;; bbWeight=0.50 PerfScore 0.17 G_M48834_IG04: vmovaps xmm6, qword ptr [rsp+C0H] vmovaps xmm7, qword ptr [rsp+B0H] vmovaps xmm8, qword ptr [rsp+A0H] add rsp, 208 pop rsi ret ;; bbWeight=0.50 PerfScore 6.88 G_M48834_IG05: vxorps xmm7, xmm7 mov gword ptr [rsp+20H], rcx xor eax, eax mov dword ptr [rsp+28H], eax mov ecx, dword ptr [rcx+20] mov dword ptr [rsp+2CH], ecx vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+30H], xmm0 vmovdqu xmmword ptr [rsp+40H], xmm0 ;; bbWeight=0.50 PerfScore 3.96 G_M48834_IG06: vmovdqu xmm0, xmmword ptr [rsp+20H] vmovdqu xmmword ptr [rsp+70H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+30H] vmovdqu xmmword ptr [rsp+80H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+40H] vmovdqu xmmword ptr [rsp+90H], xmm0 ;; bbWeight=0.50 PerfScore 3.00 G_M48834_IG07: lea rcx, bword ptr [rsp+70H] call Enumerator:MoveNext():bool:this test eax, eax je SHORT G_M48834_IG09 dec esi vxorps xmm8, xmm8 vcvtsi2sd xmm8, esi ;; bbWeight=0.50 PerfScore 4.17 G_M48834_IG08: vmovdqu xmm0, xmmword ptr [rsp+80H] vmovdqu xmmword ptr [rsp+50H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+90H] vmovdqu xmmword ptr [rsp+60H], xmm0 vmovsd xmm0, qword ptr [rsp+68H] vsubsd xmm0, xmm0, xmm6 vmovaps xmm1, xmm0 vmulsd xmm0, xmm0, xmm1 vdivsd xmm0, xmm0, xmm8 vaddsd xmm7, xmm0, xmm7 lea rcx, bword ptr [rsp+70H] call Enumerator:MoveNext():bool:this test eax, eax jne SHORT G_M48834_IG08 ;; bbWeight=4 PerfScore 120.00 G_M48834_IG09: vmovaps xmm0, xmm7 ;; bbWeight=0.50 PerfScore 0.13 G_M48834_IG10: vmovaps xmm6, qword ptr [rsp+C0H] vmovaps xmm7, qword ptr [rsp+B0H] vmovaps xmm8, qword ptr [rsp+A0H] add rsp, 208 pop rsi ret ;; bbWeight=0.50 PerfScore 6.88 ; Total bytes of code 364, prolog size 97, PerfScore 205.20, (MethodHash=92c1413d) for method MeasurementsStatistics:Variance(List`1,int,double):double ; ============================================================ ; Assembly listing for method ConfidenceInterval:.ctor(double,double,int,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 11, 11 ) byref -> rsi this ; V01 arg1 [V01,T05] ( 5, 5 ) double -> mm6 ; V02 arg2 [V02,T06] ( 4, 3.50) double -> [rsp+0x50] ; V03 arg3 [V03,T01] ( 5, 4.50) int -> r9 ; V04 arg4 [V04,T02] ( 2, 1.50) int -> rcx ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V06 tmp1 [V06,T04] ( 0, 0 ) byref -> zero-ref ;* V07 tmp2 [V07,T03] ( 0, 0 ) byref -> zero-ref ; V08 tmp3 [V08,T07] ( 3, 2 ) double -> mm0 ; ; Lcl frame size = 48 G_M28558_IG01: push rsi sub rsp, 48 vzeroupper vmovaps qword ptr [rsp+20H], xmm6 mov rsi, rcx vmovaps xmm6, xmm1 mov ecx, dword ptr [rsp+60H] ;; bbWeight=1 PerfScore 6.75 G_M28558_IG02: mov dword ptr [rsi], r9d vmovsd qword ptr [rsi+8], xmm6 vmovsd qword ptr [rsp+50H], xmm2 vmovsd qword ptr [rsi+16], xmm2 mov dword ptr [rsi+24], ecx cmp r9d, 2 jle SHORT G_M28558_IG04 ;; bbWeight=1 PerfScore 4.75 G_M28558_IG03: mov edx, r9d call ConfidenceLevelExtensions:GetZValue(int,int):double vmulsd xmm0, xmm0, qword ptr [rsp+50H] jmp SHORT G_M28558_IG05 ;; bbWeight=0.50 PerfScore 4.13 G_M28558_IG04: vmovsd xmm0, qword ptr [reloc @RWD08] ;; bbWeight=0.50 PerfScore 1.00 G_M28558_IG05: vmovsd qword ptr [rsi+32], xmm0 vsubsd xmm0, xmm6, qword ptr [rsi+32] vmovsd qword ptr [rsi+40], xmm0 vaddsd xmm0, xmm6, qword ptr [rsi+32] vmovsd qword ptr [rsi+48], xmm0 ;; bbWeight=1 PerfScore 13.50 G_M28558_IG06: vmovaps xmm6, qword ptr [rsp+20H] add rsp, 48 pop rsi ret ;; bbWeight=1 PerfScore 5.75 RWD00 dq 0000000000000000h RWD08 dq FFF8000000000000h ; Total bytes of code 114, prolog size 14, PerfScore 48.58, (MethodHash=f1509071) for method ConfidenceInterval:.ctor(double,double,int,int):this ; ============================================================ ; Assembly listing for method List`1:Sort(int,int,IComparer`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 5, 4.50) int -> rdx ; V02 arg2 [V02,T01] ( 6, 5.50) int -> r8 ; V03 arg3 [V03,T03] ( 3, 2.50) ref -> r9 class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M7897_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M7897_IG02: test edx, edx jl SHORT G_M7897_IG09 ;; bbWeight=1 PerfScore 1.25 G_M7897_IG03: test r8d, r8d jl SHORT G_M7897_IG10 ;; bbWeight=1 PerfScore 1.25 G_M7897_IG04: mov ecx, dword ptr [rsi+16] sub ecx, edx cmp ecx, r8d jl SHORT G_M7897_IG11 ;; bbWeight=1 PerfScore 3.50 G_M7897_IG05: cmp r8d, 1 jle SHORT G_M7897_IG07 ;; bbWeight=1 PerfScore 1.25 G_M7897_IG06: mov rcx, gword ptr [rsi+8] call Array:Sort(ref,int,int,IComparer`1) ;; bbWeight=0.50 PerfScore 1.50 G_M7897_IG07: inc dword ptr [rsi+20] ;; bbWeight=1 PerfScore 5.00 G_M7897_IG08: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M7897_IG09: call ThrowHelper:ThrowIndexArgumentOutOfRange_NeedNonNegNumException() int3 ;; bbWeight=0 PerfScore 0.00 G_M7897_IG10: mov ecx, 27 mov edx, 11 call ThrowHelper:ThrowArgumentOutOfRangeException(int,int) int3 ;; bbWeight=0 PerfScore 0.00 G_M7897_IG11: mov ecx, 13 call ThrowHelper:ThrowArgumentException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 84, prolog size 5, PerfScore 25.40, (MethodHash=859fe126) for method List`1:Sort(int,int,IComparer`1):this ; ============================================================ ; Assembly listing for method MeasurementsStatistics:SumWithoutOutliers(int,List`1,double,double,byref,byref) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 6 ) int -> rsi ; V01 arg1 [V01,T03] ( 4, 4 ) ref -> rdx class-hnd ; V02 arg2 [V02,T06] ( 3, 6 ) double -> mm6 ; V03 arg3 [V03,T07] ( 3, 6 ) double -> mm7 ; V04 arg4 [V04,T04] ( 3, 5 ) byref -> rdi ; V05 arg5 [V05,T05] ( 3, 5 ) byref -> rbx ; V06 loc0 [V06 ] ( 4, 10 ) struct (48) [rsp+0x70] do-not-enreg[XSFB] addr-exposed ld-addr-op ; V07 loc1 [V07,T01] ( 3, 10 ) struct (32) [rsp+0x50] do-not-enreg[SFB] must-init ld-addr-op ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T08] ( 2, 8 ) double -> mm0 "impAppendStmt" ; V10 tmp2 [V10,T00] ( 5, 10 ) struct (48) [rsp+0x20] do-not-enreg[SFB] must-init "NewObj constructor temp" ; ; Lcl frame size = 192 G_M441_IG01: push rdi push rsi push rbx sub rsp, 192 vzeroupper vmovaps qword ptr [rsp+B0H], xmm6 vmovaps qword ptr [rsp+A0H], xmm7 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 vmovdqa xmmword ptr [rsp+50H], xmm4 vmovdqa xmmword ptr [rsp+60H], xmm4 mov esi, ecx vmovaps xmm6, xmm2 vmovaps xmm7, xmm3 mov rdi, bword ptr [rsp+100H] mov rbx, bword ptr [rsp+108H] ;; bbWeight=1 PerfScore 18.33 G_M441_IG02: vxorps xmm0, xmm0 vmovsd qword ptr [rdi], xmm0 xor ecx, ecx mov dword ptr [rbx], ecx mov gword ptr [rsp+20H], rdx mov dword ptr [rsp+28H], ecx mov ecx, dword ptr [rdx+20] mov dword ptr [rsp+2CH], ecx vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+30H], xmm0 vmovdqu xmmword ptr [rsp+40H], xmm0 ;; bbWeight=1 PerfScore 9.42 G_M441_IG03: vmovdqu xmm0, xmmword ptr [rsp+20H] vmovdqu xmmword ptr [rsp+70H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+30H] vmovdqu xmmword ptr [rsp+80H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+40H] vmovdqu xmmword ptr [rsp+90H], xmm0 ;; bbWeight=1 PerfScore 6.00 G_M441_IG04: lea rcx, bword ptr [rsp+70H] call Enumerator:MoveNext():bool:this test eax, eax je SHORT G_M441_IG08 ;; bbWeight=1 PerfScore 2.75 G_M441_IG05: vmovdqu xmm1, xmmword ptr [rsp+80H] vmovdqu xmmword ptr [rsp+50H], xmm1 vmovdqu xmm1, xmmword ptr [rsp+90H] vmovdqu xmmword ptr [rsp+60H], xmm1 mov ecx, esi vmovsd xmm1, qword ptr [rsp+68H] vmovaps xmm2, xmm6 vmovaps xmm3, xmm7 call MeasurementsStatistics:IsOutlier(int,double,double,double):bool test eax, eax jne SHORT G_M441_IG07 ;; bbWeight=4 PerfScore 36.00 G_M441_IG06: vmovsd xmm0, qword ptr [rdi] vaddsd xmm0, xmm0, qword ptr [rsp+68H] vmovsd qword ptr [rdi], xmm0 inc dword ptr [rbx] ;; bbWeight=2 PerfScore 25.00 G_M441_IG07: lea rcx, bword ptr [rsp+70H] call Enumerator:MoveNext():bool:this test eax, eax jne SHORT G_M441_IG05 ;; bbWeight=4 PerfScore 11.00 G_M441_IG08: vmovaps xmm6, qword ptr [rsp+B0H] vmovaps xmm7, qword ptr [rsp+A0H] add rsp, 192 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 10.75 ; Total bytes of code 305, prolog size 65, PerfScore 153.05, (MethodHash=8464fe46) for method MeasurementsStatistics:SumWithoutOutliers(int,List`1,double,double,byref,byref) ; ============================================================ ; Assembly listing for method MeasurementsStatistics:IsOutlier(int,double,double,double):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4 ) int -> rsi ; V01 arg1 [V01,T02] ( 6, 4 ) double -> mm1 ; V02 arg2 [V02,T03] ( 4, 3 ) double -> mm2 ; V03 arg3 [V03,T04] ( 4, 3 ) double -> mm3 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V06 tmp2 [V06,T06] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T01] ( 4, 4 ) int -> rcx "Single return block return value" ; V08 tmp4 [V08,T07] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M25093_IG01: push rdi push rsi sub rsp, 40 vzeroupper mov esi, ecx ;; bbWeight=1 PerfScore 3.50 G_M25093_IG02: cmp esi, 3 ja SHORT G_M25093_IG12 mov eax, esi lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rax] lea rdx, G_M25093_IG02 add rcx, rdx jmp rcx ;; bbWeight=1 PerfScore 7.25 G_M25093_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M25093_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M25093_IG05: vucomisd xmm1, xmm3 seta cl movzx rcx, cl jmp SHORT G_M25093_IG10 ;; bbWeight=0.50 PerfScore 2.13 G_M25093_IG06: vucomisd xmm2, xmm1 seta cl movzx rcx, cl jmp SHORT G_M25093_IG10 ;; bbWeight=0.50 PerfScore 2.13 G_M25093_IG07: vucomisd xmm2, xmm1 ja SHORT G_M25093_IG08 vucomisd xmm1, xmm3 seta cl movzx rcx, cl jmp SHORT G_M25093_IG10 ;; bbWeight=0.50 PerfScore 3.13 G_M25093_IG08: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M25093_IG09: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M25093_IG10: movzx rax, cl ;; bbWeight=0.50 PerfScore 0.13 G_M25093_IG11: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M25093_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov dword ptr [rdi+8], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x9AEA mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov r8, rdi mov rcx, rsi xor r9, r9 call ArgumentOutOfRangeException:.ctor(String,Object,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M25093_IG03 - G_M25093_IG02 dd G_M25093_IG05 - G_M25093_IG02 dd G_M25093_IG06 - G_M25093_IG02 dd G_M25093_IG07 - G_M25093_IG02 ; Total bytes of code 198, prolog size 9, PerfScore 42.08, (MethodHash=556e9dfa) for method MeasurementsStatistics:IsOutlier(int,double,double,double):bool ; ============================================================ ; Assembly listing for method MeasurementsStatistics:VarianceWithoutOutliers(int,List`1,int,double,double,double):double ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 6 ) int -> rsi ; V01 arg1 [V01,T04] ( 4, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 4, 5 ) int -> rdi ; V03 arg3 [V03,T06] ( 3, 4 ) double -> [rsp+0x108] ; V04 arg4 [V04,T09] ( 1, 4 ) double -> mm6 ; V05 arg5 [V05,T10] ( 1, 4 ) double -> mm7 ; V06 loc0 [V06,T08] ( 4, 5 ) double -> mm8 ; V07 loc1 [V07 ] ( 4, 9 ) struct (48) [rsp+0x70] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ; V08 loc2 [V08,T00] ( 3, 10 ) struct (32) [rsp+0x50] do-not-enreg[SFB] must-init ld-addr-op ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T05] ( 2, 8 ) double -> mm1 "impAppendStmt" ; V11 tmp2 [V11,T03] ( 5, 5 ) struct (48) [rsp+0x20] do-not-enreg[SFB] must-init "NewObj constructor temp" ; V12 cse0 [V12,T07] ( 3, 6 ) double -> mm0 "CSE - aggressive" ; ; Lcl frame size = 216 G_M36126_IG01: push rdi push rsi sub rsp, 216 vzeroupper vmovaps qword ptr [rsp+C0H], xmm6 vmovaps qword ptr [rsp+B0H], xmm7 vmovaps qword ptr [rsp+A0H], xmm8 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 mov rax, -96 vmovdqa xmmword ptr [rsp+rax+A0H], xmm4 vmovdqa xmmword ptr [rsp+rax+B0H], xmm4 vmovdqa xmmword ptr [rsp+rax+C0H], xmm4 add rax, 48 jne SHORT -5 instr mov esi, ecx mov edi, r8d vmovsd qword ptr [rsp+108H], xmm3 vmovsd xmm6, qword ptr [rsp+110H] vmovsd xmm7, qword ptr [rsp+118H] ;; bbWeight=1 PerfScore 24.08 G_M36126_IG02: cmp edi, 1 jne SHORT G_M36126_IG05 ;; bbWeight=1 PerfScore 1.25 G_M36126_IG03: vxorps xmm0, xmm0 ;; bbWeight=0.50 PerfScore 0.17 G_M36126_IG04: vmovaps xmm6, qword ptr [rsp+C0H] vmovaps xmm7, qword ptr [rsp+B0H] vmovaps xmm8, qword ptr [rsp+A0H] add rsp, 216 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 7.13 G_M36126_IG05: vxorps xmm8, xmm8 mov gword ptr [rsp+20H], rdx xor ecx, ecx mov dword ptr [rsp+28H], ecx mov ecx, dword ptr [rdx+20] mov dword ptr [rsp+2CH], ecx vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+30H], xmm0 vmovdqu xmmword ptr [rsp+40H], xmm0 ;; bbWeight=0.50 PerfScore 3.96 G_M36126_IG06: vmovdqu xmm0, xmmword ptr [rsp+20H] vmovdqu xmmword ptr [rsp+70H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+30H] vmovdqu xmmword ptr [rsp+80H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+40H] vmovdqu xmmword ptr [rsp+90H], xmm0 ;; bbWeight=0.50 PerfScore 3.00 G_M36126_IG07: lea rcx, bword ptr [rsp+70H] call Enumerator:MoveNext():bool:this test eax, eax je G_M36126_IG11 ;; bbWeight=0.50 PerfScore 1.38 G_M36126_IG08: vmovdqu xmm1, xmmword ptr [rsp+80H] vmovdqu xmmword ptr [rsp+50H], xmm1 vmovdqu xmm1, xmmword ptr [rsp+90H] vmovdqu xmmword ptr [rsp+60H], xmm1 mov ecx, esi vmovsd xmm1, qword ptr [rsp+68H] vmovaps xmm2, xmm6 vmovaps xmm3, xmm7 call MeasurementsStatistics:IsOutlier(int,double,double,double):bool test eax, eax jne SHORT G_M36126_IG10 ;; bbWeight=4 PerfScore 36.00 G_M36126_IG09: vmovsd xmm0, qword ptr [rsp+68H] vsubsd xmm0, xmm0, qword ptr [rsp+108H] vmovaps xmm1, xmm0 vmulsd xmm0, xmm0, xmm1 lea ecx, [rdi-1] vxorps xmm1, xmm1 vcvtsi2sd xmm1, ecx vdivsd xmm0, xmm0, xmm1 vaddsd xmm8, xmm0, xmm8 ;; bbWeight=2 PerfScore 62.17 G_M36126_IG10: lea rcx, bword ptr [rsp+70H] call Enumerator:MoveNext():bool:this test eax, eax jne SHORT G_M36126_IG08 ;; bbWeight=4 PerfScore 11.00 G_M36126_IG11: vmovaps xmm0, xmm8 ;; bbWeight=0.50 PerfScore 0.13 G_M36126_IG12: vmovaps xmm6, qword ptr [rsp+C0H] vmovaps xmm7, qword ptr [rsp+B0H] vmovaps xmm8, qword ptr [rsp+A0H] add rsp, 216 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 7.13 ; Total bytes of code 429, prolog size 98, PerfScore 204.48, (MethodHash=677272e1) for method MeasurementsStatistics:VarianceWithoutOutliers(int,List`1,int,double,double,double):double ; ============================================================ WorkloadActual 2: 19472461 op, 250036400.00 ns, 12.8405 ns/op ; Assembly listing for method Array:Sort(ref,int,int,IComparer`1) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 4.50) ref -> rcx class-hnd ; V01 arg1 [V01,T02] ( 5, 4.50) int -> rdx ; V02 arg2 [V02,T00] ( 6, 5.50) int -> r8 ; V03 arg3 [V03,T03] ( 3, 2.50) ref -> rsi class-hnd ;* V04 loc0 [V04 ] ( 0, 0 ) struct (16) zero-ref ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V07 tmp2 [V07,T05] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V08 tmp3 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V09 tmp4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V10 tmp5 [V10,T07] ( 2, 1 ) byref -> rdi V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ; V11 tmp6 [V11,T10] ( 2, 1 ) int -> rbx V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V12 tmp7 [V12,T08] ( 2, 1 ) byref -> rdi V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ; V13 tmp8 [V13,T11] ( 2, 1 ) int -> rbx V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ; V14 tmp9 [V14,T09] ( 2, 1 ) byref -> rdi V09._value(offs=0x00) P-INDEP "field V09._value (fldOffset=0x0)" ; V15 tmp10 [V15 ] ( 2, 2 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V16 tmp11 [V16,T04] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V17 tmp12 [V17,T06] ( 2, 2 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 48 G_M13266_IG01: push rdi push rsi push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, r9 ;; bbWeight=1 PerfScore 4.75 G_M13266_IG02: test rcx, rcx je G_M13266_IG10 ;; bbWeight=1 PerfScore 1.25 G_M13266_IG03: test edx, edx jl G_M13266_IG11 ;; bbWeight=1 PerfScore 1.25 G_M13266_IG04: test r8d, r8d jl G_M13266_IG12 ;; bbWeight=1 PerfScore 1.25 G_M13266_IG05: mov eax, dword ptr [rcx+8] sub eax, edx cmp eax, r8d jl G_M13266_IG13 ;; bbWeight=1 PerfScore 3.50 G_M13266_IG06: cmp r8d, 1 jle SHORT G_M13266_IG08 ;; bbWeight=1 PerfScore 1.25 G_M13266_IG07: add rcx, 16 movsxd rdi, edx shl rdi, 5 add rdi, rcx mov ebx, r8d mov rcx, 0xD1FFAB1E mov edx, 42 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] lea rdx, bword ptr [rsp+20H] mov bword ptr [rdx], rdi mov dword ptr [rdx+8], ebx lea rdx, bword ptr [rsp+20H] mov r8, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IArraySortHelper`1:Sort(Span`1,IComparer`1):this ;; bbWeight=0.50 PerfScore 6.75 G_M13266_IG08: nop ;; bbWeight=1 PerfScore 0.25 G_M13266_IG09: add rsp, 48 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 G_M13266_IG10: mov ecx, 2 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M13266_IG11: call ThrowHelper:ThrowIndexArgumentOutOfRange_NeedNonNegNumException() int3 ;; bbWeight=0 PerfScore 0.00 G_M13266_IG12: call ThrowHelper:ThrowLengthArgumentOutOfRange_ArgumentOutOfRange_NeedNonNegNum() int3 ;; bbWeight=0 PerfScore 0.00 G_M13266_IG13: mov ecx, 13 call ThrowHelper:ThrowArgumentException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 197, prolog size 14, PerfScore 42.70, (MethodHash=fccacc2d) for method Array:Sort(ref,int,int,IComparer`1) ; ============================================================ ; Assembly listing for method ArraySortHelper`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M18674_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M18674_IG02: call ArraySortHelper`1:CreateArraySortHelper():IArraySortHelper`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 2.75 G_M18674_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 40, prolog size 10, PerfScore 10.50, (MethodHash=b28eb70d) for method ArraySortHelper`1:.cctor() ; ============================================================ ; Assembly listing for method ArraySortHelper`1:CreateArraySortHelper():IArraySortHelper`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T04] ( 2, 2 ) ref -> rax class-hnd ; V01 loc1 [V01 ] ( 2, 2 ) struct ( 8) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> rsi class-hnd exact "dup spill" ; V04 tmp2 [V04,T01] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V06 tmp4 [V06 ] ( 2, 2 ) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed V01.m_type(offs=0x00) P-DEP "field V01.m_type (fldOffset=0x0)" ; V07 tmp5 [V07,T05] ( 2, 2 ) ref -> rax V05.m_type(offs=0x00) P-INDEP "field V05.m_type (fldOffset=0x0)" ; V08 tmp6 [V08,T02] ( 2, 4 ) ref -> r8 "argument with side effect" ; V09 tmp7 [V09,T03] ( 2, 4 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 48 G_M16339_IG01: push rsi sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax ;; bbWeight=1 PerfScore 2.50 G_M16339_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov gword ptr [rsp+28H], rax mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ mov rsi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov r8, rax mov rcx, rsi xor edx, edx call CORINFO_HELP_ARRADDR_ST lea rcx, bword ptr [rsp+28H] mov rdx, rsi call RuntimeTypeHandle:Instantiate(ref):RuntimeType:this mov rcx, rax call RuntimeTypeHandle:Allocate(RuntimeType):Object mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTINTERFACE nop ;; bbWeight=1 PerfScore 11.75 G_M16339_IG03: add rsp, 48 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 129, prolog size 12, PerfScore 28.90, (MethodHash=75e0c02c) for method ArraySortHelper`1:CreateArraySortHelper():IArraySortHelper`1 ; ============================================================ ; Assembly listing for method GenericArraySortHelper`1:Sort(Span`1,IComparer`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 4, 8 ) byref -> rdx ld-addr-op ; V02 arg2 [V02,T01] ( 7, 6 ) ref -> [rbp+0x20] EH do-not-enreg[] class-hnd EH-live ;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref ;* V04 loc1 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ; V08 tmp2 [V08,T02] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ; V10 tmp4 [V10,T14] ( 2, 0 ) ref -> rdx class-hnd "impSpillSpecialSideEff" ;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ; V12 tmp6 [V12,T12] ( 2, 2 ) int -> rdx "Inline return value spill temp" ; V13 tmp7 [V13,T06] ( 2, 4 ) int -> rcx "Inlining Arg" ; V14 tmp8 [V14,T07] ( 2, 4 ) long -> r14 "Inlining Arg" ; V15 tmp9 [V15,T08] ( 3, 3 ) byref -> rsi V23._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ; V16 tmp10 [V16,T05] ( 4, 4 ) int -> rdi V23._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ;* V17 tmp11 [V17 ] ( 0, 0 ) byref -> zero-ref V04._pointer(offs=0x00) P-INDEP "field V04._pointer (fldOffset=0x0)" ;* V18 tmp12 [V18 ] ( 0, 0 ) int -> zero-ref V04._length(offs=0x08) P-INDEP "field V04._length (fldOffset=0x8)" ; V19 tmp13 [V19,T10] ( 2, 2 ) byref -> rsi V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V20 tmp14 [V20,T09] ( 3, 3 ) int -> rdi V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V21 tmp15 [V21,T11] ( 2, 2 ) byref -> rsi V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ; V22 tmp16 [V22,T13] ( 2, 2 ) int -> rdi V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ;* V23 tmp17 [V23 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V24 tmp18 [V24 ] ( 4, 8 ) struct (16) [rbp-0x30] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V25 tmp19 [V25,T03] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V26 tmp20 [V26,T04] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V27 PSPSym [V27 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ;* V28 tmp22 [V28 ] ( 0, 0 ) ref -> zero-ref "optAddCopies" ; ; Lcl frame size = 64 G_M11198_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 lea rbp, [rsp+60H] xor rax, rax mov qword ptr [rbp-30H], rax mov qword ptr [rbp-40H], rsp mov gword ptr [rbp+20H], r8 ;; bbWeight=1 PerfScore 9.00 G_M11198_IG02: mov rsi, bword ptr [rdx] mov edi, dword ptr [rdx+8] ;; bbWeight=1 PerfScore 4.00 G_M11198_IG03: cmp gword ptr [rbp+20H], 0 je SHORT G_M11198_IG04 mov rbx, gword ptr [rbp+20H] mov rcx, 0xD1FFAB1E mov edx, 43 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rcx, 0xD1FFAB1E cmp rbx, gword ptr [rcx] jne SHORT G_M11198_IG05 ;; bbWeight=1 PerfScore 7.75 G_M11198_IG04: cmp edi, 1 jle G_M11198_IG06 mov ecx, edi or ecx, 1 xor edx, edx lzcnt edx, ecx xor edx, 31 lea rcx, bword ptr [rbp-30H] mov bword ptr [rcx], rsi mov dword ptr [rcx+8], edi lea rcx, bword ptr [rbp-30H] lea edx, [2*rdx+2] call GenericArraySortHelper`1:IntroSort(Span`1,int) jmp SHORT G_M11198_IG06 ;; bbWeight=1 PerfScore 10.75 G_M11198_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, gword ptr [rbp+20H] mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov r14, rax lea rcx, bword ptr [rbx+8] mov rdx, gword ptr [rbp+20H] call CORINFO_HELP_ASSIGN_REF mov qword ptr [rbx+24], r14 lea rcx, bword ptr [rbp-30H] mov bword ptr [rcx], rsi mov dword ptr [rcx+8], edi lea rcx, bword ptr [rbp-30H] mov rdx, rbx call ArraySortHelper`1:IntrospectiveSort(Span`1,Comparison`1) nop ;; bbWeight=1 PerfScore 12.25 G_M11198_IG06: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M11198_IG07: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=0 PerfScore 0.00 G_M11198_IG08: mov rcx, gword ptr [rbp+20H] call ThrowHelper:ThrowArgumentException_BadComparer(Object) lea rax, G_M11198_IG06 ;; bbWeight=0 PerfScore 0.00 G_M11198_IG09: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 G_M11198_IG10: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=0 PerfScore 0.00 G_M11198_IG11: mov ecx, 61 call ThrowHelper:ThrowInvalidOperationException(int,Exception) lea rax, G_M11198_IG06 ;; bbWeight=0 PerfScore 0.00 G_M11198_IG12: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 334, prolog size 29, PerfScore 81.15, (MethodHash=4836d441) for method GenericArraySortHelper`1:Sort(Span`1,IComparer`1):this ; ============================================================ ; Assembly listing for method GenericArraySortHelper`1:IntroSort(Span`1,int) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T09] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 arg1 [V01,T04] ( 6, 18 ) int -> rsi ; V02 loc0 [V02,T01] ( 13, 28 ) int -> rbp ; V03 loc1 [V03,T07] ( 3, 12 ) int -> r14 ; V04 loc2 [V04,T25] ( 7, 3 ) byref -> rbp ; V05 loc3 [V05,T23] ( 8, 3.50) byref -> rbx ; V06 loc4 [V06,T24] ( 8, 3 ) byref -> rdi ;* V07 loc5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V08 loc6 [V08,T05] ( 4, 16 ) int -> rcx ; V09 loc7 [V09,T08] ( 3, 12 ) int -> rbp ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V11 tmp1 [V11 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V12 tmp2 [V12 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ;* V14 tmp4 [V14 ] ( 0, 0 ) struct (16) zero-ref "struct address for call/obj" ; V15 tmp5 [V15,T17] ( 6, 6 ) byref -> rdi "Inlining Arg" ; V16 tmp6 [V16,T18] ( 4, 4 ) byref -> rbp "Inlining Arg" ;* V17 tmp7 [V17,T44] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V18 tmp8 [V18 ] ( 3, 1.50) double -> [rsp+0x148] do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp" ; V19 tmp9 [V19,T28] ( 2, 2 ) struct (32) [rsp+0x128] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V20 tmp10 [V20,T38] ( 2, 1 ) struct (32) [rsp+0x108] do-not-enreg[SB] "Inline stloc first use temp" ;* V21 tmp11 [V21,T46] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V22 tmp12 [V22 ] ( 3, 1.50) double -> [rsp+0x100] do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp" ; V23 tmp13 [V23,T29] ( 2, 2 ) struct (32) [rsp+0xE0] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V24 tmp14 [V24,T47] ( 2, 0.50) struct (32) [rsp+0xC0] do-not-enreg[SB] "Inline stloc first use temp" ;* V25 tmp15 [V25,T48] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V26 tmp16 [V26 ] ( 3, 1.50) double -> [rsp+0xB8] do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp" ; V27 tmp17 [V27,T30] ( 2, 2 ) struct (32) [rsp+0x98] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V28 tmp18 [V28,T49] ( 2, 0.50) struct (32) [rsp+0x78] do-not-enreg[SB] "Inline stloc first use temp" ;* V29 tmp19 [V29,T45] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V30 tmp20 [V30 ] ( 3, 1.50) double -> [rsp+0x70] do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp" ; V31 tmp21 [V31,T31] ( 2, 2 ) struct (32) [rsp+0x50] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ; V32 tmp22 [V32,T39] ( 2, 1 ) struct (32) [rsp+0x30] do-not-enreg[SB] "Inline stloc first use temp" ;* V33 tmp23 [V33 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V34 tmp24 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V35 tmp25 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V36 tmp26 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V37 tmp27 [V37 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V38 tmp28 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V39 tmp29 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V40 tmp30 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V41 tmp31 [V41 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V42 tmp32 [V42 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V43 tmp33 [V43 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V44 tmp34 [V44 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V45 tmp35 [V45 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V46 tmp36 [V46 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V47 tmp37 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V48 tmp38 [V48 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V49 tmp39 [V49,T00] ( 9, 12 ) byref -> rdi V73._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V50 tmp40 [V50,T06] ( 10, 13.50) int -> rbx V73._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V51 tmp41 [V51,T19] ( 0, 0 ) byref -> zero-ref V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ;* V52 tmp42 [V52 ] ( 0, 0 ) int -> zero-ref V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ;* V53 tmp43 [V53,T20] ( 0, 0 ) byref -> zero-ref V11._pointer(offs=0x00) P-INDEP "field V11._pointer (fldOffset=0x0)" ; V54 tmp44 [V54,T13] ( 2, 8 ) int -> rcx V11._length(offs=0x08) P-INDEP "field V11._length (fldOffset=0x8)" ; V55 tmp45 [V55,T10] ( 2, 8 ) byref -> rcx V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ; V56 tmp46 [V56,T14] ( 2, 8 ) int -> rbp V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ; V57 tmp47 [V57,T32] ( 2, 1 ) byref -> rcx V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ; V58 tmp48 [V58,T40] ( 2, 1 ) int -> rax V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ; V59 tmp49 [V59,T33] ( 2, 1 ) byref -> rcx V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ; V60 tmp50 [V60,T41] ( 2, 1 ) int -> rax V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ; V61 tmp51 [V61,T34] ( 2, 1 ) byref -> rcx V33._pointer(offs=0x00) P-INDEP "field V33._pointer (fldOffset=0x0)" ; V62 tmp52 [V62,T42] ( 2, 1 ) int -> rax V33._length(offs=0x08) P-INDEP "field V33._length (fldOffset=0x8)" ; V63 tmp53 [V63,T35] ( 2, 1 ) byref -> rcx V36._value(offs=0x00) P-INDEP "field V36._value (fldOffset=0x0)" ; V64 tmp54 [V64,T36] ( 2, 1 ) byref -> rcx V37._pointer(offs=0x00) P-INDEP "field V37._pointer (fldOffset=0x0)" ; V65 tmp55 [V65,T43] ( 2, 1 ) int -> rax V37._length(offs=0x08) P-INDEP "field V37._length (fldOffset=0x8)" ; V66 tmp56 [V66,T37] ( 2, 1 ) byref -> rcx V40._value(offs=0x00) P-INDEP "field V40._value (fldOffset=0x0)" ;* V67 tmp57 [V67,T21] ( 0, 0 ) byref -> zero-ref V41._pointer(offs=0x00) P-INDEP "field V41._pointer (fldOffset=0x0)" ; V68 tmp58 [V68,T15] ( 2, 8 ) int -> rcx V41._length(offs=0x08) P-INDEP "field V41._length (fldOffset=0x8)" ;* V69 tmp59 [V69,T22] ( 0, 0 ) byref -> zero-ref V44._value(offs=0x00) P-INDEP "field V44._value (fldOffset=0x0)" ; V70 tmp60 [V70,T11] ( 2, 8 ) byref -> rcx V45._pointer(offs=0x00) P-INDEP "field V45._pointer (fldOffset=0x0)" ; V71 tmp61 [V71,T16] ( 2, 8 ) int -> rbp V45._length(offs=0x08) P-INDEP "field V45._length (fldOffset=0x8)" ; V72 tmp62 [V72,T12] ( 2, 8 ) byref -> rcx V48._value(offs=0x00) P-INDEP "field V48._value (fldOffset=0x0)" ;* V73 tmp63 [V73 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V74 tmp64 [V74 ] ( 8, 36 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V75 tmp65 [V75,T26] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V76 tmp66 [V76,T27] ( 3, 3 ) byref -> rdx stack-byref "BlockOp address local" ; V77 tmp67 [V77,T02] ( 3, 24 ) byref -> rax stack-byref "BlockOp address local" ; V78 tmp68 [V78,T03] ( 3, 24 ) byref -> rdx stack-byref "BlockOp address local" ; ; Lcl frame size = 336 G_M50514_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 336 vzeroupper xor rax, rax mov qword ptr [rsp+20H], rax mov esi, edx ;; bbWeight=1 PerfScore 7.75 G_M50514_IG02: mov rdi, bword ptr [rcx] mov ebx, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M50514_IG03: mov ebp, ebx cmp ebx, 1 jle G_M50514_IG22 ;; bbWeight=1 PerfScore 1.50 G_M50514_IG04: cmp ebp, 16 jle SHORT G_M50514_IG10 ;; bbWeight=4 PerfScore 5.00 G_M50514_IG05: test esi, esi je G_M50514_IG20 ;; bbWeight=4 PerfScore 5.00 G_M50514_IG06: dec esi mov ecx, ebp mov eax, ebx cmp rcx, rax ja G_M50514_IG24 ;; bbWeight=4 PerfScore 8.00 G_M50514_IG07: mov ecx, ebp lea rax, bword ptr [rsp+20H] mov bword ptr [rax], rdi mov dword ptr [rax+8], ecx lea rcx, bword ptr [rsp+20H] call GenericArraySortHelper`1:PickPivotAndPartition(Span`1):int mov r14d, eax lea ecx, [r14+1] sub ebp, ecx mov edx, ecx mov eax, ebp add rdx, rax mov eax, ebx cmp rdx, rax ja G_M50514_IG24 ;; bbWeight=4 PerfScore 30.00 G_M50514_IG08: movsxd rcx, ecx shl rcx, 5 add rcx, rdi lea rdx, bword ptr [rsp+20H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], ebp lea rcx, bword ptr [rsp+20H] mov edx, esi call GenericArraySortHelper`1:IntroSort(Span`1,int) mov ebp, r14d cmp ebp, 1 jg SHORT G_M50514_IG04 ;; bbWeight=4 PerfScore 33.00 G_M50514_IG09: jmp G_M50514_IG22 ;; bbWeight=0.50 PerfScore 1.00 G_M50514_IG10: cmp ebp, 2 jne G_M50514_IG12 cmp ebx, 0 jbe G_M50514_IG25 cmp ebx, 1 jbe G_M50514_IG25 lea rbp, bword ptr [rdi+32] cmp dword ptr [rdi], edi vmovdqu xmm1, xmmword ptr [rbp] vmovdqu xmmword ptr [rsp+128H], xmm1 vmovdqu xmm1, xmmword ptr [rbp+16] vmovdqu xmmword ptr [rsp+138H], xmm1 vxorps xmm1, xmm1 vmovsd qword ptr [rsp+148H], xmm1 vmovsd xmm1, qword ptr [rdi+24] vmovsd qword ptr [rsp+148H], xmm1 lea rcx, bword ptr [rsp+148H] vmovsd xmm1, qword ptr [rsp+140H] call Double:CompareTo(double):int:this test eax, eax jle G_M50514_IG22 ;; bbWeight=0.50 PerfScore 10.17 G_M50514_IG11: vmovdqu xmm1, xmmword ptr [rdi] vmovdqu xmmword ptr [rsp+108H], xmm1 vmovdqu xmm1, xmmword ptr [rdi+16] vmovdqu xmmword ptr [rsp+118H], xmm1 vmovdqu xmm1, xmmword ptr [rbp] vmovdqu xmmword ptr [rdi], xmm1 vmovdqu xmm1, xmmword ptr [rbp+16] vmovdqu xmmword ptr [rdi+16], xmm1 vmovdqu xmm1, xmmword ptr [rsp+108H] vmovdqu xmmword ptr [rbp], xmm1 vmovdqu xmm1, xmmword ptr [rsp+118H] vmovdqu xmmword ptr [rbp+16], xmm1 jmp G_M50514_IG22 ;; bbWeight=0.50 PerfScore 9.00 G_M50514_IG12: cmp ebp, 3 jne G_M50514_IG18 cmp ebx, 2 jbe G_M50514_IG25 lea rbp, bword ptr [rdi+64] lea rbx, bword ptr [rdi+32] cmp dword ptr [rdi], edi vmovdqu xmm1, xmmword ptr [rbx] vmovdqu xmmword ptr [rsp+E0H], xmm1 vmovdqu xmm1, xmmword ptr [rbx+16] vmovdqu xmmword ptr [rsp+F0H], xmm1 vxorps xmm1, xmm1 vmovsd qword ptr [rsp+100H], xmm1 vmovsd xmm1, qword ptr [rdi+24] vmovsd qword ptr [rsp+100H], xmm1 lea rcx, bword ptr [rsp+100H] vmovsd xmm1, qword ptr [rsp+F8H] call Double:CompareTo(double):int:this test eax, eax jle SHORT G_M50514_IG14 ;; bbWeight=0.50 PerfScore 9.79 G_M50514_IG13: vmovdqu xmm1, xmmword ptr [rdi] vmovdqu xmmword ptr [rsp+C0H], xmm1 vmovdqu xmm1, xmmword ptr [rdi+16] vmovdqu xmmword ptr [rsp+D0H], xmm1 vmovdqu xmm1, xmmword ptr [rbx] vmovdqu xmmword ptr [rdi], xmm1 vmovdqu xmm1, xmmword ptr [rbx+16] vmovdqu xmmword ptr [rdi+16], xmm1 vmovdqu xmm1, xmmword ptr [rsp+C0H] vmovdqu xmmword ptr [rbx], xmm1 vmovdqu xmm1, xmmword ptr [rsp+D0H] vmovdqu xmmword ptr [rbx+16], xmm1 ;; bbWeight=0.25 PerfScore 4.00 G_M50514_IG14: vmovdqu xmm1, xmmword ptr [rbp] vmovdqu xmmword ptr [rsp+98H], xmm1 vmovdqu xmm1, xmmword ptr [rbp+16] vmovdqu xmmword ptr [rsp+A8H], xmm1 vxorps xmm1, xmm1 vmovsd qword ptr [rsp+B8H], xmm1 vmovsd xmm1, qword ptr [rdi+24] vmovsd qword ptr [rsp+B8H], xmm1 lea rcx, bword ptr [rsp+B8H] vmovsd xmm1, qword ptr [rsp+B0H] call Double:CompareTo(double):int:this test eax, eax jle SHORT G_M50514_IG16 ;; bbWeight=0.50 PerfScore 7.04 G_M50514_IG15: vmovdqu xmm1, xmmword ptr [rdi] vmovdqu xmmword ptr [rsp+78H], xmm1 vmovdqu xmm1, xmmword ptr [rdi+16] vmovdqu xmmword ptr [rsp+88H], xmm1 vmovdqu xmm1, xmmword ptr [rbp] vmovdqu xmmword ptr [rdi], xmm1 vmovdqu xmm1, xmmword ptr [rbp+16] vmovdqu xmmword ptr [rdi+16], xmm1 vmovdqu xmm1, xmmword ptr [rsp+78H] vmovdqu xmmword ptr [rbp], xmm1 vmovdqu xmm1, xmmword ptr [rsp+88H] vmovdqu xmmword ptr [rbp+16], xmm1 ;; bbWeight=0.25 PerfScore 4.00 G_M50514_IG16: cmp dword ptr [rbx], ebx vmovdqu xmm1, xmmword ptr [rbp] vmovdqu xmmword ptr [rsp+50H], xmm1 vmovdqu xmm1, xmmword ptr [rbp+16] vmovdqu xmmword ptr [rsp+60H], xmm1 vxorps xmm1, xmm1 vmovsd qword ptr [rsp+70H], xmm1 vmovsd xmm1, qword ptr [rbx+24] vmovsd qword ptr [rsp+70H], xmm1 lea rcx, bword ptr [rsp+70H] vmovsd xmm1, qword ptr [rsp+68H] call Double:CompareTo(double):int:this test eax, eax jle G_M50514_IG22 ;; bbWeight=0.50 PerfScore 8.04 G_M50514_IG17: vmovdqu xmm0, xmmword ptr [rbx] vmovdqu xmmword ptr [rsp+30H], xmm0 vmovdqu xmm0, xmmword ptr [rbx+16] vmovdqu xmmword ptr [rsp+40H], xmm0 vmovdqu xmm0, xmmword ptr [rbp] vmovdqu xmmword ptr [rbx], xmm0 vmovdqu xmm0, xmmword ptr [rbp+16] vmovdqu xmmword ptr [rbx+16], xmm0 vmovdqu xmm0, xmmword ptr [rsp+30H] vmovdqu xmmword ptr [rbp], xmm0 vmovdqu xmm0, xmmword ptr [rsp+40H] vmovdqu xmmword ptr [rbp+16], xmm0 jmp SHORT G_M50514_IG22 ;; bbWeight=0.50 PerfScore 9.00 G_M50514_IG18: mov ecx, ebp mov eax, ebx cmp rcx, rax ja SHORT G_M50514_IG24 ;; bbWeight=0.50 PerfScore 0.88 G_M50514_IG19: mov rcx, rdi mov eax, ebp lea rdx, bword ptr [rsp+20H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], eax lea rcx, bword ptr [rsp+20H] call GenericArraySortHelper`1:InsertionSort(Span`1) jmp SHORT G_M50514_IG22 ;; bbWeight=0.50 PerfScore 3.25 G_M50514_IG20: mov ecx, ebp mov eax, ebx cmp rcx, rax ja SHORT G_M50514_IG24 ;; bbWeight=0.50 PerfScore 0.88 G_M50514_IG21: mov rcx, rdi mov eax, ebp lea rdx, bword ptr [rsp+20H] mov bword ptr [rdx], rcx mov dword ptr [rdx+8], eax lea rcx, bword ptr [rsp+20H] call GenericArraySortHelper`1:HeapSort(Span`1) ;; bbWeight=0.50 PerfScore 2.25 G_M50514_IG22: nop ;; bbWeight=1 PerfScore 0.25 G_M50514_IG23: add rsp, 336 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M50514_IG24: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 G_M50514_IG25: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 924, prolog size 23, PerfScore 268.34, (MethodHash=77a93aad) for method GenericArraySortHelper`1:IntroSort(Span`1,int) ; ============================================================ ; Assembly listing for method Double:CompareTo(double):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) byref -> rcx this ; V01 arg1 [V01,T01] ( 7, 5 ) double -> mm1 ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 3, 3 ) double -> mm0 "Inlining Arg" ; V04 cse0 [V04,T02] ( 5, 3.50) double -> mm0 "CSE - aggressive" ; ; Lcl frame size = 0 G_M63208_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M63208_IG02: vmovsd xmm0, qword ptr [rcx] vucomisd xmm1, xmm0 ja SHORT G_M63208_IG07 ;; bbWeight=1 PerfScore 4.00 G_M63208_IG03: vucomisd xmm0, xmm1 ja SHORT G_M63208_IG11 ;; bbWeight=0.50 PerfScore 1.00 G_M63208_IG04: vucomisd xmm0, xmm1 jp SHORT G_M63208_IG05 je SHORT G_M63208_IG09 ;; bbWeight=0.50 PerfScore 1.50 G_M63208_IG05: vucomisd xmm0, xmm0 jp SHORT G_M63208_IG06 je SHORT G_M63208_IG11 ;; bbWeight=0.50 PerfScore 1.50 G_M63208_IG06: vucomisd xmm1, xmm1 jp SHORT G_M63208_IG09 ;; bbWeight=0.50 PerfScore 1.00 G_M63208_IG07: mov eax, -1 ;; bbWeight=0.50 PerfScore 0.13 G_M63208_IG08: ret ;; bbWeight=0.50 PerfScore 0.50 G_M63208_IG09: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M63208_IG10: ret ;; bbWeight=0.50 PerfScore 0.50 G_M63208_IG11: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M63208_IG12: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 56, prolog size 3, PerfScore 18.08, (MethodHash=17f10917) for method Double:CompareTo(double):int:this ; ============================================================ ; Assembly listing for method MeasurementsStatistics:GetQuartile(List`1,int):double ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 6, 4 ) ref -> rcx class-hnd ; V01 arg1 [V01,T00] ( 9, 7 ) int -> rdx ; V02 loc0 [V02,T05] ( 6, 3 ) struct (32) [rsp+0x28] do-not-enreg[SFB] must-init ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T13] ( 2, 2 ) double -> mm0 "impAppendStmt" ; V05 tmp2 [V05,T02] ( 4, 4 ) int -> rax "Inlining Arg" ; V06 tmp3 [V06,T03] ( 4, 4 ) int -> rdx "Inlining Arg" ; V07 tmp4 [V07,T04] ( 4, 4 ) int -> rax "Inlining Arg" ; V08 tmp5 [V08,T06] ( 3, 3 ) ref -> rcx "arr expr" ; V09 tmp6 [V09,T12] ( 2, 2 ) ref -> r9 "arr expr" ; V10 tmp7 [V10,T07] ( 3, 3 ) ref -> rdx "arr expr" ; V11 cse0 [V11,T09] ( 5, 2.50) int -> rdx "CSE - aggressive" ; V12 cse1 [V12,T10] ( 5, 2.50) int -> r8 "CSE - aggressive" ; V13 cse2 [V13,T08] ( 5, 2.50) ref -> r9 "CSE - aggressive" ; V14 cse3 [V14,T11] ( 5, 2.50) int -> r10 "CSE - aggressive" ; ; Lcl frame size = 72 G_M20107_IG01: sub rsp, 72 vzeroupper xor rax, rax mov qword ptr [rsp+28H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 mov qword ptr [rsp+40H], rax ;; bbWeight=1 PerfScore 4.83 G_M20107_IG02: mov eax, edx shr eax, 31 add eax, edx and eax, -2 mov r8d, edx sub r8d, eax jne G_M20107_IG07 ;; bbWeight=1 PerfScore 4.25 G_M20107_IG03: mov eax, edx shr eax, 31 add edx, eax sar edx, 1 lea eax, [rdx-1] mov r8d, dword ptr [rcx+16] cmp eax, r8d jae G_M20107_IG10 ;; bbWeight=0.50 PerfScore 3.38 G_M20107_IG04: mov r9, gword ptr [rcx+8] mov rcx, r9 mov r10d, dword ptr [rcx+8] cmp eax, r10d jae G_M20107_IG11 movsxd rax, eax shl rax, 5 vmovdqu xmm0, xmmword ptr [rcx+rax+16] vmovdqu xmmword ptr [rsp+28H], xmm0 vmovdqu xmm0, xmmword ptr [rcx+rax+32] vmovdqu xmmword ptr [rsp+38H], xmm0 vmovsd xmm0, qword ptr [rsp+40H] cmp edx, r8d jae G_M20107_IG10 ;; bbWeight=0.50 PerfScore 8.50 G_M20107_IG05: cmp edx, r10d jae G_M20107_IG11 movsxd r8, edx shl r8, 5 vmovdqu xmm1, xmmword ptr [r9+r8+16] vmovdqu xmmword ptr [rsp+28H], xmm1 vmovdqu xmm1, xmmword ptr [r9+r8+32] vmovdqu xmmword ptr [rsp+38H], xmm1 vaddsd xmm0, xmm0, qword ptr [rsp+40H] vmulsd xmm0, xmm0, qword ptr [reloc @RWD08] ;; bbWeight=0.50 PerfScore 9.75 G_M20107_IG06: add rsp, 72 ret ;; bbWeight=0.50 PerfScore 0.63 G_M20107_IG07: mov r10d, edx shr r10d, 31 add r10d, edx mov edx, r10d sar edx, 1 mov eax, edx mov r8d, dword ptr [rcx+16] cmp eax, r8d jae SHORT G_M20107_IG10 ;; bbWeight=0.50 PerfScore 3.38 G_M20107_IG08: mov r9, gword ptr [rcx+8] mov rdx, r9 mov r10d, dword ptr [rdx+8] cmp eax, r10d jae SHORT G_M20107_IG11 movsxd rax, eax shl rax, 5 vmovdqu xmm0, xmmword ptr [rdx+rax+16] vmovdqu xmmword ptr [rsp+28H], xmm0 vmovdqu xmm0, xmmword ptr [rdx+rax+32] vmovdqu xmmword ptr [rsp+38H], xmm0 vmovsd xmm0, qword ptr [rsp+40H] ;; bbWeight=0.50 PerfScore 7.88 G_M20107_IG09: add rsp, 72 ret ;; bbWeight=0.50 PerfScore 0.63 G_M20107_IG10: call ThrowHelper:ThrowArgumentOutOfRange_IndexException() int3 ;; bbWeight=0 PerfScore 0.00 G_M20107_IG11: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 3FE0000000000000h ; Total bytes of code 299, prolog size 29, PerfScore 74.71, (MethodHash=fdd2b174) for method MeasurementsStatistics:GetQuartile(List`1,int):double ; ============================================================ WorkloadActual 3: 19472461 op, 251980200.00 ns, 12.9403 ns/op ; Assembly listing for method ConfidenceLevelExtensions:GetZValue(int,int):double ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) int -> rcx ; V01 arg1 [V01,T00] ( 4, 4 ) int -> rsi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T04] ( 2, 0 ) ref -> rdi "argument with side effect" ; V05 tmp3 [V05,T05] ( 2, 0 ) ref -> r8 "argument with side effect" ; V06 tmp4 [V06,T02] ( 2, 4 ) double -> mm0 "argument with side effect" ; ; Lcl frame size = 40 G_M65117_IG01: push rdi push rsi sub rsp, 40 vzeroupper mov esi, edx ;; bbWeight=1 PerfScore 3.50 G_M65117_IG02: cmp esi, 1 jle SHORT G_M65117_IG05 ;; bbWeight=1 PerfScore 1.25 G_M65117_IG03: call ConfidenceLevelExtensions:ToPercent(int):double vmovsd xmm1, qword ptr [reloc @RWD08] vsubsd xmm0, xmm1, xmm0 dec esi vxorps xmm1, xmm1 vcvtsi2sd xmm1, esi ;; bbWeight=1 PerfScore 11.58 G_M65117_IG04: add rsp, 40 pop rsi pop rdi jmp StudentDistribution:InverseTwoTailStudent(double,double):double ;; bbWeight=1 PerfScore 3.25 G_M65117_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x9AB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0xB8B mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 3FF0000000000000h ; Total bytes of code 138, prolog size 9, PerfScore 33.78, (MethodHash=294801a2) for method ConfidenceLevelExtensions:GetZValue(int,int):double ; ============================================================ ; Assembly listing for method ConfidenceLevelExtensions:ToPercent(int):double ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) int -> rsi ;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04 ] ( 3, 6 ) struct ( 8) [rsp+0x28] do-not-enreg[SB] "dup spill" ; V05 tmp2 [V05,T02] ( 2, 3 ) int -> [rsp+0x28] do-not-enreg[] V04.Item1(offs=0x00) P-DEP "field V04.Item1 (fldOffset=0x0)" ; V06 tmp3 [V06,T03] ( 2, 3 ) int -> [rsp+0x2C] do-not-enreg[] V04.Item2(offs=0x04) P-DEP "field V04.Item2 (fldOffset=0x4)" ; V07 tmp4 [V07,T01] ( 2, 4 ) ref -> rcx "argument with side effect" ; ; Lcl frame size = 48 G_M23781_IG01: push rsi sub rsp, 48 vzeroupper mov esi, ecx ;; bbWeight=1 PerfScore 2.50 G_M23781_IG02: mov rcx, 0xD1FFAB1E mov edx, 66 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov edx, esi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Dictionary`2:get_Item(int):ValueTuple`2:this mov qword ptr [rsp+28H], rax vxorps xmm1, xmm1 vcvtsi2sd xmm1, dword ptr [rsp+2CH] vmovsd xmm0, qword ptr [reloc @RWD08] call Math:Pow(double,double):double vxorps xmm1, xmm1 vcvtsi2sd xmm1, dword ptr [rsp+28H] vdivsd xmm0, xmm1, xmm0 ;; bbWeight=1 PerfScore 39.92 G_M23781_IG03: add rsp, 48 pop rsi ret ;; bbWeight=1 PerfScore 1.75 RWD00 dq 0000000000000000h RWD08 dq 4024000000000000h ; Total bytes of code 107, prolog size 8, PerfScore 55.47, (MethodHash=565ea31a) for method ConfidenceLevelExtensions:ToPercent(int):double ; ============================================================ ; Assembly listing for method ConfidenceLevelExtensions:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M36894_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M36894_IG02: call ConfidenceLevelExtensions:CreateConfidenceLevelMapping():Dictionary`2 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 2.75 G_M36894_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 40, prolog size 10, PerfScore 10.50, (MethodHash=25206fe1) for method ConfidenceLevelExtensions:.cctor() ; ============================================================ ; Assembly listing for method ConfidenceLevelExtensions:CreateConfidenceLevelMapping():Dictionary`2 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T02] ( 2, 4 ) ref -> rdi class-hnd "dup spill" ; V02 tmp2 [V02,T03] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ; V03 tmp3 [V03,T09] ( 2, 2 ) ref -> rsi ; V04 tmp4 [V04,T05] ( 4, 3.50) ref -> rdi ; V05 tmp5 [V05,T04] ( 2, 4 ) ref -> r8 class-hnd "dup spill" ; V06 tmp6 [V06,T10] ( 2, 2 ) ref -> rsi ; V07 tmp7 [V07,T11] ( 2, 2 ) ref -> rdi ; V08 tmp8 [V08,T06] ( 4, 3.50) ref -> r8 ; V09 tmp9 [V09,T00] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V10 tmp10 [V10,T01] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V11 tmp11 [V11,T07] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V12 tmp12 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V13 tmp13 [V13,T08] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V14 tmp14 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 cse0 [V15,T12] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 32 G_M46899_IG01: push rdi push rsi push rbx sub rsp, 32 ;; bbWeight=1 PerfScore 3.25 G_M46899_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rcx, rax call Enum:GetValues(Type):Array mov rcx, rax call Enumerable:Cast(IEnumerable):IEnumerable`1 mov rsi, rax mov rcx, 0xD1FFAB1E mov edx, 114 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] test rdi, rdi jne SHORT G_M46899_IG05 ;; bbWeight=1 PerfScore 9.00 G_M46899_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M46899_IG10 ;; bbWeight=0.50 PerfScore 2.50 G_M46899_IG04: lea rcx, bword ptr [rdi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rdi+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 2.13 G_M46899_IG05: mov rcx, 0xD1FFAB1E mov r8, gword ptr [rcx] test r8, r8 jne SHORT G_M46899_IG08 ;; bbWeight=1 PerfScore 3.50 G_M46899_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je SHORT G_M46899_IG10 ;; bbWeight=0.50 PerfScore 2.50 G_M46899_IG07: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r8, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M46899_IG08: mov rcx, rsi mov rdx, rdi xor r9, r9 ;; bbWeight=1 PerfScore 0.75 G_M46899_IG09: add rsp, 32 pop rbx pop rsi pop rdi jmp Enumerable:ToDictionary(IEnumerable`1,Func`2,Func`2,IEqualityComparer`1):Dictionary`2 ;; bbWeight=1 PerfScore 3.75 G_M46899_IG10: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 285, prolog size 7, PerfScore 58.13, (MethodHash=b60248cc) for method ConfidenceLevelExtensions:CreateConfidenceLevelMapping():Dictionary`2 ; ============================================================ ; Assembly listing for method Enum:GetValues(Type):Array ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 5 ) ref -> rcx class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M63847_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M63847_IG02: test rcx, rcx je SHORT G_M63847_IG05 ;; bbWeight=1 PerfScore 1.25 G_M63847_IG03: mov rax, qword ptr [rcx] mov rax, qword ptr [rax+152] mov rax, qword ptr [rax+40] ;; bbWeight=1 PerfScore 6.00 G_M63847_IG04: add rsp, 32 pop rsi rex.jmp rax ;; bbWeight=1 PerfScore 2.75 G_M63847_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 745 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 90, prolog size 5, PerfScore 20.25, (MethodHash=03960698) for method Enum:GetValues(Type):Array ; ============================================================ ; Assembly listing for method RuntimeType:GetEnumValues():Array:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T08] ( 6, 9 ) ref -> rsi this class-hnd ; V01 loc0 [V01,T11] ( 3, 6 ) ref -> rdi class-hnd ; V02 loc1 [V02,T01] ( 5, 26 ) ref -> rbp class-hnd ; V03 loc2 [V03,T00] ( 6, 57 ) int -> r14 ; V04 loc3 [V04,T02] ( 2, 20 ) ref -> r15 class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T12] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp2 [V07,T06] ( 2, 16 ) long -> r15 "Inlining Arg" ; V08 tmp3 [V08 ] ( 3, 48 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V09 tmp4 [V09 ] ( 2, 40 ) int -> [rsp+0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V10 tmp5 [V10,T09] ( 2, 8 ) int -> rax "Inline return value spill temp" ; V11 tmp6 [V11,T07] ( 3, 12 ) int -> rax "Inline stloc first use temp" ; V12 tmp7 [V12,T10] ( 2, 8 ) int -> rax "Inline stloc first use temp" ; V13 tmp8 [V13,T04] ( 2, 16 ) byref -> r9 "Inlining Arg" ; V14 tmp9 [V14 ] ( 3, 48 ) byref -> [rsp+0x28] do-not-enreg[X] addr-exposed V08._value(offs=0x00) P-DEP "field V08._value (fldOffset=0x0)" ; V15 tmp10 [V15 ] ( 3, 48 ) long -> [rsp+0x30] do-not-enreg[X] addr-exposed V08._type(offs=0x08) P-DEP "field V08._type (fldOffset=0x8)" ; V16 tmp11 [V16,T13] ( 2, 0 ) ref -> rcx "argument with side effect" ; V17 tmp12 [V17,T14] ( 2, 0 ) ref -> rdi "argument with side effect" ; V18 tmp13 [V18,T15] ( 2, 0 ) ref -> r8 "argument with side effect" ; V19 tmp14 [V19,T05] ( 2, 16 ) ref -> rcx "argument with side effect" ; V20 cse0 [V20,T03] ( 4, 19 ) int -> rbx "CSE - aggressive" ; ; Lcl frame size = 56 G_M36103_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 56 vzeroupper xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 8.75 G_M36103_IG02: mov rcx, rsi mov rax, 0xD1FFAB1E cmp dword ptr [rcx], ecx call qword ptr [rax]Type:get_IsEnum():bool:this test eax, eax je G_M36103_IG10 ;; bbWeight=1 PerfScore 6.75 G_M36103_IG03: mov rcx, rsi xor edx, edx call Enum:GetEnumInfo(RuntimeType,bool):EnumInfo mov rdi, gword ptr [rax+8] mov ebx, dword ptr [rdi+8] mov edx, ebx mov rcx, rsi call Array:CreateInstance(Type,int):Array mov rbp, rax xor r14d, r14d test ebx, ebx jle SHORT G_M36103_IG06 ;; bbWeight=1 PerfScore 8.75 G_M36103_IG04: movsxd rcx, r14d mov r15, qword ptr [rdi+8*rcx+16] mov rcx, rsi call Enum:ValidateRuntimeType(Type):RuntimeType mov rcx, rax mov rdx, r15 call Enum:InternalBoxEnum(RuntimeType,long):Object mov r15, rax mov dword ptr [rsp+20H], r14d mov r9, qword ptr [rbp] mov eax, dword ptr [r9+4] add eax, -24 shr eax, 3 test eax, eax jne SHORT G_M36103_IG08 ;; bbWeight=4 PerfScore 55.00 G_M36103_IG05: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+28H], xmm0 lea r9, [rsp+20H] lea rdx, bword ptr [rsp+28H] mov rcx, rbp mov r8d, 1 call Array:InternalGetReference(long,int,long):this lea rcx, bword ptr [rsp+28H] mov rdx, r15 call Array:InternalSetValue(long,Object) inc r14d cmp ebx, r14d jg SHORT G_M36103_IG04 ;; bbWeight=16 PerfScore 113.33 G_M36103_IG06: mov rax, rbp ;; bbWeight=1 PerfScore 0.25 G_M36103_IG07: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 G_M36103_IG08: cmp eax, 1 je SHORT G_M36103_IG05 ;; bbWeight=4 PerfScore 5.00 G_M36103_IG09: mov ecx, 55 call ThrowHelper:ThrowArgumentException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M36103_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x4997 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 745 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 321, prolog size 22, PerfScore 234.38, (MethodHash=dd8b72f8) for method RuntimeType:GetEnumValues():Array:this ; ============================================================ ; Assembly listing for method Enum:ValidateRuntimeType(Type):RuntimeType ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 6 ) ref -> rsi class-hnd ; V01 loc0 [V01,T02] ( 3, 3 ) ref -> rax class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 4, 6.24) ref -> rax class-hnd "spilling QMark2" ; V04 tmp2 [V04,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp3 [V05,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp4 [V06,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp5 [V07,T06] ( 2, 0 ) ref -> rdx "argument with side effect" ; V08 tmp6 [V08,T07] ( 2, 0 ) ref -> rcx "argument with side effect" ; V09 tmp7 [V09,T08] ( 2, 0 ) ref -> rdi "argument with side effect" ; V10 tmp8 [V10,T09] ( 2, 0 ) ref -> r8 "argument with side effect" ; V11 tmp9 [V11,T10] ( 2, 0 ) ref -> rcx "argument with side effect" ; V12 tmp10 [V12,T11] ( 2, 0 ) ref -> rdi "argument with side effect" ; V13 tmp11 [V13,T12] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M3286_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M3286_IG02: test rsi, rsi je SHORT G_M3286_IG08 ;; bbWeight=1 PerfScore 1.25 G_M3286_IG03: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+112] call qword ptr [rax+24]Type:get_IsEnum():bool:this test eax, eax je SHORT G_M3286_IG09 ;; bbWeight=1 PerfScore 8.50 G_M3286_IG04: mov rax, rsi mov rcx, 0xD1FFAB1E cmp qword ptr [rax], rcx je SHORT G_M3286_IG06 ;; bbWeight=1 PerfScore 3.50 G_M3286_IG05: xor rax, rax ;; bbWeight=0.12 PerfScore 0.03 G_M3286_IG06: test rax, rax je G_M3286_IG10 ;; bbWeight=1 PerfScore 1.25 G_M3286_IG07: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M3286_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 745 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M3286_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x4997 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 745 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M3286_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x4B99 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov rdi, rax mov ecx, 745 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 311, prolog size 6, PerfScore 50.38, (MethodHash=f189f329) for method Enum:ValidateRuntimeType(Type):RuntimeType ; ============================================================ ; Assembly listing for method Enumerable:Cast(IEnumerable):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rsi class-hnd ; V01 loc0 [V01,T02] ( 3, 2.50) ref -> rax class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 5, 5 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V05 tmp3 [V05,T04] ( 4, 1.75) ref -> rcx ; ; Lcl frame size = 40 G_M38625_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M38625_IG02: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFANY test rax, rax je SHORT G_M38625_IG04 ;; bbWeight=1 PerfScore 2.75 G_M38625_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M38625_IG04: test rsi, rsi je SHORT G_M38625_IG09 ;; bbWeight=0.50 PerfScore 0.63 G_M38625_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov dword ptr [rdi+32], -2 mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M38625_IG07 ;; bbWeight=0.50 PerfScore 3.63 G_M38625_IG06: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M38625_IG07: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rdi+40], eax lea rcx, bword ptr [rdi+16] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov rax, rdi ;; bbWeight=0.50 PerfScore 3.00 G_M38625_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M38625_IG09: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 149, prolog size 6, PerfScore 29.96, (MethodHash=3e79691e) for method Enumerable:Cast(IEnumerable):IEnumerable`1 ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method Enumerable:ToDictionary(IEnumerable`1,Func`2,Func`2,IEqualityComparer`1):Dictionary`2 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T15] ( 5, 4.50) ref -> rbx class-hnd ; V01 arg1 [V01,T08] ( 6, 8 ) ref -> rsi class-hnd ; V02 arg2 [V02,T09] ( 6, 8 ) ref -> rdi class-hnd ; V03 arg3 [V03,T16] ( 6, 4 ) ref -> r14 class-hnd ; V04 loc0 [V04,T20] ( 4, 2.50) int -> r15 ; V05 loc1 [V05,T17] ( 5, 3.50) ref -> r12 class-hnd ; V06 loc2 [V06,T11] ( 3, 5 ) ref -> r12 class-hnd exact ; V07 loc3 [V07,T21] ( 3, 1.50) ref -> rax class-hnd ; V08 loc4 [V08,T22] ( 3, 1.50) ref -> rax class-hnd ; V09 loc5 [V09,T10] ( 7, 9.50) ref -> [rbp-0x48] EH do-not-enreg[] class-hnd EH-live ; V10 loc6 [V10,T05] ( 3, 12 ) int -> rbx ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V12 tmp1 [V12,T18] ( 3, 3 ) ref -> r12 class-hnd exact "NewObj constructor temp" ; V13 tmp2 [V13,T03] ( 2, 16 ) int -> r14 "non-inline candidate call" ; V14 tmp3 [V14 ] ( 3, 24 ) struct ( 8) [rbp-0x38] do-not-enreg[SB] "struct address for call/obj" ; V15 tmp4 [V15,T19] ( 3, 3 ) ref -> r12 class-hnd exact "NewObj constructor temp" ;* V16 tmp5 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ;* V17 tmp6 [V17 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; V18 tmp7 [V18,T06] ( 2, 12 ) int -> [rbp-0x38] do-not-enreg[] V14.Item1(offs=0x00) P-DEP "field V14.Item1 (fldOffset=0x0)" ; V19 tmp8 [V19,T07] ( 2, 12 ) int -> [rbp-0x34] do-not-enreg[] V14.Item2(offs=0x04) P-DEP "field V14.Item2 (fldOffset=0x4)" ; V20 tmp9 [V20,T12] ( 2, 8 ) int -> rcx V16.Item1(offs=0x00) P-INDEP "field V16.Item1 (fldOffset=0x0)" ; V21 tmp10 [V21,T13] ( 2, 8 ) int -> rdx V16.Item2(offs=0x04) P-INDEP "field V16.Item2 (fldOffset=0x4)" ; V22 tmp11 [V22 ] ( 2, 16 ) struct ( 8) [rbp-0x40] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V23 tmp12 [V23,T00] ( 3, 24 ) byref -> r8 stack-byref "BlockOp address local" ;* V24 tmp13 [V24,T14] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V25 tmp14 [V25,T04] ( 2, 16 ) int -> r14 "argument with side effect" ; V26 PSPSym [V26 ] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "PSPSym" ; V27 tmp16 [V27,T23] ( 2, 1 ) ref -> rax "optAddCopies" ; V28 rat0 [V28,T01] ( 3, 24 ) ref -> rax "delegate invoke call" ; V29 rat1 [V29,T02] ( 3, 24 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 64 G_M11555_IG01: push rbp push r15 push r14 push r12 push rdi push rsi push rbx sub rsp, 64 lea rbp, [rsp+70H] mov qword ptr [rbp-50H], rsp mov rbx, rcx mov rsi, rdx mov rdi, r8 mov r14, r9 ;; bbWeight=1 PerfScore 9.75 G_M11555_IG02: test rbx, rbx je G_M11555_IG17 ;; bbWeight=1 PerfScore 1.25 G_M11555_IG03: test rsi, rsi je G_M11555_IG18 ;; bbWeight=1 PerfScore 1.25 G_M11555_IG04: test rdi, rdi je G_M11555_IG19 ;; bbWeight=1 PerfScore 1.25 G_M11555_IG05: xor r15d, r15d mov rdx, rbx mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFINTERFACE mov r12, rax test r12, r12 je G_M11555_IG12 ;; bbWeight=1 PerfScore 3.25 G_M11555_IG06: mov rcx, r12 mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]ICollection`1:get_Count():int:this mov r15d, eax test r15d, r15d jne SHORT G_M11555_IG08 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r12, rax mov rcx, r12 mov r8, r14 xor edx, edx call Dictionary`2:.ctor(int,IEqualityComparer`1):this mov rax, r12 ;; bbWeight=0.50 PerfScore 4.38 G_M11555_IG07: lea rsp, [rbp-30H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.50 G_M11555_IG08: mov rdx, r12 mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFARRAY test rax, rax je SHORT G_M11555_IG10 mov rcx, rax mov rdx, rsi mov r8, rdi mov r9, r14 ;; bbWeight=0.50 PerfScore 1.88 G_M11555_IG09: lea rsp, [rbp-30H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp jmp Enumerable:ToDictionary(ref,Func`2,Func`2,IEqualityComparer`1):Dictionary`2 ;; bbWeight=0.50 PerfScore 3.00 G_M11555_IG10: mov rdx, r12 mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax je SHORT G_M11555_IG12 mov rcx, rax mov rdx, rsi mov r8, rdi mov r9, r14 ;; bbWeight=0.50 PerfScore 1.88 G_M11555_IG11: lea rsp, [rbp-30H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp jmp Enumerable:ToDictionary(List`1,Func`2,Func`2,IEqualityComparer`1):Dictionary`2 ;; bbWeight=0.50 PerfScore 3.00 G_M11555_IG12: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r12, rax mov rcx, r12 mov edx, r15d mov r8, r14 call Dictionary`2:.ctor(int,IEqualityComparer`1):this mov rcx, rbx mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-48H], rax ;; bbWeight=0.50 PerfScore 4.00 G_M11555_IG13: mov rcx, gword ptr [rbp-48H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M11555_IG15 ;; bbWeight=0.50 PerfScore 2.88 G_M11555_IG14: mov rcx, gword ptr [rbp-48H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():int:this mov ebx, eax mov rax, rsi mov rcx, gword ptr [rax+8] mov edx, ebx call qword ptr [rax+24]Func`2:Invoke(int):int:this mov r14d, eax mov rax, rdi mov rcx, gword ptr [rax+8] mov edx, ebx call qword ptr [rax+24]Func`2:Invoke(int):ValueTuple`2:this mov qword ptr [rbp-38H], rax mov ecx, dword ptr [rbp-38H] mov edx, dword ptr [rbp-34H] lea r8, bword ptr [rbp-40H] mov dword ptr [r8], ecx mov dword ptr [r8+4], edx mov rcx, r12 mov edx, r14d mov r8, qword ptr [rbp-40H] mov r9d, 2 call Dictionary`2:TryInsert(int,ValueTuple`2,ubyte):bool:this mov rcx, gword ptr [rbp-48H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M11555_IG14 ;; bbWeight=4 PerfScore 120.00 G_M11555_IG15: mov rcx, gword ptr [rbp-48H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this mov rax, r12 ;; bbWeight=0.50 PerfScore 2.38 G_M11555_IG16: lea rsp, [rbp-30H] pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0.50 PerfScore 2.50 G_M11555_IG17: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M11555_IG18: mov ecx, 9 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M11555_IG19: mov ecx, 2 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M11555_IG20: push rbp push r15 push r14 push r12 push rdi push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+70H] ;; bbWeight=0 PerfScore 0.00 G_M11555_IG21: cmp gword ptr [rbp-48H], 0 je SHORT G_M11555_IG22 mov rcx, gword ptr [rbp-48H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M11555_IG22: nop ;; bbWeight=0 PerfScore 0.00 G_M11555_IG23: add rsp, 48 pop rbx pop rsi pop rdi pop r12 pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 660, prolog size 35, PerfScore 231.13, (MethodHash=ff3cd2dc) for method Enumerable:ToDictionary(IEnumerable`1,Func`2,Func`2,IEqualityComparer`1):Dictionary`2 ; ============================================================ ; Assembly listing for method CastHelpers:IsInstance_Helper(long,Object):Object ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T05] ( 5, 4.50) long -> r8 ; V01 arg1 [V01,T06] ( 5, 4 ) ref -> rdx class-hnd ; V02 loc0 [V02,T13] ( 3, 2.50) int -> rcx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 8 ) long -> rax "impAppendStmt" ; V05 tmp2 [V05,T10] ( 2, 4 ) long -> rax "Inlining Arg" ;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "NewObj constructor temp" ; V07 tmp4 [V07,T11] ( 2, 4 ) long -> r9 "NewObj constructor temp" ; V08 tmp5 [V08,T14] ( 3, 2 ) int -> rcx "Inline return value spill temp" ; V09 tmp6 [V09,T07] ( 4, 6 ) byref -> r10 "Inline stloc first use temp" ; V10 tmp7 [V10,T04] ( 4, 7 ) int -> rcx "Inline stloc first use temp" ; V11 tmp8 [V11,T00] ( 5, 9 ) int -> r9 "Inline stloc first use temp" ; V12 tmp9 [V12,T03] ( 5, 7.25) byref -> r11 "Inline stloc first use temp" ; V13 tmp10 [V13,T01] ( 5, 8.25) int -> rsi "Inline stloc first use temp" ; V14 tmp11 [V14,T12] ( 2, 4 ) long -> rdi "Inline stloc first use temp" ; V15 tmp12 [V15,T08] ( 5, 4.50) long -> rdi "Inline stloc first use temp" ; V16 tmp13 [V16,T09] ( 2, 4 ) ref -> r10 class-hnd "Inlining Arg" ; V17 tmp14 [V17,T15] ( 2, 2 ) int -> rcx "Inline stloc first use temp" ; V18 tmp15 [V18,T16] ( 2, 2 ) long -> r9 "Inline stloc first use temp" ;* V19 tmp16 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V20 tmp17 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V21 tmp18 [V21 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; ; Lcl frame size = 40 G_M54695_IG01: push rdi push rsi sub rsp, 40 mov r8, rcx ;; bbWeight=1 PerfScore 2.50 G_M54695_IG02: mov rax, qword ptr [rdx] mov r9, r8 mov rcx, 0xD1FFAB1E mov r10, gword ptr [rcx] add r10, 16 mov ecx, dword ptr [r10] mov r11, rax rol r11, 32 xor r9, r11 mov r11, 0xD1FFAB1E imul r9, r11 shr r9, cl mov ecx, r9d xor r9d, r9d ;; bbWeight=1 PerfScore 14.00 G_M54695_IG03: lea r11d, [rcx+1] movsxd r11, r11d lea r11, [r11+2*r11] lea r11, bword ptr [r10+8*r11] mov esi, dword ptr [r11] mov rdi, qword ptr [r11+8] and esi, -2 cmp rdi, rax jne SHORT G_M54695_IG05 ;; bbWeight=2 PerfScore 14.50 G_M54695_IG04: mov rdi, qword ptr [r11+16] xor rdi, r8 cmp rdi, 1 jbe SHORT G_M54695_IG07 ;; bbWeight=1 PerfScore 3.50 G_M54695_IG05: test esi, esi je SHORT G_M54695_IG09 inc r9d add ecx, r9d and ecx, dword ptr [r10+4] cmp r9d, 8 jl SHORT G_M54695_IG03 ;; bbWeight=2 PerfScore 10.00 G_M54695_IG06: jmp SHORT G_M54695_IG09 ;; bbWeight=0.25 PerfScore 0.50 G_M54695_IG07: cmp esi, dword ptr [r11] jne SHORT G_M54695_IG09 ;; bbWeight=0.25 PerfScore 0.75 G_M54695_IG08: mov rax, rdi shr rax, 32 jne SHORT G_M54695_IG17 mov ecx, edi jmp SHORT G_M54695_IG10 ;; bbWeight=0.50 PerfScore 2.75 G_M54695_IG09: mov ecx, 2 ;; bbWeight=0.50 PerfScore 0.13 G_M54695_IG10: cmp ecx, 1 jne SHORT G_M54695_IG13 ;; bbWeight=1 PerfScore 1.25 G_M54695_IG11: mov rax, rdx ;; bbWeight=0.50 PerfScore 0.13 G_M54695_IG12: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M54695_IG13: test ecx, ecx jne SHORT G_M54695_IG15 xor rax, rax ;; bbWeight=0.50 PerfScore 0.75 G_M54695_IG14: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M54695_IG15: mov rcx, r8 call CastHelpers:IsInstanceOfAny_NoCacheLookup(long,Object):Object nop ;; bbWeight=0.50 PerfScore 0.75 G_M54695_IG16: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M54695_IG17: call CORINFO_HELP_OVERFLOW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 206, prolog size 9, PerfScore 75.48, (MethodHash=73df2a58) for method CastHelpers:IsInstance_Helper(long,Object):Object ; ============================================================ ; Assembly listing for method SZArrayHelper:get_Count():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M63208_IG01: ;; bbWeight=1 PerfScore 0.00 G_M63208_IG02: mov eax, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 2.00 G_M63208_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 3.40, (MethodHash=da370917) for method SZArrayHelper:get_Count():int:this ; ============================================================ ; Assembly listing for method Enumerable:ToDictionary(ref,Func`2,Func`2,IEqualityComparer`1):Dictionary`2 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T06] ( 5, 11 ) ref -> rsi class-hnd ; V01 arg1 [V01,T11] ( 3, 6 ) ref -> rdi class-hnd ; V02 arg2 [V02,T12] ( 3, 6 ) ref -> rbx class-hnd ; V03 arg3 [V03,T18] ( 3, 3 ) ref -> rbp class-hnd ; V04 loc0 [V04,T10] ( 3, 6 ) ref -> r14 class-hnd exact ; V05 loc1 [V05,T03] ( 5, 17 ) int -> rbp ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T17] ( 3, 6 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V08 tmp2 [V08,T04] ( 2, 16 ) int -> r13 "non-inline candidate call" ; V09 tmp3 [V09 ] ( 3, 24 ) struct ( 8) [rsp+0x30] do-not-enreg[SB] "struct address for call/obj" ;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ;* V11 tmp5 [V11 ] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp" ; V12 tmp6 [V12,T08] ( 2, 12 ) int -> [rsp+0x30] do-not-enreg[] V09.Item1(offs=0x00) P-DEP "field V09.Item1 (fldOffset=0x0)" ; V13 tmp7 [V13,T09] ( 2, 12 ) int -> [rsp+0x34] do-not-enreg[] V09.Item2(offs=0x04) P-DEP "field V09.Item2 (fldOffset=0x4)" ; V14 tmp8 [V14,T13] ( 2, 8 ) int -> rcx V10.Item1(offs=0x00) P-INDEP "field V10.Item1 (fldOffset=0x0)" ; V15 tmp9 [V15,T14] ( 2, 8 ) int -> rdx V10.Item2(offs=0x04) P-INDEP "field V10.Item2 (fldOffset=0x4)" ; V16 tmp10 [V16 ] ( 2, 16 ) struct ( 8) [rsp+0x28] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V17 tmp11 [V17,T00] ( 3, 24 ) byref -> r8 stack-byref "BlockOp address local" ;* V18 tmp12 [V18,T15] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V19 tmp13 [V19,T05] ( 2, 16 ) int -> r13 "argument with side effect" ; V20 cse0 [V20,T16] ( 4, 7 ) int -> r15 "CSE - aggressive" ; V21 cse1 [V21,T07] ( 3, 12 ) long -> r12 "CSE - aggressive" ; V22 rat0 [V22,T01] ( 3, 24 ) ref -> rax "delegate invoke call" ; V23 rat1 [V23,T02] ( 3, 24 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 56 G_M26116_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 ;; bbWeight=1 PerfScore 9.25 G_M26116_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov r15d, dword ptr [rsi+8] mov edx, r15d mov rcx, r14 mov r8, rbp call Dictionary`2:.ctor(int,IEqualityComparer`1):this xor ebp, ebp test r15d, r15d jle SHORT G_M26116_IG04 ;; bbWeight=1 PerfScore 6.75 G_M26116_IG03: movsxd r12, ebp mov edx, dword ptr [rsi+4*r12+16] mov rax, rdi mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`2:Invoke(int):int:this mov r13d, eax mov edx, dword ptr [rsi+4*r12+16] mov rax, rbx mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`2:Invoke(int):ValueTuple`2:this mov qword ptr [rsp+30H], rax mov ecx, dword ptr [rsp+30H] mov edx, dword ptr [rsp+34H] lea r8, bword ptr [rsp+28H] mov dword ptr [r8], ecx mov dword ptr [r8+4], edx mov rcx, r14 mov edx, r13d mov r8, qword ptr [rsp+28H] mov r9d, 2 call Dictionary`2:TryInsert(int,ValueTuple`2,ubyte):bool:this inc ebp cmp r15d, ebp jg SHORT G_M26116_IG03 ;; bbWeight=4 PerfScore 99.00 G_M26116_IG04: mov rax, r14 ;; bbWeight=1 PerfScore 0.25 G_M26116_IG05: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 ; Total bytes of code 181, prolog size 16, PerfScore 138.60, (MethodHash=380399fb) for method Enumerable:ToDictionary(ref,Func`2,Func`2,IEqualityComparer`1):Dictionary`2 ; ============================================================ ; Assembly listing for method Dictionary`2:.ctor(int,IEqualityComparer`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 3 ) ref -> rdi this class-hnd ; V01 arg1 [V01,T00] ( 5, 4.50) int -> rdx ; V02 arg2 [V02,T01] ( 5, 4 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M17833_IG01: push rdi push rsi sub rsp, 40 mov rdi, rcx mov rsi, r8 ;; bbWeight=1 PerfScore 2.75 G_M17833_IG02: test edx, edx jl SHORT G_M17833_IG09 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG03: test edx, edx jle SHORT G_M17833_IG05 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG04: mov rcx, rdi call Dictionary`2:Initialize(int):int:this ;; bbWeight=0.50 PerfScore 0.63 G_M17833_IG05: test rsi, rsi je SHORT G_M17833_IG07 ;; bbWeight=1 PerfScore 1.25 G_M17833_IG06: mov rcx, 0xD1FFAB1E mov edx, 45 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rdx, 0xD1FFAB1E cmp rsi, gword ptr [rdx] je SHORT G_M17833_IG07 lea rcx, bword ptr [rdi+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 3.25 G_M17833_IG07: nop ;; bbWeight=1 PerfScore 0.25 G_M17833_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M17833_IG09: mov ecx, 22 call ThrowHelper:ThrowArgumentOutOfRangeException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 99, prolog size 6, PerfScore 22.78, (MethodHash=4fbeba56) for method Dictionary`2:.ctor(int,IEqualityComparer`1):this ; ============================================================ ; Assembly listing for method Dictionary`2:Initialize(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdx ; V02 loc0 [V02,T01] ( 5, 5 ) int -> rdi ; V03 loc1 [V03,T03] ( 2, 2 ) ref -> rbx class-hnd exact ; V04 loc2 [V04,T04] ( 2, 2 ) ref -> rbp class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M48741_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 4.50 G_M48741_IG02: mov ecx, edx call HashHelpers:GetPrime(int):int mov edi, eax movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbx, rax movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rbp, rax mov dword ptr [rsi+60], -1 mov rax, -1 mov ecx, edi xor rdx, rdx div rdx:rax, rcx inc rax mov qword ptr [rsi+48], rax lea rcx, bword ptr [rsi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+16] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF mov eax, edi ;; bbWeight=1 PerfScore 72.75 G_M48741_IG03: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 128, prolog size 8, PerfScore 93.30, (MethodHash=ab44419a) for method Dictionary`2:Initialize(int):int:this ; ============================================================ ; Assembly listing for method <>c:b__4_0(int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) int -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M39655_IG01: ;; bbWeight=1 PerfScore 0.00 G_M39655_IG02: mov eax, edx ;; bbWeight=1 PerfScore 0.25 G_M39655_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 3, prolog size 0, PerfScore 1.55, (MethodHash=5d456518) for method <>c:b__4_0(int):int:this ; ============================================================ ; Assembly listing for method <>c:b__4_1(int):ValueTuple`2:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T04] ( 3, 3 ) int -> rsi ld-addr-op ; V02 loc0 [V02,T03] ( 5, 5 ) ref -> rsi class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V05 tmp2 [V05 ] ( 3, 6 ) struct ( 8) [rsp+0x38] do-not-enreg[SB] "NewObj constructor temp" ; V06 tmp3 [V06,T01] ( 3, 6 ) ref -> rax class-hnd "Inlining Arg" ;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V11 tmp8 [V11,T05] ( 2, 4 ) byref -> rax "Inlining Arg" ;* V12 tmp9 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V13 tmp10 [V13,T07] ( 2, 4 ) int -> rdx "Inlining Arg" ; V14 tmp11 [V14,T08] ( 2, 4 ) int -> rax "Inlining Arg" ; V15 tmp12 [V15,T09] ( 2, 4 ) int -> rcx "Inlining Arg" ; V16 tmp13 [V16,T10] ( 2, 3 ) int -> [rsp+0x38] do-not-enreg[] V05.Item1(offs=0x00) P-DEP "field V05.Item1 (fldOffset=0x0)" ; V17 tmp14 [V17,T11] ( 2, 3 ) int -> [rsp+0x3C] do-not-enreg[] V05.Item2(offs=0x04) P-DEP "field V05.Item2 (fldOffset=0x4)" ; V18 tmp15 [V18,T12] ( 2, 2 ) byref -> rax V07._pointer(offs=0x00) P-INDEP "field V07._pointer (fldOffset=0x0)" ; V19 tmp16 [V19,T16] ( 2, 2 ) int -> rdx V07._length(offs=0x08) P-INDEP "field V07._length (fldOffset=0x8)" ; V20 tmp17 [V20,T13] ( 2, 2 ) byref -> rax V08._pointer(offs=0x00) P-INDEP "field V08._pointer (fldOffset=0x0)" ; V21 tmp18 [V21,T17] ( 2, 2 ) int -> rdx V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)" ; V22 tmp19 [V22,T14] ( 2, 2 ) byref -> rax V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ; V23 tmp20 [V23,T18] ( 2, 2 ) int -> rdx V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ;* V24 tmp21 [V24 ] ( 0, 0 ) byref -> zero-ref V10._pointer(offs=0x00) P-INDEP "field V10._pointer (fldOffset=0x0)" ;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)" ; V26 tmp23 [V26,T15] ( 2, 2 ) byref -> rax V12._value(offs=0x00) P-INDEP "field V12._value (fldOffset=0x0)" ; V27 tmp24 [V27 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V28 tmp25 [V28,T02] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; V29 tmp26 [V29,T06] ( 2, 4 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 64 G_M31060_IG01: push rsi sub rsp, 64 xor rax, rax mov qword ptr [rsp+28H], rax mov qword ptr [rsp+30H], rax mov esi, edx ;; bbWeight=1 PerfScore 3.75 G_M31060_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov dword ptr [rax+8], esi mov rcx, rax mov rax, 0xD1FFAB1E call gword ptr [rax]Enum:ToString():String:this mov r8d, dword ptr [rax+8] dec r8d mov rcx, rax mov edx, 1 call String:Substring(int,int):String:this mov rsi, rax test rsi, rsi je SHORT G_M31060_IG05 ;; bbWeight=1 PerfScore 11.00 G_M31060_IG03: lea rax, bword ptr [rsi+12] mov edx, dword ptr [rsi+8] lea rcx, bword ptr [rsp+28H] mov bword ptr [rcx], rax mov dword ptr [rcx+8], edx call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo mov r8, rax lea rcx, bword ptr [rsp+28H] mov edx, 7 call Number:ParseInt32(ReadOnlySpan`1,int,NumberFormatInfo):int mov ecx, dword ptr [rsi+8] mov dword ptr [rsp+38H], eax mov dword ptr [rsp+3CH], ecx mov rax, qword ptr [rsp+38H] ;; bbWeight=1 PerfScore 13.00 G_M31060_IG04: add rsp, 64 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M31060_IG05: mov ecx, 17 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 154, prolog size 17, PerfScore 44.90, (MethodHash=bc5986ab) for method <>c:b__4_1(int):ValueTuple`2:this ; ============================================================ ; Assembly listing for method Dictionary`2:TryInsert(int,ValueTuple`2,ubyte):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 20, 13.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T10] ( 8, 7.50) int -> rdi ld-addr-op ; V02 arg2 [V02,T13] ( 5, 3.50) struct ( 8) [rsp+0x90] do-not-enreg[SB] ; V03 arg3 [V03,T14] ( 4, 3 ) ubyte -> [rsp+0x98] ; V04 loc0 [V04,T00] ( 13, 28 ) ref -> rbp class-hnd ; V05 loc1 [V05,T12] ( 5, 5.50) ref -> r14 class-hnd ; V06 loc2 [V06,T09] ( 6, 11 ) int -> r15 ; V07 loc3 [V07,T01] ( 7, 25 ) int -> r12 ; V08 loc4 [V08,T17] ( 5, 3.50) byref -> r13 ; V09 loc5 [V09,T02] ( 7, 25 ) int -> rax ; V10 loc6 [V10,T18] ( 6, 3 ) int -> r12 ; V11 loc7 [V11,T24] ( 5, 2.50) byref -> rax ;* V12 loc8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V13 loc9 [V13,T31] ( 3, 1.50) int -> r12 ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15,T25] ( 3, 2 ) int -> r15 ; V16 tmp2 [V16,T26] ( 2, 2 ) byref -> r13 "Inline return value spill temp" ; V17 tmp3 [V17,T20] ( 3, 3 ) ref -> rdx class-hnd "Inline stloc first use temp" ; V18 tmp4 [V18,T15] ( 2, 4 ) long -> r11 "Inlining Arg" ; V19 tmp5 [V19,T16] ( 2, 4 ) int -> r8 "Inlining Arg" ; V20 tmp6 [V20,T21] ( 3, 3 ) int -> r8 "Inline stloc first use temp" ; V21 tmp7 [V21,T11] ( 2, 8 ) int -> rax "Inlining Arg" ;* V22 tmp8 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V23 tmp9 [V23,T37] ( 2, 1 ) byref -> r13 "Inline return value spill temp" ; V24 tmp10 [V24,T30] ( 3, 1.50) ref -> rax class-hnd "Inline stloc first use temp" ; V25 tmp11 [V25,T27] ( 2, 2 ) long -> r8 "Inlining Arg" ; V26 tmp12 [V26,T28] ( 2, 2 ) int -> rdx "Inlining Arg" ; V27 tmp13 [V27,T32] ( 3, 1.50) int -> rdx "Inline stloc first use temp" ; V28 tmp14 [V28,T22] ( 3, 3 ) int -> rax "index expr" ; V29 tmp15 [V29,T29] ( 2, 2 ) int -> rdx "argument with side effect" ; V30 cse0 [V30,T07] ( 5, 12.50) byref -> rdx "CSE - aggressive" ; V31 cse1 [V31,T08] ( 5, 12.50) byref -> [rsp+0x20] "CSE - aggressive" ; V32 cse2 [V32,T05] ( 4, 14 ) long -> rcx "CSE - aggressive" ; V33 cse3 [V33,T06] ( 4, 14 ) long -> [rsp+0x30] "CSE - aggressive" ; V34 cse4 [V34,T33] ( 3, 1.50) int -> rcx "CSE - conservative" ; V35 cse5 [V35,T34] ( 3, 1.50) int -> rax "CSE - conservative" ; V36 cse6 [V36,T35] ( 3, 1.50) int -> rcx "CSE - conservative" ; V37 cse7 [V37,T36] ( 3, 1.50) int -> rcx "CSE - conservative" ; V38 cse8 [V38,T03] ( 8, 22 ) int -> [rsp+0x2C] "CSE - aggressive" ; V39 cse9 [V39,T23] ( 3, 3 ) int -> rcx "CSE - moderate" ; V40 cse10 [V40,T19] ( 6, 3 ) int -> registers "CSE - moderate" ; ; Lcl frame size = 56 G_M1414_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 56 mov qword ptr [rsp+90H], r8 mov dword ptr [rsp+98H], r9d mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 10.75 G_M1414_IG02: cmp gword ptr [rsi+8], 0 jne SHORT G_M1414_IG04 ;; bbWeight=1 PerfScore 3.00 G_M1414_IG03: mov rcx, rsi xor edx, edx call Dictionary`2:Initialize(int):int:this ;; bbWeight=0.50 PerfScore 0.75 G_M1414_IG04: mov rbp, gword ptr [rsi+16] mov r14, gword ptr [rsi+24] test r14, r14 je SHORT G_M1414_IG06 ;; bbWeight=1 PerfScore 5.25 G_M1414_IG05: mov rcx, r14 mov edx, edi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEqualityComparer`1:GetHashCode(int):int:this mov r15d, eax jmp SHORT G_M1414_IG07 ;; bbWeight=0.50 PerfScore 3.13 G_M1414_IG06: mov r15d, edi ;; bbWeight=0.50 PerfScore 0.13 G_M1414_IG07: xor r12d, r12d mov rdx, gword ptr [rsi+8] mov ecx, dword ptr [rdx+8] mov r8d, ecx mov r11, qword ptr [rsi+48] mov eax, r15d imul r11, rax shr r11, 32 inc r11 mov r8d, r8d imul r8, r11 shr r8, 32 cmp r8d, ecx jae G_M1414_IG28 movsxd rcx, r8d lea r13, bword ptr [rdx+4*rcx+16] mov eax, dword ptr [r13] dec eax test r14, r14 jne G_M1414_IG15 mov r9d, dword ptr [rbp+8] mov r14d, r9d ;; bbWeight=1 PerfScore 23.50 G_M1414_IG08: cmp r14d, eax mov dword ptr [rsp+2CH], r14d jbe G_M1414_IG20 movsxd rax, eax lea rcx, [rax+2*rax] cmp dword ptr [rbp+8*rcx+16], r15d jne SHORT G_M1414_IG10 ;; bbWeight=4 PerfScore 24.00 G_M1414_IG09: lea rdx, bword ptr [rbp+8*rcx+16] mov eax, dword ptr [rdx+8] cmp eax, edi je SHORT G_M1414_IG11 ;; bbWeight=2 PerfScore 10.50 G_M1414_IG10: lea rdx, bword ptr [rbp+8*rcx+16] mov eax, dword ptr [rdx+4] inc r12d mov r9d, dword ptr [rsp+2CH] cmp r9d, r12d jb G_M1414_IG27 mov r14d, r9d jmp SHORT G_M1414_IG08 ;; bbWeight=4 PerfScore 35.00 G_M1414_IG11: mov ebx, dword ptr [rsp+98H] movzx rcx, bl cmp ecx, 1 jne SHORT G_M1414_IG12 mov rcx, qword ptr [rsp+90H] mov qword ptr [rdx+16], rcx jmp G_M1414_IG24 ;; bbWeight=0.50 PerfScore 3.25 G_M1414_IG12: cmp ecx, 2 je G_M1414_IG26 ;; bbWeight=0.50 PerfScore 0.63 G_M1414_IG13: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M1414_IG14: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M1414_IG15: mov r9d, dword ptr [rbp+8] mov dword ptr [rsp+2CH], r9d cmp r9d, eax jbe G_M1414_IG20 movsxd rdx, eax lea rax, [rdx+2*rdx] cmp dword ptr [rbp+8*rax+16], r15d jne SHORT G_M1414_IG19 ;; bbWeight=4 PerfScore 32.00 G_M1414_IG16: mov qword ptr [rsp+30H], rax lea r10, bword ptr [rbp+8*rax+16] mov bword ptr [rsp+20H], r10 mov edx, dword ptr [r10+8] mov rcx, r14 mov r8d, edi mov r11, 0xD1FFAB1E mov rbx, 0xD1FFAB1E call qword ptr [rbx]IEqualityComparer`1:Equals(int,int):bool:this test eax, eax mov rax, qword ptr [rsp+30H] je SHORT G_M1414_IG19 ;; bbWeight=2 PerfScore 24.50 G_M1414_IG17: mov ebx, dword ptr [rsp+98H] movzx rdx, bl cmp edx, 1 jne SHORT G_M1414_IG18 mov r12, bword ptr [rsp+20H] mov rdx, qword ptr [rsp+90H] mov qword ptr [r12+16], rdx jmp G_M1414_IG24 ;; bbWeight=0.50 PerfScore 3.75 G_M1414_IG18: cmp edx, 2 je G_M1414_IG26 jmp G_M1414_IG13 ;; bbWeight=0.50 PerfScore 1.63 G_M1414_IG19: lea rcx, bword ptr [rbp+8*rax+16] mov eax, dword ptr [rcx+4] inc r12d cmp dword ptr [rsp+2CH], r12d jb G_M1414_IG27 jmp G_M1414_IG15 ;; bbWeight=4 PerfScore 33.00 G_M1414_IG20: mov ecx, dword ptr [rsi+64] test ecx, ecx jle SHORT G_M1414_IG21 mov eax, dword ptr [rsi+60] mov r12d, eax cmp eax, dword ptr [rsp+2CH] jae G_M1414_IG28 movsxd r9, eax lea rax, [r9+2*r9] mov eax, dword ptr [rbp+8*rax+20] neg eax add eax, -3 mov dword ptr [rsi+60], eax dec ecx mov dword ptr [rsi+64], ecx jmp SHORT G_M1414_IG23 ;; bbWeight=0.50 PerfScore 7.50 G_M1414_IG21: mov ecx, dword ptr [rsi+56] mov r12d, ecx cmp dword ptr [rsp+2CH], r12d jne SHORT G_M1414_IG22 call HashHelpers:ExpandPrime(int):int mov edx, eax mov rcx, rsi xor r8d, r8d call Dictionary`2:Resize(int,bool):this mov rax, gword ptr [rsi+8] mov ecx, dword ptr [rax+8] mov edx, ecx mov r8, qword ptr [rsi+48] mov r9d, r15d imul r8, r9 shr r8, 32 inc r8 mov edx, edx imul rdx, r8 shr rdx, 32 cmp edx, ecx jae SHORT G_M1414_IG28 movsxd rcx, edx lea r13, bword ptr [rax+4*rcx+16] ;; bbWeight=0.50 PerfScore 12.25 G_M1414_IG22: lea eax, [r12+1] mov dword ptr [rsi+56], eax mov rbp, gword ptr [rsi+16] ;; bbWeight=0.50 PerfScore 1.75 G_M1414_IG23: cmp r12d, dword ptr [rbp+8] jae SHORT G_M1414_IG28 movsxd rax, r12d lea rax, [rax+2*rax] lea rax, bword ptr [rbp+8*rax+16] mov dword ptr [rax], r15d mov ecx, dword ptr [r13] dec ecx mov dword ptr [rax+4], ecx mov dword ptr [rax+8], edi mov rcx, qword ptr [rsp+90H] mov qword ptr [rax+16], rcx inc r12d mov dword ptr [r13], r12d inc dword ptr [rsi+68] ;; bbWeight=0.50 PerfScore 9.63 G_M1414_IG24: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M1414_IG25: add rsp, 56 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=0.50 PerfScore 2.63 G_M1414_IG26: mov ecx, edi call ThrowHelper:ThrowAddingDuplicateWithKeyArgumentException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M1414_IG27: call ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() int3 ;; bbWeight=0 PerfScore 0.00 G_M1414_IG28: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 718, prolog size 37, PerfScore 323.18, (MethodHash=12c4fa79) for method Dictionary`2:TryInsert(int,ValueTuple`2,ubyte):bool:this ; ============================================================ ; Assembly listing for method Dictionary`2:get_Item(int):ValueTuple`2:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 4, 3 ) int -> rsi ; V02 loc0 [V02,T02] ( 3, 3 ) byref -> rax ;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] V03.Item1(offs=0x00) P-DEP "field V03.Item1 (fldOffset=0x0)" ;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] V03.Item2(offs=0x04) P-DEP "field V03.Item2 (fldOffset=0x4)" ; ; Lcl frame size = 32 G_M59523_IG01: push rsi sub rsp, 32 mov esi, edx ;; bbWeight=1 PerfScore 1.50 G_M59523_IG02: mov edx, esi call Dictionary`2:FindValue(int):byref:this test rax, rax je SHORT G_M59523_IG04 mov rax, qword ptr [rax] ;; bbWeight=1 PerfScore 4.50 G_M59523_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M59523_IG04: mov ecx, esi call ThrowHelper:ThrowKeyNotFoundException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 36, prolog size 5, PerfScore 11.35, (MethodHash=2833177c) for method Dictionary`2:get_Item(int):ValueTuple`2:this ; ============================================================ ; Assembly listing for method Dictionary`2:FindValue(int):byref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T07] ( 10, 6.50) ref -> rdi this class-hnd ; V01 arg1 [V01,T06] ( 6, 9 ) int -> rsi ld-addr-op ; V02 loc0 [V02,T00] ( 10, 29 ) byref -> rbp ; V03 loc1 [V03,T15] ( 3, 2 ) byref -> rax ; V04 loc2 [V04,T13] ( 4, 3.50) ref -> rbx class-hnd ; V05 loc3 [V05,T14] ( 3, 3 ) int -> rcx ; V06 loc4 [V06,T01] ( 6, 13.50) int -> rdx ; V07 loc5 [V07,T11] ( 3, 5 ) ref -> r11 class-hnd ; V08 loc6 [V08,T03] ( 4, 12.50) int -> rax ;* V09 loc7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V10 loc8 [V10,T12] ( 3, 5 ) int -> r14 ; V11 loc9 [V11,T02] ( 6, 13.50) int -> r15 ; V12 loc10 [V12,T08] ( 3, 8.50) ref -> rdi class-hnd ; V13 loc11 [V13,T04] ( 4, 12.50) int -> r12 ; V14 OutArgs [V14 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V15 tmp1 [V15,T26] ( 2, 1 ) byref -> rdx "Inline return value spill temp" ; V16 tmp2 [V16,T20] ( 3, 1.50) ref -> rdx class-hnd "Inline stloc first use temp" ; V17 tmp3 [V17,T16] ( 2, 2 ) long -> r8 "Inlining Arg" ; V18 tmp4 [V18,T17] ( 2, 2 ) int -> rax "Inlining Arg" ; V19 tmp5 [V19,T22] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V20 tmp6 [V20,T10] ( 2, 8 ) int -> rdx "Inlining Arg" ;* V21 tmp7 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V22 tmp8 [V22,T27] ( 2, 1 ) byref -> rdx "Inline return value spill temp" ; V23 tmp9 [V23,T21] ( 3, 1.50) ref -> rdx class-hnd "Inline stloc first use temp" ; V24 tmp10 [V24,T18] ( 2, 2 ) long -> r11 "Inlining Arg" ; V25 tmp11 [V25,T19] ( 2, 2 ) int -> r8 "Inlining Arg" ; V26 tmp12 [V26,T23] ( 3, 1.50) int -> r8 "Inline stloc first use temp" ; V27 cse0 [V27,T24] ( 3, 1.50) int -> r11 "CSE - moderate" ; V28 cse1 [V28,T25] ( 3, 1.50) int -> rcx "CSE - moderate" ; V29 cse2 [V29,T09] ( 3, 8.50) int -> r8 "CSE - aggressive" ; V30 cse3 [V30,T05] ( 3, 12 ) int -> r13 "CSE - aggressive" ; ; Lcl frame size = 40 G_M25274_IG01: push r15 push r14 push r13 push r12 push rdi push rsi push rbp push rbx sub rsp, 40 mov rdi, rcx mov esi, edx ;; bbWeight=1 PerfScore 8.75 G_M25274_IG02: cmp gword ptr [rdi+8], 0 je G_M25274_IG13 ;; bbWeight=1 PerfScore 3.00 G_M25274_IG03: mov rbx, gword ptr [rdi+24] test rbx, rbx jne G_M25274_IG07 mov ecx, esi mov rdx, gword ptr [rdi+8] mov r11d, dword ptr [rdx+8] mov eax, r11d mov r8, qword ptr [rdi+48] mov r9d, ecx imul r8, r9 shr r8, 32 inc r8 mov eax, eax imul rax, r8 shr rax, 32 cmp eax, r11d jae G_M25274_IG15 movsxd r11, eax lea rdx, bword ptr [rdx+4*r11+16] mov edx, dword ptr [rdx] mov r11, gword ptr [rdi+16] xor eax, eax dec edx mov r8d, dword ptr [r11+8] ;; bbWeight=0.50 PerfScore 13.75 G_M25274_IG04: cmp r8d, edx jbe G_M25274_IG13 movsxd rdx, edx lea rdx, [rdx+2*rdx] lea rbp, bword ptr [r11+8*rdx+16] cmp dword ptr [rbp], esi jne SHORT G_M25274_IG06 ;; bbWeight=4 PerfScore 24.00 G_M25274_IG05: mov edx, dword ptr [rbp+8] cmp edx, ecx je G_M25274_IG11 ;; bbWeight=2 PerfScore 6.50 G_M25274_IG06: mov edx, dword ptr [rbp+4] inc eax cmp r8d, eax jb G_M25274_IG14 jmp SHORT G_M25274_IG04 ;; bbWeight=4 PerfScore 22.00 G_M25274_IG07: mov rcx, rbx mov edx, esi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEqualityComparer`1:GetHashCode(int):int:this mov r14d, eax mov rdx, gword ptr [rdi+8] mov ecx, dword ptr [rdx+8] mov r8d, ecx mov r11, qword ptr [rdi+48] mov eax, r14d imul r11, rax shr r11, 32 inc r11 mov r8d, r8d imul r8, r11 shr r8, 32 cmp r8d, ecx jae G_M25274_IG15 movsxd rcx, r8d lea rdx, bword ptr [rdx+4*rcx+16] mov r15d, dword ptr [rdx] mov rdi, gword ptr [rdi+16] xor r12d, r12d dec r15d ;; bbWeight=0.50 PerfScore 13.13 G_M25274_IG08: mov r13d, dword ptr [rdi+8] cmp r13d, r15d jbe SHORT G_M25274_IG13 movsxd rdx, r15d lea rdx, [rdx+2*rdx] lea rbp, bword ptr [rdi+8*rdx+16] cmp dword ptr [rbp], r14d jne SHORT G_M25274_IG10 ;; bbWeight=4 PerfScore 32.00 G_M25274_IG09: mov edx, dword ptr [rbp+8] mov rcx, rbx mov r8d, esi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEqualityComparer`1:Equals(int,int):bool:this test eax, eax jne SHORT G_M25274_IG11 ;; bbWeight=2 PerfScore 14.50 G_M25274_IG10: mov r15d, dword ptr [rbp+4] inc r12d cmp r13d, r12d jb SHORT G_M25274_IG14 jmp SHORT G_M25274_IG08 ;; bbWeight=4 PerfScore 22.00 G_M25274_IG11: cmp dword ptr [rbp], ebp lea rax, bword ptr [rbp+16] ;; bbWeight=0.50 PerfScore 1.25 G_M25274_IG12: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 5.25 G_M25274_IG13: xor rax, rax jmp SHORT G_M25274_IG12 ;; bbWeight=0.50 PerfScore 1.13 G_M25274_IG14: call ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() int3 ;; bbWeight=0 PerfScore 0.00 G_M25274_IG15: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 385, prolog size 21, PerfScore 205.75, (MethodHash=38509d45) for method Dictionary`2:FindValue(int):byref:this ; ============================================================ ; Assembly listing for method StudentDistribution:InverseTwoTailStudent(double,double):double ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 6 ) double -> mm6 ; V01 arg1 [V01,T04] ( 3, 6 ) double -> mm7 ; V02 loc0 [V02,T00] ( 5, 12 ) double -> mm8 ; V03 loc1 [V03,T01] ( 5, 12 ) double -> mm9 ; V04 loc2 [V04,T02] ( 4, 12 ) double -> mm10 ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 120 G_M58580_IG01: sub rsp, 120 vzeroupper vmovaps qword ptr [rsp+60H], xmm6 vmovaps qword ptr [rsp+50H], xmm7 vmovaps qword ptr [rsp+40H], xmm8 vmovaps qword ptr [rsp+30H], xmm9 vmovaps qword ptr [rsp+20H], xmm10 vmovaps xmm6, xmm0 vmovaps xmm7, xmm1 ;; bbWeight=1 PerfScore 16.75 G_M58580_IG02: vxorps xmm8, xmm8 vmovsd xmm9, qword ptr [reloc @RWD08] ;; bbWeight=1 PerfScore 2.33 G_M58580_IG03: vaddsd xmm0, xmm8, xmm9 vmulsd xmm10, xmm0, qword ptr [reloc @RWD24] vmovaps xmm0, xmm10 vmovaps xmm1, xmm7 call StudentDistribution:StudentTwoTail(double,double):double vucomisd xmm6, xmm0 jbe SHORT G_M58580_IG05 ;; bbWeight=4 PerfScore 46.00 G_M58580_IG04: vmovaps xmm9, xmm10 jmp SHORT G_M58580_IG06 ;; bbWeight=2 PerfScore 4.50 G_M58580_IG05: vmovaps xmm8, xmm10 ;; bbWeight=2 PerfScore 0.50 G_M58580_IG06: vsubsd xmm0, xmm9, xmm8 vucomisd xmm0, qword ptr [reloc @RWD40] ja SHORT G_M58580_IG03 ;; bbWeight=4 PerfScore 20.00 G_M58580_IG07: vaddsd xmm0, xmm8, xmm9 vmulsd xmm0, xmm0, qword ptr [reloc @RWD56] ;; bbWeight=1 PerfScore 8.00 G_M58580_IG08: vmovaps xmm6, qword ptr [rsp+60H] vmovaps xmm7, qword ptr [rsp+50H] vmovaps xmm8, qword ptr [rsp+40H] vmovaps xmm9, qword ptr [rsp+30H] vmovaps xmm10, qword ptr [rsp+20H] add rsp, 120 ret ;; bbWeight=1 PerfScore 21.25 RWD00 dq 0000000000000000h RWD08 dq 408F400000000000h RWD16 dq 0000000000000000h RWD24 dq 3FE0000000000000h RWD32 dq 0000000000000000h RWD40 dq 3E112E0BE826D695h RWD48 dq 0000000000000000h RWD56 dq 3FE0000000000000h ; Total bytes of code 166, prolog size 37, PerfScore 137.73, (MethodHash=540c1b2b) for method StudentDistribution:InverseTwoTailStudent(double,double):double ; ============================================================ ; Assembly listing for method StudentDistribution:StudentTwoTail(double,double):double ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T07] ( 9, 8 ) double -> mm0 ; V01 arg1 [V01,T06] ( 11, 8.50) double -> mm6 ; V02 loc0 [V02,T02] ( 25, 27.50) double -> mm1 ; V03 loc1 [V03,T05] ( 10, 12.50) double -> mm7 ; V04 loc2 [V04,T00] ( 12, 28 ) int -> rsi ; V05 loc3 [V05,T09] ( 4, 2 ) double -> mm0 ; V06 loc4 [V06,T04] ( 6, 13.50) double -> mm9 ; V07 loc5 [V07,T03] ( 14, 24.50) double -> mm6 ; V08 loc6 [V08,T01] ( 6, 20.50) int -> rax ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T10] ( 3, 1.50) double -> mm0 ; V11 tmp2 [V11,T11] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V12 tmp3 [V12,T12] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V13 tmp4 [V13,T13] ( 2, 0 ) ref -> rdi "argument with side effect" ; V14 tmp5 [V14,T14] ( 2, 0 ) ref -> r8 "argument with side effect" ; V15 tmp6 [V15,T15] ( 2, 0 ) ref -> rdi "argument with side effect" ; V16 tmp7 [V16,T16] ( 2, 0 ) ref -> r8 "argument with side effect" ; V17 cse0 [V17,T08] ( 3, 2.50) double -> mm8 "CSE - aggressive" ; ; Lcl frame size = 104 G_M2404_IG01: push rdi push rsi sub rsp, 104 vzeroupper vmovaps qword ptr [rsp+50H], xmm6 vmovaps qword ptr [rsp+40H], xmm7 vmovaps qword ptr [rsp+30H], xmm8 vmovaps qword ptr [rsp+20H], xmm9 vmovaps xmm6, xmm1 ;; bbWeight=1 PerfScore 15.50 G_M2404_IG02: vxorps xmm1, xmm1 vucomisd xmm1, xmm0 ja G_M2404_IG18 ;; bbWeight=1 PerfScore 2.33 G_M2404_IG03: vmovsd xmm1, qword ptr [reloc @RWD08] vucomisd xmm1, xmm6 ja G_M2404_IG19 ;; bbWeight=1 PerfScore 4.00 G_M2404_IG04: vmulsd xmm0, xmm0, xmm0 vdivsd xmm1, xmm0, xmm6 vaddsd xmm7, xmm1, qword ptr [reloc @RWD24] vroundsd xmm2, xmm6, 4 vcvttsd2si esi, xmm2 vxorps xmm8, xmm8 vcvtsi2sd xmm8, esi vsubsd xmm2, xmm6, xmm8 vmovsd xmm3, qword ptr [reloc @RWD40] vandps xmm2, xmm3 vucomisd xmm2, qword ptr [reloc @RWD56] ja SHORT G_M2404_IG06 ;; bbWeight=1 PerfScore 44.67 G_M2404_IG05: vucomisd xmm6, qword ptr [reloc @RWD72] jae SHORT G_M2404_IG06 vucomisd xmm6, xmm0 jbe G_M2404_IG09 vucomisd xmm6, qword ptr [reloc @RWD88] jbe G_M2404_IG09 ;; bbWeight=0.50 PerfScore 3.00 G_M2404_IG06: vucomisd xmm1, qword ptr [reloc @RWD104] jbe SHORT G_M2404_IG07 vmovaps xmm0, xmm7 call Math:Log(double):double vmovaps xmm1, xmm0 ;; bbWeight=0.50 PerfScore 1.75 G_M2404_IG07: vsubsd xmm0, xmm6, qword ptr [reloc @RWD120] vmulsd xmm2, xmm0, xmm0 vmulsd xmm7, xmm2, qword ptr [reloc @RWD136] vmulsd xmm1, xmm0, xmm1 vmulsd xmm0, xmm1, qword ptr [reloc @RWD152] vsubsd xmm0, xmm0, qword ptr [reloc @RWD168] vmulsd xmm0, xmm0, xmm1 vsubsd xmm0, xmm0, qword ptr [reloc @RWD184] vmulsd xmm0, xmm0, xmm1 vsubsd xmm0, xmm0, qword ptr [reloc @RWD200] vmulsd xmm2, xmm1, xmm1 vmulsd xmm2, xmm2, qword ptr [reloc @RWD216] vaddsd xmm2, xmm2, qword ptr [reloc @RWD232] vaddsd xmm2, xmm2, xmm7 vdivsd xmm0, xmm0, xmm2 vaddsd xmm0, xmm0, xmm1 vaddsd xmm0, xmm0, qword ptr [reloc @RWD248] vdivsd xmm0, xmm0, xmm7 vaddsd xmm0, xmm0, qword ptr [reloc @RWD264] vsqrtsd xmm1, xmm1 vmulsd xmm1, xmm0, xmm1 vmovsd xmm0, qword ptr [reloc @RWD280] vxorps xmm0, xmm1 call NormalDistribution:Gauss(double):double vmulsd xmm0, xmm0, qword ptr [reloc @RWD296] ;; bbWeight=0.50 PerfScore 54.67 G_M2404_IG08: vmovaps xmm6, qword ptr [rsp+50H] vmovaps xmm7, qword ptr [rsp+40H] vmovaps xmm8, qword ptr [rsp+30H] vmovaps xmm9, qword ptr [rsp+20H] add rsp, 104 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 9.13 G_M2404_IG09: vmovsd xmm9, qword ptr [reloc @RWD312] vmovsd xmm2, qword ptr [reloc @RWD328] vucomisd xmm2, xmm6 jbe SHORT G_M2404_IG10 vmovsd xmm2, qword ptr [reloc @RWD344] vucomisd xmm2, xmm0 jbe SHORT G_M2404_IG10 vsqrtsd xmm1, xmm1 vmovaps xmm6, xmm1 cmp esi, 1 jne G_M2404_IG13 vxorps xmm6, xmm6 jmp G_M2404_IG13 ;; bbWeight=0.50 PerfScore 8.42 G_M2404_IG10: vsqrtsd xmm6, xmm7 vmulsd xmm1, xmm6, xmm8 xor eax, eax vsubsd xmm0, xmm6, qword ptr [reloc @RWD360] vmovsd xmm2, qword ptr [reloc @RWD40] vandps xmm0, xmm2 vxorps xmm2, xmm2 vucomisd xmm0, xmm2 jbe SHORT G_M2404_IG12 ;; bbWeight=0.50 PerfScore 7.96 G_M2404_IG11: add eax, 2 vmovaps xmm9, xmm6 vxorps xmm0, xmm0 vcvtsi2sd xmm0, eax vmulsd xmm0, xmm7, xmm0 lea edx, [rax-1] vxorps xmm2, xmm2 vcvtsi2sd xmm2, edx vdivsd xmm0, xmm2, xmm0 vmulsd xmm1, xmm0, xmm1 lea edx, [rsi+rax] vxorps xmm0, xmm0 vcvtsi2sd xmm0, edx vdivsd xmm0, xmm1, xmm0 vaddsd xmm6, xmm0, xmm9 vsubsd xmm0, xmm6, xmm9 vmovsd xmm2, qword ptr [reloc @RWD40] vandps xmm0, xmm2 vxorps xmm2, xmm2 vucomisd xmm0, xmm2 ja SHORT G_M2404_IG11 ;; bbWeight=4 PerfScore 232.67 G_M2404_IG12: add esi, 2 vxorps xmm9, xmm9 vxorps xmm1, xmm1 vmovsd xmm0, qword ptr [reloc @RWD280] vxorps xmm6, xmm0 ;; bbWeight=0.50 PerfScore 1.63 G_M2404_IG13: add esi, -2 cmp esi, 1 jle SHORT G_M2404_IG14 vxorps xmm0, xmm0 vcvtsi2sd xmm0, esi vmulsd xmm0, xmm7, xmm0 lea eax, [rsi-1] vxorps xmm2, xmm2 vcvtsi2sd xmm2, eax vdivsd xmm0, xmm2, xmm0 vmulsd xmm0, xmm0, xmm6 vaddsd xmm6, xmm0, xmm1 jmp SHORT G_M2404_IG13 ;; bbWeight=4 PerfScore 142.67 G_M2404_IG14: test esi, esi je SHORT G_M2404_IG15 vmovaps xmm0, xmm1 call Math:Atan(double):double vdivsd xmm1, xmm6, xmm7 vaddsd xmm0, xmm0, xmm1 vmulsd xmm0, xmm0, qword ptr [reloc @RWD376] vdivsd xmm0, xmm0, qword ptr [reloc @RWD392] jmp SHORT G_M2404_IG16 ;; bbWeight=0.50 PerfScore 19.25 G_M2404_IG15: vsqrtsd xmm7, xmm7 vdivsd xmm0, xmm6, xmm7 ;; bbWeight=0.50 PerfScore 7.50 G_M2404_IG16: vsubsd xmm0, xmm9, xmm0 ;; bbWeight=0.50 PerfScore 1.50 G_M2404_IG17: vmovaps xmm6, qword ptr [rsp+50H] vmovaps xmm7, qword ptr [rsp+40H] vmovaps xmm8, qword ptr [rsp+30H] vmovaps xmm9, qword ptr [rsp+20H] add rsp, 104 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 9.13 G_M2404_IG18: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x985 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x989 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M2404_IG19: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x9AB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x9AF mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 3FF0000000000000h RWD16 dq 0000000000000000h RWD24 dq 3FF0000000000000h RWD32 dq 0000000000000000h RWD40 dq 7FFFFFFFFFFFFFFFh RWD48 dq 0000000000000000h RWD56 dq 3E112E0BE826D695h RWD64 dq 0000000000000000h RWD72 dq 4034000000000000h RWD80 dq 0000000000000000h RWD88 dq 4069000000000000h RWD96 dq 0000000000000000h RWD104 dq 3EB0C6F7A0B5ED8Dh RWD112 dq 0000000000000000h RWD120 dq 3FE0000000000000h RWD128 dq 0000000000000000h RWD136 dq 4048000000000000h RWD144 dq 0000000000000000h RWD152 dq BFD999999999999Ah RWD160 dq 0000000000000000h RWD168 dq 400A666666666666h RWD176 dq 0000000000000000h RWD184 dq 4038000000000000h RWD192 dq 0000000000000000h RWD200 dq 4055600000000000h RWD208 dq 0000000000000000h RWD216 dq 3FE999999999999Ah RWD224 dq 0000000000000000h RWD232 dq 4059000000000000h RWD240 dq 0000000000000000h RWD248 dq 4008000000000000h RWD256 dq 0000000000000000h RWD264 dq 3FF0000000000000h RWD272 dq 0000000000000000h RWD280 dq 8000000000000000h RWD288 dq 0000000000000000h RWD296 dq 4000000000000000h RWD304 dq 0000000000000000h RWD312 dq 3FF0000000000000h RWD320 dq 0000000000000000h RWD328 dq 4034000000000000h RWD336 dq 0000000000000000h RWD344 dq 4010000000000000h RWD352 dq 0000000000000000h RWD360 dq 3FF0000000000000h RWD368 dq 0000000000000000h RWD376 dq 4000000000000000h RWD384 dq 0000000000000000h RWD392 dq 400921FB54442D18h ; Total bytes of code 874, prolog size 37, PerfScore 663.45, (MethodHash=3781f69b) for method StudentDistribution:StudentTwoTail(double,double):double ; ============================================================ WorkloadActual 4: 19472461 op, 249753300.00 ns, 12.8260 ns/op ; Assembly listing for method GenericArraySortHelper`1:InsertionSort(Span`1) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T08] ( 4, 8 ) byref -> rcx ld-addr-op ; V01 loc0 [V01,T07] ( 6, 57 ) int -> rbx ; V02 loc1 [V02,T06] ( 3, 36 ) struct (32) [rsp+0x50] do-not-enreg[SFB] ld-addr-op ; V03 loc2 [V03,T00] ( 7, 92 ) int -> rbp ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 32 ) byref -> rax "impAppendStmt" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V08 tmp4 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V13 tmp9 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V16 tmp12 [V16,T05] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V17 tmp13 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V18 tmp14 [V18 ] ( 3, 48 ) double -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp" ; V19 tmp15 [V19,T01] ( 2, 64 ) struct (32) [rsp+0x28] do-not-enreg[SFB] ld-addr-op "Inlining Arg" ;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V23 tmp19 [V23,T03] ( 5, 45 ) byref -> rsi V35._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)" ; V24 tmp20 [V24,T10] ( 2, 2 ) int -> rdi V35._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)" ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref V06._pointer(offs=0x00) P-INDEP "field V06._pointer (fldOffset=0x0)" ;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)" ;* V27 tmp23 [V27 ] ( 0, 0 ) byref -> zero-ref V09._pointer(offs=0x00) P-INDEP "field V09._pointer (fldOffset=0x0)" ;* V28 tmp24 [V28 ] ( 0, 0 ) int -> zero-ref V09._length(offs=0x08) P-INDEP "field V09._length (fldOffset=0x8)" ;* V29 tmp25 [V29 ] ( 0, 0 ) byref -> zero-ref V12._pointer(offs=0x00) P-INDEP "field V12._pointer (fldOffset=0x0)" ;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)" ;* V31 tmp27 [V31 ] ( 0, 0 ) byref -> zero-ref V14._pointer(offs=0x00) P-INDEP "field V14._pointer (fldOffset=0x0)" ;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref V14._length(offs=0x08) P-INDEP "field V14._length (fldOffset=0x8)" ;* V33 tmp29 [V33 ] ( 0, 0 ) byref -> zero-ref V20._pointer(offs=0x00) P-INDEP "field V20._pointer (fldOffset=0x0)" ;* V34 tmp30 [V34 ] ( 0, 0 ) int -> zero-ref V20._length(offs=0x08) P-INDEP "field V20._length (fldOffset=0x8)" ;* V35 tmp31 [V35 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V36 cse0 [V36,T02] ( 3, 40 ) byref -> r14 "CSE - aggressive" ; V37 cse1 [V37,T09] ( 3, 18 ) int -> rdi "CSE - moderate" ; ; Lcl frame size = 112 G_M9404_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 112 vzeroupper ;; bbWeight=1 PerfScore 6.25 G_M9404_IG02: mov rsi, bword ptr [rcx] mov edi, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 4.00 G_M9404_IG03: xor ebx, ebx dec edi test edi, edi jle G_M9404_IG09 ;; bbWeight=1 PerfScore 1.75 G_M9404_IG04: lea ecx, [rbx+1] movsxd rcx, ecx shl rcx, 5 vmovdqu xmm1, xmmword ptr [rsi+rcx] vmovdqu xmmword ptr [rsp+50H], xmm1 vmovdqu xmm1, xmmword ptr [rsi+rcx+16] vmovdqu xmmword ptr [rsp+60H], xmm1 mov ebp, ebx jmp SHORT G_M9404_IG06 ;; bbWeight=4 PerfScore 44.00 G_M9404_IG05: lea eax, [rbp+1] movsxd rax, eax shl rax, 5 add rax, rsi vmovdqu xmm0, xmmword ptr [r14] vmovdqu xmmword ptr [rax], xmm0 vmovdqu xmm0, xmmword ptr [r14+16] vmovdqu xmmword ptr [rax+16], xmm0 dec ebp ;; bbWeight=8 PerfScore 74.00 G_M9404_IG06: test ebp, ebp jl SHORT G_M9404_IG08 ;; bbWeight=32 PerfScore 40.00 G_M9404_IG07: movsxd r14, ebp shl r14, 5 add r14, rsi vmovdqu xmm1, xmmword ptr [r14] vmovdqu xmmword ptr [rsp+28H], xmm1 vmovdqu xmm1, xmmword ptr [r14+16] vmovdqu xmmword ptr [rsp+38H], xmm1 vxorps xmm1, xmm1 vmovsd qword ptr [rsp+48H], xmm1 vmovsd xmm1, qword ptr [rsp+68H] vmovsd qword ptr [rsp+48H], xmm1 lea rcx, bword ptr [rsp+48H] vmovsd xmm1, qword ptr [rsp+40H] call Double:CompareTo(double):int:this test eax, eax jl SHORT G_M9404_IG05 ;; bbWeight=16 PerfScore 265.33 G_M9404_IG08: lea eax, [rbp+1] movsxd rax, eax shl rax, 5 vmovdqu xmm0, xmmword ptr [rsp+50H] vmovdqu xmmword ptr [rsi+rax], xmm0 vmovdqu xmm0, xmmword ptr [rsp+60H] vmovdqu xmmword ptr [rsi+rax+16], xmm0 inc ebx cmp ebx, edi jl G_M9404_IG04 ;; bbWeight=16 PerfScore 132.00 G_M9404_IG09: add rsp, 112 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 236, prolog size 13, PerfScore 596.38, (MethodHash=d10cdb43) for method GenericArraySortHelper`1:InsertionSort(Span`1) ; ============================================================ WorkloadActual 5: 19472461 op, 251417100.00 ns, 12.9114 ns/op WorkloadActual 6: 19472461 op, 250450700.00 ns, 12.8618 ns/op WorkloadActual 7: 19472461 op, 252435600.00 ns, 12.9637 ns/op WorkloadActual 8: 19472461 op, 251944200.00 ns, 12.9385 ns/op WorkloadActual 9: 19472461 op, 254011500.00 ns, 13.0447 ns/op WorkloadActual 10: 19472461 op, 251304300.00 ns, 12.9056 ns/op WorkloadActual 11: 19472461 op, 251731900.00 ns, 12.9276 ns/op WorkloadActual 12: 19472461 op, 254838500.00 ns, 13.0871 ns/op WorkloadActual 13: 19472461 op, 273629100.00 ns, 14.0521 ns/op WorkloadActual 14: 19472461 op, 253407200.00 ns, 13.0136 ns/op WorkloadActual 15: 19472461 op, 252604000.00 ns, 12.9724 ns/op // AfterActualRun ; Assembly listing for method Engine:GetExtraStats(IterationData):ValueTuple`2:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 7, 7 ) ref -> rdi this class-hnd ; V01 RetBuf [V01,T03] ( 4, 4 ) byref -> rbx ; V02 arg1 [V02,T00] ( 6, 12 ) byref -> rsi ld-addr-op ; V03 loc0 [V03 ] ( 2, 2 ) struct (24) [rsp+0x198] do-not-enreg[XSB] must-init addr-exposed ; V04 loc1 [V04 ] ( 2, 2 ) struct (32) [rsp+0x178] do-not-enreg[XSB] must-init addr-exposed ; V05 loc2 [V05 ] ( 2, 2 ) struct (24) [rsp+0x160] do-not-enreg[XSB] must-init addr-exposed ;* V06 loc3 [V06 ] ( 0, 0 ) struct (24) zero-ref ; V07 loc4 [V07 ] ( 2, 2 ) struct (32) [rsp+0x140] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V08 loc5 [V08 ] ( 3, 3 ) struct (24) [rsp+0x128] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T07] ( 2, 4 ) ref -> r8 class-hnd "impAppendStmt" ; V11 tmp2 [V11,T08] ( 2, 4 ) long -> rax "impAppendStmt" ; V12 tmp3 [V12 ] ( 2, 4 ) struct (32) [rsp+0x108] do-not-enreg[XSB] addr-exposed "impAppendStmt" ; V13 tmp4 [V13,T09] ( 2, 4 ) long -> r8 "impAppendStmt" ; V14 tmp5 [V14 ] ( 2, 4 ) struct (32) [rsp+0xE8] do-not-enreg[XSB] addr-exposed "impAppendStmt" ; V15 tmp6 [V15,T10] ( 2, 4 ) long -> rax "impAppendStmt" ; V16 tmp7 [V16 ] ( 4, 8 ) struct (56) [rsp+0xB0] do-not-enreg[XSFB] addr-exposed "NewObj constructor temp" ; V17 tmp8 [V17,T11] ( 2, 4 ) long -> rdx "impAppendStmt" ; V18 tmp9 [V18,T12] ( 2, 4 ) long -> rax "Inlining Arg" ;* V19 tmp10 [V19 ] ( 0, 0 ) struct (24) zero-ref "NewObj constructor temp" ; V20 tmp11 [V20,T13] ( 2, 4 ) long -> rcx "Inlining Arg" ; V21 tmp12 [V21,T14] ( 2, 4 ) struct (32) [rsp+0x90] do-not-enreg[SB] "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" ; V23 tmp14 [V23 ] ( 2, 2 ) long -> [rsp+0x198] do-not-enreg[X] addr-exposed V03.k__BackingField(offs=0x00) P-DEP "field V03.k__BackingField (fldOffset=0x0)" ; V24 tmp15 [V24 ] ( 2, 2 ) long -> [rsp+0x1A0] do-not-enreg[X] addr-exposed V03.k__BackingField(offs=0x08) P-DEP "field V03.k__BackingField (fldOffset=0x8)" ; V25 tmp16 [V25 ] ( 2, 2 ) long -> [rsp+0x1A8] do-not-enreg[X] addr-exposed V03.k__BackingField(offs=0x10) P-DEP "field V03.k__BackingField (fldOffset=0x10)" ; V26 tmp17 [V26 ] ( 2, 2 ) long -> [rsp+0x160] do-not-enreg[X] addr-exposed V05.k__BackingField(offs=0x00) P-DEP "field V05.k__BackingField (fldOffset=0x0)" ; V27 tmp18 [V27 ] ( 2, 2 ) long -> [rsp+0x168] do-not-enreg[X] addr-exposed V05.k__BackingField(offs=0x08) P-DEP "field V05.k__BackingField (fldOffset=0x8)" ; V28 tmp19 [V28 ] ( 2, 2 ) long -> [rsp+0x170] do-not-enreg[X] addr-exposed V05.k__BackingField(offs=0x10) P-DEP "field V05.k__BackingField (fldOffset=0x10)" ; V29 tmp20 [V29,T17] ( 2, 2 ) long -> rdx V06.k__BackingField(offs=0x00) P-INDEP "field V06.k__BackingField (fldOffset=0x0)" ; V30 tmp21 [V30,T18] ( 2, 2 ) long -> rcx V06.k__BackingField(offs=0x08) P-INDEP "field V06.k__BackingField (fldOffset=0x8)" ; V31 tmp22 [V31,T19] ( 2, 2 ) long -> rax V06.k__BackingField(offs=0x10) P-INDEP "field V06.k__BackingField (fldOffset=0x10)" ; V32 tmp23 [V32 ] ( 2, 2 ) long -> [rsp+0x128] do-not-enreg[X] addr-exposed V08.k__BackingField(offs=0x00) P-DEP "field V08.k__BackingField (fldOffset=0x0)" ; V33 tmp24 [V33 ] ( 2, 2 ) long -> [rsp+0x130] do-not-enreg[X] addr-exposed V08.k__BackingField(offs=0x08) P-DEP "field V08.k__BackingField (fldOffset=0x8)" ; V34 tmp25 [V34 ] ( 1, 1 ) long -> [rsp+0x138] do-not-enreg[X] addr-exposed V08.k__BackingField(offs=0x10) P-DEP "field V08.k__BackingField (fldOffset=0x10)" ; V35 tmp26 [V35,T20] ( 2, 2 ) long -> rdx V19.k__BackingField(offs=0x00) P-INDEP "field V19.k__BackingField (fldOffset=0x0)" ; V36 tmp27 [V36,T21] ( 2, 2 ) long -> rcx V19.k__BackingField(offs=0x08) P-INDEP "field V19.k__BackingField (fldOffset=0x8)" ; V37 tmp28 [V37,T22] ( 2, 2 ) long -> rax V19.k__BackingField(offs=0x10) P-INDEP "field V19.k__BackingField (fldOffset=0x10)" ; V38 tmp29 [V38,T23] ( 2, 2 ) long -> rdx V22.k__BackingField(offs=0x00) P-INDEP "field V22.k__BackingField (fldOffset=0x0)" ; V39 tmp30 [V39,T24] ( 2, 2 ) long -> rcx V22.k__BackingField(offs=0x08) P-INDEP "field V22.k__BackingField (fldOffset=0x8)" ; V40 tmp31 [V40,T25] ( 2, 2 ) long -> rax V22.k__BackingField(offs=0x10) P-INDEP "field V22.k__BackingField (fldOffset=0x10)" ; V41 tmp32 [V41 ] ( 2, 4 ) struct (32) [rsp+0x70] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V42 tmp33 [V42 ] ( 2, 4 ) struct (32) [rsp+0x50] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V43 tmp34 [V43,T15] ( 2, 4 ) long -> rcx "argument with side effect" ; V44 tmp35 [V44 ] ( 2, 4 ) struct (24) [rsp+0x38] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V45 tmp36 [V45 ] ( 2, 4 ) struct (24) [rsp+0x20] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V46 tmp37 [V46,T16] ( 2, 4 ) long -> rcx "argument with side effect" ; V47 tmp38 [V47,T02] ( 4, 8 ) byref -> r8 stack-byref "BlockOp address local" ; V48 rat0 [V48,T04] ( 3, 6 ) ref -> rax "delegate invoke call" ; V49 rat1 [V49,T05] ( 3, 6 ) ref -> r8 "delegate invoke call" ; V50 rat2 [V50,T06] ( 3, 6 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 432 G_M19746_IG01: push rdi push rsi push rbx sub rsp, 432 vzeroupper xor rax, rax mov qword ptr [rsp+128H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+130H], xmm4 vmovdqa xmmword ptr [rsp+140H], xmm4 mov rax, -96 vmovdqa xmmword ptr [rsp+rax+1B0H], xmm4 vmovdqa xmmword ptr [rsp+rax+1C0H], xmm4 vmovdqa xmmword ptr [rsp+rax+1D0H], xmm4 add rax, 48 jne SHORT -5 instr mov rdi, rcx mov rbx, rdx mov rsi, r8 ;; bbWeight=1 PerfScore 13.08 G_M19746_IG02: call Engine:EnableMonitoring() mov rax, gword ptr [rdi+80] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Action:Invoke():this lea rcx, bword ptr [rsp+198H] call ThreadingStats:ReadInitial():ThreadingStats lea rcx, [rsp+178H] call GcStats:ReadInitial():GcStats mov r8, gword ptr [rdi+16] mov rax, qword ptr [rsi+16] mov edx, dword ptr [rsi+24] movsxd rcx, edx cdq idiv rdx:rax, rcx mov rdx, rax mov rcx, gword ptr [r8+8] call qword ptr [r8+24]Action`1:Invoke(long):this lea rcx, [rsp+108H] call GcStats:ReadFinal():GcStats lea rcx, bword ptr [rsp+160H] call ThreadingStats:ReadFinal():ThreadingStats mov rax, gword ptr [rdi+88] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Action:Invoke():this lea rcx, [rsp+140H] vmovdqu xmm0, xmmword ptr [rsp+108H] vmovdqu xmmword ptr [rsp+70H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+118H] vmovdqu xmmword ptr [rsp+80H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+178H] vmovdqu xmmword ptr [rsp+50H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+188H] vmovdqu xmmword ptr [rsp+60H], xmm0 lea rdx, bword ptr [rsp+70H] lea r8, bword ptr [rsp+50H] call GcStats:op_Subtraction(GcStats,GcStats):GcStats mov r8, qword ptr [rsi+16] imul r8, qword ptr [rdi+152] lea rdx, [rsp+E8H] lea rcx, bword ptr [rsp+140H] call GcStats:WithTotalOperations(long):GcStats:this lea rcx, bword ptr [rsp+128H] vmovdqu xmm0, xmmword ptr [rsp+160H] vmovdqu xmmword ptr [rsp+38H], xmm0 mov rdx, qword ptr [rsp+170H] mov qword ptr [rsp+48H], rdx ;; bbWeight=1 PerfScore 122.50 G_M19746_IG03: vmovdqu xmm0, xmmword ptr [rsp+198H] vmovdqu xmmword ptr [rsp+20H], xmm0 mov rdx, qword ptr [rsp+1A8H] mov qword ptr [rsp+30H], rdx lea rdx, bword ptr [rsp+38H] lea r8, bword ptr [rsp+20H] call ThreadingStats:op_Subtraction(ThreadingStats,ThreadingStats):ThreadingStats mov rax, qword ptr [rsi+16] imul rax, qword ptr [rdi+152] mov rdx, qword ptr [rsp+128H] mov rcx, qword ptr [rsp+130H] xor r8d, r8d vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+B0H], xmm0 vmovdqu xmmword ptr [rsp+C0H], xmm0 vmovdqu xmmword ptr [rsp+D0H], xmm0 mov qword ptr [rsp+E0H], r8 vmovdqu xmm0, xmmword ptr [rsp+E8H] vmovdqu xmmword ptr [rsp+90H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+F8H] vmovdqu xmmword ptr [rsp+A0H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+90H] vmovdqu xmmword ptr [rsp+B0H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+A0H] vmovdqu xmmword ptr [rsp+C0H], xmm0 lea r8, bword ptr [rsp+D0H] mov qword ptr [r8], rdx mov qword ptr [r8+8], rcx mov qword ptr [r8+16], rax vmovdqu xmm0, xmmword ptr [rsp+B0H] vmovdqu xmmword ptr [rbx], xmm0 vmovdqu xmm0, xmmword ptr [rsp+C0H] vmovdqu xmmword ptr [rbx+16], xmm0 vmovdqu xmm0, xmmword ptr [rsp+D0H] vmovdqu xmmword ptr [rbx+32], xmm0 mov rax, qword ptr [rsp+E0H] mov qword ptr [rbx+48], rax mov rax, rbx ;; bbWeight=1 PerfScore 36.33 G_M19746_IG04: add rsp, 432 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 632, prolog size 88, PerfScore 241.47, (MethodHash=caa2b2dd) for method Engine:GetExtraStats(IterationData):ValueTuple`2:this ; ============================================================ ; Assembly listing for method Engine:EnableMonitoring() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M2210_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M2210_IG02: call RuntimeInformation:get_IsFullFramework():bool nop ;; bbWeight=1 PerfScore 1.25 G_M2210_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 15, prolog size 4, PerfScore 4.25, (MethodHash=d235f75d) for method Engine:EnableMonitoring() ; ============================================================ ; Assembly listing for method ThreadingStats:ReadInitial():ThreadingStats ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T00] ( 6, 6 ) byref -> rsi ; V01 loc0 [V01,T04] ( 2, 2 ) long -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (24) zero-ref "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 2, 4 ) long -> rax "Inlining Arg" ;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V06 tmp4 [V06,T05] ( 2, 2 ) long -> rax V03.k__BackingField(offs=0x00) P-INDEP "field V03.k__BackingField (fldOffset=0x0)" ; V07 tmp5 [V07,T06] ( 2, 2 ) long -> rdi V03.k__BackingField(offs=0x08) P-INDEP "field V03.k__BackingField (fldOffset=0x8)" ;* V08 tmp6 [V08,T07] ( 0, 0 ) long -> zero-ref V03.k__BackingField(offs=0x10) P-INDEP "field V03.k__BackingField (fldOffset=0x10)" ;* V09 cse0 [V09,T08] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; V10 rat0 [V10,T01] ( 3, 6 ) ref -> rax "delegate invoke call" ; V11 rat1 [V11,T02] ( 3, 6 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 40 G_M47095_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M47095_IG02: mov rcx, 0xD1FFAB1E mov edx, 402 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`1:Invoke():long:this mov rdi, rax mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`1:Invoke():long:this mov qword ptr [rsi], rax mov qword ptr [rsi+8], rdi xor rax, rax mov qword ptr [rsi+16], rax mov rax, rsi ;; bbWeight=1 PerfScore 19.75 G_M47095_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 95, prolog size 6, PerfScore 34.00, (MethodHash=618c4808) for method ThreadingStats:ReadInitial():ThreadingStats ; ============================================================ ; Assembly listing for method ThreadingStats:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) struct ( 8) [rbp-0x08] do-not-enreg[SB] must-init "struct address for call/obj" ; V02 tmp2 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[SB] must-init "struct address for call/obj" ; V03 tmp3 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] must-init "argument with side effect" ; V04 tmp4 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] must-init "argument with side effect" ; ; Lcl frame size = 64 G_M57065_IG01: push rbp sub rsp, 64 lea rbp, [rsp+40H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 vmovdqa xmmword ptr [rbp-10H], xmm4 ;; bbWeight=1 PerfScore 4.08 G_M57065_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPEHANDLE mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call Type:GetTypeFromHandle(RuntimeTypeHandle):Type mov gword ptr [rbp-18H], rax mov rcx, gword ptr [rbp-18H] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call ThreadingStats:CreateGetterDelegate(Type,String):Func`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPEHANDLE mov gword ptr [rbp-10H], rax mov rcx, gword ptr [rbp-10H] call Type:GetTypeFromHandle(RuntimeTypeHandle):Type mov gword ptr [rbp-20H], rax mov rcx, gword ptr [rbp-20H] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call ThreadingStats:CreateGetterDelegate(Type,String):Func`1 mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 22.25 G_M57065_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 175, prolog size 24, PerfScore 46.13, (MethodHash=1ca22116) for method ThreadingStats:.cctor() ; ============================================================ ; Assembly listing for method ThreadingStats:CreateGetterDelegate(Type,String):Func`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rcx class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd ; V02 loc0 [V02,T03] ( 4, 3 ) ref -> rax class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T06] ( 4, 2 ) ref -> rax ; V05 tmp2 [V05,T07] ( 2, 2 ) ref -> rax class-hnd "dup spill" ; V06 tmp3 [V06,T01] ( 5, 5 ) ref -> rsi class-hnd exact "NewObj constructor temp" ;* V07 tmp4 [V07,T10] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ; V08 tmp5 [V08,T04] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V10 tmp7 [V10,T05] ( 3, 3 ) ref -> rsi "argument with side effect" ; V11 tmp8 [V11,T08] ( 2, 2 ) ref -> rdx "argument with side effect" ; V12 tmp9 [V12,T09] ( 2, 2 ) ref -> rdx "argument with side effect" ;* V13 cse0 [V13,T11] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 32 G_M5844_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M5844_IG02: cmp dword ptr [rcx], ecx mov r8d, 28 mov rax, 0xD1FFAB1E call gword ptr [rax]Type:GetProperty(String,int):PropertyInfo:this test rax, rax jne G_M5844_IG06 ;; bbWeight=1 PerfScore 6.75 G_M5844_IG03: mov rcx, 0xD1FFAB1E mov edx, 961 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] test rax, rax jne G_M5844_IG07 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M5844_IG09 ;; bbWeight=0.50 PerfScore 5.00 G_M5844_IG04: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rsi+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, rsi ;; bbWeight=0.50 PerfScore 2.25 G_M5844_IG05: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M5844_IG06: mov rcx, rax xor edx, edx mov rax, qword ptr [rax] mov rax, qword ptr [rax+88] call gword ptr [rax+8]PropertyInfo:GetGetMethod(bool):MethodInfo:this mov rsi, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdx, rax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+104] call gword ptr [rax+16]MethodInfo:CreateDelegate(Type):Delegate:this mov rdx, rax mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTANY ;; bbWeight=0.50 PerfScore 9.00 G_M5844_IG07: nop ;; bbWeight=0.50 PerfScore 0.13 G_M5844_IG08: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M5844_IG09: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 246, prolog size 5, PerfScore 50.73, (MethodHash=d496e92b) for method ThreadingStats:CreateGetterDelegate(Type,String):Func`1 ; ============================================================ ; Assembly listing for method Type:GetProperty(String,int):PropertyInfo:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) int -> r8 ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (56) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T04] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 64 G_M51085_IG01: push rsi sub rsp, 64 ;; bbWeight=1 PerfScore 1.25 G_M51085_IG02: test rdx, rdx je SHORT G_M51085_IG05 ;; bbWeight=1 PerfScore 1.25 G_M51085_IG03: xor r9, r9 mov gword ptr [rsp+20H], r9 mov gword ptr [rsp+28H], r9 mov gword ptr [rsp+30H], r9 mov rax, qword ptr [rcx] mov rax, qword ptr [rax+136] call gword ptr [rax+56]Type:GetPropertyImpl(String,int,Binder,Type,ref,ref):PropertyInfo:this nop ;; bbWeight=1 PerfScore 10.50 G_M51085_IG04: add rsp, 64 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M51085_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 839 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 106, prolog size 5, PerfScore 25.35, (MethodHash=17833872) for method Type:GetProperty(String,int):PropertyInfo:this ; ============================================================ ; Assembly listing for method RuntimePropertyInfo:GetGetMethod(bool):MethodInfo:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) bool -> rdx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M6578_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M6578_IG02: mov rcx, gword ptr [rsi+24] movzx rdx, dl call Associates:IncludeAccessor(MethodInfo,bool):bool test eax, eax jne SHORT G_M6578_IG05 ;; bbWeight=1 PerfScore 4.50 G_M6578_IG03: xor rax, rax ;; bbWeight=0.50 PerfScore 0.13 G_M6578_IG04: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M6578_IG05: mov rax, gword ptr [rsi+24] ;; bbWeight=0.50 PerfScore 1.00 G_M6578_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 42, prolog size 5, PerfScore 13.08, (MethodHash=32cfe64d) for method RuntimePropertyInfo:GetGetMethod(bool):MethodInfo:this ; ============================================================ ; Assembly listing for method Monitor:get_LockContentionCount():long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T01] ( 2, 4 ) long -> rax "Single return block return value" ; V02 FramesRoot [V02,T00] ( 6, 6 ) long -> rsi "Pinvoke FrameListRoot" ; V03 PInvokeFrame [V03 ] ( 8, 8 ) blk (72) [rbp-0x80] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 104 G_M7101_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 104 lea rbp, [rsp+A0H] ;; bbWeight=1 PerfScore 8.75 G_M7101_IG02: lea rcx, [rbp-78H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rsi, rax mov rax, rsp mov qword ptr [rbp-58H], rax mov rax, rbp mov qword ptr [rbp-48H], rax mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M7101_IG05 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [rsi+16], rax mov byte ptr [rsi+12], 0 ;; bbWeight=1 PerfScore 10.25 G_M7101_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M7101_IG04: call qword ptr [rax]Monitor:GetLockContentionCount():long ;; bbWeight=1 PerfScore 3.00 G_M7101_IG05: mov byte ptr [rsi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M7101_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M7101_IG06: mov rdx, bword ptr [rbp-70H] mov qword ptr [rsi+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M7101_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 158, prolog size 24, PerfScore 53.05, (MethodHash=4155e442) for method Monitor:get_LockContentionCount():long ; ============================================================ ; Assembly listing for method ThreadPool:get_CompletedWorkItemCount():long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T01] ( 2, 4 ) long -> rax "Single return block return value" ; V02 FramesRoot [V02,T00] ( 6, 6 ) long -> rsi "Pinvoke FrameListRoot" ; V03 PInvokeFrame [V03 ] ( 8, 8 ) blk (72) [rbp-0x80] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 104 G_M63600_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 104 lea rbp, [rsp+A0H] ;; bbWeight=1 PerfScore 8.75 G_M63600_IG02: lea rcx, [rbp-78H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rsi, rax mov rax, rsp mov qword ptr [rbp-58H], rax mov rax, rbp mov qword ptr [rbp-48H], rax mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M63600_IG05 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [rsi+16], rax mov byte ptr [rsi+12], 0 ;; bbWeight=1 PerfScore 10.25 G_M63600_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M63600_IG04: call qword ptr [rax]ThreadPool:GetCompletedWorkItemCount():long ;; bbWeight=1 PerfScore 3.00 G_M63600_IG05: mov byte ptr [rsi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M63600_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M63600_IG06: mov rdx, bword ptr [rbp-70H] mov qword ptr [rsi+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M63600_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 158, prolog size 24, PerfScore 53.05, (MethodHash=408c078f) for method ThreadPool:get_CompletedWorkItemCount():long ; ============================================================ ; Assembly listing for method GcStats:ReadInitial():GcStats ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T01] ( 4, 4 ) byref -> rsi ; V01 loc0 [V01,T05] ( 2, 2 ) long -> rdi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) int -> rbx "impAppendStmt" ; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rbp "impAppendStmt" ; V05 tmp3 [V05,T00] ( 7, 14 ) struct (32) [rsp+0x28] do-not-enreg[SFB] "NewObj constructor temp" ; V06 tmp4 [V06,T04] ( 2, 4 ) int -> rax "Inlining Arg" ;* V07 tmp5 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 72 G_M32631_IG01: push rdi push rsi push rbp push rbx sub rsp, 72 vzeroupper mov rsi, rcx ;; bbWeight=1 PerfScore 5.50 G_M32631_IG02: call GcStats:GetAllocatedBytes():long mov rdi, rax xor ecx, ecx call GC:CollectionCount(int):int mov ebx, eax mov ecx, 1 call GC:CollectionCount(int):int mov ebp, eax vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+28H], xmm0 vmovdqu xmmword ptr [rsp+38H], xmm0 mov ecx, 2 call GC:CollectionCount(int):int mov dword ptr [rsp+28H], ebx mov dword ptr [rsp+2CH], ebp mov dword ptr [rsp+30H], eax mov qword ptr [rsp+38H], rdi xor rax, rax mov qword ptr [rsp+40H], rax vmovdqu xmm0, xmmword ptr [rsp+28H] vmovdqu xmmword ptr [rsi], xmm0 vmovdqu xmm0, xmmword ptr [rsp+38H] vmovdqu xmmword ptr [rsi+16], xmm0 mov rax, rsi ;; bbWeight=1 PerfScore 17.33 G_M32631_IG03: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 126, prolog size 11, PerfScore 39.38, (MethodHash=cb448088) for method GcStats:ReadInitial():GcStats ; ============================================================ ; Assembly listing for method GcStats:GetAllocatedBytes():long ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T04] ( 2, 2 ) ref -> rcx class-hnd "Inlining Arg" ; V02 tmp2 [V02,T01] ( 4, 5 ) long -> rax "Single return block return value" ; V03 FramesRoot [V03,T00] ( 6, 6 ) long -> rsi "Pinvoke FrameListRoot" ; V04 PInvokeFrame [V04 ] ( 8, 8 ) blk (72) [rbp-0x80] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; V05 cse0 [V05,T05] ( 3, 1.50) ref -> rax "CSE - moderate" ; V06 rat0 [V06,T02] ( 3, 3 ) ref -> rax "delegate invoke call" ; V07 rat1 [V07,T03] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 104 G_M21698_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 104 lea rbp, [rsp+A0H] ;; bbWeight=1 PerfScore 8.75 G_M21698_IG02: lea rcx, [rbp-78H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rsi, rax mov rcx, rsp mov qword ptr [rbp-58H], rcx mov rcx, rbp mov qword ptr [rbp-48H], rcx mov ecx, -1 mov edx, 2 mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M21698_IG05 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [rsi+16], rax mov byte ptr [rsi+12], 0 ;; bbWeight=1 PerfScore 10.75 G_M21698_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M21698_IG04: call qword ptr [rax]GC:_Collect(int,int) ;; bbWeight=1 PerfScore 3.00 G_M21698_IG05: mov byte ptr [rsi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M21698_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M21698_IG06: mov rax, bword ptr [rbp-70H] mov qword ptr [rsi+16], rax call RuntimeInformation:get_IsFullFramework():bool test eax, eax je SHORT G_M21698_IG08 ;; bbWeight=1 PerfScore 4.25 G_M21698_IG07: mov rcx, 0xD1FFAB1E mov edx, 203 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] cmp dword ptr [rcx], ecx xor ecx, ecx call GC:GetTotalAllocatedBytes(bool):long jmp SHORT G_M21698_IG10 ;; bbWeight=0.50 PerfScore 4.50 G_M21698_IG08: mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] test rax, rax je SHORT G_M21698_IG09 mov rcx, gword ptr [rax+8] mov edx, 1 call qword ptr [rax+24]Func`2:Invoke(bool):long:this jmp SHORT G_M21698_IG10 ;; bbWeight=0.50 PerfScore 5.38 G_M21698_IG09: mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`1:Invoke():long:this ;; bbWeight=0.50 PerfScore 3.63 G_M21698_IG10: nop ;; bbWeight=1 PerfScore 0.25 G_M21698_IG11: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 274, prolog size 24, PerfScore 81.15, (MethodHash=715eab3d) for method GcStats:GetAllocatedBytes():long ; ============================================================ ; Assembly listing for method GC:CollectionCount(int):int ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) int -> rcx ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 0 ) ref -> rcx "argument with side effect" ; V04 tmp3 [V04,T03] ( 2, 0 ) ref -> rdi "argument with side effect" ; V05 tmp4 [V05,T04] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M58058_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M58058_IG02: test ecx, ecx jl SHORT G_M58058_IG05 ;; bbWeight=1 PerfScore 1.25 G_M58058_IG03: xor edx, edx ;; bbWeight=1 PerfScore 0.25 G_M58058_IG04: add rsp, 40 pop rsi pop rdi jmp GC:_CollectionCount(int,int):int ;; bbWeight=1 PerfScore 3.25 G_M58058_IG05: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x130F mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x99BF mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rcx, rax xor rdx, rdx call SR:GetResourceString(String,String):String mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 117, prolog size 6, PerfScore 18.70, (MethodHash=feac1d35) for method GC:CollectionCount(int):int ; ============================================================ ; Assembly listing for method GcStats:ReadFinal():GcStats ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T01] ( 4, 4 ) byref -> rsi ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 2, 4 ) int -> rdi "impAppendStmt" ; V03 tmp2 [V03,T03] ( 2, 4 ) int -> rbx "impAppendStmt" ; V04 tmp3 [V04,T04] ( 2, 4 ) int -> rbp "impAppendStmt" ; V05 tmp4 [V05,T00] ( 7, 14 ) struct (32) [rsp+0x28] do-not-enreg[SFB] "NewObj constructor temp" ; V06 tmp5 [V06,T05] ( 2, 4 ) long -> rax "Inlining Arg" ;* V07 tmp6 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 72 G_M11461_IG01: push rdi push rsi push rbp push rbx sub rsp, 72 vzeroupper mov rsi, rcx ;; bbWeight=1 PerfScore 5.50 G_M11461_IG02: xor ecx, ecx call GC:CollectionCount(int):int mov edi, eax mov ecx, 1 call GC:CollectionCount(int):int mov ebx, eax mov ecx, 2 call GC:CollectionCount(int):int mov ebp, eax vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+28H], xmm0 vmovdqu xmmword ptr [rsp+38H], xmm0 call GcStats:GetAllocatedBytes():long mov dword ptr [rsp+28H], edi mov dword ptr [rsp+2CH], ebx mov dword ptr [rsp+30H], ebp mov qword ptr [rsp+38H], rax xor rax, rax mov qword ptr [rsp+40H], rax vmovdqu xmm0, xmmword ptr [rsp+28H] vmovdqu xmmword ptr [rsi], xmm0 vmovdqu xmm0, xmmword ptr [rsp+38H] vmovdqu xmmword ptr [rsi+16], xmm0 mov rax, rsi ;; bbWeight=1 PerfScore 17.33 G_M11461_IG03: add rsp, 72 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 125, prolog size 11, PerfScore 39.28, (MethodHash=dc50d33a) for method GcStats:ReadFinal():GcStats ; ============================================================ ; Assembly listing for method ThreadingStats:ReadFinal():ThreadingStats ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T00] ( 6, 6 ) byref -> rsi ; V01 loc0 [V01,T04] ( 2, 2 ) long -> rax ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T03] ( 2, 4 ) long -> rdi "non-inline candidate call" ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (24) zero-ref "NewObj constructor temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V06 tmp4 [V06,T05] ( 2, 2 ) long -> rdi V04.k__BackingField(offs=0x00) P-INDEP "field V04.k__BackingField (fldOffset=0x0)" ; V07 tmp5 [V07,T06] ( 2, 2 ) long -> rax V04.k__BackingField(offs=0x08) P-INDEP "field V04.k__BackingField (fldOffset=0x8)" ;* V08 tmp6 [V08,T07] ( 0, 0 ) long -> zero-ref V04.k__BackingField(offs=0x10) P-INDEP "field V04.k__BackingField (fldOffset=0x10)" ; V09 rat0 [V09,T01] ( 3, 6 ) ref -> rax "delegate invoke call" ; V10 rat1 [V10,T02] ( 3, 6 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 40 G_M50373_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M50373_IG02: mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`1:Invoke():long:this mov rdi, rax mov rcx, 0xD1FFAB1E mov rax, gword ptr [rcx] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`1:Invoke():long:this mov qword ptr [rsi], rdi mov qword ptr [rsi+8], rax xor rax, rax mov qword ptr [rsi+16], rax mov rax, rsi ;; bbWeight=1 PerfScore 18.25 G_M50373_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 75, prolog size 6, PerfScore 30.50, (MethodHash=c6983b3a) for method ThreadingStats:ReadFinal():ThreadingStats ; ============================================================ ; Assembly listing for method GcStats:op_Subtraction(GcStats,GcStats):GcStats ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T03] ( 4, 4 ) byref -> rcx ; V01 arg0 [V01,T00] ( 7, 14 ) byref -> rdx ld-addr-op ; V02 arg1 [V02,T01] ( 7, 14 ) byref -> r8 ld-addr-op ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T09] ( 2, 4 ) int -> rax "impAppendStmt" ; V05 tmp2 [V05,T10] ( 2, 4 ) int -> rax "impAppendStmt" ; V06 tmp3 [V06,T11] ( 2, 4 ) int -> r9 "impAppendStmt" ; V07 tmp4 [V07,T12] ( 2, 4 ) int -> r9 "impAppendStmt" ; V08 tmp5 [V08,T13] ( 2, 4 ) int -> r10 "impAppendStmt" ; V09 tmp6 [V09,T14] ( 2, 4 ) int -> r10 "impAppendStmt" ; V10 tmp7 [V10,T15] ( 2, 4 ) long -> r11 "impAppendStmt" ; V11 tmp8 [V11,T16] ( 2, 4 ) long -> r11 "impAppendStmt" ; V12 tmp9 [V12,T17] ( 2, 4 ) long -> rdx "impAppendStmt" ; V13 tmp10 [V13,T02] ( 7, 14 ) struct (32) [rsp+0x08] do-not-enreg[SFB] "NewObj constructor temp" ; V14 tmp11 [V14,T18] ( 3, 2 ) int -> rax "Inline return value spill temp" ; V15 tmp12 [V15,T04] ( 3, 5 ) int -> rax "Inlining Arg" ; V16 tmp13 [V16,T19] ( 3, 2 ) int -> r9 "Inline return value spill temp" ; V17 tmp14 [V17,T05] ( 3, 5 ) int -> r9 "Inlining Arg" ; V18 tmp15 [V18,T20] ( 3, 2 ) int -> r10 "Inline return value spill temp" ; V19 tmp16 [V19,T06] ( 3, 5 ) int -> r10 "Inlining Arg" ; V20 tmp17 [V20,T21] ( 3, 2 ) long -> r11 "Inline return value spill temp" ;* V21 tmp18 [V21,T23] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V22 tmp19 [V22,T07] ( 3, 5 ) long -> r11 "Inlining Arg" ; V23 tmp20 [V23,T22] ( 3, 2 ) long -> rdx "Inline return value spill temp" ;* V24 tmp21 [V24,T24] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V25 tmp22 [V25,T08] ( 3, 5 ) long -> rdx "Inlining Arg" ; ; Lcl frame size = 40 G_M41867_IG01: sub rsp, 40 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M41867_IG02: mov eax, dword ptr [rdx] sub eax, dword ptr [r8] test eax, eax jle SHORT G_M41867_IG04 ;; bbWeight=1 PerfScore 5.25 G_M41867_IG03: jmp SHORT G_M41867_IG05 ;; bbWeight=0.50 PerfScore 1.00 G_M41867_IG04: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M41867_IG05: mov r9d, dword ptr [rdx+4] sub r9d, dword ptr [r8+4] test r9d, r9d jle SHORT G_M41867_IG07 ;; bbWeight=1 PerfScore 5.25 G_M41867_IG06: jmp SHORT G_M41867_IG08 ;; bbWeight=0.50 PerfScore 1.00 G_M41867_IG07: xor r9d, r9d ;; bbWeight=0.50 PerfScore 0.13 G_M41867_IG08: mov r10d, dword ptr [rdx+8] sub r10d, dword ptr [r8+8] test r10d, r10d jle SHORT G_M41867_IG10 ;; bbWeight=1 PerfScore 5.25 G_M41867_IG09: jmp SHORT G_M41867_IG11 ;; bbWeight=0.50 PerfScore 1.00 G_M41867_IG10: xor r10d, r10d ;; bbWeight=0.50 PerfScore 0.13 G_M41867_IG11: mov r11, qword ptr [rdx+16] sub r11, qword ptr [r8+16] test r11, r11 jle SHORT G_M41867_IG13 ;; bbWeight=1 PerfScore 5.25 G_M41867_IG12: jmp SHORT G_M41867_IG14 ;; bbWeight=0.50 PerfScore 1.00 G_M41867_IG13: xor r11, r11 ;; bbWeight=0.50 PerfScore 0.13 G_M41867_IG14: mov rdx, qword ptr [rdx+24] sub rdx, qword ptr [r8+24] test rdx, rdx jle SHORT G_M41867_IG16 ;; bbWeight=1 PerfScore 5.25 G_M41867_IG15: jmp SHORT G_M41867_IG17 ;; bbWeight=0.50 PerfScore 1.00 G_M41867_IG16: xor rdx, rdx ;; bbWeight=0.50 PerfScore 0.13 G_M41867_IG17: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+08H], xmm0 vmovdqu xmmword ptr [rsp+18H], xmm0 mov dword ptr [rsp+08H], eax mov dword ptr [rsp+0CH], r9d mov dword ptr [rsp+10H], r10d mov qword ptr [rsp+18H], r11 mov qword ptr [rsp+20H], rdx vmovdqu xmm0, xmmword ptr [rsp+08H] vmovdqu xmmword ptr [rcx], xmm0 vmovdqu xmm0, xmmword ptr [rsp+18H] vmovdqu xmmword ptr [rcx+16], xmm0 mov rax, rcx ;; bbWeight=1 PerfScore 11.58 G_M41867_IG18: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 160, prolog size 7, PerfScore 62.66, (MethodHash=528e5c74) for method GcStats:op_Subtraction(GcStats,GcStats):GcStats ; ============================================================ ; Assembly listing for method GcStats:WithTotalOperations(long):GcStats:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this ; V01 RetBuf [V01,T00] ( 4, 4 ) byref -> rsi ; V02 arg1 [V02,T03] ( 3, 3 ) long -> r8 ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 3, 6 ) struct (32) [rsp+0x80] do-not-enreg[SFB] "NewObj constructor temp" ; V05 tmp2 [V05,T05] ( 2, 4 ) struct (32) [rsp+0x60] do-not-enreg[SB] "impAppendStmt" ;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V07 tmp4 [V07 ] ( 2, 4 ) struct (32) [rsp+0x40] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V08 tmp5 [V08 ] ( 2, 4 ) struct (32) [rsp+0x20] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V09 tmp6 [V09,T04] ( 2, 4 ) byref -> rcx "argument with side effect" ; ; Lcl frame size = 160 G_M3627_IG01: push rsi sub rsp, 160 vzeroupper mov rsi, rdx ;; bbWeight=1 PerfScore 2.50 G_M3627_IG02: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+80H], xmm0 vmovdqu xmmword ptr [rsp+90H], xmm0 vmovdqu xmm0, xmmword ptr [rcx] vmovdqu xmmword ptr [rsp+60H], xmm0 vmovdqu xmm0, xmmword ptr [rcx+16] vmovdqu xmmword ptr [rsp+70H], xmm0 mov qword ptr [rsp+98H], r8 mov rcx, rsi vmovdqu xmm0, xmmword ptr [rsp+60H] vmovdqu xmmword ptr [rsp+40H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+70H] vmovdqu xmmword ptr [rsp+50H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+80H] vmovdqu xmmword ptr [rsp+20H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+90H] vmovdqu xmmword ptr [rsp+30H], xmm0 lea rdx, bword ptr [rsp+40H] lea r8, bword ptr [rsp+20H] call GcStats:op_Addition(GcStats,GcStats):GcStats mov rax, rsi ;; bbWeight=1 PerfScore 19.83 G_M3627_IG03: add rsp, 160 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 149, prolog size 11, PerfScore 40.48, (MethodHash=3cd4f1d4) for method GcStats:WithTotalOperations(long):GcStats:this ; ============================================================ ; Assembly listing for method GcStats:op_Addition(GcStats,GcStats):GcStats ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T03] ( 4, 4 ) byref -> rcx ; V01 arg0 [V01,T00] ( 7, 14 ) byref -> rdx ld-addr-op ; V02 arg1 [V02,T01] ( 7, 14 ) byref -> r8 ld-addr-op ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 4 ) int -> rax "impAppendStmt" ; V05 tmp2 [V05,T05] ( 2, 4 ) int -> rax "impAppendStmt" ; V06 tmp3 [V06,T06] ( 2, 4 ) int -> r9 "impAppendStmt" ; V07 tmp4 [V07,T07] ( 2, 4 ) int -> r9 "impAppendStmt" ; V08 tmp5 [V08,T08] ( 2, 4 ) int -> r10 "impAppendStmt" ; V09 tmp6 [V09,T09] ( 2, 4 ) int -> r10 "impAppendStmt" ; V10 tmp7 [V10,T10] ( 2, 4 ) long -> r11 "impAppendStmt" ; V11 tmp8 [V11,T11] ( 2, 4 ) long -> r11 "impAppendStmt" ; V12 tmp9 [V12,T12] ( 2, 4 ) long -> rdx "impAppendStmt" ; V13 tmp10 [V13,T02] ( 7, 14 ) struct (32) [rsp+0x08] do-not-enreg[SFB] "NewObj constructor temp" ; V14 tmp11 [V14,T13] ( 2, 4 ) long -> rdx "Inlining Arg" ; ; Lcl frame size = 40 G_M11267_IG01: sub rsp, 40 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M11267_IG02: mov eax, dword ptr [rdx] add eax, dword ptr [r8] mov r9d, dword ptr [rdx+4] add r9d, dword ptr [r8+4] mov r10d, dword ptr [rdx+8] add r10d, dword ptr [r8+8] mov r11, qword ptr [rdx+16] add r11, qword ptr [r8+16] mov rdx, qword ptr [rdx+24] vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+08H], xmm0 vmovdqu xmmword ptr [rsp+18H], xmm0 add rdx, qword ptr [r8+24] mov dword ptr [rsp+08H], eax mov dword ptr [rsp+0CH], r9d mov dword ptr [rsp+10H], r10d mov qword ptr [rsp+18H], r11 mov qword ptr [rsp+20H], rdx vmovdqu xmm0, xmmword ptr [rsp+08H] vmovdqu xmmword ptr [rcx], xmm0 vmovdqu xmm0, xmmword ptr [rsp+18H] vmovdqu xmmword ptr [rcx+16], xmm0 mov rax, rcx ;; bbWeight=1 PerfScore 31.58 G_M11267_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 113, prolog size 7, PerfScore 46.08, (MethodHash=1c00d3fc) for method GcStats:op_Addition(GcStats,GcStats):GcStats ; ============================================================ ; Assembly listing for method ThreadingStats:op_Subtraction(ThreadingStats,ThreadingStats):ThreadingStats ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T02] ( 6, 6 ) byref -> rcx ; V01 arg0 [V01,T00] ( 5, 10 ) byref -> rdx ld-addr-op ; V02 arg1 [V02,T01] ( 5, 10 ) byref -> r8 ld-addr-op ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) long -> rax "impAppendStmt" ; V05 tmp2 [V05,T04] ( 2, 4 ) long -> rax "impAppendStmt" ; V06 tmp3 [V06,T05] ( 2, 4 ) long -> r9 "impAppendStmt" ; V07 tmp4 [V07,T06] ( 2, 4 ) long -> r9 "impAppendStmt" ; V08 tmp5 [V08,T07] ( 2, 4 ) long -> rdx "impAppendStmt" ;* V09 tmp6 [V09 ] ( 0, 0 ) struct (24) zero-ref "NewObj constructor temp" ; V10 tmp7 [V10,T08] ( 2, 4 ) long -> rdx "Inlining Arg" ;* V11 tmp8 [V11 ] ( 0, 0 ) long -> zero-ref V20.k__BackingField(offs=0x00) P-INDEP "field V01.k__BackingField (fldOffset=0x0)" ;* V12 tmp9 [V12 ] ( 0, 0 ) long -> zero-ref V20.k__BackingField(offs=0x08) P-INDEP "field V01.k__BackingField (fldOffset=0x8)" ;* V13 tmp10 [V13 ] ( 0, 0 ) long -> zero-ref V20.k__BackingField(offs=0x10) P-INDEP "field V01.k__BackingField (fldOffset=0x10)" ;* V14 tmp11 [V14 ] ( 0, 0 ) long -> zero-ref V21.k__BackingField(offs=0x00) P-INDEP "field V02.k__BackingField (fldOffset=0x0)" ;* V15 tmp12 [V15 ] ( 0, 0 ) long -> zero-ref V21.k__BackingField(offs=0x08) P-INDEP "field V02.k__BackingField (fldOffset=0x8)" ;* V16 tmp13 [V16 ] ( 0, 0 ) long -> zero-ref V21.k__BackingField(offs=0x10) P-INDEP "field V02.k__BackingField (fldOffset=0x10)" ; V17 tmp14 [V17,T09] ( 2, 2 ) long -> rax V09.k__BackingField(offs=0x00) P-INDEP "field V09.k__BackingField (fldOffset=0x0)" ; V18 tmp15 [V18,T10] ( 2, 2 ) long -> r9 V09.k__BackingField(offs=0x08) P-INDEP "field V09.k__BackingField (fldOffset=0x8)" ; V19 tmp16 [V19,T11] ( 2, 2 ) long -> rdx V09.k__BackingField(offs=0x10) P-INDEP "field V09.k__BackingField (fldOffset=0x10)" ;* V20 tmp17 [V20 ] ( 0, 0 ) struct (24) zero-ref "Promoted implicit byref" ;* V21 tmp18 [V21 ] ( 0, 0 ) struct (24) zero-ref "Promoted implicit byref" ; ; Lcl frame size = 0 G_M11691_IG01: ;; bbWeight=1 PerfScore 0.00 G_M11691_IG02: mov rax, qword ptr [rdx] sub rax, qword ptr [r8] mov r9, qword ptr [rdx+8] sub r9, qword ptr [r8+8] mov rdx, qword ptr [rdx+16] sub rdx, qword ptr [r8+16] mov qword ptr [rcx], rax mov qword ptr [rcx+8], r9 mov qword ptr [rcx+16], rdx mov rax, rcx ;; bbWeight=1 PerfScore 15.25 G_M11691_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 37, prolog size 0, PerfScore 19.95, (MethodHash=292ad254) for method ThreadingStats:op_Subtraction(ThreadingStats,ThreadingStats):ThreadingStats ; ============================================================ ; Assembly listing for method ConsoleHost:ReportResults(RunResults):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 3, 6 ) byref -> rax ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M50221_IG01: mov rax, rdx ;; bbWeight=1 PerfScore 0.25 G_M50221_IG02: mov rdx, gword ptr [rcx+8] mov rcx, rax ;; bbWeight=1 PerfScore 2.25 G_M50221_IG03: jmp RunResults:Print(TextWriter):this ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 15, prolog size 3, PerfScore 6.00, (MethodHash=3f053bd2) for method ConsoleHost:ReportResults(RunResults):this ; ============================================================ ; Assembly listing for method RunResults:Print(TextWriter):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T03] ( 7, 6 ) byref -> rdi this ; V01 arg1 [V01,T00] ( 10, 14 ) ref -> rsi class-hnd ; V02 loc0 [V02,T02] ( 7, 11 ) ref -> [rbp-0xA8] EH do-not-enreg[] class-hnd EH-live ; V03 loc1 [V03 ] ( 2, 8 ) struct (32) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V04 loc2 [V04 ] ( 4, 3 ) struct (32) [rbp-0x50] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V05 loc3 [V05 ] ( 4, 3 ) struct (24) [rbp-0x68] do-not-enreg[XSB] must-init addr-exposed ld-addr-op ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (24) zero-ref "struct address for call/obj" ;* V08 tmp2 [V08 ] ( 0, 0 ) struct (24) zero-ref "NewObj constructor temp" ;* V09 tmp3 [V09 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V12 tmp6 [V12 ] ( 4, 3 ) long -> [rbp-0x68] do-not-enreg[X] addr-exposed V05.k__BackingField(offs=0x00) P-DEP "field V05.k__BackingField (fldOffset=0x0)" ; V13 tmp7 [V13 ] ( 4, 3 ) long -> [rbp-0x60] do-not-enreg[X] addr-exposed V05.k__BackingField(offs=0x08) P-DEP "field V05.k__BackingField (fldOffset=0x8)" ; V14 tmp8 [V14 ] ( 4, 3 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed V05.k__BackingField(offs=0x10) P-DEP "field V05.k__BackingField (fldOffset=0x10)" ;* V15 tmp9 [V15,T12] ( 0, 0 ) long -> zero-ref V07.k__BackingField(offs=0x00) P-INDEP "field V07.k__BackingField (fldOffset=0x0)" ; V16 tmp10 [V16,T11] ( 2, 2 ) long -> rcx V07.k__BackingField(offs=0x08) P-INDEP "field V07.k__BackingField (fldOffset=0x8)" ; V17 tmp11 [V17,T08] ( 3, 3 ) long -> rdx V07.k__BackingField(offs=0x10) P-INDEP "field V07.k__BackingField (fldOffset=0x10)" ;* V18 tmp12 [V18,T13] ( 0, 0 ) long -> zero-ref V08.k__BackingField(offs=0x00) P-INDEP "field V08.k__BackingField (fldOffset=0x0)" ;* V19 tmp13 [V19,T14] ( 0, 0 ) long -> zero-ref V08.k__BackingField(offs=0x08) P-INDEP "field V08.k__BackingField (fldOffset=0x8)" ;* V20 tmp14 [V20,T15] ( 0, 0 ) long -> zero-ref V08.k__BackingField(offs=0x10) P-INDEP "field V08.k__BackingField (fldOffset=0x10)" ; V21 tmp15 [V21,T05] ( 2, 4 ) ref -> rcx "argument with side effect" ; V22 tmp16 [V22,T01] ( 2, 16 ) ref -> rdx "argument with side effect" ; V23 tmp17 [V23 ] ( 2, 4 ) struct (32) [rbp-0x88] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V24 tmp18 [V24,T06] ( 2, 4 ) byref -> rcx "argument with side effect" ; V25 tmp19 [V25,T09] ( 2, 2 ) ref -> rdx "argument with side effect" ; V26 tmp20 [V26 ] ( 2, 4 ) struct (24) [rbp-0xA0] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V27 tmp21 [V27,T04] ( 4, 8 ) byref -> r8 stack-byref "BlockOp address local" ; V28 tmp22 [V28,T07] ( 2, 4 ) byref -> rax "argument with side effect" ; V29 tmp23 [V29,T10] ( 2, 2 ) ref -> rdx "argument with side effect" ; V30 PSPSym [V30 ] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 192 G_M53165_IG01: push rbp push rdi push rsi sub rsp, 192 vzeroupper lea rbp, [rsp+D0H] xor rax, rax mov qword ptr [rbp-68H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-60H], xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 vmovdqa xmmword ptr [rbp-40H], xmm4 vmovdqa xmmword ptr [rbp-30H], xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 mov qword ptr [rbp-B0H], rsp mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 12.83 G_M53165_IG02: mov rcx, rdi call RunResults:GetMeasurements():IEnumerable`1:this mov rcx, rax mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-A8H], rax ;; bbWeight=1 PerfScore 6.00 G_M53165_IG03: mov rcx, gword ptr [rbp-A8H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M53165_IG05 ;; bbWeight=1 PerfScore 5.75 G_M53165_IG04: lea rdx, [rbp-30H] mov rcx, gword ptr [rbp-A8H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():Measurement:this lea rcx, bword ptr [rbp-30H] call Measurement:ToString():String:this mov rdx, rax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+104] call qword ptr [rax+48]TextWriter:WriteLine(String):this mov rcx, gword ptr [rbp-A8H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M53165_IG04 ;; bbWeight=4 PerfScore 79.00 G_M53165_IG05: mov rcx, gword ptr [rbp-A8H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this vmovdqu xmm0, xmmword ptr [rdi+24] vmovdqu xmmword ptr [rbp-50H], xmm0 vmovdqu xmm0, xmmword ptr [rdi+40] vmovdqu xmmword ptr [rbp-40H], xmm0 lea rcx, bword ptr [rbp-50H] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] vmovdqu xmm0, xmmword ptr [rdx+8] vmovdqu xmmword ptr [rbp-88H], xmm0 vmovdqu xmm0, xmmword ptr [rdx+24] vmovdqu xmmword ptr [rbp-78H], xmm0 lea rdx, bword ptr [rbp-88H] call GcStats:Equals(GcStats):bool:this test eax, eax jne SHORT G_M53165_IG07 ;; bbWeight=1 PerfScore 22.00 G_M53165_IG06: vmovdqu xmm0, xmmword ptr [rdi+24] vmovdqu xmmword ptr [rbp-50H], xmm0 vmovdqu xmm0, xmmword ptr [rdi+40] vmovdqu xmmword ptr [rbp-40H], xmm0 lea rcx, bword ptr [rbp-50H] call GcStats:ToOutputLine():String:this mov rdx, rax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+104] call qword ptr [rax+48]TextWriter:WriteLine(String):this ;; bbWeight=0.50 PerfScore 7.50 G_M53165_IG07: vmovdqu xmm0, xmmword ptr [rdi+56] vmovdqu xmmword ptr [rbp-68H], xmm0 mov rcx, qword ptr [rdi+72] mov qword ptr [rbp-58H], rcx xor rcx, rcx xor rdx, rdx lea rax, bword ptr [rbp-68H] lea r8, bword ptr [rbp-A0H] mov qword ptr [r8], rcx mov qword ptr [r8+8], rdx mov qword ptr [r8+16], rdx mov rcx, rax lea rdx, bword ptr [rbp-A0H] call ThreadingStats:Equals(ThreadingStats):bool:this test eax, eax jne SHORT G_M53165_IG09 ;; bbWeight=1 PerfScore 13.50 G_M53165_IG08: vmovdqu xmm0, xmmword ptr [rdi+56] vmovdqu xmmword ptr [rbp-68H], xmm0 mov rcx, qword ptr [rdi+72] mov qword ptr [rbp-58H], rcx lea rcx, bword ptr [rbp-68H] call ThreadingStats:ToOutputLine():String:this mov rdx, rax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+104] call qword ptr [rax+48]TextWriter:WriteLine(String):this ;; bbWeight=0.50 PerfScore 7.50 G_M53165_IG09: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+96] call qword ptr [rax+8]TextWriter:WriteLine():this nop ;; bbWeight=1 PerfScore 7.50 G_M53165_IG10: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 G_M53165_IG11: push rbp push rdi push rsi sub rsp, 48 vzeroupper mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+D0H] ;; bbWeight=0 PerfScore 0.00 G_M53165_IG12: cmp gword ptr [rbp-A8H], 0 je SHORT G_M53165_IG13 mov rcx, gword ptr [rbp-A8H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M53165_IG13: nop ;; bbWeight=0 PerfScore 0.00 G_M53165_IG14: add rsp, 48 pop rsi pop rdi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 585, prolog size 69, PerfScore 225.28, (MethodHash=f9403052) for method RunResults:Print(TextWriter):this ; ============================================================ ; Assembly listing for method RunResults:GetMeasurements():IEnumerable`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) byref -> rsi this ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 5, 10 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V04 tmp3 [V04,T03] ( 4, 3.25) ref -> rcx ; ; Lcl frame size = 32 G_M6253_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M6253_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov dword ptr [rbx+32], -2 mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M6253_IG04 ;; bbWeight=1 PerfScore 7.25 G_M6253_IG03: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M6253_IG04: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbx+36], eax lea rdi, bword ptr [rbx+160] call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF mov ecx, 8 rep movsq mov rax, rbx ;; bbWeight=1 PerfScore 32.00 G_M6253_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 118, prolog size 7, PerfScore 57.61, (MethodHash=b903e792) for method RunResults:GetMeasurements():IEnumerable`1:this ; ============================================================ ; Assembly listing for method d__14:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5.50) ref -> rsi this class-hnd ; V01 loc0 [V01,T02] ( 4, 3 ) ref -> rbx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 4, 4 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T05] ( 2, 2 ) int -> rdi "impAppendStmt" ; V05 tmp3 [V05,T03] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V06 tmp4 [V06,T06] ( 4, 1.75) ref -> rcx ; V07 tmp5 [V07,T04] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V08 tmp6 [V08,T07] ( 4, 1.75) ref -> rcx ; ; Lcl frame size = 32 G_M1745_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M1745_IG02: cmp dword ptr [rsi+32], -2 jne SHORT G_M1745_IG06 ;; bbWeight=1 PerfScore 3.00 G_M1745_IG03: mov edi, dword ptr [rsi+36] mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M1745_IG05 ;; bbWeight=0.50 PerfScore 3.38 G_M1745_IG04: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M1745_IG05: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this cmp eax, edi jne SHORT G_M1745_IG06 xor ecx, ecx mov dword ptr [rsi+32], ecx mov rbx, rsi jmp SHORT G_M1745_IG09 ;; bbWeight=0.50 PerfScore 3.88 G_M1745_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax xor ecx, ecx mov dword ptr [rbx+32], ecx mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M1745_IG08 ;; bbWeight=0.50 PerfScore 3.75 G_M1745_IG07: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M1745_IG08: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbx+36], eax ;; bbWeight=0.50 PerfScore 2.00 G_M1745_IG09: add rsi, 160 lea rdi, bword ptr [rbx+80] call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF mov ecx, 8 rep movsq mov rax, rbx ;; bbWeight=1 PerfScore 28.25 G_M1745_IG10: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 187, prolog size 7, PerfScore 69.83, (MethodHash=5293f92e) for method d__14:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method d__14:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 26, 21.75) ref -> [rbp+0x10] EH do-not-enreg[] this class-hnd EH-live ; V01 loc0 [V01,T10] ( 4, 2.50) bool -> rax ; V02 loc1 [V02,T11] ( 3, 2.50) int -> rcx ; V03 loc2 [V03 ] ( 5, 5.50) struct (32) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ; V04 loc3 [V04,T38] ( 4, 2 ) double -> mm0 ; V05 loc4 [V05,T28] ( 3, 1.50) int -> r11 ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T25] ( 3, 1.50) ref -> rdi ; V08 tmp2 [V08,T26] ( 3, 1.50) ref -> rdi ; V09 tmp3 [V09,T39] ( 3, 1.50) double -> mm0 ; V10 tmp4 [V10,T14] ( 2, 2 ) ref -> rbx class-hnd "dup spill" ; V11 tmp5 [V11,T15] ( 2, 2 ) ref -> rdi class-hnd "impAppendStmt" ; V12 tmp6 [V12,T29] ( 2, 1 ) ref -> r14 ; V13 tmp7 [V13,T30] ( 2, 1 ) ref -> rdi ; V14 tmp8 [V14,T12] ( 4, 2 ) ref -> rbx ; V15 tmp9 [V15,T05] ( 3, 3 ) ref -> r15 class-hnd exact "NewObj constructor temp" ; V16 tmp10 [V16,T02] ( 2, 8 ) ref -> rcx class-hnd "impAppendStmt" ; V17 tmp11 [V17,T23] ( 2, 2 ) int -> rcx "impSpillLclRefs" ; V18 tmp12 [V18,T01] ( 8, 8 ) struct (32) [rbp-0x68] do-not-enreg[SFB] "NewObj constructor temp" ; V19 tmp13 [V19,T03] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V20 tmp14 [V20,T16] ( 2, 2 ) ref -> r14 class-hnd "dup spill" ; V21 tmp15 [V21,T17] ( 2, 2 ) ref -> rbx class-hnd "impAppendStmt" ; V22 tmp16 [V22,T31] ( 2, 1 ) ref -> rdi ; V23 tmp17 [V23,T32] ( 2, 1 ) ref -> rbx ; V24 tmp18 [V24,T13] ( 4, 2 ) ref -> r14 ; V25 tmp19 [V25,T06] ( 3, 3 ) ref -> r15 class-hnd exact "NewObj constructor temp" ; V26 tmp20 [V26,T04] ( 5, 5 ) ref -> r14 class-hnd exact "NewObj constructor temp" ; V27 tmp21 [V27,T18] ( 2, 2 ) byref -> rcx "Inlining Arg" ;* V28 tmp22 [V28,T34] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V29 tmp23 [V29,T07] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V30 tmp24 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V31 tmp25 [V31,T19] ( 2, 2 ) byref -> rcx "Inlining Arg" ; V32 tmp26 [V32,T08] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V33 tmp27 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V34 tmp28 [V34,T20] ( 2, 2 ) byref -> rsi "Inlining Arg" ; V35 tmp29 [V35,T37] ( 5, 2.50) double -> mm0 "Inline return value spill temp" ; V36 tmp30 [V36,T36] ( 6, 5 ) double -> mm0 "Inlining Arg" ; V37 tmp31 [V37,T35] ( 2, 0.50) long -> rcx "Inline return value spill temp" ;* V38 tmp32 [V38 ] ( 0, 0 ) double -> zero-ref ld-addr-op "Inlining Arg" ; V39 tmp33 [V39,T40] ( 2, 0.50) simd16 -> mm1 "Inline stloc first use temp" ; V40 tmp34 [V40,T24] ( 2, 2 ) long -> rax "Inlining Arg" ; V41 tmp35 [V41,T21] ( 2, 2 ) ref -> rdx "argument with side effect" ; V42 tmp36 [V42,T22] ( 2, 2 ) ref -> rdx "argument with side effect" ; V43 PSPSym [V43 ] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[X] addr-exposed "PSPSym" ;* V44 tmp38 [V44 ] ( 0, 0 ) ref -> zero-ref "optAddCopies" ;* V45 cse0 [V45,T33] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; V46 cse1 [V46,T27] ( 3, 1.50) ref -> rbx "CSE - moderate" ; V47 cse2 [V47,T09] ( 4, 2 ) byref -> rsi "CSE - moderate" ; ; Lcl frame size = 104 G_M28947_IG01: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 104 vzeroupper lea rbp, [rsp+90H] xor rax, rax mov qword ptr [rbp-48H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-40H], xmm4 mov qword ptr [rbp-30H], rax mov qword ptr [rbp-70H], rsp mov gword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 13.33 G_M28947_IG02: mov rcx, gword ptr [rbp+10H] mov ecx, dword ptr [rcx+32] test ecx, ecx je SHORT G_M28947_IG04 ;; bbWeight=1 PerfScore 4.25 G_M28947_IG03: cmp ecx, 1 je G_M28947_IG21 xor eax, eax jmp G_M28947_IG26 ;; bbWeight=0.50 PerfScore 1.75 G_M28947_IG04: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+32], -1 mov rsi, gword ptr [rbp+10H] add rsi, 80 mov rcx, rsi mov rdi, gword ptr [rbp+10H] mov rbx, gword ptr [rcx] test rbx, rbx je G_M28947_IG07 mov rcx, 0xD1FFAB1E mov edx, 957 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov r14, gword ptr [rcx] test r14, r14 jne SHORT G_M28947_IG06 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r14, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M28947_IG16 ;; bbWeight=0.50 PerfScore 8.88 G_M28947_IG05: lea rcx, bword ptr [r14+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [r14+24], rdx mov rcx, 0xD1FFAB1E mov rdx, r14 call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 2.13 G_M28947_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov rcx, rbx mov rdx, r14 call Enumerable:Select(IEnumerable`1,Func`2):IEnumerable`1 mov rdx, rax mov rcx, r15 call Statistics:.ctor(IEnumerable`1):this vmovsd xmm0, qword ptr [r15+88] jmp SHORT G_M28947_IG08 ;; bbWeight=0.50 PerfScore 4.25 G_M28947_IG07: vxorps xmm0, xmm0 ;; bbWeight=0.50 PerfScore 0.17 G_M28947_IG08: vmovsd qword ptr [rdi+24], xmm0 mov rcx, rsi mov rdi, gword ptr [rcx+8] mov rcx, 0xD1FFAB1E mov edx, 957 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] mov r14, gword ptr [rbp+10H] test rbx, rbx jne SHORT G_M28947_IG10 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M28947_IG16 ;; bbWeight=0.50 PerfScore 6.88 G_M28947_IG09: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 2.13 G_M28947_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov r15, rax mov rcx, rdi mov rdx, rbx call Enumerable:Select(IEnumerable`1,Func`2):IEnumerable`1 mov rdx, rax mov rcx, r15 call Statistics:.ctor(IEnumerable`1):this lea rcx, bword ptr [r14+8] mov rdx, r15 call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp+10H] xor r11d, r11d mov dword ptr [rcx+40], r11d mov rcx, gword ptr [rsi+8] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov rdx, gword ptr [rbp+10H] lea rcx, bword ptr [rdx+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+32], -3 mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+16] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M28947_IG23 ;; bbWeight=0.50 PerfScore 13.25 G_M28947_IG11: mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+16] lea rdx, [rbp-48H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():Measurement:this mov r8, gword ptr [rbp+10H] mov rcx, gword ptr [r8+8] mov r8, gword ptr [rbp+10H] mov r8d, dword ptr [r8+96] vmovsd xmm1, qword ptr [rbp-30H] cmp dword ptr [rcx], ecx call Statistics:IsActualOutlier(double,int):bool:this test eax, eax jne G_M28947_IG22 ;; bbWeight=2 PerfScore 38.50 G_M28947_IG12: vmovsd xmm0, qword ptr [rbp-30H] mov rcx, gword ptr [rbp+10H] vsubsd xmm0, xmm0, qword ptr [rcx+24] vxorps xmm1, xmm1 vucomisd xmm0, xmm1 jp SHORT G_M28947_IG13 je G_M28947_IG18 ;; bbWeight=0.50 PerfScore 6.17 G_M28947_IG13: vxorps xmm1, xmm1 vucomisd xmm1, xmm0 ja G_M28947_IG17 ;; bbWeight=0.25 PerfScore 0.58 G_M28947_IG14: vmovsd xmm1, qword ptr [reloc @RWD08] vucomisd xmm1, xmm0 jbe SHORT G_M28947_IG15 vxorps xmm0, xmm0 ;; bbWeight=0.50 PerfScore 2.17 G_M28947_IG15: mov ecx, dword ptr [rbp-40H] mov r11, gword ptr [rbp+10H] mov r11d, dword ptr [r11+40] inc r11d mov rax, gword ptr [rbp+10H] mov dword ptr [rax+40], r11d vxorps xmm1, xmm1 vmovdqu xmmword ptr [rbp-68H], xmm1 vmovdqu xmmword ptr [rbp-58H], xmm1 mov rax, qword ptr [rbp-38H] mov qword ptr [rbp-58H], rax vmovsd qword ptr [rbp-50H], xmm0 mov dword ptr [rbp-60H], ecx mov dword ptr [rbp-68H], 1 mov dword ptr [rbp-64H], 4 mov dword ptr [rbp-5CH], r11d mov rcx, gword ptr [rbp+10H] vmovdqu xmm0, xmmword ptr [rbp-68H] vmovdqu xmmword ptr [rcx+48], xmm0 vmovdqu xmm0, xmmword ptr [rbp-58H] vmovdqu xmmword ptr [rcx+64], xmm0 mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+32], 1 mov eax, 1 jmp G_M28947_IG26 ;; bbWeight=0.50 PerfScore 12.17 G_M28947_IG16: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 G_M28947_IG17: vxorps xmm0, xmm0 jmp G_M28947_IG14 ;; bbWeight=0.50 PerfScore 1.17 G_M28947_IG18: vmovaps xmm1, xmm0 vmovd rcx, xmm1 test rcx, rcx jl SHORT G_M28947_IG20 ;; bbWeight=0.25 PerfScore 0.63 G_M28947_IG19: jmp G_M28947_IG14 ;; bbWeight=0.50 PerfScore 1.00 G_M28947_IG20: vxorps xmm0, xmm0 jmp G_M28947_IG14 ;; bbWeight=0.50 PerfScore 1.17 G_M28947_IG21: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+32], -3 ;; bbWeight=0.50 PerfScore 1.00 G_M28947_IG22: mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+16] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne G_M28947_IG11 ;; bbWeight=4 PerfScore 31.00 G_M28947_IG23: mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+32], -1 mov rcx, gword ptr [rbp+10H] cmp gword ptr [rcx+16], 0 je SHORT G_M28947_IG25 ;; bbWeight=0.50 PerfScore 3.00 G_M28947_IG24: mov rcx, gword ptr [rbp+10H] mov rcx, gword ptr [rcx+16] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0.25 PerfScore 1.63 G_M28947_IG25: mov rax, gword ptr [rbp+10H] xor rdx, rdx mov gword ptr [rax+16], rdx xor eax, eax ;; bbWeight=0.50 PerfScore 1.25 G_M28947_IG26: lea rsp, [rbp-28H] pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 4.50 G_M28947_IG27: push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 40 vzeroupper mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+90H] ;; bbWeight=0 PerfScore 0.00 G_M28947_IG28: mov rcx, gword ptr [rbp+10H] mov rax, 0xD1FFAB1E call qword ptr [rax]d__14:System.IDisposable.Dispose():this nop ;; bbWeight=0 PerfScore 0.00 G_M28947_IG29: add rsp, 40 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 3FB999999999999Ah ; Total bytes of code 1052, prolog size 50, PerfScore 270.62, (MethodHash=13ed8eec) for method d__14:MoveNext():bool:this ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method Enumerable:Select(IEnumerable`1,Func`2):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 9, 6.50) ref -> rsi class-hnd ; V01 arg1 [V01,T02] ( 9, 6 ) ref -> rdi class-hnd ; V02 loc0 [V02,T07] ( 4, 3 ) ref -> rbx class-hnd ; V03 loc1 [V03,T18] ( 3, 1.50) ref -> rbx class-hnd ; V04 loc2 [V04,T19] ( 3, 1.50) ref -> rax class-hnd ; V05 loc3 [V05,T08] ( 4, 2 ) ref -> rbp class-hnd ; V06 loc4 [V06,T20] ( 3, 1.50) ref -> rsi class-hnd ;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V08 loc6 [V08 ] ( 4, 2 ) ref -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V09 OutArgs [V09 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V10 tmp1 [V10,T03] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V11 tmp2 [V11,T04] ( 5, 5 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V12 tmp3 [V12,T05] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V13 tmp4 [V13,T06] ( 5, 5 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V14 tmp5 [V14,T13] ( 2, 2 ) long -> rax "VirtualCall through function pointer" ; V15 tmp6 [V15,T09] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V16 tmp7 [V16,T14] ( 4, 1.75) ref -> rcx ; V17 tmp8 [V17,T10] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V18 tmp9 [V18,T15] ( 4, 1.75) ref -> rcx ; V19 tmp10 [V19,T11] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V20 tmp11 [V20,T16] ( 4, 1.75) ref -> rcx ; V21 tmp12 [V21,T12] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V22 tmp13 [V22,T17] ( 4, 1.75) ref -> rcx ; V23 tmp14 [V23,T00] ( 8, 9 ) ref -> rax "Single return block return value" ; ; Lcl frame size = 40 G_M22429_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 6.00 G_M22429_IG02: test rsi, rsi je G_M22429_IG21 ;; bbWeight=1 PerfScore 1.25 G_M22429_IG03: test rdi, rdi je G_M22429_IG22 ;; bbWeight=1 PerfScore 1.25 G_M22429_IG04: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS mov rbx, rax test rbx, rbx je SHORT G_M22429_IG06 ;; bbWeight=1 PerfScore 3.00 G_M22429_IG05: mov rcx, rbx mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov rcx, rbx mov rdx, rdi call rax jmp G_M22429_IG20 ;; bbWeight=0.50 PerfScore 3.63 G_M22429_IG06: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFINTERFACE mov rbx, rax test rbx, rbx je G_M22429_IG16 mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFARRAY mov rbp, rax test rbp, rbp je G_M22429_IG10 cmp dword ptr [rbp+8], 0 je SHORT G_M22429_IG09 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M22429_IG08 ;; bbWeight=0.50 PerfScore 7.63 G_M22429_IG07: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M22429_IG08: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rsi+16], eax lea rcx, bword ptr [rsi+24] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rsi jmp G_M22429_IG20 ;; bbWeight=0.50 PerfScore 4.88 G_M22429_IG09: mov rcx, 0xD1FFAB1E mov edx, 2 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rdx, 0xD1FFAB1E mov rax, gword ptr [rdx] jmp G_M22429_IG20 ;; bbWeight=0.50 PerfScore 2.88 G_M22429_IG10: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS mov rsi, rax test rsi, rsi je SHORT G_M22429_IG13 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M22429_IG12 ;; bbWeight=0.50 PerfScore 4.63 G_M22429_IG11: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M22429_IG12: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbx+16], eax lea rcx, bword ptr [rbx+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rbx jmp G_M22429_IG20 ;; bbWeight=0.50 PerfScore 4.88 G_M22429_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M22429_IG15 ;; bbWeight=0.50 PerfScore 3.13 G_M22429_IG14: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M22429_IG15: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rsi+16], eax lea rcx, bword ptr [rsi+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rsi jmp G_M22429_IG20 ;; bbWeight=0.50 PerfScore 4.88 G_M22429_IG16: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFINTERFACE test rax, rax je SHORT G_M22429_IG17 xor r8, r8 mov gword ptr [rsp+20H], r8 lea r8, [rsp+20H] mov rcx, rdi mov rdx, rax call Enumerable:CreateSelectIPartitionIterator(Func`2,IPartition`1,byref) cmp gword ptr [rsp+20H], 0 je SHORT G_M22429_IG17 mov rax, gword ptr [rsp+20H] jmp SHORT G_M22429_IG20 ;; bbWeight=0.50 PerfScore 5.50 G_M22429_IG17: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M22429_IG19 ;; bbWeight=0.50 PerfScore 3.13 G_M22429_IG18: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M22429_IG19: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbx+16], eax lea rcx, bword ptr [rbx+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rbx ;; bbWeight=0.50 PerfScore 3.88 G_M22429_IG20: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M22429_IG21: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M22429_IG22: mov ecx, 15 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 712, prolog size 15, PerfScore 136.20, (MethodHash=bdaba862) for method Enumerable:Select(IEnumerable`1,Func`2):IEnumerable`1 ; ============================================================ ; Assembly listing for method Statistics:.ctor(IEnumerable`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 37, 37 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T10] ( 3, 3 ) ref -> rdi class-hnd ; V02 loc0 [V02 ] ( 9, 9 ) struct (40) [rsp+0xE8] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ; V03 loc1 [V03 ] ( 6, 6 ) struct (40) [rsp+0xC0] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ; V04 loc2 [V04,T01] ( 9, 9 ) ref -> rdi class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (48) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T11] ( 2, 4 ) ref -> rdx class-hnd "dup spill" ;* V07 tmp2 [V07,T28] ( 0, 0 ) ref -> zero-ref ; V08 tmp3 [V08,T25] ( 2, 2 ) ref -> rdi ; V09 tmp4 [V09,T20] ( 4, 3.50) ref -> rdx ; V10 tmp5 [V10,T12] ( 2, 4 ) ref -> rbx class-hnd "dup spill" ; V11 tmp6 [V11,T13] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt" ;* V12 tmp7 [V12,T29] ( 0, 0 ) ref -> zero-ref ; V13 tmp8 [V13,T26] ( 2, 2 ) ref -> rdi ; V14 tmp9 [V14,T21] ( 4, 3.50) ref -> rbx ; V15 tmp10 [V15,T02] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V16 tmp11 [V16,T14] ( 2, 4 ) ref -> rbp class-hnd "impAppendStmt" ; V17 tmp12 [V17,T03] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V18 tmp13 [V18,T15] ( 2, 4 ) ref -> rbp class-hnd "impAppendStmt" ; V19 tmp14 [V19,T04] ( 4, 8 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V20 tmp15 [V20,T16] ( 2, 4 ) ref -> rbp class-hnd "impAppendStmt" ; V21 tmp16 [V21,T31] ( 2, 4 ) double -> mm1 "impAppendStmt" ; V22 tmp17 [V22,T32] ( 2, 4 ) double -> mm1 "impAppendStmt" ; V23 tmp18 [V23,T33] ( 2, 4 ) double -> mm2 "impAppendStmt" ; V24 tmp19 [V24 ] ( 3, 6 ) struct (56) [rsp+0x88] do-not-enreg[XSB] addr-exposed "NewObj constructor temp" ; V25 tmp20 [V25,T06] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V26 tmp21 [V26,T36] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V27 tmp22 [V27,T08] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V28 tmp23 [V28,T09] ( 5, 5 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V29 tmp24 [V29,T22] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V30 tmp25 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V31 tmp26 [V31,T23] ( 3, 3 ) ref -> rdx class-hnd "Inlining Arg" ;* V32 tmp27 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V33 tmp28 [V33,T07] ( 3, 6 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V34 tmp29 [V34,T34] ( 2, 4 ) double -> mm0 "impAppendStmt" ; V35 tmp30 [V35,T17] ( 2, 4 ) struct (40) [rsp+0x60] do-not-enreg[SB] "Inlining Arg" ; V36 tmp31 [V36,T05] ( 3, 6 ) ref -> rdi class-hnd exact "NewObj constructor temp" ;* V37 tmp32 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V38 tmp33 [V38,T18] ( 2, 4 ) long -> r14 "Inlining Arg" ; V39 tmp34 [V39,T19] ( 2, 4 ) long -> r14 "Inlining Arg" ; V40 tmp35 [V40,T37] ( 2, 0 ) ref -> rdx "argument with side effect" ; V41 tmp36 [V41 ] ( 2, 4 ) struct (40) [rsp+0x38] do-not-enreg[XSB] addr-exposed "by-value struct argument" ;* V42 tmp37 [V42,T27] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V43 cse0 [V43,T35] ( 3, 3 ) double -> mm2 "CSE - moderate" ;* V44 cse1 [V44,T30] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; V45 cse2 [V45,T24] ( 3, 3 ) int -> r9 "CSE - moderate" ; ; Lcl frame size = 272 G_M40202_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 272 vzeroupper vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+C0H], xmm4 vmovdqa xmmword ptr [rsp+D0H], xmm4 vmovdqa xmmword ptr [rsp+E0H], xmm4 vmovdqa xmmword ptr [rsp+F0H], xmm4 vmovdqa xmmword ptr [rsp+100H], xmm4 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 12.08 G_M40202_IG02: mov rcx, 0xD1FFAB1E mov edx, 815 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rcx] test rdx, rdx jne SHORT G_M40202_IG05 ;; bbWeight=1 PerfScore 5.00 G_M40202_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M40202_IG14 ;; bbWeight=0.50 PerfScore 2.50 G_M40202_IG04: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdx, rbx ;; bbWeight=0.50 PerfScore 2.25 G_M40202_IG05: mov rcx, rdi call Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 mov rcx, rax call Enumerable:ToArray(IEnumerable`1):ref lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rdi, gword ptr [rsi+8] mov rcx, 0xD1FFAB1E mov rbx, gword ptr [rcx] test rbx, rbx jne SHORT G_M40202_IG08 ;; bbWeight=1 PerfScore 9.75 G_M40202_IG06: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] test rdx, rdx je G_M40202_IG14 ;; bbWeight=0.50 PerfScore 2.50 G_M40202_IG07: lea rcx, bword ptr [rbx+8] call CORINFO_HELP_ASSIGN_REF mov rdx, 0xD1FFAB1E mov qword ptr [rbx+24], rdx mov rcx, 0xD1FFAB1E mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF ;; bbWeight=0.50 PerfScore 2.13 G_M40202_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax xor ecx, ecx mov dword ptr [rsp+20H], ecx mov gword ptr [rsp+28H], rcx mov rcx, rbp mov rdx, rdi mov r8, rbx xor r9, r9 call OrderedEnumerable`2:.ctor(IEnumerable`1,Func`2,IComparer`1,bool,OrderedEnumerable`1):this mov rcx, rbp call Enumerable:ToArray(IEnumerable`1):ref lea rcx, bword ptr [rsi+16] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rsi+16] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IReadOnlyCollection`1:get_Count():int:this mov dword ptr [rsi+176], eax cmp dword ptr [rsi+176], 0 je G_M40202_IG13 ;; bbWeight=1 PerfScore 18.25 G_M40202_IG09: mov rdx, gword ptr [rsi+16] lea rcx, [rsp+E8H] call Quartiles:FromSorted(IReadOnlyList`1):Quartiles vmovsd xmm0, qword ptr [rsp+E8H] vmovsd qword ptr [rsi+64], xmm0 vmovsd xmm0, qword ptr [rsp+F0H] vmovsd qword ptr [rsi+80], xmm0 vmovsd xmm0, qword ptr [rsp+F8H] vmovsd qword ptr [rsi+88], xmm0 vmovsd xmm0, qword ptr [rsp+100H] vmovsd qword ptr [rsi+104], xmm0 vmovsd xmm0, qword ptr [rsp+108H] vmovsd qword ptr [rsi+120], xmm0 vmovsd xmm0, qword ptr [rsp+100H] vsubsd xmm0, xmm0, qword ptr [rsp+F0H] vmovsd qword ptr [rsi+128], xmm0 mov rdx, gword ptr [rsi+16] lea rcx, [rsp+C0H] call Moments:Create(IReadOnlyList`1):Moments vmovsd xmm0, qword ptr [rsp+C0H] vmovsd qword ptr [rsi+96], xmm0 vmovsd xmm0, qword ptr [rsp+E0H] vmovsd qword ptr [rsi+152], xmm0 vmovsd xmm0, qword ptr [rsp+C8H] vmovsd qword ptr [rsi+144], xmm0 vmovsd xmm0, qword ptr [rsp+D0H] vmovsd qword ptr [rsi+160], xmm0 vmovsd xmm0, qword ptr [rsp+D8H] vmovsd qword ptr [rsi+168], xmm0 vmovdqu xmm0, xmmword ptr [rsp+E8H] vmovdqu xmmword ptr [rsp+60H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+F8H] vmovdqu xmmword ptr [rsp+70H], xmm0 mov rcx, qword ptr [rsp+108H] mov qword ptr [rsp+80H], rcx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax vmovdqu xmm2, xmmword ptr [rsp+60H] vmovdqu xmmword ptr [rsp+38H], xmm2 vmovdqu xmm2, xmmword ptr [rsp+70H] vmovdqu xmmword ptr [rsp+48H], xmm2 mov rcx, qword ptr [rsp+80H] mov qword ptr [rsp+58H], rcx mov rcx, rdi lea rdx, bword ptr [rsp+38H] vmovsd xmm2, qword ptr [reloc @RWD08] call TukeyOutlierDetector:.ctor(Quartiles,double):this vmovsd xmm0, qword ptr [rdi+8] vmovsd qword ptr [rsi+72], xmm0 vmovsd xmm0, qword ptr [rdi+16] vmovsd qword ptr [rsi+112], xmm0 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rbp, gword ptr [rsi+16] lea rcx, bword ptr [rbx+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF ;; bbWeight=1 PerfScore 67.00 G_M40202_IG10: mov rcx, 0xD1FFAB1E mov qword ptr [rbx+24], rcx mov rcx, rbp mov rdx, rbx call Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 mov rcx, rax call Enumerable:ToArray(IEnumerable`1):ref lea rcx, bword ptr [rsi+40] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rbp, gword ptr [rsi+16] mov rcx, rdi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov r14, rax lea rcx, bword ptr [rbx+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov qword ptr [rbx+24], r14 mov rcx, rbp mov rdx, rbx call Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 mov rcx, rax call Enumerable:ToArray(IEnumerable`1):ref lea rcx, bword ptr [rsi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rbp, gword ptr [rsi+16] mov rcx, rdi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov r14, rax lea rcx, bword ptr [rbx+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov qword ptr [rbx+24], r14 mov rcx, rbp mov rdx, rbx call Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 mov rcx, rax call Enumerable:ToArray(IEnumerable`1):ref lea rcx, bword ptr [rsi+32] mov rdx, rax call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+56] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF vmovsd xmm1, qword ptr [rsi+152] mov r9d, dword ptr [rsi+176] vxorps xmm2, xmm2 vcvtsi2sd xmm2, r9d vsqrtsd xmm2, xmm2 vdivsd xmm2, xmm1, xmm2 vmovsd qword ptr [rsi+136], xmm2 vmovsd xmm1, qword ptr [rsi+96] xor ecx, ecx vxorps xmm0, xmm0 ;; bbWeight=1 PerfScore 60.42 G_M40202_IG11: vmovdqu xmmword ptr [rsp+88H], xmm0 vmovdqu xmmword ptr [rsp+98H], xmm0 vmovdqu xmmword ptr [rsp+A8H], xmm0 mov qword ptr [rsp+B8H], rcx mov dword ptr [rsp+20H], 12 lea rcx, bword ptr [rsp+88H] call ConfidenceInterval:.ctor(double,double,int,int):this vmovdqu xmm0, xmmword ptr [rsp+88H] vmovdqu xmmword ptr [rsi+184], xmm0 vmovdqu xmm0, xmmword ptr [rsp+98H] vmovdqu xmmword ptr [rsi+200], xmm0 vmovdqu xmm0, xmmword ptr [rsp+A8H] vmovdqu xmmword ptr [rsi+216], xmm0 mov rcx, qword ptr [rsp+B8H] mov qword ptr [rsi+232], rcx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rdx, gword ptr [rsi+16] mov rcx, rdi call PercentileValues:.ctor(IReadOnlyList`1):this lea rcx, bword ptr [rsi+48] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF nop ;; bbWeight=1 PerfScore 21.25 G_M40202_IG12: add rsp, 272 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M40202_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x9CB0 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call InvalidOperationException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M40202_IG14: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 3FF8000000000000h ; Total bytes of code 1373, prolog size 65, PerfScore 349.98, (MethodHash=afc462f5) for method Statistics:.ctor(IEnumerable`1):this ; ============================================================ ; Assembly listing for method <>c:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M3271_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M3271_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call <>c:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M3271_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=7a92f338) for method <>c:.cctor() ; ============================================================ ; Assembly listing for method <>c:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M5848_IG01: ;; bbWeight=1 PerfScore 0.00 G_M5848_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=cce2e927) for method <>c:.ctor():this ; ============================================================ ; Assembly listing for method Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 7, 5.50) ref -> rsi class-hnd ; V01 arg1 [V01,T01] ( 7, 5 ) ref -> rdi class-hnd ; V02 loc0 [V02,T06] ( 4, 3 ) ref -> rax class-hnd ; V03 loc1 [V03,T07] ( 4, 2 ) ref -> rbx class-hnd ; V04 loc2 [V04,T14] ( 3, 1.50) ref -> rbp class-hnd ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T02] ( 5, 5 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V08 tmp2 [V08,T03] ( 5, 5 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V09 tmp3 [V09,T04] ( 5, 5 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V10 tmp4 [V10,T08] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V11 tmp5 [V11,T11] ( 4, 1.75) ref -> rcx ; V12 tmp6 [V12,T09] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V13 tmp7 [V13,T12] ( 4, 1.75) ref -> rcx ; V14 tmp8 [V14,T10] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V15 tmp9 [V15,T13] ( 4, 1.75) ref -> rcx ; V16 tmp10 [V16,T05] ( 5, 5 ) ref -> rbp "Single return block return value" ; ; Lcl frame size = 40 G_M48024_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 4.75 G_M48024_IG02: test rsi, rsi je G_M48024_IG19 ;; bbWeight=1 PerfScore 1.25 G_M48024_IG03: test rdi, rdi je G_M48024_IG20 ;; bbWeight=1 PerfScore 1.25 G_M48024_IG04: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax je SHORT G_M48024_IG07 ;; bbWeight=1 PerfScore 2.75 G_M48024_IG05: mov rcx, rax mov rdx, rdi mov rax, qword ptr [rax] mov rax, qword ptr [rax+72] mov rax, qword ptr [rax+16] ;; bbWeight=0.50 PerfScore 3.25 G_M48024_IG06: add rsp, 40 pop rbx pop rbp pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 2.13 G_M48024_IG07: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFARRAY mov rbx, rax test rbx, rbx je G_M48024_IG11 cmp dword ptr [rbx+8], 0 je SHORT G_M48024_IG10 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M48024_IG09 ;; bbWeight=0.50 PerfScore 6.13 G_M48024_IG08: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M48024_IG09: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbp+16], eax lea rcx, bword ptr [rbp+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbp+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF jmp G_M48024_IG17 ;; bbWeight=0.50 PerfScore 4.75 G_M48024_IG10: mov rcx, 0xD1FFAB1E mov edx, 2 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rdx, 0xD1FFAB1E mov rbp, gword ptr [rdx] jmp G_M48024_IG17 ;; bbWeight=0.50 PerfScore 2.88 G_M48024_IG11: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFCLASS mov rbp, rax test rbp, rbp je SHORT G_M48024_IG14 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M48024_IG13 ;; bbWeight=0.50 PerfScore 4.63 G_M48024_IG12: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M48024_IG13: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rsi+16], eax lea rcx, bword ptr [rsi+24] mov rdx, rbp call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rbp, rsi jmp SHORT G_M48024_IG17 ;; bbWeight=0.50 PerfScore 4.88 G_M48024_IG14: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M48024_IG16 ;; bbWeight=0.50 PerfScore 3.13 G_M48024_IG15: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M48024_IG16: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbp+16], eax lea rcx, bword ptr [rbp+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbp+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF ;; bbWeight=0.50 PerfScore 3.75 G_M48024_IG17: mov rax, rbp ;; bbWeight=0.50 PerfScore 0.13 G_M48024_IG18: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M48024_IG19: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M48024_IG20: mov ecx, 12 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 494, prolog size 14, PerfScore 97.59, (MethodHash=4df54467) for method Enumerable:Where(IEnumerable`1,Func`2):IEnumerable`1 ; ============================================================ ; Assembly listing for method Iterator`1:Where(Func`2):IEnumerable`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 5, 10 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V05 tmp3 [V05,T04] ( 4, 3.25) ref -> rcx ; ; Lcl frame size = 32 G_M55491_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 3.75 G_M55491_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M55491_IG04 ;; bbWeight=1 PerfScore 6.25 G_M55491_IG03: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M55491_IG04: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this mov dword ptr [rbx+16], eax lea rcx, bword ptr [rbx+24] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rbx+32] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, rbx ;; bbWeight=1 PerfScore 7.75 G_M55491_IG05: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 113, prolog size 7, PerfScore 32.11, (MethodHash=e4c6273c) for method Iterator`1:Where(Func`2):IEnumerable`1:this ; ============================================================ ; Assembly listing for method Enumerable:ToArray(IEnumerable`1):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rsi class-hnd ; V01 loc0 [V01,T01] ( 3, 2.50) ref -> rax class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M31344_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M31344_IG02: test rsi, rsi je SHORT G_M31344_IG08 ;; bbWeight=1 PerfScore 1.25 G_M31344_IG03: mov rdx, rsi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFINTERFACE test rax, rax jne SHORT G_M31344_IG06 ;; bbWeight=1 PerfScore 2.75 G_M31344_IG04: mov rcx, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M31344_IG05: add rsp, 32 pop rsi jmp EnumerableHelpers:ToArray(IEnumerable`1):ref ;; bbWeight=0.50 PerfScore 1.38 G_M31344_IG06: mov rcx, rax mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=0.50 PerfScore 1.38 G_M31344_IG07: add rsp, 32 pop rsi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.38 G_M31344_IG08: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 94, prolog size 8, PerfScore 19.15, (MethodHash=1832858f) for method Enumerable:ToArray(IEnumerable`1):ref ; ============================================================ ; Assembly listing for method WhereEnumerableIterator`1:ToArray():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 7 ) ref -> rsi this class-hnd ; V01 loc0 [V01 ] ( 8, 12 ) struct (48) [rbp-0x60] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ; V02 loc1 [V02,T01] ( 7, 11 ) ref -> [rbp-0x68] EH do-not-enreg[] class-hnd EH-live ; V03 loc2 [V03,T07] ( 4, 10 ) double -> mm6 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 4, 6 ) int -> rdi "Inline stloc first use temp" ; V06 tmp2 [V06,T04] ( 3, 5 ) ref -> rbx class-hnd "Inline stloc first use temp" ; V07 PSPSym [V07 ] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[X] addr-exposed "PSPSym" ; V08 tmp4 [V08,T06] ( 2, 2 ) ref -> rax "optAddCopies" ; V09 cse0 [V09,T05] ( 2, 4 ) int -> rcx "CSE - aggressive" ; V10 rat0 [V10,T00] ( 3, 24 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 120 G_M19460_IG01: push rbp push rdi push rsi push rbx sub rsp, 120 vzeroupper vmovaps qword ptr [rsp+60H], xmm6 lea rbp, [rsp+90H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-60H], xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 vmovdqa xmmword ptr [rbp-40H], xmm4 mov qword ptr [rbp-70H], rsp mov rsi, rcx ;; bbWeight=1 PerfScore 13.33 G_M19460_IG02: lea rcx, bword ptr [rbp-60H] mov edx, 0xD1FFAB1E call LargeArrayBuilder`1:.ctor(int):this mov rcx, gword ptr [rsi+24] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-68H], rax ;; bbWeight=1 PerfScore 8.25 G_M19460_IG03: mov rcx, gword ptr [rbp-68H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M19460_IG10 ;; bbWeight=1 PerfScore 5.75 G_M19460_IG04: mov rcx, gword ptr [rbp-68H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():double:this vmovaps xmm6, xmm0 mov rax, gword ptr [rsi+32] mov rcx, gword ptr [rax+8] vmovaps xmm1, xmm6 call qword ptr [rax+24]Func`2:Invoke(double):bool:this test eax, eax je SHORT G_M19460_IG09 ;; bbWeight=4 PerfScore 53.00 G_M19460_IG05: mov edi, dword ptr [rbp-4CH] mov rbx, gword ptr [rbp-58H] mov ecx, dword ptr [rbx+8] cmp ecx, edi ja SHORT G_M19460_IG07 ;; bbWeight=2 PerfScore 10.50 G_M19460_IG06: lea rcx, bword ptr [rbp-60H] vmovaps xmm1, xmm6 call LargeArrayBuilder`1:AddWithBufferAllocation(double):this jmp SHORT G_M19460_IG08 ;; bbWeight=1 PerfScore 3.75 G_M19460_IG07: movsxd rcx, edi vmovsd qword ptr [rbx+8*rcx+16], xmm6 inc edi mov dword ptr [rbp-4CH], edi ;; bbWeight=1 PerfScore 2.00 G_M19460_IG08: mov ecx, dword ptr [rbp-48H] inc ecx mov dword ptr [rbp-48H], ecx ;; bbWeight=2 PerfScore 4.50 G_M19460_IG09: mov rcx, gword ptr [rbp-68H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne G_M19460_IG04 ;; bbWeight=4 PerfScore 23.00 G_M19460_IG10: mov rcx, gword ptr [rbp-68H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this lea rcx, bword ptr [rbp-60H] call LargeArrayBuilder`1:ToArray():ref:this nop ;; bbWeight=1 PerfScore 6.25 G_M19460_IG11: vmovaps xmm6, qword ptr [rsp+60H] lea rsp, [rbp-18H] pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 7.50 G_M19460_IG12: push rbp push rdi push rsi push rbx sub rsp, 72 vzeroupper vmovaps qword ptr [rsp+30H], xmm6 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+90H] ;; bbWeight=0 PerfScore 0.00 G_M19460_IG13: cmp gword ptr [rbp-68H], 0 je SHORT G_M19460_IG14 mov rcx, gword ptr [rbp-68H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M19460_IG14: nop ;; bbWeight=0 PerfScore 0.00 G_M19460_IG15: vmovaps xmm6, qword ptr [rsp+30H] add rsp, 72 pop rbx pop rsi pop rdi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 396, prolog size 51, PerfScore 178.63, (MethodHash=135cb3fb) for method WhereEnumerableIterator`1:ToArray():ref:this ; ============================================================ ; Assembly listing for method LargeArrayBuilder`1:.ctor(int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) byref -> rsi this ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> rbx class-hnd "dup spill" ; ; Lcl frame size = 32 G_M25502_IG01: push rdi push rsi push rbx sub rsp, 32 vzeroupper mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 4.75 G_M25502_IG02: vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsi], xmm0 vmovdqu xmmword ptr [rsi+16], xmm0 vmovdqu xmmword ptr [rsi+32], xmm0 mov rcx, 0xD1FFAB1E mov edx, 47 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rdx, 0xD1FFAB1E mov rbx, gword ptr [rdx] lea rcx, bword ptr [rsi+8] mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, rsi mov rdx, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov dword ptr [rsi+16], edi ;; bbWeight=1 PerfScore 11.33 G_M25502_IG03: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 100, prolog size 10, PerfScore 29.23, (MethodHash=95479c61) for method LargeArrayBuilder`1:.ctor(int):this ; ============================================================ ; Assembly listing for method EmptyArray`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M47611_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] ;; bbWeight=1 PerfScore 1.75 G_M47611_IG02: mov rcx, 0xD1FFAB1E xor rdx, rdx call CORINFO_HELP_NEWARR_1_VC mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 3.25 G_M47611_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 52, prolog size 10, PerfScore 12.20, (MethodHash=aece4604) for method EmptyArray`1:.cctor() ; ============================================================ ; Assembly listing for method Iterator`1:GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 5 ) ref -> rsi this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 4, 3 ) ref -> rax ; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rdi "impAppendStmt" ; V05 tmp3 [V05,T02] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V06 tmp4 [V06,T04] ( 4, 1.75) ref -> rcx ; ; Lcl frame size = 40 G_M54682_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M54682_IG02: cmp dword ptr [rsi+20], 0 jne SHORT G_M54682_IG06 ;; bbWeight=1 PerfScore 3.00 G_M54682_IG03: mov edi, dword ptr [rsi+16] mov rcx, 0xD1FFAB1E mov edx, 633 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov rcx, gword ptr [rax+24] test rcx, rcx jne SHORT G_M54682_IG05 ;; bbWeight=0.50 PerfScore 3.38 G_M54682_IG04: call Thread:InitializeCurrentThread():Thread mov rcx, rax ;; bbWeight=0.25 PerfScore 0.31 G_M54682_IG05: cmp dword ptr [rcx], ecx call Thread:get_ManagedThreadId():int:this cmp eax, edi je SHORT G_M54682_IG07 ;; bbWeight=0.50 PerfScore 2.13 G_M54682_IG06: mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+40]Iterator`1:Clone():Iterator`1:this jmp SHORT G_M54682_IG08 ;; bbWeight=0.50 PerfScore 4.63 G_M54682_IG07: mov rax, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M54682_IG08: mov dword ptr [rax+20], 1 ;; bbWeight=1 PerfScore 1.00 G_M54682_IG09: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 ; Total bytes of code 98, prolog size 6, PerfScore 29.11, (MethodHash=f7f42a65) for method Iterator`1:GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method SelectListIterator`2:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 12, 7.50) ref -> rbx this class-hnd ; V01 loc0 [V01,T04] ( 3, 2.50) int -> rcx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T05] ( 2, 2 ) ref -> rax class-hnd "impAppendStmt" ; V04 tmp2 [V04,T08] ( 2, 2 ) struct (32) [rsp+0x70] do-not-enreg[SB] "struct address for call/obj" ; V05 tmp3 [V05,T02] ( 3, 3 ) ref -> rcx class-hnd "Inlining Arg" ; V06 tmp4 [V06,T01] ( 5, 5 ) struct (48) [rsp+0x40] do-not-enreg[SFB] must-init "NewObj constructor temp" ; V07 tmp5 [V07,T06] ( 2, 2 ) byref -> rcx "Inlining Arg" ; V08 tmp6 [V08 ] ( 2, 2 ) struct (32) [rsp+0x20] do-not-enreg[XSB] addr-exposed "by-value struct argument" ; V09 tmp7 [V09,T07] ( 2, 2 ) ref -> rax "argument with side effect" ; V10 rat0 [V10,T03] ( 3, 3 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 144 G_M53125_IG01: push rdi push rsi push rbx sub rsp, 144 vzeroupper vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 vmovdqa xmmword ptr [rsp+50H], xmm4 vmovdqa xmmword ptr [rsp+60H], xmm4 mov rbx, rcx ;; bbWeight=1 PerfScore 7.83 G_M53125_IG02: mov ecx, dword ptr [rbx+20] cmp ecx, 1 je SHORT G_M53125_IG04 ;; bbWeight=1 PerfScore 3.25 G_M53125_IG03: cmp ecx, 2 je SHORT G_M53125_IG05 jmp G_M53125_IG08 ;; bbWeight=0.50 PerfScore 1.63 G_M53125_IG04: mov rcx, gword ptr [rbx+24] mov gword ptr [rsp+40H], rcx xor eax, eax mov dword ptr [rsp+48H], eax mov ecx, dword ptr [rcx+20] mov dword ptr [rsp+4CH], ecx vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+50H], xmm0 vmovdqu xmmword ptr [rsp+60H], xmm0 lea rdi, bword ptr [rbx+40] lea rsi, bword ptr [rsp+40H] call CORINFO_HELP_ASSIGN_BYREF mov ecx, 5 rep movsq mov dword ptr [rbx+20], 2 ;; bbWeight=0.50 PerfScore 18.92 G_M53125_IG05: lea rcx, bword ptr [rbx+40] call Enumerator:MoveNext():bool:this test eax, eax je SHORT G_M53125_IG07 mov rax, gword ptr [rbx+32] lea rcx, bword ptr [rbx+40] vmovdqu xmm0, xmmword ptr [rcx+16] vmovdqu xmmword ptr [rsp+70H], xmm0 vmovdqu xmm0, xmmword ptr [rcx+32] vmovdqu xmmword ptr [rsp+80H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+70H] vmovdqu xmmword ptr [rsp+20H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+80H] vmovdqu xmmword ptr [rsp+30H], xmm0 mov rcx, gword ptr [rax+8] lea rdx, bword ptr [rsp+20H] call qword ptr [rax+24]Func`2:Invoke(Measurement):double:this vmovsd qword ptr [rbx+8], xmm0 mov eax, 1 ;; bbWeight=0.50 PerfScore 10.75 G_M53125_IG06: add rsp, 144 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M53125_IG07: xor eax, eax mov qword ptr [rbx+8], rax mov dword ptr [rbx+20], -1 ;; bbWeight=0.50 PerfScore 1.13 G_M53125_IG08: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M53125_IG09: add rsp, 144 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 255, prolog size 35, PerfScore 73.48, (MethodHash=8fba307a) for method SelectListIterator`2:MoveNext():bool:this ; ============================================================ ; Assembly listing for method <>c:b__14_1(Measurement):double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 6 ) byref -> rdx ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M12381_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M12381_IG02: vmovsd xmm0, qword ptr [rdx+24] ;; bbWeight=1 PerfScore 2.00 G_M12381_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 9, prolog size 3, PerfScore 5.00, (MethodHash=fc37cfa2) for method <>c:b__14_1(Measurement):double:this ; ============================================================ ; Assembly listing for method Iterator`1:get_Current():double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M24129_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M24129_IG02: vmovsd xmm0, qword ptr [rcx+8] ;; bbWeight=1 PerfScore 2.00 G_M24129_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 9, prolog size 3, PerfScore 5.00, (MethodHash=a4eba1be) for method Iterator`1:get_Current():double:this ; ============================================================ ; Assembly listing for method <>c:<.ctor>b__69_0(double):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 4, 4 ) double -> mm1 ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M16953_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M16953_IG02: vucomisd xmm1, xmm1 setnp al jp SHORT G_M16953_IG03 sete al ;; bbWeight=1 PerfScore 4.00 G_M16953_IG03: movzx rax, al ;; bbWeight=1 PerfScore 0.25 G_M16953_IG04: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 19, prolog size 3, PerfScore 8.25, (MethodHash=88a0bdc6) for method <>c:<.ctor>b__69_0(double):bool:this ; ============================================================ ; Assembly listing for method LargeArrayBuilder`1:AddWithBufferAllocation(double):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) byref -> rsi this ; V01 arg1 [V01,T03] ( 3, 3 ) double -> [rsp+0x38] ; V02 loc0 [V02,T02] ( 4, 4 ) int -> rdx ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> rax class-hnd "impAppendStmt" ; ; Lcl frame size = 32 G_M32687_IG01: push rsi sub rsp, 32 vzeroupper mov rsi, rcx vmovsd qword ptr [rsp+38H], xmm1 ;; bbWeight=1 PerfScore 3.00 G_M32687_IG02: mov rcx, rsi call LargeArrayBuilder`1:AllocateBuffer():this mov rax, gword ptr [rsi+8] mov edx, dword ptr [rsi+20] lea ecx, [rdx+1] mov dword ptr [rsi+20], ecx cmp edx, dword ptr [rax+8] jae SHORT G_M32687_IG04 movsxd rdx, edx vmovsd xmm1, qword ptr [rsp+38H] vmovsd qword ptr [rax+8*rdx+16], xmm1 ;; bbWeight=1 PerfScore 12.50 G_M32687_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 G_M32687_IG04: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 70, prolog size 8, PerfScore 24.55, (MethodHash=97418050) for method LargeArrayBuilder`1:AddWithBufferAllocation(double):this ; ============================================================ ; Assembly listing for method LargeArrayBuilder`1:AllocateBuffer():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 16, 9.50) byref -> rsi this ;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ; V02 loc1 [V02,T12] ( 3, 1.50) int -> rdi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T06] ( 4, 2 ) int -> rdi ; V05 tmp2 [V05,T13] ( 3, 1.50) int -> rdx "Inline return value spill temp" ; V06 tmp3 [V06,T03] ( 3, 3 ) int -> rdx "Inlining Arg" ; V07 tmp4 [V07,T01] ( 8, 7 ) byref -> rdi "Inlining Arg" ; V08 tmp5 [V08,T10] ( 2, 2 ) int -> r8 "impAppendStmt" ; V09 tmp6 [V09,T07] ( 2, 2 ) ref -> rbx class-hnd "Inlining Arg" ; V10 tmp7 [V10,T14] ( 3, 1.50) int -> rdx "Inline return value spill temp" ; V11 tmp8 [V11,T08] ( 2, 2 ) ref -> rcx class-hnd "dup spill" ; V12 tmp9 [V12,T11] ( 3, 1.50) ref -> rcx ; V13 tmp10 [V13,T15] ( 3, 1.50) int -> rdx "Inline stloc first use temp" ; V14 tmp11 [V14,T09] ( 2, 2 ) ref -> rcx class-hnd "impAppendStmt" ;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillEvalStack" ; V16 tmp13 [V16,T16] ( 3, 1.50) int -> rcx "Inline return value spill temp" ; V17 tmp14 [V17,T04] ( 3, 3 ) int -> rdi "Inlining Arg" ; V18 tmp15 [V18,T05] ( 3, 3 ) int -> rcx "Inlining Arg" ; V19 cse0 [V19,T02] ( 5, 3.50) int -> rdi "CSE - aggressive" ; V20 cse1 [V20,T17] ( 3, 1.50) int -> rdx "CSE - moderate" ; ; Lcl frame size = 32 G_M15444_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 3.50 G_M15444_IG02: mov edi, dword ptr [rsi+24] cmp edi, 8 jae SHORT G_M15444_IG09 ;; bbWeight=1 PerfScore 3.25 G_M15444_IG03: test edi, edi je SHORT G_M15444_IG04 add edi, edi jmp SHORT G_M15444_IG05 ;; bbWeight=0.50 PerfScore 1.75 G_M15444_IG04: mov edi, 4 ;; bbWeight=0.50 PerfScore 0.13 G_M15444_IG05: mov edx, dword ptr [rsi+16] cmp edi, edx jle SHORT G_M15444_IG06 jmp SHORT G_M15444_IG07 ;; bbWeight=0.50 PerfScore 2.63 G_M15444_IG06: mov edx, edi ;; bbWeight=0.50 PerfScore 0.13 G_M15444_IG07: movsxd rdx, edx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF mov rcx, gword ptr [rsi] mov rdx, gword ptr [rsi+8] mov r8d, dword ptr [rsi+24] call Array:Copy(Array,Array,int) mov rdx, gword ptr [rsi+8] mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=0.50 PerfScore 6.88 G_M15444_IG08: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M15444_IG09: cmp edi, 8 jne SHORT G_M15444_IG10 mov edi, 8 jmp SHORT G_M15444_IG17 ;; bbWeight=0.50 PerfScore 1.75 G_M15444_IG10: lea rdi, bword ptr [rsi+32] mov rbx, gword ptr [rsi+8] mov r8d, dword ptr [rdi+8] mov rcx, gword ptr [rdi] test rcx, rcx jne SHORT G_M15444_IG11 xor edx, edx jmp SHORT G_M15444_IG12 ;; bbWeight=0.50 PerfScore 5.00 G_M15444_IG11: mov edx, dword ptr [rcx+8] ;; bbWeight=0.50 PerfScore 1.00 G_M15444_IG12: cmp r8d, edx jne SHORT G_M15444_IG14 ;; bbWeight=0.50 PerfScore 0.63 G_M15444_IG13: mov r8d, dword ptr [rdi+8] inc r8d mov rcx, rdi mov rdx, 0xD1FFAB1E call ArrayBuilder`1:EnsureCapacity(int):this ;; bbWeight=0.25 PerfScore 0.94 G_M15444_IG14: mov rcx, gword ptr [rdi] mov edx, dword ptr [rdi+8] lea r8d, [rdx+1] mov dword ptr [rdi+8], r8d mov r8, rbx call CORINFO_HELP_ARRADDR_ST mov edx, dword ptr [rsi+24] mov edi, edx mov ecx, dword ptr [rsi+16] sub ecx, edx cmp edi, ecx jle SHORT G_M15444_IG15 jmp SHORT G_M15444_IG16 ;; bbWeight=0.50 PerfScore 7.25 G_M15444_IG15: mov ecx, edi ;; bbWeight=0.50 PerfScore 0.13 G_M15444_IG16: mov edi, ecx ;; bbWeight=0.50 PerfScore 0.13 G_M15444_IG17: movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF xor eax, eax mov dword ptr [rsi+20], eax ;; bbWeight=0.50 PerfScore 2.25 G_M15444_IG18: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 ; Total bytes of code 263, prolog size 7, PerfScore 66.36, (MethodHash=fce0c3ab) for method LargeArrayBuilder`1:AllocateBuffer():this ; ============================================================ ; Assembly listing for method Iterator`1:Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M26937_IG01: ;; bbWeight=1 PerfScore 0.00 G_M26937_IG02: xor eax, eax mov qword ptr [rcx+8], rax mov dword ptr [rcx+20], -1 ;; bbWeight=1 PerfScore 2.25 G_M26937_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 14, prolog size 0, PerfScore 4.65, (MethodHash=df8496c6) for method Iterator`1:Dispose():this ; ============================================================ ; Assembly listing for method LargeArrayBuilder`1:ToArray():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4.50) byref -> rsi this ; V01 loc0 [V01 ] ( 5, 3 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 48 G_M17664_IG01: push rsi sub rsp, 48 xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 2.75 G_M17664_IG02: lea rdx, [rsp+28H] mov rcx, rsi call LargeArrayBuilder`1:TryMove(byref):bool:this test eax, eax je SHORT G_M17664_IG05 ;; bbWeight=1 PerfScore 3.00 G_M17664_IG03: mov rax, gword ptr [rsp+28H] ;; bbWeight=0.50 PerfScore 0.50 G_M17664_IG04: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M17664_IG05: mov edx, dword ptr [rsi+24] movsxd rdx, edx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rsp+28H], rax mov r9d, dword ptr [rsi+24] mov rcx, rsi mov rdx, gword ptr [rsp+28H] xor r8d, r8d call LargeArrayBuilder`1:CopyTo(ref,int,int):this mov rax, gword ptr [rsp+28H] ;; bbWeight=0.50 PerfScore 5.00 G_M17664_IG06: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 100, prolog size 12, PerfScore 23.00, (MethodHash=cde9baff) for method LargeArrayBuilder`1:ToArray():ref:this ; ============================================================ ; Assembly listing for method LargeArrayBuilder`1:TryMove(byref):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) byref -> rsi this ; V01 arg1 [V01,T01] ( 3, 3 ) byref -> rcx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M45753_IG01: push rsi mov rsi, rcx mov rcx, rdx ;; bbWeight=1 PerfScore 1.50 G_M45753_IG02: mov rdx, gword ptr [rsi] call CORINFO_HELP_CHECKED_ASSIGN_REF mov eax, dword ptr [rsi+24] mov rdx, gword ptr [rsi] cmp eax, dword ptr [rdx+8] sete al movzx rax, al ;; bbWeight=1 PerfScore 10.25 G_M45753_IG03: pop rsi ret ;; bbWeight=1 PerfScore 1.50 ; Total bytes of code 32, prolog size 1, PerfScore 16.45, (MethodHash=2e714d46) for method LargeArrayBuilder`1:TryMove(byref):bool:this ; ============================================================ ; Assembly listing for method LargeArrayBuilder`1:CopyTo(ref,int,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T08] ( 5, 7 ) byref -> rbx this ; V01 arg1 [V01,T09] ( 3, 6 ) ref -> rbp class-hnd ; V02 arg2 [V02,T03] ( 5, 14 ) int -> rdi ; V03 arg3 [V03,T00] ( 8, 21 ) int -> rsi ; V04 loc0 [V04,T02] ( 6, 16 ) int -> r14 ; V05 loc1 [V05,T05] ( 3, 12 ) ref -> rcx class-hnd ;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T07] ( 4, 10 ) ref -> rcx class-hnd "Inline return value spill temp" ; V09 tmp2 [V09,T13] ( 2, 4 ) byref -> r8 "Inlining Arg" ; V10 tmp3 [V10,T10] ( 2, 8 ) byref -> rcx "Inlining Arg" ;* V11 tmp4 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V12 tmp5 [V12,T04] ( 5, 16 ) int -> r15 "Inline return value spill temp" ; V13 tmp6 [V13,T01] ( 3, 20 ) int -> r15 "Inlining Arg" ; V14 tmp7 [V14,T06] ( 3, 12 ) ref -> rcx "arr expr" ; V15 cse0 [V15,T12] ( 3, 4 ) byref -> rcx "CSE - moderate" ; V16 cse1 [V16,T11] ( 3, 6 ) int -> r8 "CSE - aggressive" ; ; Lcl frame size = 40 G_M15686_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 40 mov rbx, rcx mov rbp, rdx mov edi, r8d mov esi, r9d ;; bbWeight=1 PerfScore 7.25 G_M15686_IG02: xor r14d, r14d test esi, esi jle SHORT G_M15686_IG12 ;; bbWeight=1 PerfScore 1.50 G_M15686_IG03: test r14d, r14d je SHORT G_M15686_IG07 ;; bbWeight=4 PerfScore 5.00 G_M15686_IG04: lea rcx, bword ptr [rbx+32] mov r8, rcx cmp r14d, dword ptr [r8+8] jle SHORT G_M15686_IG06 ;; bbWeight=1 PerfScore 3.75 G_M15686_IG05: mov rcx, gword ptr [rbx+8] jmp SHORT G_M15686_IG08 ;; bbWeight=2 PerfScore 8.00 G_M15686_IG06: mov rcx, gword ptr [rcx] lea r8d, [r14-1] cmp r8d, dword ptr [rcx+8] jae SHORT G_M15686_IG13 movsxd r8, r8d mov rcx, gword ptr [rcx+8*r8+16] jmp SHORT G_M15686_IG08 ;; bbWeight=2 PerfScore 19.50 G_M15686_IG07: mov rcx, gword ptr [rbx] ;; bbWeight=2 PerfScore 4.00 G_M15686_IG08: mov r15d, dword ptr [rcx+8] cmp esi, r15d jle SHORT G_M15686_IG10 ;; bbWeight=4 PerfScore 13.00 G_M15686_IG09: jmp SHORT G_M15686_IG11 ;; bbWeight=2 PerfScore 4.00 G_M15686_IG10: mov r15d, esi ;; bbWeight=2 PerfScore 0.50 G_M15686_IG11: mov dword ptr [rsp+20H], r15d mov r8, rbp mov r9d, edi xor edx, edx call Array:Copy(Array,int,Array,int,int) sub esi, r15d add edi, r15d inc r14d test esi, esi jg SHORT G_M15686_IG03 ;; bbWeight=4 PerfScore 19.00 G_M15686_IG12: add rsp, 40 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.25 G_M15686_IG13: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 145, prolog size 12, PerfScore 104.25, (MethodHash=de88c2b9) for method LargeArrayBuilder`1:CopyTo(ref,int,int):this ; ============================================================ ; Assembly listing for method OrderedEnumerable`2:.ctor(IEnumerable`1,Func`2,IComparer`1,bool,OrderedEnumerable`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdi class-hnd ; V02 arg2 [V02,T02] ( 4, 4 ) ref -> rbx class-hnd ; V03 arg3 [V03,T03] ( 3, 3 ) ref -> rbp class-hnd ; V04 arg4 [V04,T07] ( 1, 1 ) bool -> [rsp+0x70] ; V05 arg5 [V05,T05] ( 1, 1 ) ref -> [rsp+0x78] class-hnd ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V07 tmp1 [V07,T06] ( 0, 0 ) ref -> zero-ref ; V08 tmp2 [V08,T04] ( 4, 3.50) ref -> rdx ; ; Lcl frame size = 40 G_M58371_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx mov rbx, r8 mov rbp, r9 ;; bbWeight=1 PerfScore 5.25 G_M58371_IG02: lea rcx, bword ptr [rsi+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF test rdi, rdi je SHORT G_M58371_IG08 ;; bbWeight=1 PerfScore 3.00 G_M58371_IG03: test rbx, rbx je SHORT G_M58371_IG09 ;; bbWeight=1 PerfScore 1.25 G_M58371_IG04: lea rcx, bword ptr [rsi+16] mov rdx, gword ptr [rsp+78H] call CORINFO_HELP_ASSIGN_REF lea rcx, bword ptr [rsi+24] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rdx, rbp test rdx, rdx jne SHORT G_M58371_IG06 ;; bbWeight=1 PerfScore 5.75 G_M58371_IG05: mov rcx, 0xD1FFAB1E mov edx, 48 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] ;; bbWeight=0.50 PerfScore 1.88 G_M58371_IG06: lea rcx, bword ptr [rsi+32] call CORINFO_HELP_ASSIGN_REF mov edi, dword ptr [rsp+70H] mov byte ptr [rsi+40], dil ;; bbWeight=1 PerfScore 3.50 G_M58371_IG07: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M58371_IG08: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M58371_IG09: mov ecx, 9 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 157, prolog size 8, PerfScore 39.58, (MethodHash=9e711bfc) for method OrderedEnumerable`2:.ctor(IEnumerable`1,Func`2,IComparer`1,bool,OrderedEnumerable`1):this ; ============================================================ ; Assembly listing for method Comparer`1:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) struct ( 8) [rbp-0x08] do-not-enreg[SB] must-init "struct address for call/obj" ; V02 tmp2 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] must-init "argument with side effect" ; ; Lcl frame size = 48 G_M28930_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax mov qword ptr [rbp-10H], rax ;; bbWeight=1 PerfScore 4.00 G_M28930_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPEHANDLE mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call Type:GetTypeFromHandle(RuntimeTypeHandle):Type mov rcx, rax call ComparerHelpers:CreateDefaultComparer(Type):Object mov gword ptr [rbp-10H], rax mov rdx, gword ptr [rbp-10H] mov rcx, 0xD1FFAB1E call CORINFO_HELP_CHKCASTCLASS mov rcx, 0xD1FFAB1E mov rdx, rax call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 10.50 G_M28930_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 104, prolog size 20, PerfScore 26.90, (MethodHash=19ca8efd) for method Comparer`1:.cctor() ; ============================================================ ; Assembly listing for method GenericComparer`1:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M2540_IG01: ;; bbWeight=1 PerfScore 0.00 G_M2540_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=e0a6f613) for method GenericComparer`1:.ctor():this ; ============================================================ ; Assembly listing for method OrderedEnumerable`1:ToArray():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 5, 4 ) ref -> rsi this class-hnd ; V01 loc0 [V01 ] ( 10, 12.50) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V02 loc1 [V02,T10] ( 3, 2.50) int -> rdx ; V03 loc2 [V03,T05] ( 4, 5.50) ref -> rdi class-hnd exact ; V04 loc3 [V04,T06] ( 3, 5 ) ref -> rax class-hnd ; V05 loc4 [V05,T00] ( 7, 24.50) int -> rdx ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T15] ( 2, 16 ) double -> mm0 "Strict ordering of exceptions for Array store" ; V08 tmp2 [V08,T07] ( 3, 5 ) ref -> rdi class-hnd "Inlining Arg" ; V09 tmp3 [V09,T09] ( 3, 2.50) ref -> rax class-hnd "Inline stloc first use temp" ; V10 tmp4 [V10,T12] ( 3, 1.50) ref -> rax class-hnd "Inline stloc first use temp" ;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V12 tmp6 [V12 ] ( 6, 10 ) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed V01._items(offs=0x00) P-DEP "field V01._items (fldOffset=0x0)" ; V13 tmp7 [V13 ] ( 4, 2.50) int -> [rsp+0x30] do-not-enreg[X] addr-exposed V01._count(offs=0x08) P-DEP "field V01._count (fldOffset=0x8)" ; V14 tmp8 [V14,T13] ( 2, 1 ) ref -> rbx V11._items(offs=0x00) P-INDEP "field V11._items (fldOffset=0x0)" ; V15 tmp9 [V15,T14] ( 2, 1 ) int -> rbp V11._count(offs=0x08) P-INDEP "field V11._count (fldOffset=0x8)" ; V16 tmp10 [V16,T11] ( 2, 2 ) ref -> rcx "argument with side effect" ; V17 tmp11 [V17,T01] ( 3, 24 ) int -> r10 "index expr" ; V18 cse0 [V18,T03] ( 4, 9 ) int -> rcx "CSE - aggressive" ; V19 cse1 [V19,T08] ( 2, 4.50) int -> r8 "CSE - aggressive" ; V20 cse2 [V20,T02] ( 3, 12 ) long -> r9 "CSE - aggressive" ; ; Lcl frame size = 56 G_M58788_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 vzeroupper xor rax, rax mov qword ptr [rsp+28H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 6.75 G_M58788_IG02: mov rdi, gword ptr [rsi+8] mov rdx, rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFINTERFACE test rax, rax je SHORT G_M58788_IG04 ;; bbWeight=1 PerfScore 4.75 G_M58788_IG03: mov rcx, rax mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IIListProvider`1:ToArray():ref:this mov gword ptr [rsp+28H], rax mov edx, dword ptr [rax+8] mov dword ptr [rsp+30H], edx jmp SHORT G_M58788_IG05 ;; bbWeight=0.50 PerfScore 4.88 G_M58788_IG04: lea rdx, bword ptr [rsp+30H] mov rcx, rdi call EnumerableHelpers:ToArray(IEnumerable`1,byref):ref mov gword ptr [rsp+28H], rax ;; bbWeight=0.50 PerfScore 1.38 G_M58788_IG05: mov edx, dword ptr [rsp+30H] test edx, edx jne SHORT G_M58788_IG08 ;; bbWeight=1 PerfScore 2.25 G_M58788_IG06: mov rax, gword ptr [rsp+28H] ;; bbWeight=0.50 PerfScore 0.50 G_M58788_IG07: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M58788_IG08: movsxd rdx, edx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov rdi, rax mov rbx, gword ptr [rsp+28H] mov ebp, dword ptr [rsp+30H] mov rcx, rsi xor rdx, rdx mov rax, qword ptr [rsi] mov rax, qword ptr [rax+72] call gword ptr [rax+40]OrderedEnumerable`1:GetEnumerableSorter(EnumerableSorter`1):EnumerableSorter`1:this mov rcx, rax mov rdx, rbx mov r8d, ebp cmp dword ptr [rcx], ecx call EnumerableSorter`1:Sort(ref,int):ref:this xor edx, edx mov ecx, dword ptr [rdi+8] test ecx, ecx je SHORT G_M58788_IG10 mov r8d, dword ptr [rax+8] ;; bbWeight=0.50 PerfScore 10.25 G_M58788_IG09: cmp edx, r8d jae SHORT G_M58788_IG12 movsxd r9, edx mov r10d, dword ptr [rax+4*r9+16] mov r11, gword ptr [rsp+28H] cmp r10d, dword ptr [r11+8] jae SHORT G_M58788_IG12 mov r11, gword ptr [rsp+28H] movsxd r10, r10d vmovsd xmm0, qword ptr [r11+8*r10+16] cmp edx, ecx jae SHORT G_M58788_IG12 vmovsd qword ptr [rdi+8*r9+16], xmm0 inc edx cmp ecx, edx jne SHORT G_M58788_IG09 ;; bbWeight=4 PerfScore 56.00 G_M58788_IG10: mov rax, rdi ;; bbWeight=0.50 PerfScore 0.13 G_M58788_IG11: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.63 G_M58788_IG12: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 275, prolog size 21, PerfScore 117.63, (MethodHash=d5c11a5b) for method OrderedEnumerable`1:ToArray():ref:this ; ============================================================ ; Assembly listing for method EnumerableHelpers:ToArray(IEnumerable`1,byref):ref ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T07] ( 4, 4 ) ref -> rdi class-hnd ; V01 arg1 [V01,T06] ( 5, 5 ) byref -> rsi ; V02 loc0 [V02,T09] ( 4, 4 ) ref -> rbx class-hnd ; V03 loc1 [V03,T10] ( 4, 4 ) int -> rdi ; V04 loc2 [V04,T11] ( 3, 3 ) ref -> r14 class-hnd exact ; V05 loc3 [V05,T03] ( 9, 23 ) ref -> [rbp-0x30] EH do-not-enreg[] class-hnd EH-live ; V06 loc4 [V06 ] ( 6, 23 ) ref -> [rbp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V07 loc5 [V07,T02] ( 8, 38 ) int -> registers ; V08 loc6 [V08,T04] ( 4, 16 ) int -> rdx ; V09 loc7 [V09,T12] ( 2, 2 ) ref -> [rbp-0x38] EH do-not-enreg[] must-init class-hnd EH-live ; V10 OutArgs [V10 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V11 tmp1 [V11,T08] ( 3, 6 ) ref -> rdi class-hnd "non-inline candidate call" ; V12 tmp2 [V12,T15] ( 2, 4 ) double -> mm0 "Strict ordering of exceptions for Array store" ; V13 tmp3 [V13,T00] ( 4, 64 ) int -> rdi "impSpillLclRefs" ; V14 tmp4 [V14,T01] ( 3, 48 ) ref -> r14 class-hnd "non-inline candidate call" ; V15 tmp5 [V15,T14] ( 2, 32 ) double -> mm0 "Strict ordering of exceptions for Array store" ; V16 tmp6 [V16,T05] ( 3, 12 ) int -> rdx ; V17 PSPSym [V17 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ; V18 tmp8 [V18,T13] ( 2, 2 ) ref -> rax "optAddCopies" ; ; Lcl frame size = 64 G_M47171_IG01: push rbp push r14 push rdi push rsi push rbx sub rsp, 64 vzeroupper lea rbp, [rsp+60H] xor rax, rax mov qword ptr [rbp-28H], rax mov qword ptr [rbp-38H], rax mov qword ptr [rbp-40H], rsp mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 10.50 G_M47171_IG02: mov rdx, rdi mov rcx, 0xD1FFAB1E call CORINFO_HELP_ISINSTANCEOFINTERFACE mov rbx, rax test rbx, rbx je SHORT G_M47171_IG04 mov rcx, rbx mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]ICollection`1:get_Count():int:this mov edi, eax test edi, edi je G_M47171_IG18 movsxd rdx, edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC mov r14, rax mov rcx, rbx mov rdx, r14 mov r11, 0xD1FFAB1E xor r8d, r8d mov rax, 0xD1FFAB1E call qword ptr [rax]ICollection`1:CopyTo(ref,int):this mov dword ptr [rsi], edi mov rax, r14 ;; bbWeight=1 PerfScore 15.50 G_M47171_IG03: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M47171_IG04: mov rcx, rdi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-30H], rax ;; bbWeight=1 PerfScore 4.75 G_M47171_IG05: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M47171_IG13 mov rcx, 0xD1FFAB1E mov edx, 4 call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rbp-28H], rax mov rdi, gword ptr [rbp-28H] mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():double:this cmp dword ptr [rdi+8], 0 jbe SHORT G_M47171_IG08 vmovsd qword ptr [rdi+16], xmm0 mov edi, 1 mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je G_M47171_IG12 ;; bbWeight=1 PerfScore 23.25 G_M47171_IG06: mov rcx, gword ptr [rbp-28H] cmp dword ptr [rcx+8], edi jne SHORT G_M47171_IG11 ;; bbWeight=8 PerfScore 32.00 G_M47171_IG07: lea edx, [rdi+rdi] cmp edx, 0xD1FFAB1E jbe SHORT G_M47171_IG10 cmp edi, 0xD1FFAB1E jge SHORT G_M47171_IG09 mov edx, 0xD1FFAB1E jmp SHORT G_M47171_IG10 ;; bbWeight=4 PerfScore 21.00 G_M47171_IG08: call CORINFO_HELP_RNGCHKFAIL ;; bbWeight=0 PerfScore 0.00 G_M47171_IG09: lea edx, [rdi+1] ;; bbWeight=4 PerfScore 2.00 G_M47171_IG10: lea rcx, [rbp-28H] call Array:Resize(byref,int) ;; bbWeight=4 PerfScore 6.00 G_M47171_IG11: lea ecx, [rdi+1] mov ebx, ecx mov r14, gword ptr [rbp-28H] mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():double:this cmp edi, dword ptr [r14+8] jae SHORT G_M47171_IG08 movsxd rcx, edi vmovsd qword ptr [r14+8*rcx+16], xmm0 mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax mov edi, ebx jne G_M47171_IG06 ;; bbWeight=8 PerfScore 128.00 G_M47171_IG12: mov dword ptr [rsi], edi mov rcx, gword ptr [rbp-28H] mov gword ptr [rbp-38H], rcx jmp SHORT G_M47171_IG14 ;; bbWeight=1 PerfScore 5.00 G_M47171_IG13: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this jmp SHORT G_M47171_IG18 ;; bbWeight=1 PerfScore 6.50 G_M47171_IG14: mov rcx, rsp call G_M47171_IG20 ;; bbWeight=1 PerfScore 1.25 G_M47171_IG15: nop ;; bbWeight=1 PerfScore 0.25 G_M47171_IG16: mov rax, gword ptr [rbp-38H] ;; bbWeight=1 PerfScore 1.00 G_M47171_IG17: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M47171_IG18: xor eax, eax mov dword ptr [rsi], eax mov rax, 0xD1FFAB1E mov rax, gword ptr [rax] ;; bbWeight=1 PerfScore 3.50 G_M47171_IG19: lea rsp, [rbp-20H] pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 4.00 G_M47171_IG20: push rbp push r14 push rdi push rsi push rbx sub rsp, 48 vzeroupper mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=1 PerfScore 9.75 G_M47171_IG21: cmp gword ptr [rbp-30H], 0 je SHORT G_M47171_IG22 mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=1 PerfScore 6.50 G_M47171_IG22: nop ;; bbWeight=1 PerfScore 0.25 G_M47171_IG23: add rsp, 48 pop rbx pop rsi pop rdi pop r14 pop rbp ret ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 636, prolog size 38, PerfScore 356.45, (MethodHash=bd9a47bc) for method EnumerableHelpers:ToArray(IEnumerable`1,byref):ref ; ============================================================ ; Assembly listing for method SZArrayHelper:get_Count():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M63208_IG01: ;; bbWeight=1 PerfScore 0.00 G_M63208_IG02: mov eax, dword ptr [rcx+8] ;; bbWeight=1 PerfScore 2.00 G_M63208_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 4, prolog size 0, PerfScore 3.40, (MethodHash=da370917) for method SZArrayHelper:get_Count():int:this ; ============================================================ ; Assembly listing for method SZArrayHelper:CopyTo(ref,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 3, 3 ) int -> r9 ;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M17211_IG01: sub rsp, 40 mov r9d, r8d ;; bbWeight=1 PerfScore 0.50 G_M17211_IG02: mov r8d, dword ptr [rcx+8] mov dword ptr [rsp+20H], r8d mov r8, rdx xor edx, edx call Array:Copy(Array,int,Array,int,int) nop ;; bbWeight=1 PerfScore 4.75 G_M17211_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 32, prolog size 4, PerfScore 9.70, (MethodHash=d16cbcc4) for method SZArrayHelper:CopyTo(ref,int):this ; ============================================================ ; Assembly listing for method OrderedEnumerable`2:GetEnumerableSorter(EnumerableSorter`1):EnumerableSorter`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 6 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 loc0 [V02,T07] ( 2, 2 ) ref -> rbx class-hnd ; V03 loc1 [V03,T05] ( 4, 3 ) ref -> rax class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T00] ( 6, 12 ) ref -> [rsp+0x20] class-hnd exact "NewObj constructor temp" ; V06 tmp2 [V06,T03] ( 2, 4 ) ref -> rdx class-hnd "Inlining Arg" ; V07 tmp3 [V07,T04] ( 2, 4 ) bool -> rbp "Inlining Arg" ; V08 cse0 [V08,T06] ( 4, 3 ) ref -> rcx "CSE - aggressive" ; ; Lcl frame size = 40 G_M7169_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 4.75 G_M7169_IG02: mov rbx, gword ptr [rsi+32] mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdx, gword ptr [rsi+24] movzx rbp, byte ptr [rsi+40] mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rax+8] call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+20H] lea rcx, bword ptr [rax+16] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+20H] mov byte ptr [rax+40], bpl mov gword ptr [rsp+20H], rax lea rcx, bword ptr [rax+24] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rsp+20H] mov rcx, gword ptr [rsi+16] test rcx, rcx je SHORT G_M7169_IG04 ;; bbWeight=1 PerfScore 21.50 G_M7169_IG03: mov rdx, rax mov rax, qword ptr [rcx] mov rax, qword ptr [rax+72] call gword ptr [rax+40]OrderedEnumerable`1:GetEnumerableSorter(EnumerableSorter`1):EnumerableSorter`1:this ;; bbWeight=0.50 PerfScore 3.63 G_M7169_IG04: nop ;; bbWeight=1 PerfScore 0.25 G_M7169_IG05: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 136, prolog size 8, PerfScore 46.98, (MethodHash=8a48e3fe) for method OrderedEnumerable`2:GetEnumerableSorter(EnumerableSorter`1):EnumerableSorter`1:this ; ============================================================ ; Assembly listing for method EnumerableSorter`1:Sort(ref,int):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T01] ( 4, 4 ) int -> rdi ; V03 loc0 [V03,T03] ( 3, 3 ) ref -> rbx class-hnd ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M23760_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, r8d ;; bbWeight=1 PerfScore 3.75 G_M23760_IG02: mov rcx, rsi mov r8d, edi call EnumerableSorter`1:ComputeMap(ref,int):ref:this mov rbx, rax lea r9d, [rdi-1] mov rcx, rsi mov rdx, rbx xor r8d, r8d mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+48]EnumerableSorter`1:QuickSort(ref,int,int):this mov rax, rbx ;; bbWeight=1 PerfScore 10.25 G_M23760_IG03: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 61, prolog size 7, PerfScore 22.85, (MethodHash=3baea32f) for method EnumerableSorter`1:Sort(ref,int):ref:this ; ============================================================ ; Assembly listing for method EnumerableSorter`1:ComputeMap(ref,int):ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T05] ( 3, 3 ) ref -> rdx class-hnd ; V02 arg2 [V02,T03] ( 4, 4 ) int -> rsi ; V03 loc0 [V03,T01] ( 4, 7 ) ref -> rax class-hnd exact ; V04 loc1 [V04,T00] ( 6, 21 ) int -> rdx ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 cse0 [V06,T04] ( 3, 6 ) int -> rcx "CSE - aggressive" ; ; Lcl frame size = 32 G_M59555_IG01: push rsi sub rsp, 32 mov esi, r8d ;; bbWeight=1 PerfScore 1.50 G_M59555_IG02: mov r8d, esi mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] call qword ptr [rax+32]EnumerableSorter`1:ComputeKeys(ref,int):this movsxd rdx, esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC xor edx, edx mov ecx, dword ptr [rax+8] test ecx, ecx jle SHORT G_M59555_IG04 ;; bbWeight=1 PerfScore 12.25 G_M59555_IG03: movsxd r8, edx mov dword ptr [rax+4*r8+16], edx inc edx cmp ecx, edx jg SHORT G_M59555_IG03 ;; bbWeight=4 PerfScore 11.00 G_M59555_IG04: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 68, prolog size 8, PerfScore 33.30, (MethodHash=2711175c) for method EnumerableSorter`1:ComputeMap(ref,int):ref:this ; ============================================================ ; Assembly listing for method EnumerableSorter`2:ComputeKeys(ref,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T04] ( 8, 20 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T05] ( 8, 16.50) ref -> rdi class-hnd ; V02 arg2 [V02,T06] ( 9, 14.50) int -> rbx ; V03 loc0 [V03,T00] ( 14, 53 ) int -> rbp ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T01] ( 6, 48 ) ref -> r14 class-hnd "non-inline candidate call" ; V06 tmp2 [V06,T09] ( 4, 32 ) double -> mm0 "Strict ordering of exceptions for Array store" ; V07 tmp3 [V07,T07] ( 2, 4 ) ref -> rcx class-hnd "dup spill" ; V08 tmp4 [V08,T08] ( 4, 3 ) ref -> rcx ; V09 rat0 [V09,T02] ( 3, 24 ) ref -> rax "delegate invoke call" ; V10 rat1 [V10,T03] ( 3, 24 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 32 G_M49715_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 32 vzeroupper mov rsi, rcx mov rdi, rdx mov ebx, r8d ;; bbWeight=1 PerfScore 7.00 G_M49715_IG02: movsxd rdx, ebx mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWARR_1_VC lea rcx, bword ptr [rsi+32] mov rdx, rax call CORINFO_HELP_ASSIGN_REF xor ebp, ebp test ebx, ebx jle G_M49715_IG07 test rdi, rdi je SHORT G_M49715_IG06 ;; bbWeight=1 PerfScore 6.00 G_M49715_IG03: cmp dword ptr [rdi+8], ebx setge cl movzx rcx, cl test ebx, ebx setge al movzx rax, al test ecx, eax je SHORT G_M49715_IG06 ;; bbWeight=1 PerfScore 6.00 G_M49715_IG04: mov r14, gword ptr [rsi+32] movsxd rcx, ebp vmovsd xmm1, qword ptr [rdi+8*rcx+16] mov rax, gword ptr [rsi+8] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`2:Invoke(double):double:this cmp ebp, dword ptr [r14+8] jae SHORT G_M49715_IG11 movsxd rcx, ebp vmovsd qword ptr [r14+8*rcx+16], xmm0 inc ebp cmp ebp, ebx jl SHORT G_M49715_IG04 ;; bbWeight=4 PerfScore 66.00 G_M49715_IG05: jmp SHORT G_M49715_IG07 ;; bbWeight=1 PerfScore 2.00 G_M49715_IG06: mov r14, gword ptr [rsi+32] cmp ebp, dword ptr [rdi+8] jae SHORT G_M49715_IG11 movsxd rcx, ebp vmovsd xmm1, qword ptr [rdi+8*rcx+16] mov rax, gword ptr [rsi+8] mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`2:Invoke(double):double:this cmp ebp, dword ptr [r14+8] jae SHORT G_M49715_IG11 movsxd rcx, ebp vmovsd qword ptr [r14+8*rcx+16], xmm0 inc ebp cmp ebp, ebx jl SHORT G_M49715_IG06 ;; bbWeight=4 PerfScore 78.00 G_M49715_IG07: mov rcx, gword ptr [rsi+24] test rcx, rcx jne SHORT G_M49715_IG09 ;; bbWeight=1 PerfScore 3.25 G_M49715_IG08: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=0.50 PerfScore 1.88 G_M49715_IG09: mov rdx, rdi mov r8d, ebx mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+32] ;; bbWeight=0.50 PerfScore 3.25 G_M49715_IG10: add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r14 rex.jmp rax ;; bbWeight=0.50 PerfScore 2.38 G_M49715_IG11: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 243, prolog size 22, PerfScore 200.25, (MethodHash=3bb03dcc) for method EnumerableSorter`2:ComputeKeys(ref,int):this ; ============================================================ ; Assembly listing for method <>c:<.ctor>b__69_1(double):double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 3, 3 ) double -> mm1 ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M45315_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M45315_IG02: vmovaps xmm0, xmm1 ;; bbWeight=1 PerfScore 0.25 G_M45315_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 8, prolog size 3, PerfScore 3.15, (MethodHash=0b804efc) for method <>c:<.ctor>b__69_1(double):double:this ; ============================================================ ; Assembly listing for method EnumerableSorter`2:QuickSort(ref,int,int):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T04] ( 5, 3.75) ref -> rdx class-hnd ; V02 arg2 [V02,T02] ( 6, 4 ) int -> r8 ; V03 arg3 [V03,T05] ( 3, 3 ) int -> r9 ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V07 tmp3 [V07,T06] ( 4, 4 ) int -> r9 "Inlining Arg" ;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ; V09 tmp5 [V09,T10] ( 2, 2 ) byref -> rdx "Inlining Arg" ; V10 tmp6 [V10,T07] ( 2, 4 ) long -> r14 "Inlining Arg" ; V11 tmp7 [V11,T08] ( 3, 2 ) byref -> rdi V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)" ; V12 tmp8 [V12,T09] ( 3, 2 ) int -> rbx V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)" ; V13 tmp9 [V13,T11] ( 2, 1 ) byref -> rdi V08._value(offs=0x00) P-INDEP "field V08._value (fldOffset=0x0)" ; V14 tmp10 [V14 ] ( 2, 4 ) struct (16) [rsp+0x20] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V15 tmp11 [V15,T03] ( 3, 6 ) byref -> rcx stack-byref "BlockOp address local" ; ; Lcl frame size = 48 G_M30242_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 48 xor rax, rax mov qword ptr [rsp+20H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 6.75 G_M30242_IG02: sub r9d, r8d inc r9d test rdx, rdx jne SHORT G_M30242_IG05 ;; bbWeight=1 PerfScore 1.75 G_M30242_IG03: or r8d, r9d jne G_M30242_IG10 ;; bbWeight=0.25 PerfScore 0.31 G_M30242_IG04: xor rdi, rdi xor ebx, ebx jmp SHORT G_M30242_IG07 ;; bbWeight=0.50 PerfScore 1.25 G_M30242_IG05: mov ecx, r8d mov eax, r9d add rcx, rax mov eax, dword ptr [rdx+8] cmp rcx, rax ja SHORT G_M30242_IG10 ;; bbWeight=0.25 PerfScore 1.00 G_M30242_IG06: add rdx, 16 movsxd rcx, r8d lea rdi, bword ptr [rdx+4*rcx] mov ebx, r9d ;; bbWeight=0.50 PerfScore 0.63 G_M30242_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov rcx, rsi mov rdx, 0xD1FFAB1E mov r8, 0xD1FFAB1E call CORINFO_HELP_VIRTUAL_FUNC_PTR mov r14, rax test rsi, rsi je SHORT G_M30242_IG11 ;; bbWeight=1 PerfScore 4.75 G_M30242_IG08: lea rcx, bword ptr [rbp+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov qword ptr [rbp+24], r14 lea rcx, bword ptr [rsp+20H] mov bword ptr [rcx], rdi mov dword ptr [rcx+8], ebx lea rcx, bword ptr [rsp+20H] mov rdx, rbp call MemoryExtensions:Sort(Span`1,Comparison`1) nop ;; bbWeight=1 PerfScore 7.25 G_M30242_IG09: add rsp, 48 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 3.75 G_M30242_IG10: call ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; bbWeight=0 PerfScore 0.00 G_M30242_IG11: call MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 195, prolog size 17, PerfScore 46.94, (MethodHash=b46489dd) for method EnumerableSorter`2:QuickSort(ref,int,int):this ; ============================================================ ; Assembly listing for method EnumerableSorter`2:CompareAnyKeys(int,int):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 6, 5 ) int -> rdi ; V02 arg2 [V02,T02] ( 6, 5 ) int -> rbx ; V03 loc0 [V03,T08] ( 3, 2.50) int -> rax ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 3, 6 ) ref -> rax "arr expr" ; V06 tmp2 [V06,T04] ( 2, 4 ) ref -> r11 "arr expr" ; V07 tmp3 [V07,T05] ( 2, 4 ) ref -> rcx "argument with side effect" ; V08 tmp4 [V08,T10] ( 2, 4 ) double -> mm2 "argument with side effect" ; V09 tmp5 [V09,T11] ( 2, 4 ) double -> mm1 "argument with side effect" ; V10 cse0 [V10,T06] ( 3, 3 ) ref -> r11 "CSE - aggressive" ; V11 cse1 [V11,T09] ( 4, 2 ) ref -> rcx "CSE - moderate" ; V12 cse2 [V12,T07] ( 3, 3 ) int -> rdx "CSE - aggressive" ; ; Lcl frame size = 32 G_M4892_IG01: push rdi push rsi push rbx sub rsp, 32 vzeroupper mov rsi, rcx mov edi, edx mov ebx, r8d ;; bbWeight=1 PerfScore 5.00 G_M4892_IG02: mov rcx, gword ptr [rsi+16] mov r11, gword ptr [rsi+32] mov rax, r11 mov edx, dword ptr [rax+8] cmp edi, edx jae G_M4892_IG11 movsxd r8, edi vmovsd xmm1, qword ptr [rax+8*r8+16] cmp ebx, edx jae G_M4892_IG11 movsxd rax, ebx vmovsd xmm2, qword ptr [r11+8*rax+16] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IComparer`1:Compare(double,double):int:this test eax, eax jne SHORT G_M4892_IG07 ;; bbWeight=1 PerfScore 18.00 G_M4892_IG03: mov rcx, gword ptr [rsi+24] test rcx, rcx jne SHORT G_M4892_IG05 mov eax, edi sub eax, ebx ;; bbWeight=0.50 PerfScore 1.88 G_M4892_IG04: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M4892_IG05: mov edx, edi mov r8d, ebx mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+40] ;; bbWeight=0.50 PerfScore 3.25 G_M4892_IG06: add rsp, 32 pop rbx pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.88 G_M4892_IG07: movzx rdx, byte ptr [rsi+40] test eax, eax setg al movzx rax, al cmp edx, eax jne SHORT G_M4892_IG09 mov eax, -1 ;; bbWeight=0.50 PerfScore 2.50 G_M4892_IG08: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M4892_IG09: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M4892_IG10: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M4892_IG11: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 189, prolog size 10, PerfScore 55.65, (MethodHash=af2dece3) for method EnumerableSorter`2:CompareAnyKeys(int,int):int:this ; ============================================================ ; Assembly listing for method GenericComparer`1:Compare(double,double):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01 ] ( 3, 3 ) double -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V02 arg2 [V02,T00] ( 3, 3 ) double -> mm2 ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M34314_IG01: sub rsp, 40 vzeroupper vmovsd qword ptr [rsp+38H], xmm1 ;; bbWeight=1 PerfScore 1.75 G_M34314_IG02: lea rcx, bword ptr [rsp+38H] vmovaps xmm1, xmm2 call Double:CompareTo(double):int:this nop ;; bbWeight=1 PerfScore 2.00 G_M34314_IG03: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 33, prolog size 7, PerfScore 8.50, (MethodHash=3fee79f5) for method GenericComparer`1:Compare(double,double):int:this ; ============================================================ ; Assembly listing for method Quartiles:FromSorted(IReadOnlyList`1):Quartiles ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T02] ( 4, 4 ) byref -> rdi ; V01 arg0 [V01,T01] ( 8, 8 ) ref -> rsi class-hnd ;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ; V03 loc1 [V03,T10] ( 2, 2 ) double -> [rsp+0x58] ; V04 loc2 [V04,T11] ( 2, 2 ) double -> [rsp+0x50] ; V05 loc3 [V05,T12] ( 2, 2 ) double -> [rsp+0x48] ; V06 loc4 [V06,T13] ( 2, 2 ) double -> mm0 ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T09] ( 2, 4 ) double -> mm6 "impAppendStmt" ; V09 tmp2 [V09,T00] ( 7, 14 ) struct (40) [rsp+0x20] do-not-enreg[SFB] "NewObj constructor temp" ;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref V02.values(offs=0x00) P-INDEP "field V02.values (fldOffset=0x0)" ; V11 tmp4 [V11,T03] ( 2, 4 ) ref -> rcx "argument with side effect" ; V12 tmp5 [V12,T04] ( 2, 4 ) ref -> rcx "argument with side effect" ; V13 tmp6 [V13,T05] ( 2, 4 ) ref -> rcx "argument with side effect" ; V14 tmp7 [V14,T06] ( 2, 4 ) ref -> rcx "argument with side effect" ; V15 tmp8 [V15,T07] ( 2, 4 ) ref -> rcx "argument with side effect" ;* V16 cse0 [V16,T08] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; ; Lcl frame size = 120 G_M56010_IG01: push rdi push rsi sub rsp, 120 vzeroupper vmovaps qword ptr [rsp+60H], xmm6 mov rdi, rcx mov rsi, rdx ;; bbWeight=1 PerfScore 6.75 G_M56010_IG02: vxorps xmm1, xmm1 mov rcx, rsi call QuantileEstimatorHelper:CheckArguments(IReadOnlyList`1,double) mov rcx, 0xD1FFAB1E mov edx, 37 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] vxorps xmm2, xmm2 mov rdx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IQuantileEstimator:GetQuantileFromSorted(IReadOnlyList`1,double):double:this vmovaps xmm6, xmm0 mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] vmovsd xmm2, qword ptr [reloc @RWD08] mov rdx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IQuantileEstimator:GetQuantileFromSorted(IReadOnlyList`1,double):double:this vmovsd qword ptr [rsp+58H], xmm0 mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] vmovsd xmm2, qword ptr [reloc @RWD24] mov rdx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IQuantileEstimator:GetQuantileFromSorted(IReadOnlyList`1,double):double:this vmovsd qword ptr [rsp+50H], xmm0 mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] vmovsd xmm2, qword ptr [reloc @RWD40] mov rdx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IQuantileEstimator:GetQuantileFromSorted(IReadOnlyList`1,double):double:this vmovsd qword ptr [rsp+48H], xmm0 mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] vmovsd xmm2, qword ptr [reloc @RWD56] mov rdx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IQuantileEstimator:GetQuantileFromSorted(IReadOnlyList`1,double):double:this xor eax, eax vxorps xmm1, xmm1 vmovdqu xmmword ptr [rsp+20H], xmm1 ;; bbWeight=1 PerfScore 44.75 G_M56010_IG03: vmovdqu xmmword ptr [rsp+30H], xmm1 mov qword ptr [rsp+40H], rax vmovsd qword ptr [rsp+20H], xmm6 vmovsd xmm1, qword ptr [rsp+58H] vmovsd qword ptr [rsp+28H], xmm1 vmovsd xmm1, qword ptr [rsp+50H] vmovsd qword ptr [rsp+30H], xmm1 vmovsd xmm1, qword ptr [rsp+48H] vmovsd qword ptr [rsp+38H], xmm1 vmovsd qword ptr [rsp+40H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+20H] vmovdqu xmmword ptr [rdi], xmm0 vmovdqu xmm0, xmmword ptr [rsp+30H] vmovdqu xmmword ptr [rdi+16], xmm0 mov rax, qword ptr [rsp+40H] mov qword ptr [rdi+32], rax mov rax, rdi ;; bbWeight=1 PerfScore 16.75 G_M56010_IG04: vmovaps xmm6, qword ptr [rsp+60H] add rsp, 120 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 6.25 RWD00 dq 0000000000000000h RWD08 dq 3FD0000000000000h RWD16 dq 0000000000000000h RWD24 dq 3FE0000000000000h RWD32 dq 0000000000000000h RWD40 dq 3FE8000000000000h RWD48 dq 0000000000000000h RWD56 dq 3FF0000000000000h ; Total bytes of code 418, prolog size 15, PerfScore 119.00, (MethodHash=835b2535) for method Quartiles:FromSorted(IReadOnlyList`1):Quartiles ; ============================================================ ; Assembly listing for method QuantileEstimatorHelper:CheckArguments(IReadOnlyList`1,double) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rcx class-hnd ; V01 arg1 [V01,T01] ( 5, 4 ) double -> [rsp+0x58] ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rsi class-hnd exact "Single-def Box Helper" ; V04 tmp2 [V04,T03] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V05 tmp3 [V05,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp4 [V06,T05] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V07 tmp5 [V07,T06] ( 2, 0 ) ref -> rdx "argument with side effect" ; V08 tmp6 [V08,T07] ( 2, 0 ) ref -> rdi "argument with side effect" ; V09 tmp7 [V09,T08] ( 2, 0 ) ref -> r8 "argument with side effect" ; V10 tmp8 [V10,T09] ( 2, 0 ) ref -> rbp "argument with side effect" ; V11 tmp9 [V11,T10] ( 2, 0 ) ref -> rdx "argument with side effect" ; V12 tmp10 [V12,T11] ( 2, 0 ) ref -> rbx "argument with side effect" ; V13 tmp11 [V13,T12] ( 2, 0 ) ref -> r8 "argument with side effect" ; ; Lcl frame size = 40 G_M9333_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 vzeroupper vmovsd qword ptr [rsp+58H], xmm1 ;; bbWeight=1 PerfScore 5.75 G_M9333_IG02: test rcx, rcx je SHORT G_M9333_IG07 ;; bbWeight=1 PerfScore 1.25 G_M9333_IG03: mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IReadOnlyCollection`1:get_Count():int:this test eax, eax je SHORT G_M9333_IG08 ;; bbWeight=1 PerfScore 4.75 G_M9333_IG04: vxorps xmm0, xmm0 vmovsd xmm1, qword ptr [rsp+58H] vucomisd xmm0, xmm1 ja SHORT G_M9333_IG06 vmovsd qword ptr [rsp+58H], xmm1 vucomisd xmm1, qword ptr [reloc @RWD08] ja G_M9333_IG09 ;; bbWeight=1 PerfScore 6.83 G_M9333_IG05: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M9333_IG06: vmovsd qword ptr [rsp+58H], xmm1 jmp G_M9333_IG09 ;; bbWeight=0.50 PerfScore 1.25 G_M9333_IG07: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 947 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M9333_IG08: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 947 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov ecx, 0x5C9 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r8, rax mov rdx, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M9333_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax vmovsd xmm1, qword ptr [rsp+58H] vmovsd qword ptr [rsi+8], xmm1 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov ecx, 0x5FB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov ecx, 0x613 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbp, rax mov ecx, 0x5FB mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rbp mov r8, rsi call String:Format(String,Object,Object):String mov r8, rax mov rdx, rbx mov rcx, rdi call ArgumentOutOfRangeException:.ctor(String,String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 3FF0000000000000h ; Total bytes of code 394, prolog size 11, PerfScore 63.38, (MethodHash=4c0ddb8a) for method QuantileEstimatorHelper:CheckArguments(IReadOnlyList`1,double) ; ============================================================ ; Assembly listing for method SimpleQuantileEstimator:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M34841_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M34841_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call SimpleQuantileEstimator:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M34841_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=436177e6) for method SimpleQuantileEstimator:.cctor() ; ============================================================ ; Assembly listing for method SimpleQuantileEstimator:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M30470_IG01: ;; bbWeight=1 PerfScore 0.00 G_M30470_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=92a488f9) for method SimpleQuantileEstimator:.ctor():this ; ============================================================ ; Assembly listing for method SimpleQuantileEstimator:GetQuantileFromSorted(IReadOnlyList`1,double):double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T00] ( 8, 6.50) ref -> rsi class-hnd ; V02 arg2 [V02,T02] ( 4, 4 ) double -> [rsp+0x70] ; V03 loc0 [V03,T01] ( 6, 4.50) int -> rdi ; V04 loc1 [V04,T04] ( 3, 2 ) double -> mm6 ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 3, 6 ) double -> mm0 "dup spill" ; V07 tmp2 [V07,T05] ( 2, 2 ) double -> mm7 "non-inline candidate call" ; ; Lcl frame size = 72 G_M42028_IG01: push rdi push rsi sub rsp, 72 vzeroupper vmovaps qword ptr [rsp+30H], xmm6 vmovaps qword ptr [rsp+20H], xmm7 mov rsi, rdx ;; bbWeight=1 PerfScore 9.50 G_M42028_IG02: mov rcx, rsi vmovsd qword ptr [rsp+70H], xmm2 vmovaps xmm1, xmm2 call QuantileEstimatorHelper:CheckArguments(IReadOnlyList`1,double) mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IReadOnlyCollection`1:get_Count():int:this dec eax vxorps xmm0, xmm0 vcvtsi2sd xmm0, eax vmulsd xmm0, xmm0, qword ptr [rsp+70H] vcvttsd2si edi, xmm0 vxorps xmm1, xmm1 vcvtsi2sd xmm1, edi vsubsd xmm6, xmm0, xmm1 mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IReadOnlyCollection`1:get_Count():int:this lea ecx, [rdi+1] cmp eax, ecx jle SHORT G_M42028_IG05 ;; bbWeight=1 PerfScore 35.17 G_M42028_IG03: mov rcx, rsi mov edx, edi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IReadOnlyList`1:get_Item(int):double:this vmovsd xmm1, qword ptr [reloc @RWD08] vsubsd xmm1, xmm1, xmm6 vmulsd xmm7, xmm0, xmm1 lea edx, [rdi+1] mov rcx, rsi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IReadOnlyList`1:get_Item(int):double:this vmulsd xmm0, xmm0, xmm6 vaddsd xmm0, xmm0, xmm7 ;; bbWeight=0.50 PerfScore 11.13 G_M42028_IG04: vmovaps xmm6, qword ptr [rsp+30H] vmovaps xmm7, qword ptr [rsp+20H] add rsp, 72 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 5.13 G_M42028_IG05: mov rcx, rsi mov edx, edi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=0.50 PerfScore 1.50 G_M42028_IG06: vmovaps xmm6, qword ptr [rsp+30H] vmovaps xmm7, qword ptr [rsp+20H] add rsp, 72 pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 5.63 RWD00 dq 0000000000000000h RWD08 dq 3FF0000000000000h ; Total bytes of code 278, prolog size 21, PerfScore 97.84, (MethodHash=583c5bd3) for method SimpleQuantileEstimator:GetQuantileFromSorted(IReadOnlyList`1,double):double:this ; ============================================================ ; Assembly listing for method SZArrayHelper:get_Item(int):double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 4, 4 ) int -> rdx ; V02 loc0 [V02,T02] ( 2, 2 ) ref -> rax class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 cse0 [V04,T03] ( 2, 2 ) int -> rax "CSE - aggressive" ; ; Lcl frame size = 40 G_M14603_IG01: sub rsp, 40 vzeroupper ;; bbWeight=1 PerfScore 1.25 G_M14603_IG02: mov rax, rcx mov eax, dword ptr [rax+8] cmp eax, edx jbe SHORT G_M14603_IG05 ;; bbWeight=1 PerfScore 3.50 G_M14603_IG03: movsxd rax, edx vmovsd xmm0, qword ptr [rcx+8*rax+16] ;; bbWeight=1 PerfScore 2.25 G_M14603_IG04: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 G_M14603_IG05: call ThrowHelper:ThrowArgumentOutOfRange_IndexException() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 37, prolog size 7, PerfScore 12.05, (MethodHash=5aecc6f4) for method SZArrayHelper:get_Item(int):double:this ; ============================================================ ; Assembly listing for method Moments:Create(IReadOnlyList`1):Moments ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 RetBuf [V00,T01] ( 4, 4 ) byref -> rsi ; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd ; V02 loc0 [V02,T00] ( 10, 9 ) ref -> rbx class-hnd exact ; V03 loc1 [V03,T05] ( 3, 2.50) int -> rdi ;* V04 loc2 [V04 ] ( 0, 0 ) double -> zero-ref ; V05 loc3 [V05,T10] ( 2, 2 ) double -> [rsp+0x58] ; V06 loc4 [V06,T11] ( 2, 2 ) double -> mm1 ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (40) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T04] ( 2, 4 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V09 tmp2 [V09,T07] ( 5, 4 ) double -> mm6 ; V10 tmp3 [V10,T08] ( 2, 4 ) double -> mm7 "impAppendStmt" ; V11 tmp4 [V11,T09] ( 2, 4 ) double -> mm7 "impAppendStmt" ; V12 tmp5 [V12 ] ( 3, 6 ) struct (40) [rsp+0x30] do-not-enreg[XSB] addr-exposed "NewObj constructor temp" ; V13 tmp6 [V13,T03] ( 4, 4 ) ref -> rbp class-hnd exact "NewObj constructor temp" ; V14 tmp7 [V14,T06] ( 2, 2 ) ref -> r14 class-hnd "impAppendStmt" ;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 128 G_M21347_IG01: push r14 push rdi push rsi push rbp push rbx sub rsp, 128 vzeroupper vmovaps qword ptr [rsp+70H], xmm6 vmovaps qword ptr [rsp+60H], xmm7 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 12.75 G_M21347_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax lea rcx, bword ptr [rbx+8] mov rdx, rdi call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rbx+8] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IReadOnlyCollection`1:get_Count():int:this mov edi, eax mov rcx, gword ptr [rbx+8] call Enumerable:Average(IEnumerable`1):double vmovsd qword ptr [rbx+16], xmm0 cmp edi, 1 je SHORT G_M21347_IG04 ;; bbWeight=1 PerfScore 13.75 G_M21347_IG03: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbp, rax mov r14, gword ptr [rbx+8] lea rcx, bword ptr [rbp+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rbp+24], rcx mov rcx, r14 mov rdx, rbp call Enumerable:Sum(IEnumerable`1,Func`2):double dec edi vxorps xmm1, xmm1 vcvtsi2sd xmm1, edi vdivsd xmm6, xmm0, xmm1 jmp SHORT G_M21347_IG05 ;; bbWeight=0.50 PerfScore 13.79 G_M21347_IG04: vxorps xmm6, xmm6 ;; bbWeight=0.50 PerfScore 0.17 G_M21347_IG05: mov rcx, rbx mov edx, 3 call <>c__DisplayClass16_0:g__CalcCentralMoment|1(int):double:this vmovaps xmm7, xmm0 vmovsd xmm1, qword ptr [reloc @RWD08] vmovaps xmm0, xmm6 call Math:Pow(double,double):double vdivsd xmm3, xmm7, xmm0 vmovsd qword ptr [rsp+58H], xmm3 mov rcx, rbx mov edx, 4 call <>c__DisplayClass16_0:g__CalcCentralMoment|1(int):double:this vmovaps xmm7, xmm0 vmovsd xmm1, qword ptr [reloc @RWD24] vmovaps xmm0, xmm6 call Math:Pow(double,double):double vdivsd xmm1, xmm7, xmm0 xor ecx, ecx vxorps xmm2, xmm2 vmovdqu xmmword ptr [rsp+30H], xmm2 vmovdqu xmmword ptr [rsp+40H], xmm2 mov qword ptr [rsp+50H], rcx vmovsd qword ptr [rsp+20H], xmm1 vmovsd xmm1, qword ptr [rbx+16] lea rcx, bword ptr [rsp+30H] vmovaps xmm2, xmm6 vmovsd xmm3, qword ptr [rsp+58H] call Moments:.ctor(double,double,double,double):this vmovdqu xmm0, xmmword ptr [rsp+30H] vmovdqu xmmword ptr [rsi], xmm0 vmovdqu xmm0, xmmword ptr [rsp+40H] vmovdqu xmmword ptr [rsi+16], xmm0 mov rax, qword ptr [rsp+50H] mov qword ptr [rsi+32], rax mov rax, rsi ;; bbWeight=1 PerfScore 50.58 G_M21347_IG06: vmovaps xmm6, qword ptr [rsp+70H] vmovaps xmm7, qword ptr [rsp+60H] add rsp, 128 pop rbx pop rbp pop rsi pop rdi pop r14 ret ;; bbWeight=1 PerfScore 11.75 RWD00 dq 0000000000000000h RWD08 dq 3FF8000000000000h RWD16 dq 0000000000000000h RWD24 dq 4000000000000000h ; Total bytes of code 385, prolog size 28, PerfScore 144.19, (MethodHash=e661ac9c) for method Moments:Create(IReadOnlyList`1):Moments ; ============================================================ ; Assembly listing for method Enumerable:Average(IEnumerable`1):double ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 4, 4 ) ref -> rcx class-hnd ; V01 loc0 [V01,T00] ( 9, 13 ) ref -> [rbp-0x30] EH do-not-enreg[] class-hnd EH-live ; V02 loc1 [V02,T04] ( 4, 10 ) double -> mm6 ; V03 loc2 [V03,T01] ( 4, 10 ) long -> rsi ; V04 loc3 [V04,T05] ( 2, 2 ) double -> [rbp-0x28] ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 PSPSym [V06 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ; V07 tmp2 [V07,T03] ( 2, 2 ) ref -> rax "optAddCopies" ; ; Lcl frame size = 88 G_M4757_IG01: push rbp push rsi sub rsp, 88 vzeroupper vmovaps qword ptr [rsp+40H], xmm6 lea rbp, [rsp+60H] mov qword ptr [rbp-40H], rsp ;; bbWeight=1 PerfScore 7.75 G_M4757_IG02: test rcx, rcx je G_M4757_IG12 ;; bbWeight=1 PerfScore 1.25 G_M4757_IG03: mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-30H], rax ;; bbWeight=1 PerfScore 4.50 G_M4757_IG04: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M4757_IG07 ;; bbWeight=1 PerfScore 5.75 G_M4757_IG05: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():double:this vmovaps xmm6, xmm0 mov esi, 1 mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M4757_IG09 ;; bbWeight=1 PerfScore 10.75 G_M4757_IG06: jmp SHORT G_M4757_IG08 ;; bbWeight=0.50 PerfScore 1.00 G_M4757_IG07: call ThrowHelper:ThrowNoElementsException() int3 ;; bbWeight=0 PerfScore 0.00 G_M4757_IG08: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():double:this vaddsd xmm6, xmm0, xmm6 inc rsi mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M4757_IG08 ;; bbWeight=4 PerfScore 54.00 G_M4757_IG09: vxorps xmm0, xmm0 vcvtsi2sd xmm0, rsi vdivsd xmm0, xmm6, xmm0 vmovsd qword ptr [rbp-28H], xmm0 ;; bbWeight=1 PerfScore 17.83 G_M4757_IG10: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this vmovsd xmm0, qword ptr [rbp-28H] ;; bbWeight=1 PerfScore 6.50 G_M4757_IG11: vmovaps xmm6, qword ptr [rsp+40H] lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 6.50 G_M4757_IG12: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M4757_IG13: push rbp push rsi sub rsp, 72 vzeroupper vmovaps qword ptr [rsp+30H], xmm6 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=0 PerfScore 0.00 G_M4757_IG14: cmp gword ptr [rbp-30H], 0 je SHORT G_M4757_IG15 mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M4757_IG15: nop ;; bbWeight=0 PerfScore 0.00 G_M4757_IG16: vmovaps xmm6, qword ptr [rsp+30H] add rsp, 72 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 373, prolog size 24, PerfScore 154.13, (MethodHash=2590ed6a) for method Enumerable:Average(IEnumerable`1):double ; ============================================================ ; Assembly listing for method Enumerable:Sum(IEnumerable`1,Func`2):double ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 4, 4 ) ref -> rcx class-hnd ; V01 arg1 [V01,T02] ( 4, 7 ) ref -> rsi class-hnd ; V02 loc0 [V02,T05] ( 4, 10 ) double -> mm6 ; V03 loc1 [V03,T01] ( 7, 11 ) ref -> [rbp-0x28] EH do-not-enreg[] class-hnd EH-live ; V04 loc2 [V04,T06] ( 2, 8 ) double -> mm0 ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 PSPSym [V06 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "PSPSym" ; V07 tmp2 [V07,T04] ( 2, 2 ) ref -> rax "optAddCopies" ; V08 rat0 [V08,T00] ( 3, 24 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 72 G_M54429_IG01: push rbp push rsi sub rsp, 72 vzeroupper vmovaps qword ptr [rsp+30H], xmm6 lea rbp, [rsp+50H] mov qword ptr [rbp-30H], rsp mov rsi, rdx ;; bbWeight=1 PerfScore 8.00 G_M54429_IG02: test rcx, rcx je G_M54429_IG09 ;; bbWeight=1 PerfScore 1.25 G_M54429_IG03: test rsi, rsi je G_M54429_IG10 ;; bbWeight=1 PerfScore 1.25 G_M54429_IG04: vxorps xmm6, xmm6 mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-28H], rax ;; bbWeight=1 PerfScore 4.83 G_M54429_IG05: mov rcx, gword ptr [rbp-28H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M54429_IG07 ;; bbWeight=1 PerfScore 5.75 G_M54429_IG06: mov rcx, gword ptr [rbp-28H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():double:this mov rax, rsi mov rcx, gword ptr [rax+8] vmovaps xmm1, xmm0 call qword ptr [rax+24]Func`2:Invoke(double):double:this vaddsd xmm6, xmm0, xmm6 mov rcx, gword ptr [rbp-28H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M54429_IG06 ;; bbWeight=4 PerfScore 75.00 G_M54429_IG07: mov rcx, gword ptr [rbp-28H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this vmovaps xmm0, xmm6 ;; bbWeight=1 PerfScore 4.75 G_M54429_IG08: vmovaps xmm6, qword ptr [rsp+30H] lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 6.50 G_M54429_IG09: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M54429_IG10: mov ecx, 15 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M54429_IG11: push rbp push rsi sub rsp, 72 vzeroupper vmovaps qword ptr [rsp+30H], xmm6 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=0 PerfScore 0.00 G_M54429_IG12: cmp gword ptr [rbp-28H], 0 je SHORT G_M54429_IG13 mov rcx, gword ptr [rbp-28H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M54429_IG13: nop ;; bbWeight=0 PerfScore 0.00 G_M54429_IG14: vmovaps xmm6, qword ptr [rsp+30H] add rsp, 72 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 319, prolog size 27, PerfScore 140.03, (MethodHash=ba322b62) for method Enumerable:Sum(IEnumerable`1,Func`2):double ; ============================================================ ; Assembly listing for method <>c__DisplayClass16_0:b__0(double):double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) double -> mm1 ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M59406_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M59406_IG02: vsubsd xmm0, xmm1, qword ptr [rcx+16] vmovsd xmm1, qword ptr [reloc @RWD08] ;; bbWeight=1 PerfScore 8.00 G_M59406_IG03: jmp Math:Pow(double,double):double ;; bbWeight=1 PerfScore 2.00 RWD00 dq 0000000000000000h RWD08 dq 4000000000000000h ; Total bytes of code 21, prolog size 3, PerfScore 13.30, (MethodHash=f1bb17f1) for method <>c__DisplayClass16_0:b__0(double):double:this ; ============================================================ ; Assembly listing for method <>c__DisplayClass16_0:g__CalcCentralMoment|1(int):double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi ; V02 loc0 [V02,T03] ( 4, 4 ) ref -> rbx class-hnd exact ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 4 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T00] ( 4, 8 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp3 [V06,T05] ( 2, 4 ) ref -> rsi class-hnd "impAppendStmt" ;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; ; Lcl frame size = 32 G_M19022_IG01: push rdi push rsi push rbx sub rsp, 32 mov rsi, rcx mov edi, edx ;; bbWeight=1 PerfScore 3.75 G_M19022_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax lea rcx, bword ptr [rbx+8] mov rdx, rsi call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+16], edi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rsi, gword ptr [rsi+8] lea rcx, bword ptr [rdi+8] mov rdx, rbx call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov qword ptr [rdi+24], rcx mov rcx, rsi mov rdx, rdi ;; bbWeight=1 PerfScore 11.25 G_M19022_IG03: add rsp, 32 pop rbx pop rsi pop rdi jmp Enumerable:Average(IEnumerable`1,Func`2):double ;; bbWeight=1 PerfScore 3.75 ; Total bytes of code 111, prolog size 12, PerfScore 29.85, (MethodHash=c0edb5b1) for method <>c__DisplayClass16_0:g__CalcCentralMoment|1(int):double:this ; ============================================================ ; Assembly listing for method Enumerable:Average(IEnumerable`1,Func`2):double ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 4, 4 ) ref -> rcx class-hnd ; V01 arg1 [V01,T02] ( 5, 8 ) ref -> rsi class-hnd ; V02 loc0 [V02,T01] ( 9, 13 ) ref -> [rbp-0x30] EH do-not-enreg[] class-hnd EH-live ; V03 loc1 [V03,T08] ( 4, 10 ) double -> mm6 ; V04 loc2 [V04,T03] ( 4, 10 ) long -> rdi ; V05 loc3 [V05,T10] ( 2, 2 ) double -> [rbp-0x28] ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V07 tmp1 [V07,T09] ( 2, 4 ) double -> mm0 "argument with side effect" ; V08 tmp2 [V08,T07] ( 2, 16 ) double -> mm0 "argument with side effect" ; V09 PSPSym [V09 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ; V10 tmp4 [V10,T06] ( 2, 2 ) ref -> rax "optAddCopies" ; V11 rat0 [V11,T05] ( 3, 6 ) ref -> rax "delegate invoke call" ; V12 rat1 [V12,T00] ( 3, 24 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 80 G_M53973_IG01: push rbp push rdi push rsi sub rsp, 80 vzeroupper vmovaps qword ptr [rsp+40H], xmm6 lea rbp, [rsp+60H] mov qword ptr [rbp-40H], rsp mov rsi, rdx ;; bbWeight=1 PerfScore 9.00 G_M53973_IG02: test rcx, rcx je G_M53973_IG13 ;; bbWeight=1 PerfScore 1.25 G_M53973_IG03: test rsi, rsi je G_M53973_IG14 ;; bbWeight=1 PerfScore 1.25 G_M53973_IG04: mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call gword ptr [rax]IEnumerable`1:GetEnumerator():IEnumerator`1:this mov gword ptr [rbp-30H], rax ;; bbWeight=1 PerfScore 4.50 G_M53973_IG05: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M53973_IG08 ;; bbWeight=1 PerfScore 5.75 G_M53973_IG06: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():double:this vmovaps xmm1, xmm0 mov rax, rsi mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`2:Invoke(double):double:this vmovaps xmm6, xmm0 mov edi, 1 mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax je SHORT G_M53973_IG10 ;; bbWeight=1 PerfScore 16.25 G_M53973_IG07: jmp SHORT G_M53973_IG09 ;; bbWeight=0.50 PerfScore 1.00 G_M53973_IG08: call ThrowHelper:ThrowNoElementsException() int3 ;; bbWeight=0 PerfScore 0.00 G_M53973_IG09: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator`1:get_Current():double:this vmovaps xmm1, xmm0 mov rax, rsi mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Func`2:Invoke(double):double:this vaddsd xmm6, xmm0, xmm6 inc rdi mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEnumerator:MoveNext():bool:this test eax, eax jne SHORT G_M53973_IG09 ;; bbWeight=4 PerfScore 76.00 G_M53973_IG10: vxorps xmm0, xmm0 vcvtsi2sd xmm0, rdi vdivsd xmm0, xmm6, xmm0 vmovsd qword ptr [rbp-28H], xmm0 ;; bbWeight=1 PerfScore 17.83 G_M53973_IG11: mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this vmovsd xmm0, qword ptr [rbp-28H] ;; bbWeight=1 PerfScore 6.50 G_M53973_IG12: vmovaps xmm6, qword ptr [rsp+40H] lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 7.00 G_M53973_IG13: mov ecx, 16 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M53973_IG14: mov ecx, 15 call ThrowHelper:ThrowArgumentNullException(int) int3 ;; bbWeight=0 PerfScore 0.00 G_M53973_IG15: push rbp push rdi push rsi sub rsp, 64 vzeroupper vmovaps qword ptr [rsp+30H], xmm6 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=0 PerfScore 0.00 G_M53973_IG16: cmp gword ptr [rbp-30H], 0 je SHORT G_M53973_IG17 mov rcx, gword ptr [rbp-30H] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0 PerfScore 0.00 G_M53973_IG17: nop ;; bbWeight=0 PerfScore 0.00 G_M53973_IG18: vmovaps xmm6, qword ptr [rsp+30H] add rsp, 64 pop rsi pop rdi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 428, prolog size 28, PerfScore 190.33, (MethodHash=5a3f2d2a) for method Enumerable:Average(IEnumerable`1,Func`2):double ; ============================================================ ; Assembly listing for method <>c__DisplayClass16_1:b__2(double):double:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) double -> mm1 ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) double -> mm0 "Inlining Arg" ; V04 tmp2 [V04,T03] ( 2, 4 ) double -> mm1 "Inlining Arg" ; ; Lcl frame size = 0 G_M7981_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M7981_IG02: mov rax, gword ptr [rcx+8] vsubsd xmm0, xmm1, qword ptr [rax+16] vxorps xmm1, xmm1 vcvtsi2sd xmm1, dword ptr [rcx+16] ;; bbWeight=1 PerfScore 16.33 G_M7981_IG03: jmp Math:Pow(double,double):double ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 26, prolog size 3, PerfScore 22.23, (MethodHash=d898e0d2) for method <>c__DisplayClass16_1:b__2(double):double:this ; ============================================================ ; Assembly listing for method Moments:.ctor(double,double,double,double):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 9, 9 ) byref -> rcx this ; V01 arg1 [V01,T01] ( 3, 3 ) double -> mm1 ; V02 arg2 [V02,T02] ( 3, 3 ) double -> mm2 ; V03 arg3 [V03,T03] ( 3, 3 ) double -> mm3 ; V04 arg4 [V04,T04] ( 1, 1 ) double -> [rsp+0x28] ;# V05 OutArgs [V05 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M62742_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M62742_IG02: xor eax, eax vxorps xmm0, xmm0 vmovdqu xmmword ptr [rcx], xmm0 vmovdqu xmmword ptr [rcx+16], xmm0 mov qword ptr [rcx+32], rax vmovsd qword ptr [rcx], xmm1 vmovsd qword ptr [rcx+8], xmm2 vmovsd qword ptr [rcx+16], xmm3 vmovsd xmm0, qword ptr [rsp+28H] vmovsd qword ptr [rcx+24], xmm0 vsqrtsd xmm0, qword ptr [rcx+8] vmovsd qword ptr [rcx+32], xmm0 ;; bbWeight=1 PerfScore 14.08 G_M62742_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 58, prolog size 3, PerfScore 22.88, (MethodHash=13e20ae9) for method Moments:.ctor(double,double,double,double):this ; ============================================================ ; Assembly listing for method TukeyOutlierDetector:.ctor(Quartiles,double):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T00] ( 6, 12 ) byref -> rdx ld-addr-op ; V02 arg2 [V02,T02] ( 4, 4 ) double -> mm2 ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 4 ) double -> mm1 "impAppendStmt" ; V05 tmp2 [V05,T04] ( 2, 4 ) double -> mm1 "impAppendStmt" ; V06 tmp3 [V06,T05] ( 2, 4 ) double -> mm3 "impAppendStmt" ; V07 tmp4 [V07,T06] ( 2, 4 ) double -> mm0 "impAppendStmt" ; V08 cse0 [V08,T07] ( 3, 3 ) double -> mm0 "CSE - aggressive" ; V09 cse1 [V09,T08] ( 3, 3 ) double -> mm0 "CSE - aggressive" ; ; Lcl frame size = 0 G_M53152_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M53152_IG02: vmovsd xmm0, qword ptr [rdx+8] vmovaps xmm1, xmm0 vmovsd xmm3, qword ptr [rdx+24] vsubsd xmm0, xmm3, xmm0 vmulsd xmm0, xmm0, xmm2 vsubsd xmm0, xmm1, xmm0 vmovsd qword ptr [rcx+8], xmm0 vmovsd xmm0, qword ptr [rdx+24] vmovaps xmm1, xmm0 vsubsd xmm0, xmm0, qword ptr [rdx+8] vmulsd xmm0, xmm0, xmm2 vaddsd xmm0, xmm0, xmm1 vmovsd qword ptr [rcx+16], xmm0 ;; bbWeight=1 PerfScore 28.50 G_M53152_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 62, prolog size 3, PerfScore 38.00, (MethodHash=187c305f) for method TukeyOutlierDetector:.ctor(Quartiles,double):this ; ============================================================ ; Assembly listing for method WhereArrayIterator`1:ToArray():ref:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 8 ) ref -> rsi this class-hnd ; V01 loc0 [V01 ] ( 8, 12 ) struct (48) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ; V02 loc1 [V02,T04] ( 3, 6 ) ref -> rdi class-hnd ; V03 loc2 [V03,T01] ( 5, 17 ) int -> rbx ; V04 loc3 [V04,T08] ( 4, 10 ) double -> mm6 ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 4, 6 ) int -> r14 "Inline stloc first use temp" ; V07 tmp2 [V07,T06] ( 3, 5 ) ref -> r15 class-hnd "Inline stloc first use temp" ; V08 cse0 [V08,T05] ( 3, 6 ) int -> rbp "CSE - aggressive" ; V09 cse1 [V09,T07] ( 2, 4 ) int -> rcx "CSE - aggressive" ; V10 rat0 [V10,T00] ( 3, 24 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 104 G_M37811_IG01: push r15 push r14 push rdi push rsi push rbp push rbx sub rsp, 104 vzeroupper vmovaps qword ptr [rsp+50H], xmm6 vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 mov rsi, rcx ;; bbWeight=1 PerfScore 13.83 G_M37811_IG02: mov rdx, gword ptr [rsi+24] mov edx, dword ptr [rdx+8] lea rcx, bword ptr [rsp+20H] call LargeArrayBuilder`1:.ctor(int):this mov rdi, gword ptr [rsi+24] xor ebx, ebx mov ebp, dword ptr [rdi+8] test ebp, ebp jle SHORT G_M37811_IG09 ;; bbWeight=1 PerfScore 11.00 G_M37811_IG03: movsxd rcx, ebx vmovsd xmm6, qword ptr [rdi+8*rcx+16] mov rax, gword ptr [rsi+32] mov rcx, gword ptr [rax+8] vmovaps xmm1, xmm6 call qword ptr [rax+24]Func`2:Invoke(double):bool:this test eax, eax je SHORT G_M37811_IG08 ;; bbWeight=4 PerfScore 43.00 G_M37811_IG04: mov r14d, dword ptr [rsp+34H] mov r15, gword ptr [rsp+28H] mov ecx, dword ptr [r15+8] cmp ecx, r14d ja SHORT G_M37811_IG06 ;; bbWeight=2 PerfScore 10.50 G_M37811_IG05: lea rcx, bword ptr [rsp+20H] vmovaps xmm1, xmm6 call LargeArrayBuilder`1:AddWithBufferAllocation(double):this jmp SHORT G_M37811_IG07 ;; bbWeight=1 PerfScore 3.75 G_M37811_IG06: movsxd rax, r14d vmovsd qword ptr [r15+8*rax+16], xmm6 inc r14d mov dword ptr [rsp+34H], r14d ;; bbWeight=1 PerfScore 2.00 G_M37811_IG07: mov eax, dword ptr [rsp+38H] inc eax mov dword ptr [rsp+38H], eax ;; bbWeight=2 PerfScore 4.50 G_M37811_IG08: inc ebx cmp ebp, ebx jg SHORT G_M37811_IG03 ;; bbWeight=4 PerfScore 6.00 G_M37811_IG09: lea rcx, bword ptr [rsp+20H] call LargeArrayBuilder`1:ToArray():ref:this nop ;; bbWeight=1 PerfScore 1.75 G_M37811_IG10: vmovaps xmm6, qword ptr [rsp+50H] add rsp, 104 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret ;; bbWeight=1 PerfScore 8.25 ; Total bytes of code 203, prolog size 43, PerfScore 125.78, (MethodHash=526d6c4c) for method WhereArrayIterator`1:ToArray():ref:this ; ============================================================ ; Assembly listing for method OutlierDetector:IsOutlier(double):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 4, 3.50) double -> [rsp+0x38] ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M26140_IG01: push rsi sub rsp, 32 vzeroupper mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M26140_IG02: mov rcx, rsi vmovsd qword ptr [rsp+38H], xmm1 mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+32]OutlierDetector:IsLowerOutlier(double):bool:this test eax, eax jne SHORT G_M26140_IG05 ;; bbWeight=1 PerfScore 9.00 G_M26140_IG03: mov rcx, rsi vmovsd xmm1, qword ptr [rsp+38H] mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+40] ;; bbWeight=0.50 PerfScore 4.13 G_M26140_IG04: add rsp, 32 pop rsi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.38 G_M26140_IG05: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M26140_IG06: add rsp, 32 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 ; Total bytes of code 73, prolog size 8, PerfScore 25.50, (MethodHash=537b99e3) for method OutlierDetector:IsOutlier(double):bool:this ; ============================================================ ; Assembly listing for method TukeyOutlierDetector:IsLowerOutlier(double):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) double -> mm1 ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M56169_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M56169_IG02: vmovsd xmm0, qword ptr [rcx+8] vucomisd xmm0, xmm1 seta al movzx rax, al ;; bbWeight=1 PerfScore 4.25 G_M56169_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 19, prolog size 3, PerfScore 8.35, (MethodHash=417c2496) for method TukeyOutlierDetector:IsLowerOutlier(double):bool:this ; ============================================================ ; Assembly listing for method TukeyOutlierDetector:IsUpperOutlier(double):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) double -> mm1 ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M10728_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M10728_IG02: vucomisd xmm1, qword ptr [rcx+16] seta al movzx rax, al ;; bbWeight=1 PerfScore 3.25 G_M10728_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 15, prolog size 3, PerfScore 6.85, (MethodHash=5890d617) for method TukeyOutlierDetector:IsUpperOutlier(double):bool:this ; ============================================================ ; Assembly listing for method PercentileValues:.ctor(IReadOnlyList`1):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 21, 21 ) ref -> rsi this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M36486_IG01: push rsi sub rsp, 32 vzeroupper mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M36486_IG02: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_ASSIGN_REF mov rcx, gword ptr [rsi+8] xor edx, edx call PercentileValues:Percentile(IReadOnlyList`1,int):double vmovsd qword ptr [rsi+16], xmm0 mov rcx, gword ptr [rsi+8] mov edx, 25 call PercentileValues:Percentile(IReadOnlyList`1,int):double vmovsd qword ptr [rsi+24], xmm0 mov rcx, gword ptr [rsi+8] mov edx, 50 call PercentileValues:Percentile(IReadOnlyList`1,int):double vmovsd qword ptr [rsi+32], xmm0 mov rcx, gword ptr [rsi+8] mov edx, 67 call PercentileValues:Percentile(IReadOnlyList`1,int):double vmovsd qword ptr [rsi+40], xmm0 mov rcx, gword ptr [rsi+8] mov edx, 80 call PercentileValues:Percentile(IReadOnlyList`1,int):double vmovsd qword ptr [rsi+48], xmm0 mov rcx, gword ptr [rsi+8] mov edx, 85 call PercentileValues:Percentile(IReadOnlyList`1,int):double vmovsd qword ptr [rsi+56], xmm0 mov rcx, gword ptr [rsi+8] mov edx, 90 call PercentileValues:Percentile(IReadOnlyList`1,int):double vmovsd qword ptr [rsi+64], xmm0 mov rcx, gword ptr [rsi+8] mov edx, 95 call PercentileValues:Percentile(IReadOnlyList`1,int):double vmovsd qword ptr [rsi+72], xmm0 mov rcx, gword ptr [rsi+8] mov edx, 100 call PercentileValues:Percentile(IReadOnlyList`1,int):double vmovsd qword ptr [rsi+80], xmm0 ;; bbWeight=1 PerfScore 35.25 G_M36486_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 194, prolog size 8, PerfScore 59.80, (MethodHash=1b707179) for method PercentileValues:.ctor(IReadOnlyList`1):this ; ============================================================ ; Assembly listing for method PercentileValues:Percentile(IReadOnlyList`1,int):double ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 4.50) ref -> rdi class-hnd ; V01 arg1 [V01,T00] ( 6, 4.50) int -> rsi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V04 tmp2 [V04,T03] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V05 tmp3 [V05,T04] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp4 [V06,T05] ( 2, 0 ) ref -> rdx "argument with side effect" ; V07 tmp5 [V07,T06] ( 2, 0 ) ref -> rbx "argument with side effect" ; V08 tmp6 [V08,T07] ( 2, 0 ) ref -> r9 "argument with side effect" ; ; Lcl frame size = 32 G_M61493_IG01: push rdi push rsi push rbx sub rsp, 32 vzeroupper mov rdi, rcx mov esi, edx ;; bbWeight=1 PerfScore 4.75 G_M61493_IG02: test rdi, rdi je SHORT G_M61493_IG09 ;; bbWeight=1 PerfScore 1.25 G_M61493_IG03: test esi, esi jl G_M61493_IG10 cmp esi, 100 jg G_M61493_IG10 ;; bbWeight=1 PerfScore 2.50 G_M61493_IG04: mov rcx, rdi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IReadOnlyCollection`1:get_Count():int:this test eax, eax jne SHORT G_M61493_IG07 ;; bbWeight=1 PerfScore 5.00 G_M61493_IG05: vxorps xmm0, xmm0 ;; bbWeight=0.50 PerfScore 0.17 G_M61493_IG06: add rsp, 32 pop rbx pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.38 G_M61493_IG07: vxorps xmm2, xmm2 vcvtsi2sd xmm2, esi vdivsd xmm2, xmm2, qword ptr [reloc @RWD08] mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, rdi mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] ;; bbWeight=0.50 PerfScore 12.04 G_M61493_IG08: add rsp, 32 pop rbx pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.88 G_M61493_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x9BC8 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW ;; bbWeight=0 PerfScore 0.00 G_M61493_IG10: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov dword ptr [rdi+8], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x9BE2 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov ecx, 0x9BF8 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r9, rax mov rdx, rbx mov r8, rdi mov rcx, rsi call ArgumentOutOfRangeException:.ctor(String,Object,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dq 0000000000000000h RWD08 dq 4059000000000000h ; Total bytes of code 298, prolog size 10, PerfScore 59.16, (MethodHash=65600fca) for method PercentileValues:Percentile(IReadOnlyList`1,int):double ; ============================================================ ; Assembly listing for method List`1:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) ref -> rcx this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 5, 10 ) struct (48) [rsp+0x20] do-not-enreg[SFB] must-init "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 3, 6 ) ref -> rbx class-hnd exact "Single-def Box Helper" ; ; Lcl frame size = 80 G_M14938_IG01: push rdi push rsi push rbx sub rsp, 80 vzeroupper vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+20H], xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 ;; bbWeight=1 PerfScore 7.58 G_M14938_IG02: mov gword ptr [rsp+20H], rcx xor eax, eax mov dword ptr [rsp+28H], eax mov ecx, dword ptr [rcx+20] mov dword ptr [rsp+2CH], ecx vxorps xmm0, xmm0 vmovdqu xmmword ptr [rsp+30H], xmm0 vmovdqu xmmword ptr [rsp+40H], xmm0 mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rbx, rax lea rdi, bword ptr [rbx+8] lea rsi, bword ptr [rsp+20H] call CORINFO_HELP_ASSIGN_BYREF mov ecx, 5 rep movsq mov rax, rbx ;; bbWeight=1 PerfScore 36.58 G_M14938_IG03: add rsp, 80 pop rbx pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 117, prolog size 32, PerfScore 59.32, (MethodHash=0989c5a5) for method List`1:System.Collections.Generic.IEnumerable.GetEnumerator():IEnumerator`1:this ; ============================================================ ; Assembly listing for method Enumerator:get_Current():Measurement:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) byref -> rcx this ; V01 RetBuf [V01,T00] ( 4, 4 ) byref -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M11073_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M11073_IG02: vmovdqu xmm0, xmmword ptr [rcx+16] vmovdqu xmmword ptr [rdx], xmm0 vmovdqu xmm0, xmmword ptr [rcx+32] vmovdqu xmmword ptr [rdx+16], xmm0 mov rax, rdx ;; bbWeight=1 PerfScore 6.25 G_M11073_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 26, prolog size 3, PerfScore 11.25, (MethodHash=1890d4be) for method Enumerator:get_Current():Measurement:this ; ============================================================ ; Assembly listing for method Statistics:IsActualOutlier(double,int):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 3.50) ref -> rcx this class-hnd ; V01 arg1 [V01,T05] ( 6, 4 ) double -> [rsp+0x48] ; V02 arg2 [V02,T01] ( 5, 4 ) int -> rsi ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T06] ( 3, 0 ) ref -> rdi class-hnd exact "Single-def Box Helper" ; V05 tmp2 [V05,T07] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V06 tmp3 [V06,T04] ( 2, 1 ) bool -> rax "Inline return value spill temp" ; V07 tmp4 [V07,T03] ( 5, 5 ) ref -> rsi class-hnd "Inlining Arg" ; V08 tmp5 [V08,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; V09 rat0 [V09,T00] ( 6, 6 ) ref -> rcx "virtual vtable call" ; ; Lcl frame size = 40 G_M17646_IG01: push rdi push rsi sub rsp, 40 vzeroupper mov esi, r8d ;; bbWeight=1 PerfScore 3.50 G_M17646_IG02: cmp esi, 3 ja G_M17646_IG13 mov eax, esi lea rdx, [reloc @RWD00] mov edx, dword ptr [rdx+4*rax] lea r8, G_M17646_IG02 add rdx, r8 jmp rdx ;; bbWeight=1 PerfScore 7.25 G_M17646_IG03: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M17646_IG04: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M17646_IG05: mov rcx, gword ptr [rcx+56] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+40] ;; bbWeight=0.50 PerfScore 4.00 G_M17646_IG06: add rsp, 40 pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.63 G_M17646_IG07: mov rcx, gword ptr [rcx+56] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+32] ;; bbWeight=0.50 PerfScore 4.00 G_M17646_IG08: add rsp, 40 pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.63 G_M17646_IG09: mov rsi, gword ptr [rcx+56] mov rcx, rsi vmovsd qword ptr [rsp+48H], xmm1 mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+32]OutlierDetector:IsLowerOutlier(double):bool:this test eax, eax jne SHORT G_M17646_IG11 mov rcx, rsi vmovsd xmm1, qword ptr [rsp+48H] mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] mov rax, qword ptr [rax+40] ;; bbWeight=0.50 PerfScore 9.63 G_M17646_IG10: add rsp, 40 pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.63 G_M17646_IG11: mov eax, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M17646_IG12: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M17646_IG13: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov dword ptr [rdi+8], esi mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x9AEA mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov r8, rdi mov rcx, rsi xor r9, r9 call ArgumentOutOfRangeException:.ctor(String,Object,String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M17646_IG03 - G_M17646_IG02 dd G_M17646_IG05 - G_M17646_IG02 dd G_M17646_IG07 - G_M17646_IG02 dd G_M17646_IG09 - G_M17646_IG02 ; Total bytes of code 255, prolog size 12, PerfScore 61.45, (MethodHash=840fbb11) for method Statistics:IsActualOutlier(double,int):bool:this ; ============================================================ ; Assembly listing for method d__14:System.Collections.Generic.IEnumerator.get_Current():Measurement:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd ; V01 RetBuf [V01,T00] ( 4, 4 ) byref -> rdx ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M30647_IG01: vzeroupper ;; bbWeight=1 PerfScore 1.00 G_M30647_IG02: vmovdqu xmm0, xmmword ptr [rcx+48] vmovdqu xmmword ptr [rdx], xmm0 vmovdqu xmm0, xmmword ptr [rcx+64] vmovdqu xmmword ptr [rdx+16], xmm0 mov rax, rdx ;; bbWeight=1 PerfScore 6.25 G_M30647_IG03: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 26, prolog size 3, PerfScore 11.25, (MethodHash=4b9b8848) for method d__14:System.Collections.Generic.IEnumerator.get_Current():Measurement:this ; ============================================================ WorkloadResult 1: 19472461 op, 253874900.00 ns, 13.0376 ns/op WorkloadResult 2: 19472461 op, 250036400.00 ns, 12.8405 ns/op WorkloadResult 3: 19472461 op, 251980200.00 ns, 12.9403 ns/op WorkloadResult 4: 19472461 op, 249753300.00 ns, 12.8260 ns/op WorkloadResult 5: 19472461 op, 251417100.00 ns, 12.9114 ns/op WorkloadResult 6: 19472461 op, 250450700.00 ns, 12.8618 ns/op WorkloadResult 7: 19472461 op, 252435600.00 ns, 12.9637 ns/op WorkloadResult 8: 19472461 op, 251944200.00 ns, 12.9385 ns/op WorkloadResult 9: 19472461 op, 254011500.00 ns, 13.0447 ns/op WorkloadResult 10: 19472461 op, 251304300.00 ns, 12.9056 ns/op WorkloadResult 11: 19472461 op, 251731900.00 ns, 12.9276 ns/op WorkloadResult 12: 19472461 op, 254838500.00 ns, 13.0871 ns/op WorkloadResult 13: 19472461 op, 253407200.00 ns, 13.0136 ns/op WorkloadResult 14: 19472461 op, 252604000.00 ns, 12.9724 ns/op ; Assembly listing for method Enumerator:Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) byref -> zero-ref this ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M6566_IG01: ;; bbWeight=1 PerfScore 0.00 G_M6566_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=aa1ce659) for method Enumerator:Dispose():this ; ============================================================ ; Assembly listing for method d__14:System.IDisposable.Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4.25) ref -> rcx this class-hnd ; V01 loc0 [V01,T01] ( 3, 2.50) int -> r11 ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 40 G_M14546_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M14546_IG02: mov r11d, dword ptr [rcx+32] cmp r11d, -3 je SHORT G_M14546_IG04 ;; bbWeight=1 PerfScore 3.25 G_M14546_IG03: cmp r11d, 1 jne SHORT G_M14546_IG06 ;; bbWeight=0.50 PerfScore 0.63 G_M14546_IG04: mov dword ptr [rcx+32], -1 cmp gword ptr [rcx+16], 0 je SHORT G_M14546_IG06 ;; bbWeight=0.50 PerfScore 2.00 G_M14546_IG05: mov rcx, gword ptr [rcx+16] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IDisposable:Dispose():this ;; bbWeight=0.25 PerfScore 1.38 G_M14546_IG06: nop ;; bbWeight=1 PerfScore 0.25 G_M14546_IG07: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 ; Total bytes of code 66, prolog size 4, PerfScore 15.60, (MethodHash=49fbc72d) for method d__14:System.IDisposable.Dispose():this ; ============================================================ ; Assembly listing for method GcStats:Equals(GcStats):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 7, 5 ) byref -> rcx this ; V01 arg1 [V01,T00] ( 7, 10 ) byref -> rdx ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) int -> rax "impAppendStmt" ; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt" ; V05 tmp3 [V05,T04] ( 2, 2 ) int -> rax "impAppendStmt" ; V06 tmp4 [V06,T05] ( 2, 2 ) long -> rax "impAppendStmt" ; V07 tmp5 [V07,T06] ( 2, 2 ) long -> rax "impAppendStmt" ; ; Lcl frame size = 0 G_M3350_IG01: ;; bbWeight=1 PerfScore 0.00 G_M3350_IG02: mov eax, dword ptr [rcx] cmp eax, dword ptr [rdx] jne SHORT G_M3350_IG05 ;; bbWeight=1 PerfScore 5.00 G_M3350_IG03: mov eax, dword ptr [rcx+4] cmp eax, dword ptr [rdx+4] jne SHORT G_M3350_IG05 mov eax, dword ptr [rcx+8] cmp eax, dword ptr [rdx+8] jne SHORT G_M3350_IG05 mov rax, qword ptr [rcx+16] cmp rax, qword ptr [rdx+16] jne SHORT G_M3350_IG05 mov rax, qword ptr [rcx+24] cmp rax, qword ptr [rdx+24] sete al movzx rax, al ;; bbWeight=0.50 PerfScore 10.13 G_M3350_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M3350_IG05: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M3350_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 50, prolog size 0, PerfScore 21.25, (MethodHash=4f5ff2e9) for method GcStats:Equals(GcStats):bool:this ; ============================================================ ; Assembly listing for method GcStats:ToOutputLine():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 7, 7 ) byref -> rsi this ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 8, 16 ) ref -> rdi class-hnd exact "dup spill" ; V03 tmp2 [V03,T02] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V04 tmp3 [V04,T03] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V05 tmp4 [V05,T04] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V06 tmp5 [V06,T05] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V07 tmp6 [V07,T06] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; ; Lcl frame size = 40 G_M65309_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M65309_IG02: mov rcx, 0xD1FFAB1E mov edx, 6 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov edx, dword ptr [rsi] mov dword ptr [rax+8], edx lea rcx, bword ptr [rdi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov edx, dword ptr [rsi+4] mov dword ptr [rax+8], edx lea rcx, bword ptr [rdi+32] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov edx, dword ptr [rsi+8] mov dword ptr [rax+8], edx lea rcx, bword ptr [rdi+40] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdx, qword ptr [rsi+16] mov qword ptr [rax+8], rdx lea rcx, bword ptr [rdi+48] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdx, qword ptr [rsi+24] mov qword ptr [rax+8], rdx lea rcx, bword ptr [rdi+56] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E ;; bbWeight=1 PerfScore 35.75 G_M65309_IG03: mov rcx, gword ptr [rcx] mov rdx, rdi ;; bbWeight=1 PerfScore 2.25 G_M65309_IG04: add rsp, 40 pop rsi pop rdi jmp String:Format(String,ref):String ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 249, prolog size 9, PerfScore 68.65, (MethodHash=915800e2) for method GcStats:ToOutputLine():String:this ; ============================================================ ; Assembly listing for method String:Format(String,ref):String ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 3 ) ref -> rsi class-hnd ; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03 ] ( 2, 4 ) struct (32) [rsp+0x48] do-not-enreg[XSB] must-init addr-exposed "NewObj constructor temp" ; V04 tmp2 [V04,T03] ( 3, 0 ) ref -> rsi ; V05 tmp3 [V05,T04] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" ; V06 tmp4 [V06 ] ( 2, 4 ) struct (32) [rsp+0x28] do-not-enreg[XSB] must-init addr-exposed "by-value struct argument" ; V07 tmp5 [V07,T02] ( 2, 4 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 104 G_M43728_IG01: push rdi push rsi sub rsp, 104 vzeroupper xor rax, rax mov qword ptr [rsp+28H], rax vxorps xmm4, xmm4 vmovdqa xmmword ptr [rsp+30H], xmm4 vmovdqa xmmword ptr [rsp+40H], xmm4 vmovdqa xmmword ptr [rsp+50H], xmm4 mov qword ptr [rsp+60H], rax mov rsi, rcx ;; bbWeight=1 PerfScore 9.08 G_M43728_IG02: test rdx, rdx je SHORT G_M43728_IG07 ;; bbWeight=1 PerfScore 1.25 G_M43728_IG03: lea rcx, bword ptr [rsp+48H] call ParamsArray:.ctor(ref):this mov rdx, rsi ;; bbWeight=1 PerfScore 1.75 G_M43728_IG04: vmovdqu xmm0, xmmword ptr [rsp+48H] vmovdqu xmmword ptr [rsp+28H], xmm0 vmovdqu xmm0, xmmword ptr [rsp+58H] vmovdqu xmmword ptr [rsp+38H], xmm0 ;; bbWeight=1 PerfScore 4.00 G_M43728_IG05: lea r8, bword ptr [rsp+28H] xor rcx, rcx call String:FormatHelper(IFormatProvider,String,ParamsArray):String nop ;; bbWeight=1 PerfScore 2.00 G_M43728_IG06: add rsp, 104 pop rsi pop rdi ret ;; bbWeight=1 PerfScore 2.25 G_M43728_IG07: test rsi, rsi je SHORT G_M43728_IG08 mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] jmp SHORT G_M43728_IG09 ;; bbWeight=0 PerfScore 0.00 G_M43728_IG08: mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] ;; bbWeight=0 PerfScore 0.00 G_M43728_IG09: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdi, rax mov rcx, rdi mov rdx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rdi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 179, prolog size 43, PerfScore 39.03, (MethodHash=d565552f) for method String:Format(String,ref):String ; ============================================================ ; Assembly listing for method ParamsArray:.ctor(ref):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) byref -> rsi this ; V01 arg1 [V01,T01] ( 7, 5.50) ref -> rdi class-hnd ; V02 loc0 [V02,T02] ( 4, 4 ) int -> rbp ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V04 tmp1 [V04,T10] ( 0, 0 ) byref -> zero-ref ;* V05 tmp2 [V05,T07] ( 0, 0 ) byref -> zero-ref ; V06 tmp3 [V06,T04] ( 3, 2 ) ref -> rdx ;* V07 tmp4 [V07,T11] ( 0, 0 ) byref -> zero-ref ;* V08 tmp5 [V08,T08] ( 0, 0 ) byref -> zero-ref ; V09 tmp6 [V09,T05] ( 3, 2 ) ref -> rdx ;* V10 tmp7 [V10,T12] ( 0, 0 ) byref -> zero-ref ;* V11 tmp8 [V11,T09] ( 0, 0 ) byref -> zero-ref ; V12 tmp9 [V12,T06] ( 3, 2 ) ref -> rdx ; V13 cse0 [V13,T03] ( 5, 3.50) int -> rbx "CSE - aggressive" ; ; Lcl frame size = 40 G_M7245_IG01: push rdi push rsi push rbp push rbx sub rsp, 40 mov rsi, rcx mov rdi, rdx ;; bbWeight=1 PerfScore 4.75 G_M7245_IG02: mov ebx, dword ptr [rdi+8] mov ebp, ebx test ebp, ebp jg SHORT G_M7245_IG04 ;; bbWeight=1 PerfScore 3.50 G_M7245_IG03: xor rdx, rdx jmp SHORT G_M7245_IG05 ;; bbWeight=0.50 PerfScore 1.13 G_M7245_IG04: cmp ebx, 0 jbe SHORT G_M7245_IG13 mov rdx, gword ptr [rdi+16] ;; bbWeight=0.50 PerfScore 1.63 G_M7245_IG05: mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF cmp ebp, 1 jg SHORT G_M7245_IG07 ;; bbWeight=1 PerfScore 2.50 G_M7245_IG06: xor rdx, rdx jmp SHORT G_M7245_IG08 ;; bbWeight=0.50 PerfScore 1.13 G_M7245_IG07: cmp ebx, 1 jbe SHORT G_M7245_IG13 mov rdx, gword ptr [rdi+24] ;; bbWeight=0.50 PerfScore 1.63 G_M7245_IG08: lea rcx, bword ptr [rsi+8] call CORINFO_HELP_CHECKED_ASSIGN_REF cmp ebp, 2 jg SHORT G_M7245_IG10 ;; bbWeight=1 PerfScore 2.75 G_M7245_IG09: xor rdx, rdx jmp SHORT G_M7245_IG11 ;; bbWeight=0.50 PerfScore 1.13 G_M7245_IG10: cmp ebx, 2 jbe SHORT G_M7245_IG13 mov rdx, gword ptr [rdi+32] ;; bbWeight=0.50 PerfScore 1.63 G_M7245_IG11: lea rcx, bword ptr [rsi+16] call CORINFO_HELP_CHECKED_ASSIGN_REF lea rcx, bword ptr [rsi+24] mov rdx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 3.50 G_M7245_IG12: add rsp, 40 pop rbx pop rbp pop rsi pop rdi ret ;; bbWeight=1 PerfScore 3.25 G_M7245_IG13: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 126, prolog size 8, PerfScore 41.10, (MethodHash=925ae3b2) for method ParamsArray:.ctor(ref):this ; ============================================================ ; Assembly listing for method Int64:TryFormat(Span`1,byref,ReadOnlySpan`1,IFormatProvider):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this ; V01 arg1 [V01,T00] ( 3, 6 ) byref -> rax ; V02 arg2 [V02,T03] ( 3, 3 ) byref -> r8 ; V03 arg3 [V03,T01] ( 3, 6 ) byref -> r9 ; V04 arg4 [V04,T05] ( 1, 1 ) ref -> [rsp+0x28] class-hnd ;# V05 OutArgs [V05 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) byref -> zero-ref V10._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref V10._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ;* V08 tmp3 [V08 ] ( 0, 0 ) byref -> zero-ref V11._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V12 rat0 [V12,T04] ( 2, 4 ) ref -> r10 "Fast tail call lowering is creating a new local variable" ; ; Lcl frame size = 0 G_M2351_IG01: mov rax, rdx ;; bbWeight=1 PerfScore 0.25 G_M2351_IG02: mov r10, gword ptr [rsp+28H] mov bword ptr [rsp+28H], r8 mov rcx, qword ptr [rcx] mov rdx, r9 mov r8, r10 mov r9, rax ;; bbWeight=1 PerfScore 4.75 G_M2351_IG03: jmp Number:TryFormatInt64(long,ReadOnlySpan`1,IFormatProvider,Span`1,byref):bool ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 30, prolog size 3, PerfScore 10.00, (MethodHash=156df6d0) for method Int64:TryFormat(Span`1,byref,ReadOnlySpan`1,IFormatProvider):bool:this ; ============================================================ ; Assembly listing for method Number:TryFormatInt64(long,ReadOnlySpan`1,IFormatProvider,Span`1,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 6, 4 ) long -> rdi ; V01 arg1 [V01,T01] ( 4, 7 ) byref -> rdx ld-addr-op ; V02 arg2 [V02,T03] ( 5, 3.50) ref -> r8 class-hnd ; V03 arg3 [V03,T00] ( 5, 7 ) byref -> rsi ; V04 arg4 [V04,T04] ( 3, 1.50) byref -> rbx ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T05] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ;* V07 tmp2 [V07 ] ( 0, 0 ) byref -> zero-ref V11._pointer(offs=0x00) P-INDEP "field V01._pointer (fldOffset=0x0)" ;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref V11._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)" ;* V09 tmp4 [V09 ] ( 0, 0 ) byref -> zero-ref V12._pointer(offs=0x00) P-INDEP "field V03._pointer (fldOffset=0x0)" ;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref V12._length(offs=0x08) P-INDEP "field V03._length (fldOffset=0x8)" ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; ; Lcl frame size = 32 G_M30422_IG01: push rdi push rsi push rbx sub rsp, 32 mov rdi, rcx mov rsi, r9 mov rbx, bword ptr [rsp+60H] ;; bbWeight=1 PerfScore 4.75 G_M30422_IG02: cmp dword ptr [rdx+8], 0 jne SHORT G_M30422_IG09 ;; bbWeight=1 PerfScore 3.00 G_M30422_IG03: test rdi, rdi jge SHORT G_M30422_IG07 test r8, r8 je SHORT G_M30422_IG04 mov rcx, r8 call NumberFormatInfo:g__GetProviderNonNull|42_0(IFormatProvider):NumberFormatInfo jmp SHORT G_M30422_IG05 ;; bbWeight=0.50 PerfScore 2.88 G_M30422_IG04: call NumberFormatInfo:get_CurrentInfo():NumberFormatInfo ;; bbWeight=0.50 PerfScore 0.50 G_M30422_IG05: mov bword ptr [rsp+60H], rbx mov r8, gword ptr [rax+40] mov rcx, rdi mov r9, rsi mov edx, -1 ;; bbWeight=0.50 PerfScore 1.88 G_M30422_IG06: add rsp, 32 pop rbx pop rsi pop rdi jmp Number:TryNegativeInt64ToDecStr(long,int,String,Span`1,byref):bool ;; bbWeight=0.50 PerfScore 1.88 G_M30422_IG07: mov rcx, rdi mov r9, rbx mov r8, rsi mov edx, -1 ;; bbWeight=0.50 PerfScore 0.50 G_M30422_IG08: add rsp, 32 pop rbx pop rsi pop rdi jmp Number:TryUInt64ToDecStr(long,int,Span`1,byref):bool ;; bbWeight=0.50 PerfScore 1.88 G_M30422_IG09: mov bword ptr [rsp+60H], rbx mov rcx, rdi mov r9, rsi ;; bbWeight=0.50 PerfScore 0.75 G_M30422_IG10: add rsp, 32 pop rbx pop rsi pop rdi jmp Number:g__TryFormatInt64Slow|43_0(long,ReadOnlySpan`1,IFormatProvider,Span`1,byref):bool ;; bbWeight=0.50 PerfScore 1.88 ; Total bytes of code 130, prolog size 18, PerfScore 32.88, (MethodHash=d22a8929) for method Number:TryFormatInt64(long,ReadOnlySpan`1,IFormatProvider,Span`1,byref):bool ; ============================================================ ; Assembly listing for method Number:TryUInt64ToDecStr(long,int,Span`1,byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 arg0 [V00 ] ( 6, 9.50) long -> [rsp+0x40] do-not-enreg[X] addr-exposed ld-addr-op ; V01 arg1 [V01,T01] ( 9, 9.50) int -> rsi ; V02 arg2 [V02,T02] ( 4, 7 ) byref -> r8 ld-addr-op ; V03 arg3 [V03,T06] ( 4, 3 ) byref -> r9 ; V04 loc0 [V04,T08] ( 4, 3 ) int -> rcx ;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref ; V06 loc2 [V06 ] ( 2, 1 ) byref -> [rsp+0x20] must-init pinned ; V07 loc3 [V07,T07] ( 4, 5 ) long -> rdi ; V08 OutArgs [V08 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V09 tmp1 [V09,T04] ( 17, 6 ) int -> registers "Inline stloc first use temp" ; V10 tmp2 [V10,T05] ( 6, 6 ) long -> rdx "Inlining Arg" ; V11 tmp3 [V11,T09] ( 9, 2.50) int -> registers "Inline stloc first use temp" ; V12 tmp4 [V12,T10] ( 3, 2 ) int -> rcx "Inline return value spill temp" ;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V14 tmp6 [V14,T00] ( 2, 16 ) long -> rcx "Inlining Arg" ; V15 tmp7 [V15,T11] ( 2, 2 ) long -> rdx "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) byref -> zero-ref V20._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ;* V17 tmp9 [V17 ] ( 0, 0 ) int -> zero-ref V20._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ; V18 tmp10 [V18,T13] ( 3, 1.50) byref -> rax V13._pointer(offs=0x00) P-INDEP "field V13._pointer (fldOffset=0x0)" ;* V19 tmp11 [V19 ] ( 0, 0 ) int -> zero-ref V13._length(offs=0x08) P-INDEP "field V13._length (fldOffset=0x8)" ;* V20 tmp12 [V20 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V21 tmp13 [V21,T12] ( 2, 2 ) long -> rax "Cast away GC" ; V22 tmp14 [V22,T03] ( 2, 8 ) int -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M8515_IG01: push rdi push rsi sub rsp, 40 xor rax, rax mov qword ptr [rsp+20H], rax mov qword ptr [rsp+40H], rcx mov esi, edx ;; bbWeight=1 PerfScore 4.75 G_M8515_IG02: test esi, esi jg SHORT G_M8515_IG04 ;; bbWeight=1 PerfScore 1.25 G_M8515_IG03: mov esi, 1 ;; bbWeight=0.50 PerfScore 0.13 G_M8515_IG04: mov rcx, qword ptr [rsp+40H] mov rdx, rcx mov ecx, 1 cmp rdx, 0xD1FFAB1E jb SHORT G_M8515_IG07 ;; bbWeight=1 PerfScore 2.75 G_M8515_IG05: mov rax, 0xD1FFAB1E cmp rdx, rax jb SHORT G_M8515_IG06 mov rcx, 0xD1FFAB1E mov rax, rdx mul rdx:rax, rcx shr rdx, 42 mov ecx, edx mov r10d, 15 jmp SHORT G_M8515_IG08 ;; bbWeight=0.25 PerfScore 2.13 G_M8515_IG06: mov rcx, 0xD1FFAB1E mov rax, rdx mul rdx:rax, rcx shr rdx, 23 mov ecx, edx mov r10d, 8 jmp SHORT G_M8515_IG08 ;; bbWeight=0.25 PerfScore 1.75 G_M8515_IG07: mov eax, edx mov r10d, ecx mov ecx, eax ;; bbWeight=0.25 PerfScore 0.19 G_M8515_IG08: cmp ecx, 10 jb SHORT G_M8515_IG15 ;; bbWeight=0.50 PerfScore 0.63 G_M8515_IG09: cmp ecx, 100 jae SHORT G_M8515_IG10 inc r10d jmp SHORT G_M8515_IG15 ;; bbWeight=0.25 PerfScore 0.88 G_M8515_IG10: cmp ecx, 0x3E8 jae SHORT G_M8515_IG11 add r10d, 2 jmp SHORT G_M8515_IG15 ;; bbWeight=0.25 PerfScore 0.88 G_M8515_IG11: cmp ecx, 0x2710 jae SHORT G_M8515_IG12 add r10d, 3 jmp SHORT G_M8515_IG15 ;; bbWeight=0.25 PerfScore 0.88 G_M8515_IG12: cmp ecx, 0x186A0 jae SHORT G_M8515_IG13 add r10d, 4 jmp SHORT G_M8515_IG15 ;; bbWeight=0.25 PerfScore 0.88 G_M8515_IG13: cmp ecx, 0xD1FFAB1E jae SHORT G_M8515_IG14 add r10d, 5 jmp SHORT G_M8515_IG15 ;; bbWeight=0.25 PerfScore 0.88 G_M8515_IG14: add r10d, 6 ;; bbWeight=0.25 PerfScore 0.06 G_M8515_IG15: cmp esi, r10d jge SHORT G_M8515_IG17 ;; bbWeight=1 PerfScore 1.25 G_M8515_IG16: mov ecx, r10d jmp SHORT G_M8515_IG18 ;; bbWeight=0.50 PerfScore 1.13 G_M8515_IG17: mov ecx, esi ;; bbWeight=0.50 PerfScore 0.13 G_M8515_IG18: cmp ecx, dword ptr [r8+8] jle SHORT G_M8515_IG21 ;; bbWeight=1 PerfScore 3.00 G_M8515_IG19: xor eax, eax mov dword ptr [r9], eax ;; bbWeight=0.50 PerfScore 0.63 G_M8515_IG20: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M8515_IG21: mov dword ptr [r9], ecx mov rax, bword ptr [r8] mov bword ptr [rsp+20H], rax movsxd rcx, ecx lea rdi, [rax+2*rcx] jmp SHORT G_M8515_IG23 ;; bbWeight=0.50 PerfScore 3.38 G_M8515_IG22: lea rcx, [rsp+40H] call Number:Int64DivMod1E9(byref):int mov edx, eax mov rcx, rdi mov r8d, 9 call Number:UInt32ToDecChars(long,int,int):long mov rdi, rax add esi, -9 ;; bbWeight=2 PerfScore 7.50 G_M8515_IG23: mov rcx, qword ptr [rsp+40H] mov rax, 0xD1FFAB1E and rcx, rax shr rcx, 32 test ecx, ecx jne SHORT G_M8515_IG22 ;; bbWeight=4 PerfScore 19.00 G_M8515_IG24: mov rdx, qword ptr [rsp+40H] mov rcx, rdi mov r8d, esi call Number:UInt32ToDecChars(long,int,int):long xor rax, rax mov bword ptr [rsp+20H], rax mov eax, 1 ;; bbWeight=0.50 PerfScore 2.00 G_M8515_IG25: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 ; Total bytes of code 351, prolog size 13, PerfScore 93.35, (MethodHash=6443debc) for method Number:TryUInt64ToDecStr(long,int,Span`1,byref):bool ; ============================================================ GC: 0 0 0 88 19472461 ; Assembly listing for method ThreadingStats:Equals(ThreadingStats):bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 4 ) byref -> rcx this ; V01 arg1 [V01,T00] ( 5, 8 ) byref -> rdx ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) long -> rax "impAppendStmt" ; V04 tmp2 [V04,T03] ( 2, 2 ) long -> rax "impAppendStmt" ; V05 tmp3 [V05,T04] ( 2, 2 ) long -> rax "impAppendStmt" ;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref V09.k__BackingField(offs=0x00) P-INDEP "field V01.k__BackingField (fldOffset=0x0)" ;* V07 tmp5 [V07 ] ( 0, 0 ) long -> zero-ref V09.k__BackingField(offs=0x08) P-INDEP "field V01.k__BackingField (fldOffset=0x8)" ;* V08 tmp6 [V08 ] ( 0, 0 ) long -> zero-ref V09.k__BackingField(offs=0x10) P-INDEP "field V01.k__BackingField (fldOffset=0x10)" ;* V09 tmp7 [V09 ] ( 0, 0 ) struct (24) zero-ref "Promoted implicit byref" ; ; Lcl frame size = 0 G_M7510_IG01: ;; bbWeight=1 PerfScore 0.00 G_M7510_IG02: mov rax, qword ptr [rcx] cmp rax, qword ptr [rdx] jne SHORT G_M7510_IG05 ;; bbWeight=1 PerfScore 5.00 G_M7510_IG03: mov rax, qword ptr [rcx+8] cmp rax, qword ptr [rdx+8] jne SHORT G_M7510_IG05 mov rax, qword ptr [rcx+16] cmp rax, qword ptr [rdx+16] sete al movzx rax, al ;; bbWeight=0.50 PerfScore 5.13 G_M7510_IG04: ret ;; bbWeight=0.50 PerfScore 0.50 G_M7510_IG05: xor eax, eax ;; bbWeight=0.50 PerfScore 0.13 G_M7510_IG06: ret ;; bbWeight=0.50 PerfScore 0.50 ; Total bytes of code 36, prolog size 0, PerfScore 14.85, (MethodHash=4b5ce2a9) for method ThreadingStats:Equals(ThreadingStats):bool:this ; ============================================================ ; Assembly listing for method ThreadingStats:ToOutputLine():String:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 5 ) byref -> rsi this ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 6, 12 ) ref -> rdi class-hnd exact "dup spill" ; V03 tmp2 [V03,T02] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V04 tmp3 [V04,T03] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; V05 tmp4 [V05,T04] ( 3, 6 ) ref -> rax class-hnd exact "Single-def Box Helper" ; ; Lcl frame size = 40 G_M30103_IG01: push rdi push rsi sub rsp, 40 mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M30103_IG02: mov rcx, 0xD1FFAB1E mov edx, 4 call CORINFO_HELP_NEWARR_1_OBJ mov rdi, rax lea rcx, bword ptr [rdi+16] mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdx, qword ptr [rsi] mov qword ptr [rax+8], rdx lea rcx, bword ptr [rdi+24] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdx, qword ptr [rsi+8] mov qword ptr [rax+8], rdx lea rcx, bword ptr [rdi+32] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rdx, qword ptr [rsi+16] mov qword ptr [rax+8], rdx lea rcx, bword ptr [rdi+40] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov rdx, rdi ;; bbWeight=1 PerfScore 26.00 G_M30103_IG03: add rsp, 40 pop rsi pop rdi jmp String:Format(String,ref):String ;; bbWeight=1 PerfScore 3.25 ; Total bytes of code 185, prolog size 9, PerfScore 50.25, (MethodHash=33458a68) for method ThreadingStats:ToOutputLine():String:this ; ============================================================ Threading: 0 0 19472461 ; Assembly listing for method Runnable_0:__TrickTheJIT__():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00 ] ( 1, 1 ) ref -> [rbp+0x10] this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M27670_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax mov gword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 4.00 G_M27670_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] mov edx, 123 call Random:.ctor(int):this mov rcx, gword ptr [rbp-08H] xor edx, edx mov r8d, 10 mov rax, gword ptr [rbp-08H] mov rax, qword ptr [rax] mov rax, qword ptr [rax+64] call qword ptr [rax+48]Random:Next(int,int):int:this mov rcx, gword ptr [rbp+10H] mov dword ptr [rcx+104], eax mov rcx, gword ptr [rbp+10H] call Runnable_0:__ForDisassemblyDiagnoser__():int:this nop ;; bbWeight=1 PerfScore 18.25 G_M27670_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 102, prolog size 16, PerfScore 34.45, (MethodHash=565493e9) for method Runnable_0:__TrickTheJIT__():this ; ============================================================ ; Assembly listing for method Runnable_0:__ForDisassemblyDiagnoser__():int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00 ] ( 1, 1 ) ref -> [rbp+0x10] this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 32 G_M14051_IG01: push rbp sub rsp, 32 lea rbp, [rsp+20H] mov gword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 2.75 G_M14051_IG02: mov rcx, gword ptr [rbp+10H] cmp dword ptr [rcx+104], 11 jne SHORT G_M14051_IG04 mov rcx, gword ptr [rbp+10H] call Span`1:IndexOfValue():int:this nop ;; bbWeight=1 PerfScore 6.25 G_M14051_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 G_M14051_IG04: xor eax, eax ;; bbWeight=1 PerfScore 0.25 G_M14051_IG05: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 48, prolog size 10, PerfScore 18.05, (MethodHash=ee5ec91c) for method Runnable_0:__ForDisassemblyDiagnoser__():int:this ; ============================================================ ; Assembly listing for method Engine:Dispose():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 3 ) ref -> [rbp+0x10] EH do-not-enreg[] this class-hnd EH-live ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rax class-hnd "dup spill" ; V04 tmp2 [V04,T03] ( 3, 3 ) ref -> rax ; V05 tmp3 [V05,T04] ( 3, 0 ) ref -> rsi class-hnd "impSpillSpecialSideEff" ; V06 tmp4 [V06,T05] ( 2, 0 ) ref -> rdi class-hnd "non-inline candidate call" ; V07 tmp5 [V07,T06] ( 2, 0 ) ref -> rcx "argument with side effect" ; V08 tmp6 [V08,T07] ( 2, 0 ) ref -> rdx "argument with side effect" ; V09 PSPSym [V09 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "PSPSym" ; V10 rat0 [V10,T00] ( 3, 6 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 48 G_M34564_IG01: push rbp push rdi push rsi sub rsp, 48 lea rbp, [rsp+40H] mov qword ptr [rbp-20H], rsp mov gword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 5.75 G_M34564_IG02: mov rcx, gword ptr [rbp+10H] mov rax, gword ptr [rcx+72] test rax, rax je SHORT G_M34564_IG04 ;; bbWeight=1 PerfScore 4.25 G_M34564_IG03: mov rcx, gword ptr [rax+8] call qword ptr [rax+24]Action:Invoke():this nop ;; bbWeight=1 PerfScore 5.25 G_M34564_IG04: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 G_M34564_IG05: push rbp push rdi push rsi sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+40H] ;; bbWeight=0 PerfScore 0.00 G_M34564_IG06: mov rsi, rdx mov rcx, gword ptr [rbp+10H] mov rax, 0xD1FFAB1E call gword ptr [rax]Engine:get_Host():IHost:this mov rcx, rax mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IHost:SendError(String):this mov rcx, gword ptr [rbp+10H] mov rax, 0xD1FFAB1E call gword ptr [rax]Engine:get_Host():IHost:this mov rdi, rax mov rcx, rsi mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call gword ptr [rax+40]Exception:get_Message():String:this mov rdx, rax mov rcx, rdi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IHost:SendError(String):this lea rax, G_M34564_IG04 ;; bbWeight=0 PerfScore 0.00 G_M34564_IG07: add rsp, 48 pop rsi pop rdi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 201, prolog size 20, PerfScore 38.35, (MethodHash=3a9f78fb) for method Engine:Dispose():this ; ============================================================ ; Assembly listing for method <>c:<.ctor>b__3_0():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M16676_IG01: ;; bbWeight=1 PerfScore 0.00 G_M16676_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=405abedb) for method <>c:<.ctor>b__3_0():this ; ============================================================ // AfterAll ; Assembly listing for method AppContext:OnProcessExit() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 2, 4 ) ref -> rsi class-hnd "dup spill" ; V02 tmp2 [V02,T02] ( 3, 2.50) ref -> rsi ; V03 tmp3 [V03,T03] ( 2, 2 ) ref -> rdi "argument with side effect" ; V04 tmp4 [V04,T04] ( 2, 2 ) ref -> r8 "argument with side effect" ; V05 rat0 [V05,T01] ( 3, 3 ) ref -> rsi "delegate invoke call" ; ; Lcl frame size = 40 G_M59221_IG01: push rdi push rsi sub rsp, 40 ;; bbWeight=1 PerfScore 2.25 G_M59221_IG02: call AssemblyLoadContext:OnProcessExit() mov rcx, 0xD1FFAB1E mov rsi, gword ptr [rcx] test rsi, rsi jne SHORT G_M59221_IG04 ;; bbWeight=1 PerfScore 4.50 G_M59221_IG03: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M59221_IG04: mov rcx, 0xD1FFAB1E mov edx, 203 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rcx, 0xD1FFAB1E mov rdi, gword ptr [rcx] mov rcx, 0xD1FFAB1E mov edx, 253 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov rdx, 0xD1FFAB1E mov r8, gword ptr [rdx] mov rdx, rdi mov rcx, gword ptr [rsi+8] mov rax, qword ptr [rsi+24] ;; bbWeight=0.50 PerfScore 5.88 G_M59221_IG05: add rsp, 40 pop rsi pop rdi rex.jmp rax ;; bbWeight=0.50 PerfScore 1.63 ; Total bytes of code 122, prolog size 6, PerfScore 27.58, (MethodHash=667018aa) for method AppContext:OnProcessExit() ; ============================================================ ; Assembly listing for method AssemblyLoadContext:OnProcessExit() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 loc0 [V00,T12] ( 4, 2.50) ref -> [rbp-0x68] EH do-not-enreg[] class-hnd exact EH-live ; V01 loc1 [V01 ] ( 5, 4 ) bool -> [rbp-0x10] do-not-enreg[XF] addr-exposed ld-addr-op ; V02 loc2 [V02 ] ( 4, 10 ) struct (40) [rbp-0x38] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op ;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V04 loc4 [V04,T05] ( 3, 10 ) ref -> rsi ld-addr-op class-hnd ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 4, 8 ) ref -> rcx class-hnd exact "Inlining Arg" ; V07 tmp2 [V07,T02] ( 6, 12 ) struct (40) [rbp-0x60] do-not-enreg[SFB] must-init "NewObj constructor temp" ; V08 tmp3 [V08,T10] ( 2, 8 ) bool -> rcx "Inline return value spill temp" ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" ; V10 tmp5 [V10,T07] ( 2, 8 ) ref -> rax class-hnd "Inline stloc first use temp" ; V11 tmp6 [V11,T00] ( 4, 16 ) ref -> rsi class-hnd "Inlining Arg" ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" ; V13 tmp8 [V13,T11] ( 3, 6 ) ref -> rax ; V14 tmp9 [V14,T08] ( 2, 8 ) byref -> rcx "Inlining Arg" ; V15 tmp10 [V15,T09] ( 2, 8 ) ref -> rax class-hnd "Inlining Arg" ; V16 tmp11 [V16,T03] ( 3, 12 ) ref -> rcx V03.value(offs=0x00) P-INDEP "field V03.value (fldOffset=0x0)" ;* V17 tmp12 [V17 ] ( 0, 0 ) long -> zero-ref V03.key(offs=0x08) P-INDEP "field V03.key (fldOffset=0x8)" ; V18 tmp13 [V18,T01] ( 2, 16 ) byref -> rcx stack-byref "BlockOp address local" ; V19 PSPSym [V19 ] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[X] addr-exposed "PSPSym" ; V20 rat0 [V20,T04] ( 3, 12 ) ref -> rax "delegate invoke call" ; ; Lcl frame size = 136 G_M59852_IG01: push rbp push rsi sub rsp, 136 vzeroupper lea rbp, [rsp+90H] vxorps xmm4, xmm4 vmovdqa xmmword ptr [rbp-60H], xmm4 vmovdqa xmmword ptr [rbp-50H], xmm4 vmovdqa xmmword ptr [rbp-40H], xmm4 vmovdqa xmmword ptr [rbp-30H], xmm4 vmovdqa xmmword ptr [rbp-20H], xmm4 mov qword ptr [rbp-70H], rsp ;; bbWeight=1 PerfScore 10.08 G_M59852_IG02: mov rdx, 0xD1FFAB1E mov rdx, gword ptr [rdx] mov gword ptr [rbp-68H], rdx xor edx, edx mov dword ptr [rbp-10H], edx ;; bbWeight=1 PerfScore 4.50 G_M59852_IG03: cmp byte ptr [rbp-10H], 0 jne SHORT G_M59852_IG05 ;; bbWeight=1 PerfScore 2.00 G_M59852_IG04: lea rdx, [rbp-10H] mov rcx, gword ptr [rbp-68H] call Monitor:ReliableEnter(Object,byref) jmp SHORT G_M59852_IG06 ;; bbWeight=1 PerfScore 4.50 G_M59852_IG05: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M59852_IG06: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] cmp dword ptr [rcx], ecx mov gword ptr [rbp-60H], rcx mov ecx, dword ptr [rcx+68] mov dword ptr [rbp-58H], ecx xor ecx, ecx mov dword ptr [rbp-54H], ecx mov dword ptr [rbp-50H], 2 vxorps xmm0, xmm0 vmovdqu xmmword ptr [rbp-48H], xmm0 ;; bbWeight=1 PerfScore 11.83 G_M59852_IG07: vmovdqu xmm0, xmmword ptr [rbp-60H] vmovdqu xmmword ptr [rbp-38H], xmm0 vmovdqu xmm0, xmmword ptr [rbp-50H] vmovdqu xmmword ptr [rbp-28H], xmm0 mov rcx, qword ptr [rbp-40H] mov qword ptr [rbp-18H], rcx ;; bbWeight=1 PerfScore 6.00 G_M59852_IG08: lea rcx, bword ptr [rbp-38H] mov rdx, 0xD1FFAB1E call Enumerator:MoveNext():bool:this test eax, eax je SHORT G_M59852_IG13 ;; bbWeight=1 PerfScore 3.00 G_M59852_IG09: lea rcx, bword ptr [rbp-20H] mov rcx, gword ptr [rcx] cmp dword ptr [rcx], ecx call WeakReference`1:get_Target():__Canon:this mov rsi, rax test rsi, rsi setne cl movzx rcx, cl test ecx, ecx je SHORT G_M59852_IG12 ;; bbWeight=4 PerfScore 34.00 G_M59852_IG10: cmp dword ptr [rsi], esi lea rcx, bword ptr [rsi+32] xor rdx, rdx call Interlocked:Exchange(byref,Object):Object test rax, rax je SHORT G_M59852_IG12 ;; bbWeight=2 PerfScore 10.00 G_M59852_IG11: mov rcx, gword ptr [rax+8] mov rdx, rsi call qword ptr [rax+24]Action`1:Invoke(__Canon):this ;; bbWeight=2 PerfScore 10.50 G_M59852_IG12: lea rcx, bword ptr [rbp-38H] mov rdx, 0xD1FFAB1E call Enumerator:MoveNext():bool:this test eax, eax jne SHORT G_M59852_IG09 ;; bbWeight=4 PerfScore 12.00 G_M59852_IG13: cmp byte ptr [rbp-10H], 0 je SHORT G_M59852_IG15 ;; bbWeight=1 PerfScore 2.00 G_M59852_IG14: mov rcx, gword ptr [rbp-68H] call Monitor:Exit(Object) ;; bbWeight=0.50 PerfScore 1.00 G_M59852_IG15: nop ;; bbWeight=1 PerfScore 0.25 G_M59852_IG16: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 G_M59852_IG17: push rbp push rsi sub rsp, 40 vzeroupper mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+90H] ;; bbWeight=0 PerfScore 0.00 G_M59852_IG18: cmp byte ptr [rbp-10H], 0 je SHORT G_M59852_IG19 mov rcx, gword ptr [rbp-68H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M59852_IG19: nop ;; bbWeight=0 PerfScore 0.00 G_M59852_IG20: add rsp, 40 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 351, prolog size 53, PerfScore 150.47, (MethodHash=4a801633) for method AssemblyLoadContext:OnProcessExit() ; ============================================================ ; Assembly listing for method Enumerator:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 25.50) byref -> rcx this ; V01 TypeCtx [V01,T06] ( 4, 3.50) long -> rdx ; V02 loc0 [V02,T05] ( 4, 9 ) byref -> rax ; V03 loc1 [V03,T04] ( 4, 16 ) int -> rax ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V05 tmp1 [V05,T01] ( 3, 24 ) ref -> r8 class-hnd "impAppendStmt" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp" ; V07 tmp3 [V07,T09] ( 2, 2 ) long -> rsi "bubbling QMark1" ; V08 tmp4 [V08,T08] ( 2, 2 ) ref -> r9 class-hnd "bubbling QMark1" ;* V09 tmp5 [V09 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree" ; V10 tmp6 [V10,T10] ( 2, 1 ) ref -> rdx V06.value(offs=0x00) P-INDEP "field V06.value (fldOffset=0x0)" ; V11 tmp7 [V11,T11] ( 2, 1 ) long -> rsi V06.key(offs=0x08) P-INDEP "field V06.key (fldOffset=0x8)" ; V12 tmp8 [V12,T07] ( 3, 3 ) byref -> rdi "BlockOp address local" ; V13 cse0 [V13,T03] ( 3, 20 ) int -> rax "CSE - aggressive" ; V14 cse1 [V14,T02] ( 4, 20.50) ref -> r8 "CSE - aggressive" ; ; Lcl frame size = 40 G_M65171_IG01: push rdi push rsi sub rsp, 40 vzeroupper mov qword ptr [rsp+20H], rdx ;; bbWeight=1 PerfScore 4.25 G_M65171_IG02: mov eax, dword ptr [rcx+8] mov r8, gword ptr [rcx] cmp eax, dword ptr [r8+68] jne G_M65171_IG11 ;; bbWeight=1 PerfScore 7.00 G_M65171_IG03: mov eax, dword ptr [rcx+12] mov r8, gword ptr [rcx] cmp eax, dword ptr [r8+56] jae SHORT G_M65171_IG07 ;; bbWeight=8 PerfScore 56.00 G_M65171_IG04: mov r8, gword ptr [r8+16] lea r9d, [rax+1] mov dword ptr [rcx+12], r9d cmp eax, dword ptr [r8+8] jae SHORT G_M65171_IG12 movsxd rax, eax lea rax, [rax+2*rax] lea rax, bword ptr [r8+8*rax+16] cmp dword ptr [rax+20], -1 jl SHORT G_M65171_IG03 ;; bbWeight=4 PerfScore 45.00 G_M65171_IG05: mov rsi, qword ptr [rax+8] mov r9, gword ptr [rax] mov rax, qword ptr [rdx+48] mov rax, qword ptr [rax] cmp qword ptr [rax+24], 0 je SHORT G_M65171_IG09 ;; bbWeight=0.50 PerfScore 5.50 G_M65171_IG06: jmp SHORT G_M65171_IG09 ;; bbWeight=0.25 PerfScore 0.50 G_M65171_IG07: mov eax, dword ptr [r8+56] inc eax mov dword ptr [rcx+12], eax vxorps xmm0, xmm0 vmovdqu xmmword ptr [rcx+24], xmm0 xor eax, eax ;; bbWeight=0.50 PerfScore 2.42 G_M65171_IG08: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M65171_IG09: mov rdx, r9 lea rdi, bword ptr [rcx+24] mov rcx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov qword ptr [rdi+8], rsi mov eax, 1 ;; bbWeight=0.50 PerfScore 1.63 G_M65171_IG10: add rsp, 40 pop rsi pop rdi ret ;; bbWeight=0.50 PerfScore 1.13 G_M65171_IG11: call ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() int3 ;; bbWeight=0 PerfScore 0.00 G_M65171_IG12: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 171, prolog size 14, PerfScore 141.84, (MethodHash=94cf016c) for method Enumerator:MoveNext():bool:this ; ============================================================ ; Assembly listing for method AppDomain:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M64711_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M64711_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call AppDomain:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M64711_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=3bfb0338) for method AppDomain:.cctor() ; ============================================================ ; Assembly listing for method AppDomain:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rsi this class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rax class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 32 G_M1752_IG01: push rsi sub rsp, 32 mov rsi, rcx ;; bbWeight=1 PerfScore 1.50 G_M1752_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST lea rcx, bword ptr [rsi+8] mov rdx, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rsi+56], 1 ;; bbWeight=1 PerfScore 4.00 G_M1752_IG03: add rsp, 32 pop rsi ret ;; bbWeight=1 PerfScore 1.75 ; Total bytes of code 48, prolog size 5, PerfScore 12.05, (MethodHash=23d2f927) for method AppDomain:.ctor():this ; ============================================================ ; Assembly listing for method EventArgs:.cctor() ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; MinOpts code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V01 tmp1 [V01 ] ( 1, 1 ) ref -> [rbp-0x08] must-init class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 48 G_M36685_IG01: push rbp sub rsp, 48 lea rbp, [rsp+30H] xor rax, rax mov qword ptr [rbp-08H], rax ;; bbWeight=1 PerfScore 3.00 G_M36685_IG02: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-08H], rax mov rcx, gword ptr [rbp-08H] call EventArgs:.ctor():this mov rcx, 0xD1FFAB1E mov rdx, gword ptr [rbp-08H] call CORINFO_HELP_CHECKED_ASSIGN_REF nop ;; bbWeight=1 PerfScore 6.75 G_M36685_IG03: lea rsp, [rbp] pop rbp ret ;; bbWeight=1 PerfScore 2.00 ; Total bytes of code 70, prolog size 16, PerfScore 18.75, (MethodHash=0ebc70b2) for method EventArgs:.cctor() ; ============================================================ ; Assembly listing for method EventArgs:.ctor():this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M64210_IG01: ;; bbWeight=1 PerfScore 0.00 G_M64210_IG02: ret ;; bbWeight=1 PerfScore 1.00 ; Total bytes of code 1, prolog size 0, PerfScore 1.10, (MethodHash=bd9b052d) for method EventArgs:.ctor():this ; ============================================================ ; Assembly listing for method EventListener:DisposeOnShutdown(Object,EventArgs) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V02 loc0 [V02,T06] ( 4, 2.50) ref -> [rbp-0x30] EH do-not-enreg[] class-hnd EH-live ; V03 loc1 [V03 ] ( 5, 4 ) bool -> [rbp-0x10] do-not-enreg[XF] addr-exposed ld-addr-op ; V04 loc2 [V04 ] ( 7, 13 ) struct (24) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V05 loc3 [V05,T01] ( 3, 12 ) ref -> rcx class-hnd ; V06 loc4 [V06,T00] ( 5, 14 ) ref -> rsi ld-addr-op class-hnd ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V08 tmp1 [V08,T04] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (24) zero-ref "NewObj constructor temp" ; V10 tmp3 [V10,T03] ( 2, 8 ) bool -> rcx "Inline return value spill temp" ; V11 tmp4 [V11,T02] ( 2, 8 ) ref -> rsi class-hnd "Inline stloc first use temp" ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" ; V13 tmp6 [V13 ] ( 3, 6 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed V04._list(offs=0x00) P-DEP "field V04._list (fldOffset=0x0)" ; V14 tmp7 [V14 ] ( 4, 10 ) ref -> [rbp-0x20] do-not-enreg[X] addr-exposed V04._current(offs=0x08) P-DEP "field V04._current (fldOffset=0x8)" ; V15 tmp8 [V15 ] ( 3, 6 ) int -> [rbp-0x18] do-not-enreg[X] addr-exposed V04._index(offs=0x10) P-DEP "field V04._index (fldOffset=0x10)" ; V16 tmp9 [V16 ] ( 3, 6 ) int -> [rbp-0x14] do-not-enreg[X] addr-exposed V04._version(offs=0x14) P-DEP "field V04._version (fldOffset=0x14)" ; V17 tmp10 [V17,T05] ( 3, 3 ) ref -> rcx V09._list(offs=0x00) P-INDEP "field V09._list (fldOffset=0x0)" ;* V18 tmp11 [V18,T08] ( 0, 0 ) ref -> zero-ref V09._current(offs=0x08) P-INDEP "field V09._current (fldOffset=0x8)" ;* V19 tmp12 [V19,T09] ( 0, 0 ) int -> zero-ref V09._index(offs=0x10) P-INDEP "field V09._index (fldOffset=0x10)" ; V20 tmp13 [V20,T07] ( 2, 2 ) int -> rdx V09._version(offs=0x14) P-INDEP "field V09._version (fldOffset=0x14)" ; V21 PSPSym [V21 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 88 G_M22495_IG01: push rbp push rsi sub rsp, 88 lea rbp, [rsp+60H] vxorps xmm4, xmm4 vmovdqu xmmword ptr [rbp-28H], xmm4 xor rax, rax mov qword ptr [rbp-18H], rax mov qword ptr [rbp-40H], rsp ;; bbWeight=1 PerfScore 6.33 G_M22495_IG02: call EventListener:get_EventListenersLock():Object mov gword ptr [rbp-30H], rax xor edx, edx mov dword ptr [rbp-10H], edx ;; bbWeight=1 PerfScore 3.25 G_M22495_IG03: cmp byte ptr [rbp-10H], 0 jne SHORT G_M22495_IG05 ;; bbWeight=1 PerfScore 2.00 G_M22495_IG04: lea rdx, [rbp-10H] mov rcx, gword ptr [rbp-30H] call Monitor:ReliableEnter(Object,byref) jmp SHORT G_M22495_IG06 ;; bbWeight=1 PerfScore 4.50 G_M22495_IG05: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M22495_IG06: mov rcx, 0xD1FFAB1E mov rcx, gword ptr [rcx] mov edx, dword ptr [rcx+20] mov gword ptr [rbp-28H], rcx xor rcx, rcx mov gword ptr [rbp-20H], rcx mov dword ptr [rbp-18H], ecx mov dword ptr [rbp-14H], edx ;; bbWeight=1 PerfScore 8.50 G_M22495_IG07: lea rcx, bword ptr [rbp-28H] mov rdx, 0xD1FFAB1E call Enumerator:MoveNext():bool:this test eax, eax je SHORT G_M22495_IG11 ;; bbWeight=1 PerfScore 3.00 G_M22495_IG08: mov rcx, gword ptr [rbp-20H] cmp dword ptr [rcx], ecx call WeakReference`1:get_Target():__Canon:this mov rsi, rax test rsi, rsi setne cl movzx rcx, cl test ecx, ecx je SHORT G_M22495_IG10 ;; bbWeight=4 PerfScore 28.00 G_M22495_IG09: mov rcx, rsi mov edx, 1 mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+48]EventSource:Dispose(bool):this mov rcx, rsi call GC:SuppressFinalize(Object) ;; bbWeight=2 PerfScore 17.50 G_M22495_IG10: lea rcx, bword ptr [rbp-28H] mov rdx, 0xD1FFAB1E call Enumerator:MoveNext():bool:this test eax, eax jne SHORT G_M22495_IG08 ;; bbWeight=4 PerfScore 12.00 G_M22495_IG11: cmp byte ptr [rbp-10H], 0 je SHORT G_M22495_IG13 ;; bbWeight=1 PerfScore 2.00 G_M22495_IG12: mov rcx, gword ptr [rbp-30H] call Monitor:Exit(Object) ;; bbWeight=0.50 PerfScore 1.00 G_M22495_IG13: nop ;; bbWeight=1 PerfScore 0.25 G_M22495_IG14: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 G_M22495_IG15: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+60H] ;; bbWeight=0 PerfScore 0.00 G_M22495_IG16: cmp byte ptr [rbp-10H], 0 je SHORT G_M22495_IG17 mov rcx, gword ptr [rbp-30H] call Monitor:Exit(Object) ;; bbWeight=0 PerfScore 0.00 G_M22495_IG17: nop ;; bbWeight=0 PerfScore 0.00 G_M22495_IG18: add rsp, 40 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 267, prolog size 30, PerfScore 117.73, (MethodHash=f176a820) for method EventListener:DisposeOnShutdown(Object,EventArgs) ; ============================================================ ; Assembly listing for method Enumerator:MoveNext():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 9, 6.50) byref -> rsi this ; V01 TypeCtx [V01,T01] ( 4, 3.50) long -> rdx ; V02 loc0 [V02,T02] ( 4, 3 ) ref -> [rsp+0x20] class-hnd ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 3, 3 ) ref -> rdx "arr expr" ; V05 tmp2 [V05,T04] ( 3, 3 ) int -> rax "index expr" ; V06 cse0 [V06,T05] ( 3, 1.50) int -> rax "CSE - moderate" ; ; Lcl frame size = 48 G_M65171_IG01: push rsi sub rsp, 48 mov qword ptr [rsp+28H], rdx mov rsi, rcx ;; bbWeight=1 PerfScore 2.50 G_M65171_IG02: mov rcx, gword ptr [rsi] mov eax, dword ptr [rsi+20] cmp eax, dword ptr [rcx+20] jne SHORT G_M65171_IG05 ;; bbWeight=1 PerfScore 7.00 G_M65171_IG03: mov eax, dword ptr [rsi+16] mov gword ptr [rsp+20H], rcx cmp eax, dword ptr [rcx+16] jae SHORT G_M65171_IG05 lea rcx, bword ptr [rsi+8] mov rdx, gword ptr [rsp+20H] mov rdx, gword ptr [rdx+8] cmp eax, dword ptr [rdx+8] jae SHORT G_M65171_IG07 movsxd rax, eax mov rdx, gword ptr [rdx+8*rax+16] call CORINFO_HELP_CHECKED_ASSIGN_REF inc dword ptr [rsi+16] mov eax, 1 ;; bbWeight=0.50 PerfScore 10.50 G_M65171_IG04: add rsp, 48 pop rsi ret ;; bbWeight=0.50 PerfScore 0.88 G_M65171_IG05: mov rcx, rsi ;; bbWeight=0.50 PerfScore 0.13 G_M65171_IG06: add rsp, 48 pop rsi jmp Enumerator:MoveNextRare():bool:this ;; bbWeight=0.50 PerfScore 1.38 G_M65171_IG07: call CORINFO_HELP_RNGCHKFAIL int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 101, prolog size 13, PerfScore 32.48, (MethodHash=94cf016c) for method Enumerator:MoveNext():bool:this ; ============================================================ ; Assembly listing for method EventSource:Dispose(bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 14, 14 ) ref -> [rbp+0x10] EH do-not-enreg[] this class-hnd EH-live ; V01 arg1 [V01,T03] ( 3, 3 ) bool -> rdx ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ; V04 tmp2 [V04,T01] ( 4, 8 ) ref -> rsi class-hnd "Inlining Arg" ; V05 tmp3 [V05,T02] ( 4, 8 ) ref -> rsi class-hnd "Inlining Arg" ; V06 PSPSym [V06 ] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 40 G_M32597_IG01: push rbp push rsi sub rsp, 40 lea rbp, [rsp+30H] mov qword ptr [rbp-10H], rsp mov gword ptr [rbp+10H], rcx ;; bbWeight=1 PerfScore 4.75 G_M32597_IG02: test dl, dl je G_M32597_IG07 mov rdx, gword ptr [rbp+10H] cmp byte ptr [rdx+157], 0 je SHORT G_M32597_IG05 ;; bbWeight=1 PerfScore 5.25 G_M32597_IG03: mov rdx, gword ptr [rbp+10H] mov rdx, gword ptr [rdx+24] mov rcx, gword ptr [rbp+10H] call EventSource:SendManifest(ref):this nop ;; bbWeight=1 PerfScore 5.25 G_M32597_IG04: mov rcx, gword ptr [rbp+10H] mov byte ptr [rcx+157], 0 ;; bbWeight=1 PerfScore 2.00 G_M32597_IG05: mov rcx, gword ptr [rbp+10H] cmp gword ptr [rcx+48], 0 je SHORT G_M32597_IG06 mov rcx, gword ptr [rbp+10H] mov rsi, gword ptr [rcx+48] mov rcx, rsi mov edx, 1 mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+40]EventProvider:Dispose(bool):this mov rcx, rsi call GC:SuppressFinalize(Object) mov rcx, gword ptr [rbp+10H] xor rdx, rdx mov gword ptr [rcx+48], rdx ;; bbWeight=1 PerfScore 18.00 G_M32597_IG06: mov rcx, gword ptr [rbp+10H] cmp gword ptr [rcx+64], 0 je SHORT G_M32597_IG07 mov rcx, gword ptr [rbp+10H] mov rsi, gword ptr [rcx+64] mov rcx, rsi mov edx, 1 mov rax, qword ptr [rsi] mov rax, qword ptr [rax+64] call qword ptr [rax+40]EventProvider:Dispose(bool):this mov rcx, rsi call GC:SuppressFinalize(Object) mov rax, gword ptr [rbp+10H] xor rdx, rdx mov gword ptr [rax+64], rdx ;; bbWeight=1 PerfScore 18.00 G_M32597_IG07: mov rax, gword ptr [rbp+10H] mov byte ptr [rax+157], 0 mov rax, gword ptr [rbp+10H] mov byte ptr [rax+156], 1 ;; bbWeight=1 PerfScore 4.00 G_M32597_IG08: lea rsp, [rbp-08H] pop rsi pop rbp ret ;; bbWeight=1 PerfScore 2.50 G_M32597_IG09: push rbp push rsi sub rsp, 40 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+30H] ;; bbWeight=0 PerfScore 0.00 G_M32597_IG10: lea rax, G_M32597_IG04 ;; bbWeight=0 PerfScore 0.00 G_M32597_IG11: add rsp, 40 pop rsi pop rbp ret ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 241, prolog size 19, PerfScore 83.85, (MethodHash=ce1e80aa) for method EventSource:Dispose(bool):this ; ============================================================ ; Assembly listing for method EventProvider:Dispose(bool):this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 9, 9 ) ref -> rsi this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) bool -> zero-ref ; V02 loc0 [V02,T02] ( 3, 3 ) long -> rdi ; V03 loc1 [V03,T01] ( 4, 4 ) ref -> [rbp-0x20] EH do-not-enreg[] class-hnd EH-live ; V04 loc2 [V04 ] ( 5, 5 ) bool -> [rbp-0x18] do-not-enreg[XF] addr-exposed ld-addr-op ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V06 PSPSym [V06 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "PSPSym" ; ; Lcl frame size = 64 G_M29321_IG01: push rbp push rdi push rsi sub rsp, 64 lea rbp, [rsp+50H] mov qword ptr [rbp-30H], rsp mov rsi, rcx ;; bbWeight=1 PerfScore 5.00 G_M29321_IG02: cmp byte ptr [rsi+66], 0 je SHORT G_M29321_IG04 ;; bbWeight=1 PerfScore 3.00 G_M29321_IG03: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 G_M29321_IG04: mov byte ptr [rsi+65], 0 call EventListener:get_EventListenersLock():Object mov gword ptr [rbp-20H], rax xor edx, edx mov dword ptr [rbp-18H], edx ;; bbWeight=1 PerfScore 4.25 G_M29321_IG05: cmp byte ptr [rbp-18H], 0 jne SHORT G_M29321_IG07 ;; bbWeight=1 PerfScore 2.00 G_M29321_IG06: lea rdx, [rbp-18H] mov rcx, gword ptr [rbp-20H] call Monitor:ReliableEnter(Object,byref) jmp SHORT G_M29321_IG08 ;; bbWeight=1 PerfScore 4.50 G_M29321_IG07: call Monitor:ThrowLockTakenException() int3 ;; bbWeight=0 PerfScore 0.00 G_M29321_IG08: cmp byte ptr [rsi+66], 0 jne SHORT G_M29321_IG11 ;; bbWeight=1 PerfScore 3.00 G_M29321_IG09: mov rdi, qword ptr [rsi+40] xor rcx, rcx mov qword ptr [rsi+40], rcx mov byte ptr [rsi+66], 1 ;; bbWeight=1 PerfScore 4.25 G_M29321_IG10: cmp byte ptr [rbp-18H], 0 je SHORT G_M29321_IG13 mov rcx, gword ptr [rbp-20H] call Monitor:Exit(Object) jmp SHORT G_M29321_IG13 ;; bbWeight=1 PerfScore 6.00 G_M29321_IG11: mov rcx, rsp call G_M29321_IG16 ;; bbWeight=1 PerfScore 1.25 G_M29321_IG12: jmp SHORT G_M29321_IG14 ;; bbWeight=1 PerfScore 2.00 G_M29321_IG13: test rdi, rdi je SHORT G_M29321_IG14 mov rcx, gword ptr [rsi+8] mov rdx, rdi mov r11, 0xD1FFAB1E mov rax, 0xD1FFAB1E call qword ptr [rax]IEventProvider:EventUnregister(long):int:this ;; bbWeight=1 PerfScore 7.00 G_M29321_IG14: nop ;; bbWeight=1 PerfScore 0.25 G_M29321_IG15: lea rsp, [rbp-10H] pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 3.00 G_M29321_IG16: push rbp push rdi push rsi sub rsp, 48 mov rbp, qword ptr [rcx+32] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+50H] ;; bbWeight=1 PerfScore 6.75 G_M29321_IG17: cmp byte ptr [rbp-18H], 0 je SHORT G_M29321_IG18 mov rcx, gword ptr [rbp-20H] call Monitor:Exit(Object) ;; bbWeight=1 PerfScore 4.00 G_M29321_IG18: nop ;; bbWeight=1 PerfScore 0.25 G_M29321_IG19: add rsp, 48 pop rsi pop rdi pop rbp ret ;; bbWeight=1 PerfScore 2.75 ; Total bytes of code 212, prolog size 19, PerfScore 83.45, (MethodHash=14b48d76) for method EventProvider:Dispose(bool):this ; ============================================================ ; Assembly listing for method EtwEventProvider:System.Diagnostics.Tracing.IEventProvider.EventUnregister(long):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd ; V01 arg1 [V01,T01] ( 3, 3 ) long -> rsi ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) int -> rax "Single return block return value" ; V04 FramesRoot [V04,T00] ( 6, 6 ) long -> rdi "Pinvoke FrameListRoot" ; V05 PInvokeFrame [V05 ] ( 8, 8 ) blk (72) [rbp-0x80] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 104 G_M33402_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 104 lea rbp, [rsp+A0H] mov rsi, rdx ;; bbWeight=1 PerfScore 9.00 G_M33402_IG02: lea rcx, [rbp-78H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rcx, rsp mov qword ptr [rbp-58H], rcx mov rcx, rbp mov qword ptr [rbp-48H], rcx mov rcx, rsi mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M33402_IG05 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=1 PerfScore 10.50 G_M33402_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M33402_IG04: call qword ptr [rax]Advapi32:EventUnregister(long):int ;; bbWeight=1 PerfScore 3.00 G_M33402_IG05: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M33402_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M33402_IG06: mov rdx, bword ptr [rbp-70H] mov qword ptr [rdi+16], rdx ;; bbWeight=1 PerfScore 2.00 G_M33402_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 164, prolog size 24, PerfScore 54.15, (MethodHash=34d57d85) for method EtwEventProvider:System.Diagnostics.Tracing.IEventProvider.EventUnregister(long):int:this ; ============================================================ ; Assembly listing for method GC:SuppressFinalize(Object) ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; fully interruptible ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rcx class-hnd ; V01 OutArgs [V01 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" ; V03 tmp2 [V03,T02] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 32 G_M29531_IG01: push rsi sub rsp, 32 ;; bbWeight=1 PerfScore 1.25 G_M29531_IG02: test rcx, rcx je SHORT G_M29531_IG04 ;; bbWeight=1 PerfScore 1.25 G_M29531_IG03: add rsp, 32 pop rsi jmp GC:_SuppressFinalize(Object) ;; bbWeight=1 PerfScore 2.75 G_M29531_IG04: mov rcx, 0xD1FFAB1E call CORINFO_HELP_NEWSFAST mov rsi, rax mov ecx, 0x1325 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rcx, rsi call ArgumentNullException:.ctor(String):this mov rcx, rsi call CORINFO_HELP_THROW int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 78, prolog size 5, PerfScore 13.05, (MethodHash=85c78ca4) for method GC:SuppressFinalize(Object) ; ============================================================ ; Assembly listing for method EventPipeEventProvider:System.Diagnostics.Tracing.IEventProvider.EventUnregister(long):int:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd ;* V01 arg1 [V01 ] ( 0, 0 ) long -> zero-ref ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 4 ) int -> rax "Single return block return value" ; V04 FramesRoot [V04,T00] ( 6, 6 ) long -> rdi "Pinvoke FrameListRoot" ; V05 PInvokeFrame [V05 ] ( 8, 8 ) blk (72) [rbp-0x80] do-not-enreg[X] addr-exposed "Pinvoke FrameVar" ; ; Lcl frame size = 104 G_M59356_IG01: push rbp push r15 push r14 push r13 push r12 push rdi push rsi push rbx sub rsp, 104 lea rbp, [rsp+A0H] mov rsi, rcx ;; bbWeight=1 PerfScore 9.00 G_M59356_IG02: lea rcx, [rbp-78H] mov rdx, r10 call CORINFO_HELP_INIT_PINVOKE_FRAME mov rdi, rax mov rcx, rsp mov qword ptr [rbp-58H], rcx mov rcx, rbp mov qword ptr [rbp-48H], rcx mov rcx, qword ptr [rsi+8] mov rax, 0xD1FFAB1E mov qword ptr [rbp-68H], rax lea rax, G_M59356_IG05 mov qword ptr [rbp-50H], rax lea rax, bword ptr [rbp-78H] mov qword ptr [rdi+16], rax mov byte ptr [rdi+12], 0 ;; bbWeight=1 PerfScore 12.25 G_M59356_IG03: mov rax, 0xD1FFAB1E ;; bbWeight=1 PerfScore 0.25 G_M59356_IG04: call qword ptr [rax]EventPipeInternal:DeleteProvider(long) ;; bbWeight=1 PerfScore 3.00 G_M59356_IG05: mov byte ptr [rdi+12], 1 mov rdx, 0xD1FFAB1E cmp dword ptr [rdx], 0 je SHORT G_M59356_IG06 mov rcx, 0xD1FFAB1E call qword ptr [rcx]CORINFO_HELP_STOP_FOR_GC ;; bbWeight=1 PerfScore 7.50 G_M59356_IG06: mov rax, bword ptr [rbp-70H] mov qword ptr [rdi+16], rax xor eax, eax ;; bbWeight=1 PerfScore 2.25 G_M59356_IG07: lea rsp, [rbp-38H] pop rbx pop rsi pop rdi pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; bbWeight=1 PerfScore 5.50 ; Total bytes of code 167, prolog size 24, PerfScore 56.45, (MethodHash=0bca1823) for method EventPipeEventProvider:System.Diagnostics.Tracing.IEventProvider.EventUnregister(long):int:this ; ============================================================ ; Assembly listing for method Enumerator:MoveNextRare():bool:this ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) byref -> rcx this ;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref ; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V03 cse0 [V03,T01] ( 3, 3 ) ref -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 G_M58487_IG01: sub rsp, 40 ;; bbWeight=1 PerfScore 0.25 G_M58487_IG02: mov eax, dword ptr [rcx+20] mov rdx, gword ptr [rcx] cmp eax, dword ptr [rdx+20] jne SHORT G_M58487_IG05 ;; bbWeight=1 PerfScore 7.00 G_M58487_IG03: mov eax, dword ptr [rdx+16] inc eax mov dword ptr [rcx+16], eax xor eax, eax mov qword ptr [rcx+8], rax ;; bbWeight=1 PerfScore 4.50 G_M58487_IG04: add rsp, 40 ret ;; bbWeight=1 PerfScore 1.25 G_M58487_IG05: call ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() int3 ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 40, prolog size 4, PerfScore 17.00, (MethodHash=649d1b88) for method Enumerator:MoveNextRare():bool:this ; ============================================================ // Benchmark Process 65556 has exited with code 0 Mean = 12.948 ns, StdErr = 0.021 ns (0.16%), N = 14, StdDev = 0.078 ns Min = 12.826 ns, Q1 = 12.907 ns, Median = 12.939 ns, Q3 = 13.003 ns, Max = 13.087 ns IQR = 0.096 ns, LowerFence = 12.763 ns, UpperFence = 13.148 ns ConfidenceInterval = [12.860 ns; 13.036 ns] (CI 99.9%), Margin = 0.088 ns (0.68% of Mean) Skewness = 0.12, Kurtosis = 1.84, MValue = 2 // ***** BenchmarkRunner: Finish ***** // * Export * artifacts\BenchmarkDotNet.Artifacts\results\System.Memory.Span_Char_-report.csv artifacts\BenchmarkDotNet.Artifacts\results\System.Memory.Span_Char_-report-github.md artifacts\BenchmarkDotNet.Artifacts\results\System.Memory.Span_Char_-report.html artifacts\BenchmarkDotNet.Artifacts\results\System.Memory.Span_Char_-report-full.json artifacts\BenchmarkDotNet.Artifacts\results\System.Memory.Span_Char_-perf-lab-report.json // * Detailed results * Span.IndexOfValue: Job-SBYHPE(PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable, Toolchain=CoreRun, IterationTime=250.0000 ms, MaxIterationCount=20, MinIterationCount=15, WarmupCount=1) [Size=512] Runtime = .NET Core 5.0 (CoreCLR 42.42.42.42424, CoreFX 42.42.42.42424), X64 RyuJIT; GC = Concurrent Workstation Mean = 12.948 ns, StdErr = 0.021 ns (0.16%), N = 14, StdDev = 0.078 ns Min = 12.826 ns, Q1 = 12.907 ns, Median = 12.939 ns, Q3 = 13.003 ns, Max = 13.087 ns IQR = 0.096 ns, LowerFence = 12.763 ns, UpperFence = 13.148 ns ConfidenceInterval = [12.860 ns; 13.036 ns] (CI 99.9%), Margin = 0.088 ns (0.68% of Mean) Skewness = 0.12, Kurtosis = 1.84, MValue = 2 -------------------- Histogram -------------------- [12.810 ns ; 13.130 ns) | @@@@@@@@@@@@@@ --------------------------------------------------- // * Summary * BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19041.388 (2004/?/20H1) Intel Core i7-8700 CPU 3.20GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores .NET Core SDK=5.0.100-rc.1.20373.1 [Host] : .NET Core 5.0.0 (CoreCLR 5.0.20.37004, CoreFX 5.0.20.37004), X64 RyuJIT Job-SBYHPE : .NET Core 5.0 (CoreCLR 42.42.42.42424, CoreFX 42.42.42.42424), X64 RyuJIT PowerPlanMode=00000000-0000-0000-0000-000000000000 Arguments=/p:DebugType=portable Toolchain=CoreRun IterationTime=250.0000 ms MaxIterationCount=20 MinIterationCount=15 WarmupCount=1 | Method | Size | Mean | Error | StdDev | Median | Min | Max | Gen 0 | Gen 1 | Gen 2 | Allocated | |------------- |----- |---------:|---------:|---------:|---------:|---------:|---------:|------:|------:|------:|----------:| | IndexOfValue | 512 | 12.95 ns | 0.088 ns | 0.078 ns | 12.94 ns | 12.83 ns | 13.09 ns | - | - | - | - | // * Hints * Outliers Span.IndexOfValue: PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable, Toolchain=CoreRun, IterationTime=250.0000 ms, MaxIterationCount=20, MinIterationCount=15, WarmupCount=1 -> 1 outlier was removed (14.05 ns) // * Legends * Size : Value of the 'Size' parameter Mean : Arithmetic mean of all measurements Error : Half of 99.9% confidence interval StdDev : Standard deviation of all measurements Median : Value separating the higher half of all measurements (50th percentile) Min : Minimum Max : Maximum Gen 0 : GC Generation 0 collects per 1000 operations Gen 1 : GC Generation 1 collects per 1000 operations Gen 2 : GC Generation 2 collects per 1000 operations Allocated : Allocated memory per single operation (managed only, inclusive, 1KB = 1024B) 1 ns : 1 Nanosecond (0.000000001 sec) // * Diagnostic Output - MemoryDiagnoser * // ***** BenchmarkRunner: End ***** // ** Remained 0 benchmark(s) to run ** Run time: 00:00:24 (24.07 sec), executed benchmarks: 1 Global total time: 00:00:34 (34.85 sec), executed benchmarks: 1 // * Artifacts cleanup *