@@ -3,6 +3,7 @@ use std::fmt::Write;
33use std:: mem;
44
55use syntax:: source_map:: { self , Span , DUMMY_SP } ;
6+ use rustc:: ich:: StableHashingContext ;
67use rustc:: hir:: def_id:: DefId ;
78use rustc:: hir:: def:: DefKind ;
89use rustc:: mir;
@@ -18,6 +19,7 @@ use rustc::mir::interpret::{
1819 InterpResult , truncate, sign_extend,
1920} ;
2021use rustc_data_structures:: fx:: FxHashMap ;
22+ use rustc_data_structures:: stable_hasher:: { HashStable , StableHasher } ;
2123use rustc_macros:: HashStable ;
2224
2325use super :: {
@@ -829,3 +831,21 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
829831 frames
830832 }
831833}
834+
835+ impl < ' ctx , ' mir , ' tcx , Tag , Extra > HashStable < StableHashingContext < ' ctx > >
836+ for Frame < ' mir , ' tcx , Tag , Extra >
837+ where Extra : HashStable < StableHashingContext < ' ctx > > ,
838+ Tag : HashStable < StableHashingContext < ' ctx > >
839+ {
840+ fn hash_stable ( & self , hcx : & mut StableHashingContext < ' ctx > , hasher : & mut StableHasher ) {
841+ self . body . hash_stable ( hcx, hasher) ;
842+ self . instance . hash_stable ( hcx, hasher) ;
843+ self . span . hash_stable ( hcx, hasher) ;
844+ self . return_to_block . hash_stable ( hcx, hasher) ;
845+ self . return_place . as_ref ( ) . map ( |r| & * * r) . hash_stable ( hcx, hasher) ;
846+ self . locals . hash_stable ( hcx, hasher) ;
847+ self . block . hash_stable ( hcx, hasher) ;
848+ self . stmt . hash_stable ( hcx, hasher) ;
849+ self . extra . hash_stable ( hcx, hasher) ;
850+ }
851+ }
0 commit comments