Skip to content

[RyuJit/WASM] Longer-term TODOs #121865

@SingleAccretion

Description

@SingleAccretion

A list of things that will need to be fixed before the work can be considered functional:

  1. genPoisonFrame implementation.
  2. Stack alignment in lvaAlignFrame.
  3. Fix untracked debug scopes in siOpenScopesForNonTrackedVars.
  4. Remove #ifdef TARGET_WASM from the JMC insertion path since once we have proper WASM CG2 collections and/or call emit support.
  5. Fix the single-IG restriction of the prolog so that we don't need to worry about methods with a large number of non-enregistered arguments overflowing it. Ref: [RyuJit/WASM] Establish SP & FP and home register arguments #123270.
  6. Set maxUncheckedOffset and related entries to zero; fix issues where the jit is relying on null checks for small offsets (see discussion here -- part of [Wasm RyuJit] throw helper / null check preliminaries #123053
  7. There are many places in the JIT where we assume that constants must either be type I4 or type I and that's not the case for Wasm 32 bit. Figure out a way to systematically fix this.
  8. Consider getting rid of GT_CNS_LONG so there is just one way to represent constant ints regardless of bitness.
  9. Find all places that avoid creating bitcasts for !TARGET_64BIT and switch them to !LOWER_DECOMPOSE_LONGS instead.
  10. Decide if we want to use a stack cookie to guard the shadow stack
  11. Special calling convention for write barriers: [Wasm RyuJIT] Block Stores pt. 2 #124846.
  12. Don't spill quite so many call args (but do consider implications of SP being the first argument vis-a-vis LCLHEAP in the arguments), similar to x86 stack args: [RyuJit/WASM] Disable args sorting #125187.

Part of #121208.

Metadata

Metadata

Assignees

No one assigned

    Labels

    arch-wasmWebAssembly architecturearea-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMItrackingThis issue is tracking the completion of other related issues.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions