Wesley Wiser
ae044ee893
Add self profiler events for loading incremental query results from disk
2019-02-11 18:00:46 -05:00
bors
c3d2490433
Auto merge of #58151 - ljedrz:HirIdify_rustc, r=Zoxc
...
Partially HirId-ify rustc
Another step towards https://github.com/rust-lang/rust/pull/57578 .
2019-02-10 14:30:37 +00:00
bors
68650cacf2
Auto merge of #58085 - wesleywiser:profiler_2, r=wesleywiser
...
Implement more detailed self profiling
Timing data and cache hits/misses are now recorded at the query level.
This allows us to show detailed per query information such as total time
for each query.
To see detailed query information in the summary pass the `-Z verbose`
flag. For example:
```
rustc -Z self-profile -Z verbose hello_world.rs
```
results in something like:
```md
Self profiling results:
| Phase | Time (ms) | Time (%) | Queries | Hits (%)
| ----------------------------------------- | -------------- | -------- | -------------- | --------
| Other | 177 | 54.97 | 8094 | 45.47
| - {time spent not running queries} | 113 | 35.09 | 0 | 0.00
| - const_eval | 16 | 4.97 | 26 | 11.54
| - type_of | 9 | 2.80 | 627 | 27.75
| - const_eval_raw | 8 | 2.48 | 22 | 0.00
| - adt_def | 7 | 2.17 | 381 | 11.55
| - visible_parent_map | 7 | 2.17 | 99 | 98.99
| - item_attrs | 6 | 1.86 | 698 | 50.14
| - item_children | 5 | 1.55 | 2815 | 0.00
| - adt_dtorck_constraint | 4 | 1.24 | 2 | 0.00
| - adt_destructor | 2 | 0.62 | 15 | 86.67
| TypeChecking | 53 | 16.46 | 2834 | 79.89
| - trait_impls_of | 9 | 2.80 | 65 | 86.15
| - evaluate_obligation | 7 | 2.17 | 80 | 2.50
| - const_is_rvalue_promotable_to_static | 6 | 1.86 | 1 | 0.00
| - is_copy_raw | 6 | 1.86 | 29 | 58.62
| - rvalue_promotable_map | 6 | 1.86 | 2 | 50.00
| - {time spent not running queries} | 6 | 1.86 | 0 | 0.00
| - typeck_item_bodies | 5 | 1.55 | 1 | 0.00
| - typeck_tables_of | 5 | 1.55 | 19 | 94.74
| - dropck_outlives | 2 | 0.62 | 1 | 0.00
| - layout_raw | 1 | 0.31 | 668 | 87.87
| Linking | 48 | 14.91 | 43 | 46.51
| - {time spent not running queries} | 48 | 14.91 | 0 | 0.00
| Codegen | 29 | 9.01 | 420 | 61.90
| - {time spent not running queries} | 16 | 4.97 | 0 | 0.00
| - collect_and_partition_mono_items | 11 | 3.42 | 13 | 92.31
| - mir_const | 1 | 0.31 | 1 | 0.00
| - mir_validated | 1 | 0.31 | 3 | 66.67
| Expansion | 14 | 4.35 | 0 | 0.00
| - {time spent not running queries} | 14 | 4.35 | 0 | 0.00
| BorrowChecking | 1 | 0.31 | 12 | 41.67
| - borrowck | 1 | 0.31 | 2 | 50.00
| Parsing | 0 | 0.00 | 0 | 0.00
Optimization level: No
Incremental: off
```
<details>
<summary>Rendered</summary>
Self profiling results:
| Phase | Time (ms) | Time (%) | Queries | Hits (%)
| ----------------------------------------- | -------------- | -------- | -------------- | --------
| **Other** | **177** | **54.97** | **8094** | **45.47**
| - {time spent not running queries} | 113 | 35.09 | 0 | 0.00
| - const_eval | 16 | 4.97 | 26 | 11.54
| - type_of | 9 | 2.80 | 627 | 27.75
| - const_eval_raw | 8 | 2.48 | 22 | 0.00
| - adt_def | 7 | 2.17 | 381 | 11.55
| - visible_parent_map | 7 | 2.17 | 99 | 98.99
| - item_attrs | 6 | 1.86 | 698 | 50.14
| - item_children | 5 | 1.55 | 2815 | 0.00
| - adt_dtorck_constraint | 4 | 1.24 | 2 | 0.00
| - adt_destructor | 2 | 0.62 | 15 | 86.67
| TypeChecking | 53 | 16.46 | 2834 | 79.89
| - trait_impls_of | 9 | 2.80 | 65 | 86.15
| - evaluate_obligation | 7 | 2.17 | 80 | 2.50
| - const_is_rvalue_promotable_to_static | 6 | 1.86 | 1 | 0.00
| - is_copy_raw | 6 | 1.86 | 29 | 58.62
| - rvalue_promotable_map | 6 | 1.86 | 2 | 50.00
| - {time spent not running queries} | 6 | 1.86 | 0 | 0.00
| - typeck_item_bodies | 5 | 1.55 | 1 | 0.00
| - typeck_tables_of | 5 | 1.55 | 19 | 94.74
| - dropck_outlives | 2 | 0.62 | 1 | 0.00
| - layout_raw | 1 | 0.31 | 668 | 87.87
| Linking | 48 | 14.91 | 43 | 46.51
| - {time spent not running queries} | 48 | 14.91 | 0 | 0.00
| Codegen | 29 | 9.01 | 420 | 61.90
| - {time spent not running queries} | 16 | 4.97 | 0 | 0.00
| - collect_and_partition_mono_items | 11 | 3.42 | 13 | 92.31
| - mir_const | 1 | 0.31 | 1 | 0.00
| - mir_validated | 1 | 0.31 | 3 | 66.67
| Expansion | 14 | 4.35 | 0 | 0.00
| - {time spent not running queries} | 14 | 4.35 | 0 | 0.00
| BorrowChecking | 1 | 0.31 | 12 | 41.67
| - borrowck | 1 | 0.31 | 2 | 50.00
| Parsing | 0 | 0.00 | 0 | 0.00
Optimization level: No
Incremental: off
</details>
cc @nikomatsakis @michaelwoerister @Zoxc
Fixes #54141
2019-02-10 11:18:50 +00:00
varkor
29f7206366
Add const params to Def
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-02-07 15:02:17 +01:00
Wesley Wiser
584081af4a
Calculate self-times not total times
2019-02-07 14:15:57 +01:00
Wesley Wiser
a568e7e47b
Add #[inline] annotations
2019-02-07 14:15:57 +01:00
Wesley Wiser
5bb96edbb2
Implement more detailed self profiling
...
Timing data and cache hits/misses are now recorded at the query level.
This allows us to show detailed per query information such as total time
for each query.
To see detailed query information in the summary pass the `-Z verbose`
flag. For example:
```
rustc -Z self-profile -Z verbose hello_world.rs
```
2019-02-07 14:15:54 +01:00
ljedrz
8d6e5fc20f
rustc: partially HirIdify
2019-02-05 20:26:24 +01:00
Mark Mansi
e957ed9d10
move librustc to 2018
2019-02-05 12:45:47 -06:00
Niko Matsakis
1336b8e8c7
integrate trait aliases into def-paths / metadata
...
Co-authored-by: Alexander Regueiro <alexreg@me.com>
2019-01-10 17:04:19 -05:00
bors
2f19f8cec9
Auto merge of #56988 - alexcrichton:monotonic-instant, r=sfackler
...
std: Force `Instant::now()` to be monotonic
This commit is an attempt to force `Instant::now` to be monotonic
through any means possible. We tried relying on OS/hardware/clock
implementations, but those seem buggy enough that we can't rely on them
in practice. This commit implements the same hammer Firefox recently
implemented (noted in #56612 ) which is to just keep whatever the lastest
`Instant::now()` return value was in memory, returning that instead of
the OS looks like it's moving backwards.
Closes #48514
Closes #49281
cc #51648
cc #56560
Closes #56612
Closes #56940
2019-01-08 11:30:19 +00:00
John Kåre Alsaker
23c742cce7
Rename some functions
2019-01-07 18:50:51 +01:00
John Kåre Alsaker
66fe06b1b9
Fix and optimize query profiling
2019-01-07 18:47:19 +01:00
Alex Crichton
255a3f3e18
std: Force Instant::now() to be monotonic
...
This commit is an attempt to force `Instant::now` to be monotonic
through any means possible. We tried relying on OS/hardware/clock
implementations, but those seem buggy enough that we can't rely on them
in practice. This commit implements the same hammer Firefox recently
implemented (noted in #56612 ) which is to just keep whatever the lastest
`Instant::now()` return value was in memory, returning that instead of
the OS looks like it's moving backwards.
Closes #48514
Closes #49281
cc #51648
cc #56560
Closes #56612
Closes #56940
2019-01-07 08:00:47 -08:00
bors
2fba17fc97
Auto merge of #56837 - arielb1:nonprincipal-trait-objects, r=nikomatsakis
...
Add support for trait-objects without a principal
The hard-error version of #56481 - should be merged after we do something about the `traitobject` crate.
Fixes #33140 .
Fixes #57057 .
r? @nikomatsakis
2019-01-05 03:36:31 +00:00
bors
d6d32ac25d
Auto merge of #56723 - oli-obk:lazy_const, r=nikomatsakis
...
Don't emit `Unevaluated` from `const_eval`
cc @eddyb @RalfJung
2019-01-04 17:01:24 +00:00
Ariel Ben-Yehuda
10a89400cf
alphabetize marker traits when printed
...
This makes sure they are printed in a compiler-version-independent
order, avoiding ui test instability.
2019-01-04 15:09:09 +02:00
Ariel Ben-Yehuda
4ab27b255c
fix ppaux
2019-01-04 00:34:52 +02:00
Ariel Ben-Yehuda
3aa1503a61
add support for principal-less trait object types
...
should be a pure refactoring.
2019-01-04 00:34:52 +02:00
Matthew Jasper
7ba17aa72f
Display impl Sized correctly
...
It used to display as just `impl`
2019-01-03 20:49:01 +00:00
Niko Matsakis
cf2f7cccb4
pacify the mercilous tidy
2019-01-02 17:35:06 -05:00
Niko Matsakis
77924de4a6
refactor highlighting to take any RegionKind, making it more general
2019-01-02 17:35:06 -05:00
Niko Matsakis
1597f2a0fc
add the ability to highlight placeholders
2019-01-02 17:35:05 -05:00
Niko Matsakis
37b0b3e9a3
generalize region highlights into a struct
2019-01-02 17:35:05 -05:00
Niko Matsakis
995192a472
make get_highlight_region_for_regionvid only affect re-vid
...
In NLL, ReVid is all there is, but I might want to repurpose.
2019-01-02 17:35:05 -05:00
Oliver Scherer
b903cb9d60
Move the Unevaluated constant arm upwards in the type structure
2019-01-01 20:05:02 +01:00
Vadim Petrochenkov
60d1fa70bb
Address review comments
...
Say "trait" instead of "type" in diagnostics for `dyn Trait`
2019-01-01 01:39:55 +03:00
Mark Rousskov
2a663555dd
Remove licenses
2018-12-25 21:08:33 -07:00
Wesley Wiser
771e8b82af
[self-profiler] Add column for percent of total time
2018-12-10 22:25:52 -05:00
Alexander Regueiro
ee89c088b0
Various minor/cosmetic improvements to code
2018-12-07 23:53:34 +00:00
bors
4a45578bc5
Auto merge of #56502 - Zoxc:hir-func, r=eddyb
...
Use a function to access the Hir map to be able to turn it into a query later
r? @eddyb
2018-12-07 20:04:06 +00:00
kennytm
aa5ba8315a
Rollup merge of #56555 - Mark-Simulacrum:stderr-profile, r=wesleywiser
...
Send textual profile data to stderr, not stdout
This makes it possible to run with RUSTFLAGS="-Zself-profile" without
having to redirect compiler output; otherwise Cargo will error out due
to non-empty compiler stdout.
r? @wesleywiser
2018-12-07 12:42:34 +08:00
John Kåre Alsaker
a70babed03
Use a function to access the Hir map to be able to turn it into a query later
2018-12-06 17:24:36 +01:00
Mark Rousskov
84443a3a24
Send textual profile data to stderr, not stdout
...
This makes it possible to run with RUSTFLAGS="-Zself-profile" without
having to redirect compiler output; otherwise Cargo will error out due
to non-empty compiler stdout.
2018-12-05 21:48:25 -07:00
ljedrz
d0c64bb296
cleanup: remove static lifetimes from consts
2018-12-04 12:46:10 +01:00
Eduard-Mihai Burtescu
e305994beb
proc_macro: introduce a "bridge" between clients (proc macros) and servers (compiler front-ends).
2018-11-30 06:15:19 +02:00
Mark Rousskov
2d2b7c01eb
Make JSON output from -Zprofile-json valid
2018-11-25 15:43:00 -07:00
Pietro Albini
e03fa3eec6
Rollup merge of #56170 - wesleywiser:fix_self_profiler_windows, r=estebank
...
Fix self profiler ICE on Windows
Fixes #51648
2018-11-25 17:05:07 +01:00
Wesley Wiser
dce1c4530e
[Windows] Work around non-monotonic clocks in the self-profiler
...
On Windows, the high-resolution timestamp api doesn't seem to always be
monotonic. This can cause panics when the self-profiler uses the
`Instant` api to find elapsed time.
Work around this by detecting the case where now is less than the start
time and just use 0 elapsed ticks as the measurement.
Fixes #51648
2018-11-24 21:38:35 -05:00
scalexm
95861b1590
Move BoundTy debruijn index to the TyKind enum variant
2018-11-24 01:24:40 +01:00
scalexm
05995a8522
Introduce TyKind::Placeholder variant
2018-11-24 01:24:40 +01:00
scalexm
7401e3def5
Distinguish between placeholder kinds
2018-11-24 01:24:40 +01:00
kennytm
fb33fa4916
Rollup merge of #56091 - wesleywiser:fix_self_profiler_json, r=petrochenkov
...
Fix json output in the self-profiler
Fix missing ',' array element separators and convert NaN's to 0.
cc @Mark-Simulacrum
2018-11-24 01:31:54 +08:00
Eduard-Mihai Burtescu
da622a3796
rustc: remove {FxHash,Node,DefId,HirId,ItemLocal}{Map,Set} "constructor" fns.
2018-11-21 07:27:02 +02:00
Wesley Wiser
c7dc868ed7
Fix json output in the self-profiler
...
Fix missing ',' array element separators and convert NaN's to 0.
2018-11-19 23:26:00 -05:00
Blitzerr
6779bb485c
capture_disjoint_fields(rust-lang#53488)
...
Refactoring out the HirId of the UpvarId in another struct.
2018-11-14 21:18:48 -08:00
scalexm
239df7be37
Bypass ppaux for Outlives predicates
2018-11-13 12:28:43 +01:00
scalexm
45be1ac0fc
Remove ReCanonical in favor of ReLateBound
2018-11-03 11:41:55 +01:00
scalexm
ee569c796d
Rename BoundTy field level -> index
2018-11-03 11:41:55 +01:00
scalexm
1003b7f85e
Move BoundTy to ty::TyKind
2018-11-03 11:33:14 +01:00