1
Fork 0

Use EvalContext's TyCtx for the purpose of hashing the evaluation context

This commit is contained in:
Bruno Dutra 2018-08-30 21:58:28 +02:00
parent add9ee24db
commit a26ceb3be4
2 changed files with 8 additions and 2 deletions

View file

@ -227,12 +227,13 @@ impl<'a, 'mir, 'tcx, M> InfiniteLoopDetector<'a, 'mir, 'tcx, M>
pub fn observe_and_analyze(
&mut self,
tcx: &TyCtxt<'b, 'tcx, 'tcx>,
machine: &M,
memory: &Memory<'a, 'mir, 'tcx, M>,
stack: &[Frame<'mir, 'tcx>],
) -> EvalResult<'tcx, ()> {
let mut hcx = memory.tcx.get_stable_hashing_context();
let mut hcx = tcx.get_stable_hashing_context();
let mut hasher = StableHasher::<u64>::new();
(machine, stack).hash_stable(&mut hcx, &mut hasher);
let hash = hasher.finish();

View file

@ -73,7 +73,12 @@ impl<'a, 'mir, 'tcx, M: Machine<'mir, 'tcx>> EvalContext<'a, 'mir, 'tcx, M> {
"Constant evaluating a complex constant, this might take some time");
}
self.loop_detector.observe_and_analyze(&self.machine, &self.memory, &self.stack[..])
self.loop_detector.observe_and_analyze(
&self.tcx,
&self.machine,
&self.memory,
&self.stack[..],
)
}
pub fn run(&mut self) -> EvalResult<'tcx> {