@@ -940,9 +940,8 @@ impl<'mir, 'tcx> MiriMachine<'mir, 'tcx> {
940940 /// `#[track_caller]`.
941941 /// This function is backed by a cache, and can be assumed to be very fast.
942942 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 ( ) )
946945 . unwrap_or ( rustc_span:: DUMMY_SP )
947946 }
948947
@@ -954,17 +953,17 @@ impl<'mir, 'tcx> MiriMachine<'mir, 'tcx> {
954953 pub fn caller_span ( & self ) -> Span {
955954 // We need to go down at least to the caller (len - 2), or however
956955 // 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 )
961960 }
962961
963962 fn stack ( & self ) -> & [ Frame < ' mir , ' tcx , Provenance , machine:: FrameData < ' tcx > > ] {
964963 self . threads . active_thread_stack ( )
965964 }
966965
967- fn top_user_relevant_frame ( & self ) -> usize {
966+ fn top_user_relevant_frame ( & self ) -> Option < usize > {
968967 self . threads . active_thread_ref ( ) . top_user_relevant_frame ( )
969968 }
970969
0 commit comments