Merge branch 'status' into eamsden/flog

This commit is contained in:
Edward Amsden 2024-03-13 09:13:39 -05:00 committed by GitHub
commit 16c4c059a4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 11 additions and 0 deletions

View File

@ -1185,6 +1185,11 @@ fn exit(
unsafe { unsafe {
context.restore(snapshot); context.restore(snapshot);
if context.stack.copying() {
assert!(context.stack.get_frame_pointer() != virtual_frame);
context.stack.frame_pop();
}
let stack = &mut context.stack; let stack = &mut context.stack;
let mut preserve = match error { let mut preserve = match error {
Error::ScryBlocked(path) => path, Error::ScryBlocked(path) => path,
@ -1192,6 +1197,7 @@ fn exit(
// Return $tang of traces // Return $tang of traces
let h = *(stack.local_noun_pointer(0)); let h = *(stack.local_noun_pointer(0));
// XX: Small chance of clobbering something important after OOM? // XX: Small chance of clobbering something important after OOM?
// XX: what if we OOM while making a stack trace
T(stack, &[h, t]) T(stack, &[h, t])
} }
}; };

View File

@ -137,6 +137,10 @@ impl NockStack {
}; };
} }
pub fn copying(&self) -> bool {
self.pc
}
/** Current frame pointer of this NockStack */ /** Current frame pointer of this NockStack */
pub fn get_frame_pointer(&self) -> *const u64 { pub fn get_frame_pointer(&self) -> *const u64 {
self.frame_pointer self.frame_pointer

View File

@ -1134,6 +1134,7 @@ _pending_flist_merge(BT_state *state)
src_head = src_head->next; src_head = src_head->next;
free(prev); free(prev);
} }
state->pending_flist = 0;
} }