use crate::ast::Expr;
use crate::diagnostics::Result;
#[derive(Debug, Clone)]
pub enum DeoptReason {
RuntimeError(crate::diagnostics::Error),
TypeMismatch,
AssumptionViolated(String),
}
#[derive(Debug, Clone)]
pub struct SafePoint {
pub offset: usize,
pub state: ExecutionState,
}
#[derive(Debug, Clone)]
pub struct ExecutionState {
pub variables: std::collections::HashMap<String, crate::eval::Value>,
}
pub struct DeoptimizationManager;
impl DeoptimizationManager {
pub fn new() -> Result<Self> {
Ok(Self)
}
pub fn trigger_deoptimization(&mut self, _expr: &Expr, _reason: DeoptReason) -> Result<()> {
Ok(())
}
}