Camille GILLOT
f2c8707abb
Remove force_query_with_job.
2021-08-22 20:23:31 +02:00
Camille GILLOT
ef4becdce4
Split try_execute_query.
2021-08-22 20:23:31 +02:00
Camille GILLOT
307aacaf05
Decouple JobOwner from cache.
2021-08-22 20:23:31 +02:00
Camille GILLOT
d2304008c1
Complete job outside of force_query_with_job.
2021-08-22 20:23:30 +02:00
Camille GILLOT
13d4eb92b8
Do not compute the dep_node twice.
2021-08-22 20:23:30 +02:00
Camille GILLOT
283a8e1445
Make all query forcing go through try_execute_query.
...
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-22 20:23:29 +02:00
Camille GILLOT
45d6decc19
Remove try_mark_green_and_read.
2021-08-22 20:23:29 +02:00
Camille GILLOT
c3bf3969d4
Move assertion inwards.
...
`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-22 20:23:29 +02:00
Camille GILLOT
cd1cb3449e
Simplify control flow.
2021-08-22 20:23:20 +02:00
Noah Lev
2f48bfa88c
Improve errors for recursive type aliases
2021-08-21 18:30:25 -07:00
Camille GILLOT
0edc775b90
Only clone key when needed.
2021-08-22 01:06:19 +02:00
Camille GILLOT
5e35fadddb
Move dep_graph checking into try_load_from_disk_and_cache_in_memory.
2021-08-22 01:00:01 +02:00
Aaron Hill
77b02eed7b
Prevent double panic when handling incremental fingerprint mismatch
...
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-12 15:11:39 -05:00
bors
aadd6189ad
Auto merge of #87449 - matthiaskrgr:clippyy_v2, r=nagisa
...
more clippy::complexity fixes
(also a couple of clippy::perf fixes)
2021-08-01 09:15:15 +00:00
Aaron Hill
87740bac64
Restrict field visibility
2021-07-25 20:43:27 -05:00
Aaron Hill
e6a5231238
Create QuerySideEffects
and use it for diagnostics
2021-07-25 20:27:58 -05:00
Matthias Krüger
3fd8cbb404
clippy::useless_format
2021-07-25 12:26:03 +02:00
Camille GILLOT
fd318a2f9b
Reduce amount of function pointers.
2021-05-30 15:15:22 +02:00
Camille GILLOT
f3ed997254
Move reconstruct test inwards.
2021-05-29 22:38:51 +02:00
Camille GILLOT
c95a5682f7
Remove def_path_str.
2021-05-15 10:37:30 +02:00
Camille GILLOT
eb82187b13
Make the fast path faster.
2021-05-15 10:36:37 +02:00
Camille GILLOT
c2c59ae304
Move key recovering into force_query.
2021-05-15 10:20:56 +02:00
Aaron Hill
a4c0793551
Show nicer error when an 'unstable fingerprints' error occurs
2021-05-10 17:43:51 -04:00
bors
777bb2f612
Auto merge of #84806 - Mark-Simulacrum:try-start-entry, r=cjgillot
...
Streamline try_start code
This shifts some branches around and avoids interleaving parallel and
non-parallel versions of the function too much.
2021-05-06 22:35:06 +00:00
Mark Rousskov
981135ae8e
Streamline try_start code
...
This shifts some branches around and avoids interleaving parallel and
non-parallel versions of the function too much.
2021-05-02 12:25:48 -04:00
Mark Rousskov
61fd56fdb9
Avoid generating QueryMap::extend for each key type
2021-05-01 20:13:18 -04:00
Mark Rousskov
a1d7367429
Move iter_results to dyn FnMut rather than a generic
...
This means that we're no longer generating the iteration/locking code for each
invocation site of iter_results, rather just once per query.
This is a 15% win in instruction counts when compiling the rustc_query_impl crate.
2021-04-29 17:26:46 -04:00
Camille GILLOT
df24315ddf
Adjust profiling.
2021-03-30 18:10:08 +02:00
Camille GILLOT
6bfaf3a9cb
Stream the dep-graph to a file.
2021-03-30 18:09:59 +02:00
Josh Stone
72ebebe474
Use iter::zip in compiler/
2021-03-26 09:32:31 -07:00
Aaron Hill
443cef5618
Debug-print result when an unstable fingerprint is detected
2021-03-19 21:47:57 -04:00
bors
e7e1dc158c
Auto merge of #83007 - Aaron1011:incr-verify-default, r=Mark-Simulacrum
...
Turn `-Z incremental-verify-ich` on by default
Issue #82920 showed that the kind of bugs caught by this flag have
soundness implications.
2021-03-13 17:52:22 +00:00
Aaron Hill
7d7c81a114
Always run incremental_verify_ich
when re-computing query results
...
Issue #82920 showed that the kind of bugs caught by this flag have
soundness implications.
This causes performance regressions of up to 15.2% during incremental
compilation, but this is necessary to catch miscompilations caused by
bugs in query implementations.
2021-03-13 12:00:38 -05:00
Tyson Nottingham
adcbe49b16
rustc_query_system: simplify QueryCache::iter
...
Minor cleanup to reduce a small amount of complexity and code bloat.
Reduces the number of mono items in rustc_query_impl by 15%.
2021-03-12 17:34:14 -08:00
Camille GILLOT
903f65f215
Simplify hashing.
2021-02-21 12:22:22 +01:00
Camille GILLOT
a87de890fd
Move print_query_stack to rustc_query_system.
2021-02-20 23:40:56 +01:00
Camille GILLOT
c26d965714
Move report_cycle to rustc_query_system.
...
The call to `ty::print::with_forced_impl_filename_line`
is done when constructing the description,
at the construction of the QueryStackFrame.
2021-02-20 23:36:31 +01:00
Camille GILLOT
3897395787
Move Query to rustc_query_system.
...
Rename it to QueryStackFrame and document a bit.
2021-02-20 22:53:47 +01:00
Camille GILLOT
0144d6a3b7
Do not hold query key in Query.
2021-02-20 22:53:46 +01:00
Camille GILLOT
f96e960ccf
Access the session directly from DepContext.
2021-02-20 22:53:46 +01:00
Camille GILLOT
b27266fdb2
Use a QueryContext for try_mark_green.
2021-02-19 17:51:56 +01:00
Camille GILLOT
ea3d465c95
Move try_load_from_on_disk_cache to the QueryContext.
2021-02-19 17:51:55 +01:00
Camille GILLOT
49c1b07a9e
Decouple QueryContext from DepContext.
2021-02-19 17:51:49 +01:00
Camille GILLOT
6f04883023
Remove QueryAccessors::to_dep_node.
2021-02-19 17:51:49 +01:00
Camille GILLOT
211b05aef3
Don't require a QueryContext to access the DepGraph.
2021-02-19 17:51:49 +01:00
Tomasz Miąsko
db36db2e81
Inline try_get_cached
2021-02-16 00:00:00 +00:00
Camille GILLOT
3fc8ed68e9
Check query cache before calling into the query engine.
2021-02-13 21:14:58 +01:00
Camille GILLOT
280a2866d5
Drop the cache lock earlier.
2021-02-13 21:14:58 +01:00
Camille GILLOT
15b0bc6b83
Separate the query cache from the query state.
2021-02-13 21:14:58 +01:00
Camille GILLOT
9f46259a75
Return a Result for query cache.
2021-02-13 21:14:58 +01:00