about summary refs log tree commit diff
path: root/compiler/rustc_query_system
AgeCommit message (Collapse)AuthorLines
2021-10-06Query the fingerprint style during key reconstructionMark Rousskov-9/+30
Keys can be reconstructed from fingerprints that are not DefPathHash, but then we cannot extract a DefId from them.
2021-10-03Add some inlining.Camille GILLOT-0/+8
2021-10-03Access StableHashingContext in rustc_query_system.Camille GILLOT-22/+16
2021-10-03Move ICH to rustc_query_system.Camille GILLOT-1/+531
2021-09-20Migrate to 2021Mark Rousskov-1/+1
2021-09-18Auto merge of #82183 - michaelwoerister:lazier-defpathhash-loading2, ↵bors-28/+0
r=wesleywiser Simplify lazy DefPathHash decoding by using an on-disk hash table. This PR simplifies the logic around mapping `DefPathHash` values encountered during incremental compilation to valid `DefId`s in the current session. It is able to do so by using an on-disk hash table encoding that allows for looking up values directly, i.e. without deserializing the entire table. The main simplification comes from not having to keep track of `DefPathHashes` being used during the compilation session.
2021-09-15Use explicit log level in tracing instrument macroTomasz Miąsko-2/+2
Specify a log level in tracing instrument macro explicitly. Additionally reduce the used log level from a default info level to a debug level (all of those appear to be developer oriented logs, so there should be no need to include them in release builds).
2021-09-14Remove RawDefId tracking infrastructure from incr. comp. framework.Michael Woerister-28/+0
This infrastructure is obsolete now with the new encoding scheme for the DefPathHash->DefIndex maps in crate metadata.
2021-09-11Auto merge of #78780 - cjgillot:req, r=Mark-Simulacrumbors-372/+266
Refactor query forcing The control flow in those functions was very complex, with several layers of continuations. I tried to simplify the implementation, while keeping essentially the same logic. Now, all code paths go through `try_execute_query` for the actual query execution. Communication with the `dep_graph` and the live caches are the only difference between query getting/ensuring/forcing.
2021-09-01Remove redundant `Span` in `QueryJobInfo`Noah Lev-11/+8
Previously, `QueryJobInfo` was composed of two parts: a `QueryInfo` and a `QueryJob`. However, both `QueryInfo` and `QueryJob` have a `span` field, which seem to be the same. So, the `span` was recorded twice. Now, `QueryJobInfo` is composed of a `QueryStackFrame` (the other field of `QueryInfo`) and a `QueryJob`. So, now, the `span` is only recorded once.
2021-08-27Note that trait aliases cannot be recursiveNoah Lev-9/+16
2021-08-27Note that type aliases cannot be recursiveNoah Lev-1/+42
2021-08-22Use variable.Camille GILLOT-12/+5
2021-08-22Unify `with_task` functions.Camille GILLOT-103/+76
Remove with_eval_always_task.
2021-08-22Remove force_query_with_job.Camille GILLOT-88/+53
2021-08-22Split try_execute_query.Camille GILLOT-16/+31
2021-08-22Decouple JobOwner from cache.Camille GILLOT-73/+66
2021-08-22Complete job outside of force_query_with_job.Camille GILLOT-14/+11
2021-08-22Do not compute the dep_node twice.Camille GILLOT-33/+21
2021-08-22Make all query forcing go through try_execute_query.Camille GILLOT-40/+31
try_execute_query is now able to centralize the path for query get/ensure/force. try_execute_query now takes the dep_node as a parameter, so it can accommodate `force`. This dep_node is an Option to avoid computing it in the `get` fast path. try_execute_query now returns both the result and the dep_node_index to allow the caller to handle the dep graph. The caller is responsible for marking the dependency.
2021-08-22Remove try_mark_green_and_read.Camille GILLOT-16/+8
2021-08-22Move assertion inwards.Camille GILLOT-17/+18
`with_taks_impl` is only called from `with_eval_always_task` and `with_task` . The former is only used in query invocation, while the latter is also used to start the `tcx` and to trigger codegen. This move should not change significantly the number of calls to this assertion.
2021-08-22Simplify control flow.Camille GILLOT-33/+28
2021-08-21Improve errors for recursive type aliasesNoah Lev-4/+8
2021-08-22Only clone key when needed.Camille GILLOT-4/+6
2021-08-22Move dep_graph checking into try_load_from_disk_and_cache_in_memory.Camille GILLOT-23/+12
2021-08-12Prevent double panic when handling incremental fingerprint mismatchAaron Hill-6/+28
When an incremental fingerprint mismatch occurs, we debug-print our `DepNode` and query result. Unfortunately, the debug printing process may cause us to run additional queries, which can result in a re-entrant fingerprint mismatch error. To avoid a double panic, this commit adds a thread-local variable to detect re-entrant calls.
2021-08-02Auto merge of #87535 - lf-:authors, r=Mark-Simulacrumbors-1/+0
rfc3052 followup: Remove authors field from Cargo manifests Since RFC 3052 soft deprecated the authors field, hiding it from crates.io, docs.rs, and making Cargo not add it by default, and it is not generally up to date/useful information for contributors, we may as well remove it from crates in this repo.
2021-08-01Auto merge of #87449 - matthiaskrgr:clippyy_v2, r=nagisabors-2/+2
more clippy::complexity fixes (also a couple of clippy::perf fixes)
2021-07-29rfc3052: Remove authors field from Cargo manifestsJade-1/+0
Since RFC 3052 soft deprecated the authors field anyway, hiding it from crates.io, docs.rs, and making Cargo not add it by default, and it is not generally up to date/useful information, we should remove it from crates in this repo.
2021-07-25Restrict field visibilityAaron Hill-1/+1
2021-07-25Create `QuerySideEffects` and use it for diagnosticsAaron Hill-59/+53
2021-07-25clippy::useless_formatMatthias Krüger-2/+2
2021-07-07Add docs to new methodsRyan Levick-1/+2
2021-07-07Profile incremental hashingRyan Levick-3/+24
2021-06-15Auto merge of #85154 - cjgillot:lessfn, r=bjorn3bors-35/+53
Reduce amount of function pointers in query invocation. r? `@ghost`
2021-06-07Auto merge of #85903 - bjorn3:rustc_serialize_cleanup, r=varkorbors-6/+6
Remove unused functions and arguments from rustc_serialize
2021-06-04Rollup merge of #85850 - bjorn3:less_feature_gates, r=jyn514Yuki Okushi-4/+0
Remove unused feature gates The first commit removes a usage of a feature gate, but I don't expect it to be controversial as the feature gate was only used to workaround a limitation of rust in the past. (closures never being `Clone`) The second commit uses `#[allow_internal_unstable]` to avoid leaking the `trusted_step` feature gate usage from inside the index newtype macro. It didn't work for the `min_specialization` feature gate though. The third commit removes (almost) all feature gates from the compiler that weren't used anyway.
2021-06-01Make the reasoning more explicit.Camille GILLOT-5/+9
2021-06-01Avoid creating anonymous nodes with zero or one dependency.Camille GILLOT-27/+49
2021-06-01Remove unused functions and arguments from rustc_serializebjorn3-6/+6
2021-05-31Remove unused feature gatesbjorn3-4/+0
2021-05-30Reduce amount of function pointers.Camille GILLOT-35/+53
2021-05-30Auto merge of #85319 - cjgillot:query-simp, r=Mark-Simulacrumbors-151/+163
Simplification of query forcing Extracted from #78780
2021-05-30Auto merge of #83772 - jhpratt:revamp-step-trait, r=Mark-Simulacrumbors-0/+1
Make `Step` trait safe to implement This PR makes a few modifications to the `Step` trait that I believe better position it for stabilization in the short term. In particular, 1. `unsafe trait TrustedStep` is introduced, indicating that the implementation of `Step` for a given type upholds all stated invariants (which have remained unchanged). This is gated behind a new `trusted_step` feature, as stabilization is realistically blocked on min_specialization. 2. The `Step` trait is internally specialized on the `TrustedStep` trait, which avoids a serious performance regression. 3. `TrustedLen` is implemented for `T: TrustedStep` as the latter's invariants subsume the former's. 4. The `Step` trait is no longer `unsafe`, as the invariants must not be relied upon by unsafe code (unless the type implements `TrustedStep`). 5. `TrustedStep` is implemented for all types that implement `Step` in the standard library and compiler. 6. The `step_trait_ext` feature is merged into the `step_trait` feature. I was unable to find any reasoning for the features being split; the `_unchecked` methods need not necessarily be stabilized at the same time, but I think it is useful to have them under the same feature flag. All existing implementations of `Step` will be broken, as it is not possible to `unsafe impl` a safe trait. Given this trait only exists on nightly, I feel this breakage is acceptable. The blanket `impl<T: Step> TrustedLen for T` will likely cause some minor breakage, but this should be covered by the equivalent impl for `TrustedStep`. Hopefully these changes are sufficient to place `Step` in decent position for stabilization, which would allow user-defined types to be used with `a..b` syntax.
2021-05-29Move reconstruct test inwards.Camille GILLOT-5/+4
2021-05-26Specialize implementationsJacob Pratt-0/+1
Implementations in stdlib are now optimized as they were before.
2021-05-22Get rid of PreviousDepGraph.Camille GILLOT-71/+42
2021-05-15Remove def_path_str.Camille GILLOT-4/+0
2021-05-15Make the fast path faster.Camille GILLOT-14/+15