bytecodealliance / bytecodealliance/wasmtime

Cranelift: add ghost_use instruction

Open
#2,633 0 comments 0 reactions 0 assignees View on GitHub
cranelift cranelift:area:clif enhancement
Dominant language
Rust
Stars
18.6k
Forks
1.8k
Avg merge
1d 18h
Merged PRs (30d)
126

Description

#### Feature

Add a new `ghost_use` instruction that accepts a value and ensures that the value can be found somewhere at runtime. It will codegen to no instructions.

#### Benefit

This allows extending the range for which variables are available in debuginfo beyond the last actual use of the variable. In addition it would for exanple allow a jit runtime to inspect the value for switching to and from speculatively optimized code.

#### Implementation

The instruction will be marked as has_other_sideeffects. It will be lowered by backends to an instruction that doesn't result in any bytes being emitted. It will tell regalloc that the value needs to be available on either in a register or on the stack.

#### Alternatives

* Force all variables to the stack, which regressed runtime performance
* Accept that variables are only available until the last use, resulting in a sub-optimal debugging experience.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.