@@ -940,9 +940,8 @@ impl<'mir, 'tcx> MiriMachine<'mir, 'tcx> {
940
940
/// `#[track_caller]`.
941
941
/// This function is backed by a cache, and can be assumed to be very fast.
942
942
pub fn current_span ( & self ) -> Span {
943
- self . stack ( )
944
- . get ( self . top_user_relevant_frame ( ) )
945
- . map ( Frame :: current_span)
943
+ self . top_user_relevant_frame ( )
944
+ . map ( |frame_idx| self . stack ( ) [ frame_idx] . current_span ( ) )
946
945
. unwrap_or ( rustc_span:: DUMMY_SP )
947
946
}
948
947
@@ -954,17 +953,17 @@ impl<'mir, 'tcx> MiriMachine<'mir, 'tcx> {
954
953
pub fn caller_span ( & self ) -> Span {
955
954
// We need to go down at least to the caller (len - 2), or however
956
955
// far we have to go to find a frame in a local crate which is also not #[track_caller].
957
- let frame_idx = self . top_user_relevant_frame ( ) ;
958
- let stack = self . stack ( ) ;
959
- let frame_idx = cmp :: min ( frame_idx, stack . len ( ) . saturating_sub ( 2 ) ) ;
960
- stack . get ( frame_idx ) . map ( Frame :: current_span ) . unwrap_or ( rustc_span:: DUMMY_SP )
956
+ self . top_user_relevant_frame ( )
957
+ . map ( |frame_idx| cmp :: min ( frame_idx , self . stack ( ) . len ( ) - 2 ) )
958
+ . map ( | frame_idx| self . stack ( ) [ frame_idx ] . current_span ( ) )
959
+ . unwrap_or ( rustc_span:: DUMMY_SP )
961
960
}
962
961
963
962
fn stack ( & self ) -> & [ Frame < ' mir , ' tcx , Provenance , machine:: FrameData < ' tcx > > ] {
964
963
self . threads . active_thread_stack ( )
965
964
}
966
965
967
- fn top_user_relevant_frame ( & self ) -> usize {
966
+ fn top_user_relevant_frame ( & self ) -> Option < usize > {
968
967
self . threads . active_thread_ref ( ) . top_user_relevant_frame ( )
969
968
}
970
969
0 commit comments