added dep nodes and comment

This commit is contained in:
achernyak 2017-04-29 09:56:01 -05:00
parent 2f73b173cb
commit ad1959e8e4
2 changed files with 18 additions and 3 deletions

View File

@ -148,6 +148,10 @@ pub enum DepNode<D: Clone + Debug> {
// For proj. cache, we just keep a list of all def-ids, since it is
// not a hotspot.
ProjectionCache { def_ids: Vec<D> },
// Depnodes for MetaData
DescribeDef(D),
DefSpan(D),
}
impl<D: Clone + Debug> DepNode<D> {
@ -253,6 +257,8 @@ impl<D: Clone + Debug> DepNode<D> {
let def_ids: Option<Vec<E>> = def_ids.iter().map(op).collect();
def_ids.map(|d| ProjectionCache { def_ids: d })
}
DescribeDef(ref d) => op(d).map(MetaData),
DefSpan(ref d) => op(d).map(MetaData),
}
}
}

View File

@ -365,6 +365,8 @@ macro_rules! define_maps {
}
// FIXME(eddyb) Get more valid Span's on queries.
// def_span guard is necesary to prevent a recursive loop,
// default_span calls def_span query internally.
if span == DUMMY_SP && stringify!($name) != "def_span" {
span = key.default_span(tcx)
}
@ -574,9 +576,8 @@ define_maps! { <'tcx>
[] def_symbol_name: SymbolName(DefId) -> ty::SymbolName,
[] symbol_name: symbol_name_dep_node(ty::Instance<'tcx>) -> ty::SymbolName,
[] describe_def: MetaData(DefId) -> Option<Def>,
[] def_span: MetaData(DefId) -> Span
[] describe_def: describe_def(DefId) -> Option<Def>,
[] def_span: def_span(DefId) -> Span
}
fn coherent_trait_dep_node((_, def_id): (CrateNum, DefId)) -> DepNode<DefId> {
@ -608,3 +609,11 @@ fn typeck_item_bodies_dep_node(_: CrateNum) -> DepNode<DefId> {
fn const_eval_dep_node((def_id, _): (DefId, &Substs)) -> DepNode<DefId> {
DepNode::ConstEval(def_id)
}
fn describe_def(def_id: DefId) -> DepNode<DefId> {
DepNode::DescribeDef(def_id)
}
fn def_span(def_id: DefId) -> DepNode<DefId> {
DepNode::DefSpan(def_id)
}