Skip to content

Commit 906f65b

Browse files
pcwaltonhuonw
authored andcommitted
---
yaml --- r: 107861 b: refs/heads/dist-snap c: 9869374 h: refs/heads/master i: 107859: 0a88e4d v: v3
1 parent c1423cc commit 906f65b

File tree

12 files changed

+102
-74
lines changed

12 files changed

+102
-74
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ refs/heads/try: f64fdf524a434f0e5cd0bc91d09c144723f3c90d
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
9-
refs/heads/dist-snap: b890237e798030ce337933b14f777a1c3810d1ea
9+
refs/heads/dist-snap: 986937425636c3174dfe11bb6309865e8a1e0350
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1212
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0

branches/dist-snap/src/librustc/back/link.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -473,10 +473,10 @@ pub fn build_link_meta(sess: Session,
473473
symbol_hasher: &mut Sha256)
474474
-> LinkMeta {
475475
// This calculates CMH as defined above
476-
fn crate_hash(symbol_hasher: &mut Sha256, crateid: &CrateId) -> @str {
476+
fn crate_hash(symbol_hasher: &mut Sha256, crateid: &CrateId) -> ~str {
477477
symbol_hasher.reset();
478478
symbol_hasher.input_str(crateid.to_str());
479-
truncated_hash_result(symbol_hasher).to_managed()
479+
truncated_hash_result(symbol_hasher)
480480
}
481481

482482
let crateid = match attr::find_crateid(attrs) {
@@ -963,7 +963,7 @@ fn link_staticlib(sess: Session, obj_filename: &Path, out_filename: &Path) {
963963

964964
let crates = sess.cstore.get_used_crates(cstore::RequireStatic);
965965
for &(cnum, ref path) in crates.iter() {
966-
let name = sess.cstore.get_crate_data(cnum).name;
966+
let name = sess.cstore.get_crate_data(cnum).name.clone();
967967
let p = match *path {
968968
Some(ref p) => p.clone(), None => {
969969
sess.err(format!("could not find rlib for: `{}`", name));
@@ -1221,7 +1221,7 @@ fn add_upstream_rust_crates(args: &mut ~[~str], sess: Session,
12211221
// If we're not doing LTO, then our job is simply to just link
12221222
// against the archive.
12231223
if sess.lto() {
1224-
let name = sess.cstore.get_crate_data(cnum).name;
1224+
let name = sess.cstore.get_crate_data(cnum).name.clone();
12251225
time(sess.time_passes(), format!("altering {}.rlib", name),
12261226
(), |()| {
12271227
let dst = tmpdir.join(cratepath.filename().unwrap());

branches/dist-snap/src/librustc/back/lto.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ pub fn run(sess: session::Session, llmod: ModuleRef,
4242
// module that we've got.
4343
let crates = sess.cstore.get_used_crates(cstore::RequireStatic);
4444
for (cnum, path) in crates.move_iter() {
45-
let name = sess.cstore.get_crate_data(cnum).name;
45+
let name = sess.cstore.get_crate_data(cnum).name.clone();
4646
let path = match path {
4747
Some(p) => p,
4848
None => {

branches/dist-snap/src/librustc/metadata/common.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,5 +210,5 @@ pub static tag_macro_def: uint = 0x112;
210210
#[deriving(Clone)]
211211
pub struct LinkMeta {
212212
crateid: CrateId,
213-
crate_hash: @str,
213+
crate_hash: ~str,
214214
}

branches/dist-snap/src/librustc/metadata/creader.rs

Lines changed: 45 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ impl<'a> visit::Visitor<()> for ReadCrateVisitor<'a> {
7676
struct cache_entry {
7777
cnum: ast::CrateNum,
7878
span: Span,
79-
hash: @str,
79+
hash: ~str,
8080
crateid: CrateId,
8181
}
8282

@@ -146,45 +146,49 @@ fn visit_view_item(e: &mut Env, i: &ast::ViewItem) {
146146

147147
match extract_crate_info(i) {
148148
Some(info) => {
149-
let cnum = resolve_crate(e, info.ident, info.name, info.version,
150-
@"", i.span);
149+
let cnum = resolve_crate(e,
150+
info.ident.clone(),
151+
info.name.clone(),
152+
info.version.clone(),
153+
~"",
154+
i.span);
151155
e.sess.cstore.add_extern_mod_stmt_cnum(info.id, cnum);
152156
}
153157
None => ()
154158
}
155159
}
156160

157161
struct CrateInfo {
158-
ident: @str,
159-
name: @str,
160-
version: @str,
162+
ident: ~str,
163+
name: ~str,
164+
version: ~str,
161165
id: ast::NodeId,
162166
}
163167

164168
fn extract_crate_info(i: &ast::ViewItem) -> Option<CrateInfo> {
165169
match i.node {
166170
ast::ViewItemExternMod(ref ident, ref path_opt, id) => {
167-
let ident = token::ident_to_str(ident);
171+
let ident = token::get_ident(ident.name);
168172
debug!("resolving extern mod stmt. ident: {:?} path_opt: {:?}",
169-
ident, path_opt);
173+
ident.get(), path_opt);
170174
let (name, version) = match *path_opt {
171175
Some((ref path_str, _)) => {
172176
let crateid: Option<CrateId> = from_str(path_str.get());
173177
match crateid {
174-
None => (@"", @""),
178+
None => (~"", ~""),
175179
Some(crateid) => {
176180
let version = match crateid.version {
177-
None => @"",
178-
Some(ref ver) => ver.to_managed(),
181+
None => ~"",
182+
Some(ref ver) => ver.to_str(),
179183
};
180-
(crateid.name.to_managed(), version)
184+
(crateid.name.to_str(), version)
181185
}
182186
}
183187
}
184-
None => (ident, @""),
188+
None => (ident.get().to_str(), ~""),
185189
};
186190
Some(CrateInfo {
187-
ident: ident,
191+
ident: ident.get().to_str(),
188192
name: name,
189193
version: version,
190194
id: id,
@@ -278,14 +282,14 @@ fn visit_item(e: &Env, i: &ast::Item) {
278282
}
279283
}
280284

281-
fn existing_match(e: &Env, name: @str, version: @str, hash: &str) -> Option<ast::CrateNum> {
285+
fn existing_match(e: &Env, name: ~str, version: ~str, hash: &str) -> Option<ast::CrateNum> {
282286
let crate_cache = e.crate_cache.borrow();
283287
for c in crate_cache.get().iter() {
284288
let crateid_version = match c.crateid.version {
285-
None => @"0.0",
286-
Some(ref ver) => ver.to_managed(),
289+
None => ~"0.0",
290+
Some(ref ver) => ver.to_str(),
287291
};
288-
if (name.is_empty() || c.crateid.name.to_managed() == name) &&
292+
if (name.is_empty() || c.crateid.name == name) &&
289293
(version.is_empty() || crateid_version == version) &&
290294
(hash.is_empty() || c.hash.as_slice() == hash) {
291295
return Some(c.cnum);
@@ -295,19 +299,19 @@ fn existing_match(e: &Env, name: @str, version: @str, hash: &str) -> Option<ast:
295299
}
296300

297301
fn resolve_crate(e: &mut Env,
298-
ident: @str,
299-
name: @str,
300-
version: @str,
301-
hash: @str,
302+
ident: ~str,
303+
name: ~str,
304+
version: ~str,
305+
hash: ~str,
302306
span: Span)
303307
-> ast::CrateNum {
304-
match existing_match(e, name, version, hash) {
308+
match existing_match(e, name.clone(), version.clone(), hash.clone()) {
305309
None => {
306310
let load_ctxt = loader::Context {
307311
sess: e.sess,
308312
span: span,
309313
ident: ident,
310-
name: name,
314+
name: name.clone(),
311315
version: version,
312316
hash: hash,
313317
os: e.os,
@@ -368,10 +372,13 @@ fn resolve_crate_deps(e: &mut Env, cdata: &[u8]) -> cstore::cnum_map {
368372
let r = decoder::get_crate_deps(cdata);
369373
for dep in r.iter() {
370374
let extrn_cnum = dep.cnum;
371-
let cname_str = token::ident_to_str(&dep.name);
375+
let cname_str = token::get_ident(dep.name.name);
372376
debug!("resolving dep crate {} ver: {} hash: {}",
373377
cname_str, dep.vers, dep.hash);
374-
match existing_match(e, cname_str, dep.vers, dep.hash) {
378+
match existing_match(e,
379+
cname_str.get().to_str(),
380+
dep.vers.clone(),
381+
dep.hash.clone()) {
375382
Some(local_cnum) => {
376383
debug!("already have it");
377384
// We've already seen this crate
@@ -383,8 +390,12 @@ fn resolve_crate_deps(e: &mut Env, cdata: &[u8]) -> cstore::cnum_map {
383390
// FIXME (#2404): Need better error reporting than just a bogus
384391
// span.
385392
let fake_span = DUMMY_SP;
386-
let local_cnum = resolve_crate(e, cname_str, cname_str, dep.vers,
387-
dep.hash, fake_span);
393+
let local_cnum = resolve_crate(e,
394+
cname_str.get().to_str(),
395+
cname_str.get().to_str(),
396+
dep.vers.clone(),
397+
dep.hash.clone(),
398+
fake_span);
388399
cnum_map.insert(extrn_cnum, local_cnum);
389400
}
390401
}
@@ -415,8 +426,12 @@ impl Loader {
415426
impl CrateLoader for Loader {
416427
fn load_crate(&mut self, crate: &ast::ViewItem) -> MacroCrate {
417428
let info = extract_crate_info(crate).unwrap();
418-
let cnum = resolve_crate(&mut self.env, info.ident, info.name,
419-
info.version, @"", crate.span);
429+
let cnum = resolve_crate(&mut self.env,
430+
info.ident.clone(),
431+
info.name.clone(),
432+
info.version.clone(),
433+
~"",
434+
crate.span);
420435
let library = self.env.sess.cstore.get_used_crate_source(cnum).unwrap();
421436
MacroCrate {
422437
lib: library.dylib,

branches/dist-snap/src/librustc/metadata/cstore.rs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ pub enum MetadataBlob {
3232
}
3333

3434
pub struct crate_metadata {
35-
name: @str,
35+
name: ~str,
3636
data: MetadataBlob,
3737
cnum_map: cnum_map,
3838
cnum: ast::CrateNum
@@ -89,12 +89,12 @@ impl CStore {
8989
*metas.get().get(&cnum)
9090
}
9191

92-
pub fn get_crate_hash(&self, cnum: ast::CrateNum) -> @str {
92+
pub fn get_crate_hash(&self, cnum: ast::CrateNum) -> ~str {
9393
let cdata = self.get_crate_data(cnum);
9494
decoder::get_crate_hash(cdata.data())
9595
}
9696

97-
pub fn get_crate_vers(&self, cnum: ast::CrateNum) -> @str {
97+
pub fn get_crate_vers(&self, cnum: ast::CrateNum) -> ~str {
9898
let cdata = self.get_crate_data(cnum);
9999
decoder::get_crate_vers(cdata.data())
100100
}
@@ -192,7 +192,7 @@ impl CStore {
192192

193193
// returns hashes of crates directly used by this crate. Hashes are sorted by
194194
// (crate name, crate version, crate hash) in lexicographic order (not semver)
195-
pub fn get_dep_hashes(&self) -> ~[@str] {
195+
pub fn get_dep_hashes(&self) -> ~[~str] {
196196
let mut result = ~[];
197197

198198
let extern_mod_crate_map = self.extern_mod_crate_map.borrow();
@@ -202,7 +202,7 @@ impl CStore {
202202
let vers = decoder::get_crate_vers(cdata.data());
203203
debug!("Add hash[{}]: {} {}", cdata.name, vers, hash);
204204
result.push(crate_hash {
205-
name: cdata.name,
205+
name: cdata.name.clone(),
206206
vers: vers,
207207
hash: hash
208208
});
@@ -215,15 +215,23 @@ impl CStore {
215215
debug!(" hash[{}]: {}", x.name, x.hash);
216216
}
217217

218-
result.map(|ch| ch.hash)
218+
let mut hashes = ~[];
219+
for ch in result.move_iter() {
220+
let crate_hash {
221+
hash,
222+
..
223+
} = ch;
224+
hashes.push(hash)
225+
}
226+
hashes
219227
}
220228
}
221229

222230
#[deriving(Clone, TotalEq, TotalOrd)]
223231
struct crate_hash {
224-
name: @str,
225-
vers: @str,
226-
hash: @str,
232+
name: ~str,
233+
vers: ~str,
234+
hash: ~str,
227235
}
228236

229237
impl crate_metadata {

branches/dist-snap/src/librustc/metadata/decoder.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,18 +1113,18 @@ pub fn get_crate_attributes(data: &[u8]) -> ~[ast::Attribute] {
11131113
pub struct CrateDep {
11141114
cnum: ast::CrateNum,
11151115
name: ast::Ident,
1116-
vers: @str,
1117-
hash: @str
1116+
vers: ~str,
1117+
hash: ~str
11181118
}
11191119

11201120
pub fn get_crate_deps(data: &[u8]) -> ~[CrateDep] {
11211121
let mut deps: ~[CrateDep] = ~[];
11221122
let cratedoc = reader::Doc(data);
11231123
let depsdoc = reader::get_doc(cratedoc, tag_crate_deps);
11241124
let mut crate_num = 1;
1125-
fn docstr(doc: ebml::Doc, tag_: uint) -> @str {
1125+
fn docstr(doc: ebml::Doc, tag_: uint) -> ~str {
11261126
let d = reader::get_doc(doc, tag_);
1127-
d.as_str_slice().to_managed()
1127+
d.as_str_slice().to_str()
11281128
}
11291129
reader::tagged_docs(depsdoc, tag_crate_dep, |depdoc| {
11301130
deps.push(CrateDep {cnum: crate_num,
@@ -1149,17 +1149,17 @@ fn list_crate_deps(data: &[u8], out: &mut io::Writer) {
11491149
write!(out, "\n");
11501150
}
11511151

1152-
pub fn get_crate_hash(data: &[u8]) -> @str {
1152+
pub fn get_crate_hash(data: &[u8]) -> ~str {
11531153
let cratedoc = reader::Doc(data);
11541154
let hashdoc = reader::get_doc(cratedoc, tag_crate_hash);
1155-
hashdoc.as_str_slice().to_managed()
1155+
hashdoc.as_str_slice().to_str()
11561156
}
11571157

1158-
pub fn get_crate_vers(data: &[u8]) -> @str {
1158+
pub fn get_crate_vers(data: &[u8]) -> ~str {
11591159
let attrs = decoder::get_crate_attributes(data);
11601160
match attr::find_crateid(attrs) {
1161-
None => @"0.0",
1162-
Some(crateid) => crateid.version_or_default().to_managed(),
1161+
None => ~"0.0",
1162+
Some(crateid) => crateid.version_or_default().to_str(),
11631163
}
11641164
}
11651165

branches/dist-snap/src/librustc/metadata/encoder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1614,7 +1614,7 @@ fn encode_crate_deps(ecx: &EncodeContext,
16141614
ebml_w.start_tag(tag_crate_deps);
16151615
let r = get_ordered_deps(ecx, cstore);
16161616
for dep in r.iter() {
1617-
encode_crate_dep(ecx, ebml_w, *dep);
1617+
encode_crate_dep(ecx, ebml_w, (*dep).clone());
16181618
}
16191619
ebml_w.end_tag();
16201620
}

0 commit comments

Comments
 (0)