mir/vm: SSA pin+PHI + short-circuit; user-defined method calls → functions; entry single-pred PHIs; compare-operand pin; VM BoxCall fallback to InstanceBox methods; docs: update CURRENT_TASK (plan + acceptance)
- Lower And/Or to branch+PHI (RHS not evaluated) - Always slotify compare operands (dominance safety) - Insert single-predecessor PHIs at then/else/short-circuit entries - pin_to_slot now logs (NYASH_PIN_TRACE) and participates in PHI - Rewrite user-defined instance method calls to Box.method/Arity (builder) - VM fallback: BoxCall on InstanceBox dispatches to lowered functions with 'me'+args - Keep plugin/BoxCall path for core boxes (String/Array/Map) - Add env-gated pre-pin for if/loop (NYASH_MIR_PREPIN) - CURRENT_TASK: add SSA/userbox plan, debug steps, acceptance criteria
This commit is contained in:
@ -173,6 +173,18 @@ pub fn mir_core13_pure() -> bool {
|
||||
std::env::var("NYASH_MIR_CORE13_PURE").ok().as_deref() == Some("1")
|
||||
}
|
||||
|
||||
/// Enable heuristic pre-pin of comparison operands in if/loop headers.
|
||||
/// Default: OFF (0). Set NYASH_MIR_PREPIN=1 to enable.
|
||||
pub fn mir_pre_pin_compare_operands() -> bool {
|
||||
match std::env::var("NYASH_MIR_PREPIN").ok() {
|
||||
Some(v) => {
|
||||
let lv = v.to_ascii_lowercase();
|
||||
!(lv == "0" || lv == "false" || lv == "off")
|
||||
}
|
||||
None => false,
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Optimizer diagnostics ----
|
||||
pub fn opt_debug() -> bool {
|
||||
std::env::var("NYASH_OPT_DEBUG").is_ok()
|
||||
|
||||
Reference in New Issue
Block a user