Skip to content

Commit 3a57007

Browse files
committed
librustc: Remove unused mod_path_map. This was expensive to build. Saves another 15% or so. r=tjc
1 parent 9f38792 commit 3a57007

File tree

2 files changed

+2
-52
lines changed

2 files changed

+2
-52
lines changed

src/librustc/metadata/cstore.rs

+2-23
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ export get_used_link_args;
4343
export add_use_stmt_cnum;
4444
export find_use_stmt_cnum;
4545
export get_dep_hashes;
46-
export get_path;
4746

4847

4948
// A map from external crate numbers (as decoded from some crate file) to
@@ -52,11 +51,6 @@ export get_path;
5251
// own crate numbers.
5352
type cnum_map = map::HashMap<ast::crate_num, ast::crate_num>;
5453

55-
// Multiple items may have the same def_id in crate metadata. They may be
56-
// renamed imports or reexports. This map keeps the "real" module path
57-
// and def_id.
58-
type mod_path_map = map::HashMap<ast::def_id, @~str>;
59-
6054
type crate_metadata = @{name: ~str,
6155
data: @~[u8],
6256
cnum_map: cnum_map,
@@ -72,7 +66,6 @@ enum CStore { private(cstore_private), }
7266
type cstore_private =
7367
@{metas: map::HashMap<ast::crate_num, crate_metadata>,
7468
use_crate_map: use_crate_map,
75-
mod_path_map: mod_path_map,
7669
mut used_crate_files: ~[Path],
7770
mut used_libraries: ~[~str],
7871
mut used_link_args: ~[~str],
@@ -89,10 +82,8 @@ pure fn p(cstore: CStore) -> cstore_private {
8982
fn mk_cstore(intr: @ident_interner) -> CStore {
9083
let meta_cache = map::HashMap();
9184
let crate_map = map::HashMap();
92-
let mod_path_map = HashMap();
9385
return private(@{metas: meta_cache,
9486
use_crate_map: crate_map,
95-
mod_path_map: mod_path_map,
9687
mut used_crate_files: ~[],
9788
mut used_libraries: ~[],
9889
mut used_link_args: ~[],
@@ -113,18 +104,10 @@ fn get_crate_vers(cstore: CStore, cnum: ast::crate_num) -> ~str {
113104
return decoder::get_crate_vers(cdata.data);
114105
}
115106

116-
fn set_crate_data(cstore: CStore, cnum: ast::crate_num,
107+
fn set_crate_data(cstore: CStore,
108+
cnum: ast::crate_num,
117109
data: crate_metadata) {
118110
p(cstore).metas.insert(cnum, data);
119-
let get_crate_data: decoder::GetCrateDataCb = |cnum| {
120-
cstore::get_crate_data(cstore, cnum)
121-
};
122-
for vec::each(decoder::get_crate_module_paths(cstore.intr, data,
123-
get_crate_data)) |dp| {
124-
let (did, path) = *dp;
125-
let d = {crate: cnum, node: did.node};
126-
p(cstore).mod_path_map.insert(d, @path);
127-
}
128111
}
129112

130113
fn have_crate_data(cstore: CStore, cnum: ast::crate_num) -> bool {
@@ -197,10 +180,6 @@ fn get_dep_hashes(cstore: CStore) -> ~[~str] {
197180
return vec::map(sorted, mapper);
198181
}
199182

200-
fn get_path(cstore: CStore, d: ast::def_id) -> ~[~str] {
201-
option::map_default(&p(cstore).mod_path_map.find(d), ~[],
202-
|ds| str::split_str(**ds, ~"::"))
203-
}
204183
// Local Variables:
205184
// mode: rust
206185
// fill-column: 78;

src/librustc/metadata/decoder.rs

-29
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ export get_supertraits;
6868
export get_method_names_if_trait;
6969
export get_type_name_if_impl;
7070
export get_item_attrs;
71-
export get_crate_module_paths;
7271
export def_like;
7372
export dl_def;
7473
export dl_impl;
@@ -1121,34 +1120,6 @@ fn iter_crate_items(intr: @ident_interner, cdata: cmd,
11211120
}
11221121
}
11231122

1124-
fn get_crate_module_paths(intr: @ident_interner, cdata: cmd,
1125-
get_crate_data: GetCrateDataCb)
1126-
-> ~[(ast::def_id, ~str)] {
1127-
fn mod_of_path(p: ~str) -> ~str {
1128-
str::connect(vec::init(str::split_str(p, ~"::")), ~"::")
1129-
}
1130-
1131-
// find all module (path, def_ids), which are not
1132-
// fowarded path due to renamed import or reexport
1133-
let mut res = ~[];
1134-
let mods = map::HashMap();
1135-
do iter_crate_items(intr, cdata, get_crate_data) |path, did| {
1136-
let m = mod_of_path(path);
1137-
if str::is_not_empty(m) {
1138-
// if m has a sub-item, it must be a module
1139-
mods.insert(m, true);
1140-
}
1141-
// Collect everything by now. There might be multiple
1142-
// paths pointing to the same did. Those will be
1143-
// unified later by using the mods map
1144-
res.push((did, path));
1145-
}
1146-
return do vec::filter(res) |x| {
1147-
let (_, xp) = *x;
1148-
mods.contains_key(xp)
1149-
}
1150-
}
1151-
11521123
fn list_crate_metadata(intr: @ident_interner, bytes: @~[u8],
11531124
out: io::Writer) {
11541125
let hash = get_crate_hash(bytes);

0 commit comments

Comments
 (0)