Do not require allocating Layouts in arena before interning

This should reduce memory spend, the interner has its own effective
arena anyway
This commit is contained in:
Ayaz Hafiz 2023-01-03 15:43:18 -06:00
parent 4652661a5c
commit ce717dca8b
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
19 changed files with 161 additions and 171 deletions

View file

@ -446,8 +446,8 @@ impl<'a> CodeGenHelp<'a> {
) -> Layout<'a> {
match layout {
Layout::Builtin(Builtin::List(v)) => {
let v = self.replace_rec_ptr(ctx, layout_interner, *layout_interner.get(v));
let v = layout_interner.insert(self.arena.alloc(v));
let v = self.replace_rec_ptr(ctx, layout_interner, layout_interner.get(v));
let v = layout_interner.insert(v);
Layout::Builtin(Builtin::List(v))
}
@ -487,9 +487,7 @@ impl<'a> CodeGenHelp<'a> {
Layout::Boxed(inner) => {
let inner = layout_interner.get(inner);
let inner = self
.arena
.alloc(self.replace_rec_ptr(ctx, layout_interner, *inner));
let inner = self.replace_rec_ptr(ctx, layout_interner, inner);
let inner = layout_interner.insert(inner);
Layout::Boxed(inner)
}