Clean up expression sizes, which seems to fix stack blowouts.

This commit is contained in:
2024-04-20 20:47:34 -04:00
parent 6800064bdf
commit 383d9185bf
8 changed files with 34 additions and 28 deletions

View File

@@ -120,20 +120,18 @@ proptest::proptest! {
#[test]
fn static_backend(program in Program::arbitrary()) {
use crate::eval::PrimOpError;
use pretty::DocAllocator;
let allocator = pretty::Arena::new();
let result = allocator.text("-------------")
.append(allocator.line())
.append(program.pretty(&allocator))
.append(allocator.line());
result.render_raw(70, &mut pretty::IoWrite::new(std::io::stdout()))
.expect("rendering works");
// use pretty::DocAllocator;
// let allocator = pretty::Arena::new();
// let result = allocator.text("-------------")
// .append(allocator.line())
// .append(program.pretty(&allocator))
// .append(allocator.line());
// result.render_raw(70, &mut pretty::IoWrite::new(std::io::stdout()))
// .expect("rendering works");
eprintln!("BEFORE EVAL");
let ir_evaluator = crate::ir::Evaluator::default();
let basic_result = ir_evaluator.eval(program.clone()).map(|(_,o)| o);
eprintln!("AFTER EVAL");
// windows `printf` is going to terminate lines with "\r\n", so we need to adjust
// our test result here.
@@ -150,7 +148,6 @@ proptest::proptest! {
//result.render_raw(70, &mut pretty::IoWrite::new(std::io::stdout()))
// .expect("rendering works");
eprintln!("BEFORE OM EVAL");
let compiled_result = Backend::<ObjectModule>::eval(program);
proptest::prop_assert_eq!(basic_result, compiled_result);
}

View File

@@ -100,7 +100,7 @@ impl<M: Module> Backend<M> {
false,
)?;
tracing::info!(name = %top_level_name, "defining top-level data structure");
self.module.define_data(data_id, fields.blank_data())?;
self.module.define_data(data_id, &fields.blank_data())?;
let pointer = self.module.target_config().pointer_type();
self.defined_symbols
.insert(top_level_name, (data_id, pointer));