diff --git a/src/ion/data_structures.rs b/src/ion/data_structures.rs index ce95f7a..5a1ae83 100644 --- a/src/ion/data_structures.rs +++ b/src/ion/data_structures.rs @@ -337,6 +337,8 @@ pub struct Env<'a, F: Function> { pub num_spillslots: u32, pub safepoint_slots: Vec<(ProgPoint, SpillSlot)>, + pub allocated_bundle_count: usize, + pub stats: Stats, // For debug output only: a list of textual annotations at every diff --git a/src/ion/mod.rs b/src/ion/mod.rs index e78a0f5..abbed9e 100644 --- a/src/ion/mod.rs +++ b/src/ion/mod.rs @@ -68,6 +68,7 @@ impl<'a, F: Function> Env<'a, F> { spilled_bundles: vec![], spillslots: vec![], slots_by_size: vec![], + allocated_bundle_count: 0, extra_spillslot: vec![None, None], diff --git a/src/ion/process.rs b/src/ion/process.rs index 0b27249..426e7fc 100644 --- a/src/ion/process.rs +++ b/src/ion/process.rs @@ -36,15 +36,9 @@ pub enum AllocRegResult { impl<'a, F: Function> Env<'a, F> { pub fn process_bundles(&mut self) -> Result<(), RegAllocError> { - let mut count = 0; while let Some((bundle, reg_hint)) = self.allocation_queue.pop() { self.stats.process_bundle_count += 1; self.process_bundle(bundle, reg_hint)?; - count += 1; - if count > self.func.insts() * 50 { - self.dump_state(); - panic!("Infinite loop!"); - } } self.stats.final_liverange_count = self.ranges.len(); self.stats.final_bundle_count = self.bundles.len();