Revert "Store layouts in a layout-buffer for expects"

This reverts commit bba6e36a18.
This commit is contained in:
Ayaz Hafiz 2022-12-14 14:05:46 -06:00
parent bba6e36a18
commit 897b69b072
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
8 changed files with 30 additions and 67 deletions

View file

@ -2,7 +2,7 @@
use bumpalo::Bump;
use roc_collections::{MutMap, VecMap, VecSet};
use roc_module::symbol::{ModuleId, Symbol};
use roc_module::symbol::Symbol;
use crate::{
ir::{
@ -10,7 +10,6 @@ use crate::{
ModifyRc, Param, Proc, ProcLayout, Stmt,
},
layout::{Builtin, Layout, STLayoutInterner, TagIdIntType, UnionLayout},
LayoutBuffer,
};
pub enum UseKind {
@ -133,7 +132,6 @@ impl<'a> Problems<'a> {
pub fn check_procs<'a>(
arena: &'a Bump,
interner: &'a STLayoutInterner<'a>,
layout_buffers: &VecMap<ModuleId, LayoutBuffer<'a>>,
procs: &'a Procs<'a>,
) -> Problems<'a> {
let mut problems = Default::default();
@ -151,7 +149,6 @@ pub fn check_procs<'a>(
venv: Default::default(),
joinpoints: Default::default(),
line: 0,
layout_buffers,
};
ctx.check_proc(proc);
}
@ -169,7 +166,6 @@ struct Ctx<'a, 'r> {
proc: &'a Proc<'a>,
proc_layout: ProcLayout<'a>,
procs: &'r Procs<'a>,
layout_buffers: &'r VecMap<ModuleId, LayoutBuffer<'a>>,
call_spec_ids: CallSpecIds,
ret_layout: Layout<'a>,
venv: VEnv<'a>,
@ -328,10 +324,8 @@ impl<'a, 'r> Ctx<'a, 'r> {
Layout::Builtin(Builtin::Bool),
UseKind::ExpectCond,
);
let layout_buffer = self.layout_buffers.get(&condition.module_id()).unwrap();
let layouts = layout_buffer.iter_slice(layouts);
for (sym, lay) in lookups.iter().zip(layouts) {
self.check_sym_layout(*sym, lay, UseKind::ExpectLookup);
self.check_sym_layout(*sym, *lay, UseKind::ExpectLookup);
}
self.check_stmt(remainder);
}

View file

@ -1207,7 +1207,7 @@ impl<'a, 'i> Context<'a, 'i> {
condition: *condition,
region: *region,
lookups,
layouts: *layouts,
layouts,
remainder: b,
});
@ -1231,7 +1231,7 @@ impl<'a, 'i> Context<'a, 'i> {
condition: *condition,
region: *region,
lookups,
layouts: *layouts,
layouts,
remainder: b,
});

View file

@ -13,7 +13,6 @@ use roc_can::abilities::SpecializationId;
use roc_can::expr::{AnnotatedMark, ClosureData, ExpectLookup, IntValue};
use roc_can::module::ExposedByModule;
use roc_collections::all::{default_hasher, BumpMap, BumpMapDefault, MutMap};
use roc_collections::soa::Slice;
use roc_collections::VecMap;
use roc_debug_flags::dbg_do;
#[cfg(debug_assertions)]
@ -1625,7 +1624,7 @@ pub enum Stmt<'a> {
condition: Symbol,
region: Region,
lookups: &'a [Symbol],
layouts: Slice<Layout<'a>>,
layouts: &'a [Layout<'a>],
/// what happens after the expect
remainder: &'a Stmt<'a>,
},
@ -1633,7 +1632,7 @@ pub enum Stmt<'a> {
condition: Symbol,
region: Region,
lookups: &'a [Symbol],
layouts: Slice<Layout<'a>>,
layouts: &'a [Layout<'a>],
/// what happens after the expect
remainder: &'a Stmt<'a>,
},
@ -6599,14 +6598,11 @@ pub fn from_can<'a>(
}
}
let layouts_slice = env.layout_buffer.reserve(layouts.len());
env.layout_buffer.set_reserved(layouts_slice, layouts);
let mut stmt = Stmt::Expect {
condition: cond_symbol,
region: loc_condition.region,
lookups: lookups.into_bump_slice(),
layouts: layouts_slice,
layouts: layouts.into_bump_slice(),
remainder: env.arena.alloc(rest),
};
@ -6658,14 +6654,11 @@ pub fn from_can<'a>(
}
}
let layouts_slice = env.layout_buffer.reserve(layouts.len());
env.layout_buffer.set_reserved(layouts_slice, layouts);
let mut stmt = Stmt::ExpectFx {
condition: cond_symbol,
region: loc_condition.region,
lookups: lookups.into_bump_slice(),
layouts: layouts_slice,
layouts: layouts.into_bump_slice(),
remainder: env.arena.alloc(rest),
};
@ -7106,7 +7099,7 @@ fn substitute_in_stmt_help<'a>(
condition: substitute(subs, *condition).unwrap_or(*condition),
region: *region,
lookups: new_lookups.into_bump_slice(),
layouts: *layouts,
layouts,
remainder: new_remainder,
};
@ -7132,7 +7125,7 @@ fn substitute_in_stmt_help<'a>(
condition: substitute(subs, *condition).unwrap_or(*condition),
region: *region,
lookups: new_lookups.into_bump_slice(),
layouts: *layouts,
layouts,
remainder: new_remainder,
};

