summary refs log tree commit diff
path: root/compiler/rustc_query_system/src/query
AgeCommit message (Collapse)AuthorLines
2023-04-09Fix some clippy::complexityNilstrieb-1/+3
2023-04-06Address commentsJohn Kåre Alsaker-3/+4
2023-04-06Don't rely on `Debug` impl for `Erased`John Kåre Alsaker-11/+17
2023-04-06Erase query cache valuesJohn Kåre Alsaker-19/+26
2023-03-30Remove an out-of-date comment on `QueryCache::lookup`.Nicholas Nethercote-3/+0
2023-03-28Rollup merge of #108480 - Zoxc:rayon-tlv, r=cuvipernils-1/+1
Use Rayon's TLV directly This accesses Rayon's `TLV` thread local directly avoiding wrapper functions. This makes rustc work with https://github.com/rust-lang/rustc-rayon/pull/10. r? `@cuviper`
2023-03-27no shadow plzMichael Goulet-2/+1
2023-03-25Auto merge of #109100 - Zoxc:merge-query-try, r=cjgillotbors-134/+134
Refactor `try_execute_query` This merges `JobOwner::try_start` into `try_execute_query`, removing `TryGetJob` in the processes. 3 new functions are extracted from `try_execute_query`: `execute_job`, `cycle_error` and `wait_for_query`. This makes the control flow a bit clearer and improves performance. Based on https://github.com/rust-lang/rust/pull/109046. <table><tr><td rowspan="2">Benchmark</td><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th></tr><tr><td align="right">Time</td><td align="right">Time</td><td align="right">%</th></tr><tr><td>🟣 <b>clap</b>:check</td><td align="right">1.7134s</td><td align="right">1.7061s</td><td align="right"> -0.43%</td></tr><tr><td>🟣 <b>hyper</b>:check</td><td align="right">0.2519s</td><td align="right">0.2510s</td><td align="right"> -0.35%</td></tr><tr><td>🟣 <b>regex</b>:check</td><td align="right">0.9517s</td><td align="right">0.9481s</td><td align="right"> -0.38%</td></tr><tr><td>🟣 <b>syn</b>:check</td><td align="right">1.5389s</td><td align="right">1.5338s</td><td align="right"> -0.33%</td></tr><tr><td>🟣 <b>syntex_syntax</b>:check</td><td align="right">5.9488s</td><td align="right">5.9258s</td><td align="right"> -0.39%</td></tr><tr><td>Total</td><td align="right">10.4048s</td><td align="right">10.3647s</td><td align="right"> -0.38%</td></tr><tr><td>Summary</td><td align="right">1.0000s</td><td align="right">0.9962s</td><td align="right"> -0.38%</td></tr></table> r? `@cjgillot`
2023-03-25Pass `tcx` directlyJohn Kåre Alsaker-27/+26
2023-03-25Remove `DebugArg`John Kåre Alsaker-43/+5
2023-03-25Optimize `incremental_verify_ich`John Kåre Alsaker-35/+48
2023-03-25Update indexmap and rayon cratesJohn Kåre Alsaker-1/+1
2023-03-21Refactor `try_execute_query`John Kåre Alsaker-134/+134
2023-03-19Add some assertionsJohn Kåre Alsaker-0/+2
2023-03-19Split `execute_job` into `execute_job_incr` and `execute_job_non_incr`John Kåre Alsaker-30/+39
2023-03-12Auto merge of #108845 - Zoxc:par-fix-2, r=cjgillotbors-6/+21
Check that a query has not completed and is not executing before starting it This fixes a race in the query system where we only checked if the query was currently executing, but not if it was already completed, causing queries to re-execute. r? `@cjgillot`
2023-03-12Auto merge of #108820 - cjgillot:ensure-on-disk, r=oli-obkbors-8/+26
Ensure value is on the on-disk cache before returning from `ensure()`. The current logic for `ensure()` a query just checks that the node is green in the dependency graph. However, a lot of places use `ensure()` to prevent the query from being called later. This is the case before stealing a query result. If the query is actually green but the value is not available in the on-disk cache, `ensure` would return, but a subsequent call to the full query would run the code, and attempt to read from a stolen value. This PR conforms the query system to the usage by checking whether the queried value is loadable from disk before returning. Sadly, I can't manage to craft a proper test... Should fix all instances of "attempted to read from stolen value".
2023-03-11Make the check for cache opt-in.Camille GILLOT-3/+9
2023-03-11Ensure value is on the on-disk cache before returning.Camille GILLOT-6/+18
2023-03-09Address commentsJohn Kåre Alsaker-14/+12
2023-03-09Move dep graph methods to DepGraphData to avoid branches and `unwrap`sJohn Kåre Alsaker-40/+56
2023-03-08Check that a query has not completed and is not executing before starting itJohn Kåre Alsaker-6/+21
2023-03-07Auto merge of #108167 - Zoxc:query-config-instance-slim, r=cjgillotbors-82/+87
Make `rustc_query_system` take `QueryConfig` by instance. This allows for easy switching between virtual tables and specialized instances for queries. It also has the benefit of less turbofish. `QueryStorage` has also been merged with `QueryCache`. Split out from https://github.com/rust-lang/rust/pull/107937. r? `@cjgillot`
2023-02-28Fix a race in the query systemJohn Kåre Alsaker-4/+5
2023-02-26Avoid implementing Debug for QueryConfigJohn Kåre Alsaker-4/+4
2023-02-26Make `rustc_query_system` take `QueryConfig` by instance.John Kåre Alsaker-82/+87
2023-02-25Don't inline try_execute_queryJohn Kåre Alsaker-0/+1
2023-02-25Add inlining attributes for query system functionsJohn Kåre Alsaker-0/+4
2023-02-25Move `ensure_sufficient_stack` to `try_execute_query` callersJohn Kåre Alsaker-15/+8
2023-02-25Reduce calls to `current_query_job`John Kåre Alsaker-4/+4
2023-02-24Rollup merge of #108169 - Zoxc:query-key-copy, r=cjgillotDylan DPC-17/+18
Make query keys `Copy` This regressed compiler performance locally, so I'm curious what perf will say about it. <table><tr><td rowspan="2">Benchmark</td><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th></tr><tr><td align="right">Time</td><td align="right">Time</td><td align="right">%</th></tr><tr><td>🟣 <b>clap</b>:check</td><td align="right">1.7566s</td><td align="right">1.7657s</td><td align="right"> 0.52%</td></tr><tr><td>🟣 <b>hyper</b>:check</td><td align="right">0.2572s</td><td align="right">0.2578s</td><td align="right"> 0.20%</td></tr><tr><td>🟣 <b>regex</b>:check</td><td align="right">0.9863s</td><td align="right">0.9900s</td><td align="right"> 0.37%</td></tr><tr><td>🟣 <b>syn</b>:check</td><td align="right">1.6018s</td><td align="right">1.6073s</td><td align="right"> 0.34%</td></tr><tr><td>🟣 <b>syntex_syntax</b>:check</td><td align="right">6.2493s</td><td align="right">6.2920s</td><td align="right"> 0.68%</td></tr><tr><td>Total</td><td align="right">10.8512s</td><td align="right">10.9127s</td><td align="right"> 0.57%</td></tr><tr><td>Summary</td><td align="right">1.0000s</td><td align="right">1.0042s</td><td align="right"> 0.42%</td></tr></table>
2023-02-21Make query keys `Copy`John Kåre Alsaker-17/+18
2023-02-18Auto merge of #107542 - ↵bors-1/+18
compiler-errors:param-envs-with-inference-vars-are-cursed, r=jackh726 Don't call `with_reveal_all_normalized` in const-eval when `param_env` has inference vars in it **what:** This slightly shifts the order of operations from an existing hack: https://github.com/rust-lang/rust/blob/5b6ed253c42a69b93e7447fb0874a89ab6bc1cfb/compiler/rustc_middle/src/ty/consts/kind.rs#L225-L230 in order to avoid calling a tcx query (`TyCtxt::reveal_opaque_types_in_bounds`, via `ParamEnv::with_reveal_all_normalized`) when a param-env has inference variables in it. **why:** This allows us to enable fingerprinting of query keys/values outside of incr-comp in deubg mode, to make sure we catch other places where we're passing infer vars and other bad things into query keys. Currently that (bbf33836b9adfe4328aefa108c421e670a3923b7) crashes because we introduce inference vars into a param-env in the blanket-impl finder in rustdoc :sweat: https://github.com/rust-lang/rust/blob/5b6ed253c42a69b93e7447fb0874a89ab6bc1cfb/src/librustdoc/clean/blanket_impl.rs#L43 See the CI failure here: https://github.com/rust-lang/rust/actions/runs/4058194838/jobs/6984834619
2023-02-17Don't allow evaluating queries that were fed in a previous compiler runOli Scherer-19/+6
2023-02-17Auto merge of #108058 - Zoxc:query-ctxtx-byval, r=cjgillotbors-8/+8
Pass `DepContext` and `QueryContext` by value when practical This removes some indirections for a minor performance improvement. <table><tr><td rowspan="2">Benchmark</td><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th></tr><tr><td align="right">Time</td><td align="right">Time</td><td align="right">%</th></tr><tr><td>🟣 <b>clap</b>:check</td><td align="right">1.8294s</td><td align="right">1.8255s</td><td align="right"> -0.21%</td></tr><tr><td>🟣 <b>hyper</b>:check</td><td align="right">0.2667s</td><td align="right">0.2669s</td><td align="right"> 0.07%</td></tr><tr><td>🟣 <b>regex</b>:check</td><td align="right">1.0080s</td><td align="right">1.0063s</td><td align="right"> -0.17%</td></tr><tr><td>🟣 <b>syn</b>:check</td><td align="right">1.6335s</td><td align="right">1.6295s</td><td align="right"> -0.24%</td></tr><tr><td>🟣 <b>syntex_syntax</b>:check</td><td align="right">6.3633s</td><td align="right">6.3344s</td><td align="right"> -0.45%</td></tr><tr><td>Total</td><td align="right">11.1009s</td><td align="right">11.0627s</td><td align="right"> -0.34%</td></tr><tr><td>Summary</td><td align="right">1.0000s</td><td align="right">0.9980s</td><td align="right"> -0.20%</td></tr></table>
2023-02-16Remove parallel compiler fixJohn Kåre Alsaker-4/+1
2023-02-16Move provider fields back to rustc_query_implJohn Kåre Alsaker-8/+6
2023-02-16Factor query arena allocation out from query cachesJohn Kåre Alsaker-196/+33
2023-02-15don't clone types that are copyMatthias Krüger-3/+3
2023-02-14Pass `DepContext` and `QueryContext` by value when practicalJohn Kåre Alsaker-8/+8
2023-02-11Create a single value cache for the () query keyJohn Kåre Alsaker-2/+48
2023-02-08Auto merge of #107644 - Zoxc:query-cache-tweak, r=cjgillotbors-37/+4
Remove QueryStorage::store_nocache This method was added in https://github.com/rust-lang/rust/pull/70674 but it doesn't seem to serve any purpose.
2023-02-07Remove QueryStorage::store_nocacheJohn Kåre Alsaker-37/+4
2023-02-06Make an optimal cold path for query_cache_hitJohn Kåre Alsaker-12/+4
2023-02-06Don't inline query_cache_hit to reduce code size of the query hot path.John Kåre Alsaker-1/+3
2023-02-04Support parallel compiler.Camille GILLOT-3/+3
2023-02-04Remove `OnHit` callback from query caches.Camille GILLOT-84/+45
This is not useful now that query results are `Copy`.
2023-01-31Fingerprint even when incr comp is disabled in debug modeMichael Goulet-1/+18
2023-01-17Remove double spaces after dots in commentsMaybe Waffle-2/+2
2023-01-05Fix `uninlined_format_args` for some compiler cratesnils-7/+5
Convert all the crates that have had their diagnostic migration completed (except save_analysis because that will be deleted soon and apfloat because of the licensing problem).