Remove `QueryEngine` trait This removes the `QueryEngine` trait and `Queries` from `rustc_query_impl` and replaced them with function pointers and fields in `QuerySystem`. As a side effect `OnDiskCache` is moved back into `rustc_middle` and the `OnDiskCache` trait is also removed. This has a couple of benefits. - `TyCtxt` is used in the query system instead of the removed `QueryCtxt` which is larger. - Function pointers are more flexible to work with. A variant of https://github.com/rust-lang/rust/pull/107802 is included which avoids the double indirection. For https://github.com/rust-lang/rust/pull/108938 we can name entry point `__rust_end_short_backtrace` to avoid some overhead. For https://github.com/rust-lang/rust/pull/108062 it avoids the duplicate `QueryEngine` structs. - `QueryContext` now implements `DepContext` which avoids many `dep_context()` calls in `rustc_query_system`. - The `rustc_driver` size is reduced by 0.33%, hopefully that means some bootstrap improvements. - This avoids the unsafe code around the `QueryEngine` trait. r? `@cjgillot` |
||
|---|---|---|
| .. | ||
| interpret | ||
| basic_blocks.rs | ||
| coverage.rs | ||
| generic_graph.rs | ||
| generic_graphviz.rs | ||
| graphviz.rs | ||
| mod.rs | ||
| mono.rs | ||
| patch.rs | ||
| pretty.rs | ||
| query.rs | ||
| spanview.rs | ||
| syntax.rs | ||
| tcx.rs | ||
| terminator.rs | ||
| traversal.rs | ||
| type_foldable.rs | ||
| visit.rs | ||