137660763b
On demandify region mapping This is an adaptation of @cramertj's PR. I am sort of tempted to keep simplifying it, but also tempted to land it so and we can refactor more in follow-up PRs. As is, it does the following things: - makes the region-maps an on-demand query, per function `tcx.region_maps(def_id)` - interns code extents instead of of having them be integers - remove the "root region extent" and (to some extent) item extents; instead we use `Option<CodeExtent<'tcx>>` in a few places (no space inefficiency since `CodeExtent<'tcx>` is now a pointer). I'm not entirely happy with the way I have it setup though. Here are some of the changes I was considering (I'm not sure if they would work out well): 1. Removing `item_extents` entirely -- they are rarely used now, because most of the relevant places now accept an `Option<Region<'tcx>>` or an `Option<CodeExtent<'tcx>>`, but I think still used in a few places. 2. Merging `RegionMaps` into the typeck tables, instead of having it be its own query. 3. Change `CodeExtent<'tcx>` to store the parent pointer. This would mean that fewer places in the code actually *need* a `RegionMaps` anyhow, since most of them just want to be able to walk "up the tree". On the other hand, you wouldn't be able to intern a `CodeExtent<'tcx>` for some random node-id, you'd need to look it up in the table (since there'd be more information). Most of this code is semi-temporary -- I expect it to largely go away as we move to NLL -- so I'm also not *that* concerned with making it perfect. r? @eddyb |
||
---|---|---|
.. | ||
auxiliary | ||
proc-macro | ||
ast_stmt_expr_attr.rs | ||
compiler-calls.rs | ||
create-dir-all-bare.rs | ||
custom-derive-partial-eq.rs | ||
deprecated-derive.rs | ||
derive-totalsum-attr.rs | ||
derive-totalsum.rs | ||
deriving-encodable-decodable-box.rs | ||
deriving-encodable-decodable-cell-refcell.rs | ||
deriving-global.rs | ||
dropck_tarena_sound_drop.rs | ||
empty-struct-braces-derive.rs | ||
extern-mod-syntax.rs | ||
issue_16723_multiple_items_syntax_ext.rs | ||
issue-2804.rs | ||
issue-4016.rs | ||
issue-4036.rs | ||
issue-11881.rs | ||
issue-13560.rs | ||
issue-14021.rs | ||
issue-15149.rs | ||
issue-15778-pass.rs | ||
issue-15924.rs | ||
issue-16822.rs | ||
issue-16992.rs | ||
issue-18502.rs | ||
issue-18763-quote-token-tree.rs | ||
issue-24972.rs | ||
issue-40663.rs | ||
linkage-visibility.rs | ||
lint-group-plugin.rs | ||
lint-plugin-cmdline-allow.rs | ||
lint-plugin-cmdline-load.rs | ||
lint-plugin.rs | ||
llvm-pass-plugin.rs | ||
lto-syntax-extension.rs | ||
macro-crate-does-hygiene-work.rs | ||
macro-crate-multi-decorator-literals.rs | ||
macro-crate-multi-decorator.rs | ||
macro-crate-outlive-expansion-phase.rs | ||
macro-crate.rs | ||
macro-quote-1.rs | ||
macro-quote-cond.rs | ||
macro-quote-test.rs | ||
mbe_matching_test_macro.rs | ||
myriad-closures.rs | ||
plugin-args-1.rs | ||
plugin-args-2.rs | ||
plugin-args-3.rs | ||
plugin-lib-ok-in-plugin.rs | ||
plugin-plus-extern-crate.rs | ||
proc_macro.rs | ||
qquote.rs | ||
quote-tokens.rs | ||
quote-unused-sp-no-warning.rs | ||
regions-mock-tcx.rs | ||
rename-directory.rs | ||
roman-numerals-macro.rs | ||
rustc_encodable_hygiene.rs | ||
switch-stdout.rs | ||
syntax-extension-with-dll-deps.rs |