Skip to content

Commit b8719aa

Browse files
committed
---
yaml --- r: 3462 b: refs/heads/master c: 325f46d h: refs/heads/master v: v3
1 parent f427d16 commit b8719aa

File tree

3 files changed

+25
-15
lines changed

3 files changed

+25
-15
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 8c535d4aba65c75f5429ca030a59d9d60f797a42
2+
refs/heads/master: 325f46da06ccda82e465b0a1ba8449a04a89e601

trunk/src/comp/back/link.rs

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,22 @@ mod write {
275275
* system linkers understand.
276276
*
277277
*/
278+
279+
type link_meta = rec(str name,
280+
str vers,
281+
str extras_hash);
282+
283+
fn build_link_meta(&session::session sess, &ast::crate c,
284+
&str output, sha1 sha) -> link_meta {
285+
auto meta_info = crate_link_metas(c);
286+
287+
auto name = crate_meta_name(sess, c, output);
288+
auto vers = crate_meta_vers(sess, c);
289+
auto extras_hash = crate_meta_extras_hash(sha, c);
290+
291+
ret rec(name = name, vers = vers, extras_hash = extras_hash);
292+
}
293+
278294
type link_metas = rec(option::t[str] name,
279295
option::t[str] vers,
280296
vec[@ast::meta_item] cmh_items);
@@ -385,8 +401,9 @@ fn get_symbol_hash(&@crate_ctxt ccx, &ty::t t) -> str {
385401
case (some(?h)) { hash = h; }
386402
case (none) {
387403
hash =
388-
symbol_hash(ccx.tcx, ccx.sha, t, ccx.crate_meta_name,
389-
ccx.crate_meta_extras_hash);
404+
symbol_hash(ccx.tcx, ccx.sha, t,
405+
ccx.link_meta.name,
406+
ccx.link_meta.extras_hash);
390407
ccx.type_sha1s.insert(t, hash);
391408
}
392409
}
@@ -413,7 +430,7 @@ fn exported_name(&vec[str] path, &str hash, &str vers) -> str {
413430

414431
fn mangle_exported_name(&@crate_ctxt ccx, &vec[str] path, &ty::t t) -> str {
415432
auto hash = get_symbol_hash(ccx, t);
416-
ret exported_name(path, hash, ccx.crate_meta_vers);
433+
ret exported_name(path, hash, ccx.link_meta.vers);
417434
}
418435

419436
fn mangle_internal_name_by_type_only(&@crate_ctxt ccx, &ty::t t, &str name) ->

trunk/src/comp/middle/trans.rs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,6 @@ import link::mangle_internal_name_by_seq;
6262
import link::mangle_internal_name_by_path;
6363
import link::mangle_internal_name_by_path_and_seq;
6464
import link::mangle_exported_name;
65-
import link::crate_meta_name;
66-
import link::crate_meta_vers;
67-
import link::crate_meta_extras_hash;
6865
import metadata::tyencode;
6966
import metadata::creader;
7067
import metadata::decoder;
@@ -132,9 +129,7 @@ type crate_ctxt =
132129
ast_map::map ast_map,
133130
hashmap[ast::node_id, str] item_symbols,
134131
mutable option::t[ValueRef] main_fn,
135-
str crate_meta_name,
136-
str crate_meta_vers,
137-
str crate_meta_extras_hash,
132+
link::link_meta link_meta,
138133

139134
// TODO: hashmap[tup(tag_id,subtys), @tag_info]
140135
hashmap[ty::t, uint] tag_sizes,
@@ -7270,7 +7265,7 @@ fn new_local_ctxt(&@crate_ctxt ccx) -> @local_ctxt {
72707265
let vec[ast::ty_param] obj_typarams = [];
72717266
let vec[ast::obj_field] obj_fields = [];
72727267
ret @rec(path=pth,
7273-
module_path=[ccx.crate_meta_name],
7268+
module_path=[ccx.link_meta.name],
72747269
obj_typarams=obj_typarams,
72757270
obj_fields=obj_fields,
72767271
ccx=ccx);
@@ -8522,7 +8517,7 @@ fn create_crate_map(&@crate_ctxt ccx) -> ValueRef {
85228517
vec::push[ValueRef](subcrates, C_int(0));
85238518
auto mapname;
85248519
if (ccx.sess.get_opts().shared) {
8525-
mapname = ccx.crate_meta_name;
8520+
mapname = ccx.link_meta.name;
85268521
} else { mapname = "toplevel"; }
85278522
auto sym_name = "_rust_crate_map_" + mapname;
85288523
auto arrtype = T_array(T_int(), vec::len[ValueRef](subcrates));
@@ -8578,9 +8573,7 @@ fn trans_crate(&session::session sess, &@ast::crate crate, &ty::ctxt tcx,
85788573
ast_map=amap,
85798574
item_symbols=new_int_hash[str](),
85808575
mutable main_fn=none[ValueRef],
8581-
crate_meta_name=crate_meta_name(sess, *crate, output),
8582-
crate_meta_vers=crate_meta_vers(sess, *crate),
8583-
crate_meta_extras_hash=crate_meta_extras_hash(sha, *crate),
8576+
link_meta=link::build_link_meta(sess, *crate, output, sha),
85848577
tag_sizes=tag_sizes,
85858578
discrims=new_int_hash[ValueRef](),
85868579
discrim_symbols=new_int_hash[str](),

0 commit comments

Comments
 (0)