From d0cb4d09cd4eb7626130cc9e59ef69dbfec04d0e Mon Sep 17 00:00:00 2001 From: Jimmy Brisson Date: Thu, 12 Oct 2017 08:54:42 -0500 Subject: [PATCH] Explain why `ensure` of a red node == the query --- src/librustc/ty/maps/plumbing.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/librustc/ty/maps/plumbing.rs b/src/librustc/ty/maps/plumbing.rs index 57e3e0496e2d..715d5993fc57 100644 --- a/src/librustc/ty/maps/plumbing.rs +++ b/src/librustc/ty/maps/plumbing.rs @@ -363,6 +363,12 @@ macro_rules! define_maps { tcx.dep_graph.read_index(dep_node_index); } Some(DepNodeColor::Red) => { + // A DepNodeColor::Red DepNode means that this query was executed + // before. We can not call `dep_graph.read()` here as we don't have + // the DepNodeIndex. Instead, We call the query again to issue the + // appropriate `dep_graph.read()` call. The performance cost this + // introduces should be negligible as we'll immediately hit the + // in-memory cache. let _ = tcx.$name(key); } None => {