KEMBAR78
Allocation for a simple isinst pattern in Tier0 · Issue #90492 · dotnet/runtime · GitHub
Skip to content

Allocation for a simple isinst pattern in Tier0 #90492

@EgorBo

Description

@EgorBo
bool Test<T>(ref T o) => o is IDisposable;

Tier0 codegen:

; Assembly listing for method mytest:Test[int](byref):bool (Tier0)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; Tier0 code
G_M11230_IG01:  ;; offset=0x0000
       push     rbp
       sub      rsp, 48
       lea      rbp, [rsp+0x30]
       xor      eax, eax
       mov      qword ptr [rbp-0x08], rax
       mov      bword ptr [rbp+0x10], rcx
G_M11230_IG02:  ;; offset=0x0014
       mov      rcx, 0x7FF907FEEF28      ; System.Int32
       call     CORINFO_HELP_NEWSFAST
       mov      gword ptr [rbp-0x08], rax
       mov      rdx, bword ptr [rbp+0x10]
       mov      edx, dword ptr [rdx]
       mov      rcx, gword ptr [rbp-0x08]
       mov      dword ptr [rcx+0x08], edx
       mov      rdx, gword ptr [rbp-0x08]
       mov      rcx, 0x7FF90822D730      ; System.IDisposable
       call     [CORINFO_HELP_ISINSTANCEOFINTERFACE]
       test     rax, rax
       setne    al
       movzx    rax, al
G_M11230_IG03:  ;; offset=0x0051
       add      rsp, 48
       pop      rbp
       ret      
; Total bytes of code 87

once this is fixed we should be able to drop [AggressiveOptimization] from https://github.com/dotnet/runtime/blob/main/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/AsyncTaskMethodBuilderT.cs#L96

Metadata

Metadata

Assignees

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions