Switch the global list to Weak based pointers, allowing us to actually use rust lifetimes for heaps
This commit is contained in:
22
src/ops.rs
22
src/ops.rs
@@ -267,20 +267,14 @@ fn invokevirtual(machine: &mut Machine) -> Result<()> {
|
||||
}
|
||||
|
||||
fn ireturn(machine: &mut Machine) -> Result<()> {
|
||||
// Lifetime for prev frame, allows gc to reap into the frame
|
||||
{
|
||||
let mut prev_frame: Frame = match machine.frame.pop() {
|
||||
Some(a) => a,
|
||||
None => return Err("Got no frame... somehow..."),
|
||||
};
|
||||
let result = prev_frame.stack.pop()?;
|
||||
let return_addr: i32 = prev_frame.get(0)?.try_into()?;
|
||||
machine.cur_stack().push(result);
|
||||
machine.block.seek(return_addr as usize)?;
|
||||
}
|
||||
|
||||
machine.heap.gc();
|
||||
Ok(())
|
||||
let mut prev_frame: Frame = match machine.frame.pop() {
|
||||
Some(a) => a,
|
||||
None => return Err("Got no frame... somehow..."),
|
||||
};
|
||||
let result = prev_frame.stack.pop()?;
|
||||
let return_addr: i32 = prev_frame.get(0)?.try_into()?;
|
||||
machine.cur_stack().push(result);
|
||||
machine.block.seek(return_addr as usize)
|
||||
}
|
||||
|
||||
#[cfg(feature = "extra:sleep")]
|
||||
|
||||
Reference in New Issue
Block a user