View file

@ -11,19 +11,14 @@ impl<'a> LayoutBuffer<'a> {
Slice::extend_new(&mut self.0, std::iter::repeat(Layout::VOID).take(size))
}
pub fn set_reserved<I>(&mut self, slice: Slice<Layout<'a>>, layouts: I)
where
I: IntoIterator<Item = Layout<'a>>,
I::IntoIter: ExactSizeIterator,
{
let layouts = layouts.into_iter();
pub fn set_reserved(
&mut self,
slice: Slice<Layout<'a>>,
layouts: impl ExactSizeIterator<Item = Layout<'a>>,
) {
debug_assert_eq!(layouts.len(), slice.len());
for (index, layout) in slice.indices().zip(layouts) {
self.0[index] = layout;
}
}
pub fn iter_slice(&self, slice: Slice<Layout<'a>>) -> impl Iterator<Item = Layout<'a>> + '_ {
self.0[slice.indices()].iter().copied()
}
}

View file

@ -208,7 +208,7 @@ fn function_s<'a, 'i>(
condition: *condition,
region: *region,
lookups,
layouts: *layouts,
layouts,
remainder: new_continuation,
};
@ -233,7 +233,7 @@ fn function_s<'a, 'i>(
condition: *condition,
region: *region,
lookups,
layouts: *layouts,
layouts,
remainder: new_continuation,
};
@ -452,7 +452,7 @@ fn function_d_main<'a, 'i>(
condition: *condition,
region: *region,
lookups,
layouts: *layouts,
layouts,
remainder: b,
};
@ -464,7 +464,7 @@ fn function_d_main<'a, 'i>(
condition: *condition,
region: *region,
lookups,
layouts: *layouts,
layouts,
remainder: b,
};
@ -485,7 +485,7 @@ fn function_d_main<'a, 'i>(
condition: *condition,
region: *region,
lookups,
layouts: *layouts,
layouts,
remainder: b,
};
@ -497,7 +497,7 @@ fn function_d_main<'a, 'i>(
condition: *condition,
region: *region,
lookups,
layouts: *layouts,
layouts,
remainder: b,
};
@ -669,7 +669,7 @@ fn function_r<'a, 'i>(env: &mut Env<'a, 'i>, stmt: &'a Stmt<'a>) -> &'a Stmt<'a>
condition: *condition,
region: *region,
lookups,
layouts: *layouts,
layouts,
remainder: b,
};
@ -689,7 +689,7 @@ fn function_r<'a, 'i>(env: &mut Env<'a, 'i>, stmt: &'a Stmt<'a>) -> &'a Stmt<'a>
condition: *condition,
region: *region,
lookups,
layouts: *layouts,
layouts,
remainder: b,
};

View file

@ -267,7 +267,7 @@ fn insert_jumps<'a>(
condition: *condition,
region: *region,
lookups,
layouts: *layouts,
layouts,
remainder: cont,
})),
None => None,
@ -291,7 +291,7 @@ fn insert_jumps<'a>(
condition: *condition,
region: *region,
lookups,
layouts: *layouts,
layouts,
remainder: cont,
})),
None => None,