22 lines
630 B
Rust
22 lines
630 B
Rust
|
|
//! Lightweight execution observability flags used by runner policies
|
|||
|
|
//! (e.g., Gate‑C(Core) OOB strict fail‑fast).
|
|||
|
|
|
|||
|
|
use std::sync::atomic::{AtomicBool, Ordering};
|
|||
|
|
|
|||
|
|
static OOB_SEEN: AtomicBool = AtomicBool::new(false);
|
|||
|
|
|
|||
|
|
/// Reset all transient observation flags before a run.
|
|||
|
|
pub fn reset() {
|
|||
|
|
OOB_SEEN.store(false, Ordering::Relaxed);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// Mark that an out‑of‑bounds access was observed in the runtime.
|
|||
|
|
pub fn mark_oob() {
|
|||
|
|
OOB_SEEN.store(true, Ordering::Relaxed);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// Returns true if an out‑of‑bounds access was observed during the run.
|
|||
|
|
pub fn oob_seen() -> bool {
|
|||
|
|
OOB_SEEN.load(Ordering::Relaxed)
|
|||
|
|
}
|