The JIT that runs makepad apps from source: lexer, front end, type checker, lazy borrow checker (Gandalf; `--check-first` opts in), codegen, session and warm/cold caches keyed by compiler stamp, provided crates bound late, startup images, live patching. User-facing name is `makepad run` (binary `makepad`, MAKEPAD_RUN_* env, ~/.makepad-run); libs/relax stays the internal library name. `makepad check` reports rustc-style diagnostics with rustc error codes and checks a whole workspace (`--workspace`). Runs on macOS, Linux, Windows and Android. makepad-remote: one tool schema for apps and the WM (app/1): grabs, captures, traces, frame profiles and tweaks. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
25 lines
822 B
Rust
25 lines
822 B
Rust
// rustc_mir_transform/src/promote_consts.rs:379-397: a const parameter is
|
|
// promotable after substitution; N01 carries its typed value in ConstKind.
|
|
struct Table { tag: usize, call: fn() -> usize }
|
|
#[inline(never)]
|
|
fn value<const N: usize>() -> usize { N }
|
|
#[inline(never)]
|
|
fn table<const N: usize>() -> &'static Table {
|
|
&Table { tag: N, call: value::<N> }
|
|
}
|
|
#[inline(never)]
|
|
fn overwrite_stack() -> usize {
|
|
let values = [std::hint::black_box(99usize); 128];
|
|
std::hint::black_box(values)[63]
|
|
}
|
|
#[test]
|
|
fn substituted_const_parameter_is_promoted() {
|
|
let a = table::<17>();
|
|
let b = table::<29>();
|
|
assert_eq!(overwrite_stack(), 99);
|
|
assert_eq!(a.tag, 17);
|
|
assert_eq!(b.tag, 29);
|
|
assert_eq!((a.call)(), 17);
|
|
assert_eq!((b.call)(), 29);
|
|
assert!(core::ptr::eq(a, table::<17>()));
|
|
}
|