put call to stacked borrows end_call in a more sensible place
This commit is contained in:
parent
c9925ff7f4
commit
d9c441c5ab
@ -930,7 +930,10 @@ impl<'mir, 'tcx> Machine<'mir, 'tcx> for Evaluator<'mir, 'tcx> {
|
||||
unwinding: bool,
|
||||
) -> InterpResult<'tcx, StackPopJump> {
|
||||
let timing = frame.extra.timing.take();
|
||||
let res = ecx.handle_stack_pop(frame.extra, unwinding);
|
||||
if let Some(stacked_borrows) = &ecx.machine.stacked_borrows {
|
||||
stacked_borrows.borrow_mut().end_call(frame.extra.call_id);
|
||||
}
|
||||
let res = ecx.handle_stack_pop_unwind(frame.extra, unwinding);
|
||||
if let Some(profiler) = ecx.machine.profiler.as_ref() {
|
||||
profiler.finish_recording_interval_event(timing.unwrap());
|
||||
}
|
||||
|
@ -115,17 +115,13 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn handle_stack_pop(
|
||||
fn handle_stack_pop_unwind(
|
||||
&mut self,
|
||||
mut extra: FrameData<'tcx>,
|
||||
unwinding: bool,
|
||||
) -> InterpResult<'tcx, StackPopJump> {
|
||||
let this = self.eval_context_mut();
|
||||
|
||||
trace!("handle_stack_pop(extra = {:?}, unwinding = {})", extra, unwinding);
|
||||
if let Some(stacked_borrows) = &this.machine.stacked_borrows {
|
||||
stacked_borrows.borrow_mut().end_call(extra.call_id);
|
||||
}
|
||||
trace!("handle_stack_pop_unwind(extra = {:?}, unwinding = {})", extra, unwinding);
|
||||
|
||||
// We only care about `catch_panic` if we're unwinding - if we're doing a normal
|
||||
// return, then we don't need to do anything special.
|
||||
|
Loading…
x
Reference in New Issue
Block a user