diff --git a/src/fastalloc/mod.rs b/src/fastalloc/mod.rs
index bf3a5d34..e8ea1ad9 100644
--- a/src/fastalloc/mod.rs
+++ b/src/fastalloc/mod.rs
@@ -10,7 +10,7 @@ use alloc::{vec, vec::Vec};
use core::convert::TryInto;
use core::fmt;
use core::iter::FromIterator;
-use core::ops::{BitAnd, BitOr, Index, IndexMut, Not};
+use core::ops::{BitAnd, BitOr, Deref, DerefMut, Index, IndexMut, Not};
mod iter;
mod lru;
@@ -105,7 +105,8 @@ impl<'a, F: Function> Stack<'a, F> {
}
#[derive(Debug)]
-struct Edits {
+pub struct State<'a, F: Function> {
+ func: &'a F,
/// The final output edits.
edits: Vec<(ProgPoint, Edit)>,
fixed_stack_slots: PRegSet,
@@ -113,32 +114,89 @@ struct Edits {
/// currently processed.
scratch_regs: PartedByRegClass