about summary refs log tree commit diff
path: root/src/librustc/dep_graph
AgeCommit message (Collapse)AuthorLines
2017-02-28convert MIR to iterate over the bodies vectorNiko Matsakis-0/+2
2017-02-28rewrite typeck bodies to iterate over the bodies vectorNiko Matsakis-0/+2
2017-02-28store the visit order in the CrateNiko Matsakis-25/+3
2017-02-28walk the bodies "in order" by traversing the crateNiko Matsakis-3/+25
Otherwise the errors from borrowck come out in an unpredictable order.
2017-02-28use `visit_all_bodies_in_krate` for borrowck instead of item-likesNiko Matsakis-0/+2
2017-02-28add `visit_all_bodies_in_krate` helperNiko Matsakis-0/+11
2017-02-25rustc_typeck: rework coherence to be almost completely on-demand.Eduard-Mihai Burtescu-0/+2
2017-02-25rustc: allow handling cycle errors gracefully in on-demand.Eduard-Mihai Burtescu-0/+6
2017-02-25rustc_typeck: don't use Result for get_type_parameter_bounds and ↵Eduard-Mihai Burtescu-0/+4
ensure_super_predicates.
2017-02-25rustc: move the actual values of enum discriminants into a map.Eduard-Mihai Burtescu-0/+2
2017-02-17rework `TraitSelect` to avoid a vec and just use two def-idsNicholas Nethercote-4/+42
2017-02-03go back to the older model of coherence collectNiko Matsakis-0/+15
2017-02-02prevent multiple writes to a single entry in a `DepTrackingMap`Niko Matsakis-2/+2
2017-02-02rejigger how we handle used trait importsNiko Matsakis-0/+3
The previous way was not friendly to incremental compilation. The new plan is to compute, for each body, a set of trait imports used in that body (slightly subtle: for a closure, we assign the trait imports to the enclosing fn). Then we walk all bodies and union these sets. The reason we do this is that we can save the individual sets in the incremental state, and then recompute only those sets that are needed. Before we were planning to save only the final union, but in that case if some components are invalidated we have to recompute *all* of them since we don't have enough information to "partly" invalidate a result. In truth, this set probably ought to be part of the `TypeckTables`; however, I opted not to do that because I don't want to have to save/restore the entire tables in the incremental state yet (since it contains a lot of `NodeId` references, and removing those is a significant refactoring).
2017-02-02remove some of the ways to mutate a `DepTrackingMap`Niko Matsakis-19/+3
It is pretty suspect to insert an entry twice.
2017-01-26rustc: rename TyCtxt's `map` field to `hir`.Eduard-Mihai Burtescu-7/+7
2017-01-25rename `Tables` to `TypeckTables`Niko Matsakis-14/+14
2017-01-25remove outdated textNiko Matsakis-21/+0
2017-01-25merge TypeckItemBody and Tables depnodesNiko Matsakis-16/+15
2017-01-19Rollup merge of #39115 - king6cong:master, r=nikomatsakisGuillaume Gomez-1/+1
consistent doc wording
2017-01-17consistent doc wordingking6cong-1/+1
2017-01-16incr.comp.: Delete orphaned work-products.Michael Woerister-0/+6
2017-01-06rustc: store ty::Tables separately for each body (except closures').Eduard-Mihai Burtescu-0/+3
2016-12-28rustc: move function arguments into hir::Body.Eduard-Mihai Burtescu-0/+6
2016-12-28rustc: separate bodies for static/(associated)const and embedded constants.Eduard-Mihai Burtescu-1/+0
2016-12-28rustc: separate TraitItem from their parent Item, just like ImplItem.Eduard-Mihai Burtescu-0/+11
2016-12-20Rollup merge of #38418 - michaelwoerister:def_path_cleanup, r=eddybAlex Crichton-6/+2
Cleanup refactoring around DefPath handling This PR makes two big changes: * All DefPaths of a crate are now stored in metadata in their own table (as opposed to `DefKey`s as part of metadata `Entry`s. * The compiler will no longer allocate a pseudo-local DefId for inlined HIR nodes (because those are gross). Inlined HIR nodes will have a NodeId but they don't have there own DefId anymore. Turns out they were not needed anymore either. Hopefully HIR inlining will be gone completely one day but if until then we start needing to be able to map inlined NodeIds to original DefIds, we can add an additional table to metadata that allows for reconstructing this. Overall this makes for some nice simplifications and removal of special cases. r? @eddyb cc @rust-lang/compiler
2016-12-16Address falloutAaron Turon-10/+6
2016-12-16Remove some more things that were only needed for inlined-HIR DefIdsMichael Woerister-6/+2
2016-11-29rustc: simplify AdtDef by removing the field types and ty::ivar.Eduard-Mihai Burtescu-3/+0
2016-11-29Address remaining review commentsFlorian Diebold-1/+2
2016-11-29restructure `CollectItem` dep-node to separate fn sigs from bodiesNiko Matsakis-0/+2
Setup two tasks, one of which only processes the signatures, in order to isolate the typeck entries for signatures from those for bodies. Fixes #36078 Fixes #37720
2016-11-29Give function bodies their own dep graph nodeFlorian Diebold-0/+5
2016-11-28rustc: rework stability to be on-demand for type-directed lookup.Eduard Burtescu-2/+2
2016-11-16make distinct Hir() nodes in the graph for impl itemsNiko Matsakis-5/+4
2016-11-16separate impl-items from the impl in the HIRNiko Matsakis-0/+12
This commit does not change how the incremental accounting is done, so changes (or accessses) to an impl-item are still tagged to the enclosing impl. This commits adds the "main guts" of this change. It does not build on its own.
2016-11-16refactor Visitor into ItemLikeVisitor and intravisit::VisitorNiko Matsakis-10/+9
There are now three patterns (shallow, deep, and nested visit). These are described in detail on the docs in `itemlikevisit::ItemLikeVisitor`.
2016-11-10rustc: clean up lookup_item_type and remove TypeScheme.Eduard Burtescu-4/+4
2016-11-10rustc: unify and simplify managing associated items.Eduard Burtescu-6/+6
2016-11-08Replace FnvHasher use with FxHasher.Nicholas Nethercote-17/+17
This speeds up compilation by 3--6% across most of rustc-benchmarks.
2016-10-18Don't enqueue onto a disabled dep_graph.Nicholas Nethercote-24/+47
This commit guards all calls to `DepGraphThreadData::enqueue` with a check to make sure it is enabled. This requires distinguishing between a "fully enabled" and an "enqueue-enabled" graph. This change avoids some useless allocation and vector manipulations when the graph is disabled (i.e. when incremental compilation is off) which improves speed by ~1% on some of the rustc-benchmarks.
2016-09-23Load extern crates in `resolve`.Jeffrey Seyfried-2/+0
2016-09-20rustc: remove ImplOrTraitItemId and TraitDef's associated_type_names.Eduard Burtescu-3/+3
2016-09-20rustc_metadata: move more RBML tags to auto-serialization.Eduard Burtescu-11/+4
2016-09-12check stack discipline of tasksNiko Matsakis-8/+20
2016-09-06pacify the mercilous tidyNiko Matsakis-0/+10
add licenses to shadow.rs
2016-09-06kill extra `use`Niko Matsakis-1/+0
2016-09-06kill the forbidden codeNiko Matsakis-32/+0
supplanted by RUST_FORBID_DEP_GRAPH_EDGE
2016-09-06implement a debugging "shadow graph"Niko Matsakis-28/+175
The shadow graph supercedes the existing code that checked for reads/writes without an active task and now adds the ability to filter for specific edges.
2016-09-06add a debugging mechanism to forbid edgesNiko Matsakis-1/+35
It is useful to track down an errant edge that is being added. This is not a perfect mechanism, since it doesn't consider (e.g.) if we are in an ignored task, but it's helpful enough for now.