use std::fmt::Write;
use crate::environment::FrozenModule;
use crate::eval::compiler::def::FrozenDef;
use crate::values::FrozenHeapRef;
use crate::values::FrozenValueTyped;
impl FrozenModule {
pub fn dump_debug(&self) -> String {
let mut w = String::new();
writeln!(w, "Eval duration: {:.3}s", self.eval_duration.as_secs_f64()).unwrap();
writeln!(w, "Heap stats:").unwrap();
w.push_str(&self.frozen_heap().dump_debug());
for (name, value) in self.all_items() {
writeln!(w).unwrap();
writeln!(w, "{} = {}", name, value).unwrap();
if let Some(def) = FrozenValueTyped::<FrozenDef>::new(value) {
def.dump_debug()
.lines()
.for_each(|line| writeln!(w, " {}", line).unwrap());
}
}
w
}
}
impl FrozenHeapRef {
fn dump_debug(&self) -> String {
let mut w = String::new();
writeln!(w, "Allocated bytes: {}", self.allocated_bytes()).unwrap();
writeln!(w, "Available bytes: {}", self.available_bytes()).unwrap();
w
}
}