@@ -3,6 +3,7 @@ use std::fmt::Write;
3
3
use std:: mem;
4
4
5
5
use syntax:: source_map:: { self , Span , DUMMY_SP } ;
6
+ use rustc:: ich:: StableHashingContext ;
6
7
use rustc:: hir:: def_id:: DefId ;
7
8
use rustc:: hir:: def:: DefKind ;
8
9
use rustc:: mir;
@@ -18,6 +19,7 @@ use rustc::mir::interpret::{
18
19
InterpResult , truncate, sign_extend,
19
20
} ;
20
21
use rustc_data_structures:: fx:: FxHashMap ;
22
+ use rustc_data_structures:: stable_hasher:: { HashStable , StableHasher } ;
21
23
use rustc_macros:: HashStable ;
22
24
23
25
use super :: {
@@ -829,3 +831,21 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
829
831
frames
830
832
}
831
833
}
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