; Assembly listing for method System.Threading.ThreadPoolWorkQueue:DequeueWithPriorityAlternation(System.Threading.ThreadPoolWorkQueue,System.Threading.ThreadPoolWorkQueueThreadLocals,byref):System.Object (Tier1) ; Emitting BLENDED_CODE for X64 with AVX512 - Windows ; Tier1 code ; optimized code ; optimized using Dynamic PGO ; rsp based frame ; partially interruptible ; with Dynamic PGO: fgCalledCount is 58 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 4 ) ref -> rbx class-hnd single-def ; V01 arg1 [V01,T02] ( 4, 3 ) ref -> rdi class-hnd single-def ; V02 arg2 [V02,T01] ( 4, 4 ) byref -> rsi single-def ; V03 loc0 [V03 ] ( 4, 3 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ; V04 loc1 [V04,T03] ( 2, 2 ) ubyte -> rcx ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref ; V07 tmp2 [V07,T04] ( 3, 0 ) ref -> rcx class-hnd exact single-def "Inlining Arg" ; ; Lcl frame size = 48 G_M523_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rdi push rsi push rbx sub rsp, 48 xor eax, eax mov qword ptr [rsp+0x28], rax mov rbx, rcx ; gcrRegs +[rbx] mov rdi, rdx ; gcrRegs +[rdi] mov rsi, r8 ; byrRegs +[rsi] ;; size=23 bbWeight=1 PerfScore 5.25 G_M523_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz movzx rcx, byte ptr [rbx+0x41] test ecx, ecx jne SHORT G_M523_IG06 ;; size=8 bbWeight=1 PerfScore 3.25 G_M523_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz mov byte ptr [rsi], 0 cmp gword ptr [rsp+0x28], 0 jne SHORT G_M523_IG04 mov rcx, rbx ; gcrRegs +[rcx] mov rdx, rdi ; gcrRegs +[rdx] mov r8, rsi ; byrRegs +[r8] call [] ; gcrRegs -[rcx rdx rbx rdi] +[rax] ; byrRegs -[rsi r8] ; gcr arg pop 0 mov gword ptr [rsp+0x28], rax ;; size=31 bbWeight=1 PerfScore 8.75 G_M523_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rsp+0x28] ; gcrRegs +[rax] ;; size=5 bbWeight=1 PerfScore 1.00 G_M523_IG05: ; bbWeight=1, epilog, nogc, extend add rsp, 48 pop rbx pop rsi pop rdi ret ;; size=8 bbWeight=1 PerfScore 2.75 G_M523_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, gcvars, byref, isz ; gcrRegs -[rax] +[rbx rdi] ; byrRegs +[rsi] mov rcx, gword ptr [rdi+0x18] ; gcrRegs +[rcx] mov edx, dword ptr [rcx+0x14] cmp edx, dword ptr [rcx+0x18] jl SHORT G_M523_IG03 mov byte ptr [rbx+0x41], 0 mov rcx, gword ptr [rbx+0x08] lea rdx, [rsp+0x28] cmp dword ptr [rcx], ecx call [System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:TryDequeue(byref):ubyte:this] ; gcrRegs -[rcx] ; gcr arg pop 0 jmp SHORT G_M523_IG03 ;; size=35 bbWeight=0 PerfScore 0.00 ; Total bytes of code 110, prolog size 14, PerfScore 21.00, instruction count 36, allocated bytes for code 110 (MethodHash=f8bafdf4) for method System.Threading.ThreadPoolWorkQueue:DequeueWithPriorityAlternation(System.Threading.ThreadPoolWorkQueue,System.Threading.ThreadPoolWorkQueueThreadLocals,byref):System.Object (Tier1) ; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00 SizeOfProlog : 0x07 CountOfUnwindCodes: 4 FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes : CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)