Skip to content

Commit 857188d

Browse files
committed
---
yaml --- r: 63135 b: refs/heads/snap-stage3 c: 90ec422 h: refs/heads/master i: 63133: f068b94 63131: 5a20f84 63127: 849790a 63119: adf19db 63103: cd6fe44 v: v3
1 parent 97295c3 commit 857188d

File tree

19 files changed

+216
-262
lines changed

19 files changed

+216
-262
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 2d28d645422c1617be58c8ca7ad9a457264ca850
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 470bf0dfb362e7494cfddf4e7d443e1264dfdf2f
4+
refs/heads/snap-stage3: 90ec4228bef1f7aa9612ddff03d21f7a260d4441
55
refs/heads/try: 7b78b52e602bb3ea8174f9b2006bff3315f03ef9
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/src/libextra/arc.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ impl Drop for PoisonOnFail {
263263

264264
fn PoisonOnFail<'r>(failed: &'r mut bool) -> PoisonOnFail {
265265
PoisonOnFail {
266-
failed: failed
266+
failed: ptr::to_mut_unsafe_ptr(failed)
267267
}
268268
}
269269

branches/snap-stage3/src/libextra/ebml.rs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -93,14 +93,6 @@ pub mod reader {
9393
pub fn get(&self, tag: uint) -> Doc {
9494
get_doc(*self, tag)
9595
}
96-
97-
pub fn as_str_slice<'a>(&'a self) -> &'a str {
98-
str::from_bytes_slice(self.data.slice(self.start, self.end))
99-
}
100-
101-
pub fn as_str(&self) -> ~str {
102-
self.as_str_slice().to_owned()
103-
}
10496
}
10597

10698
struct Res {
@@ -247,10 +239,15 @@ pub mod reader {
247239
return true;
248240
}
249241

242+
pub fn doc_data(d: Doc) -> ~[u8] {
243+
vec::slice::<u8>(*d.data, d.start, d.end).to_vec()
244+
}
245+
250246
pub fn with_doc_data<T>(d: Doc, f: &fn(x: &[u8]) -> T) -> T {
251247
f(vec::slice(*d.data, d.start, d.end))
252248
}
253249

250+
pub fn doc_as_str(d: Doc) -> ~str { str::from_bytes(doc_data(d)) }
254251

255252
pub fn doc_as_u8(d: Doc) -> u8 {
256253
assert_eq!(d.end, d.start + 1u);
@@ -297,7 +294,7 @@ pub mod reader {
297294

298295
if r_tag == (EsLabel as uint) {
299296
self.pos = r_doc.end;
300-
let str = r_doc.as_str_slice();
297+
let str = doc_as_str(r_doc);
301298
if lbl != str {
302299
fail!("Expected label %s but found %s", lbl, str);
303300
}
@@ -418,9 +415,7 @@ pub mod reader {
418415
fn read_char(&mut self) -> char {
419416
doc_as_u32(self.next_doc(EsChar)) as char
420417
}
421-
fn read_str(&mut self) -> ~str {
422-
self.next_doc(EsStr).as_str()
423-
}
418+
fn read_str(&mut self) -> ~str { doc_as_str(self.next_doc(EsStr)) }
424419

425420
// Compound types:
426421
fn read_enum<T>(&mut self,

branches/snap-stage3/src/librustc/lib/llvm.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2117,7 +2117,8 @@ pub fn struct_tys(struct_ty: TypeRef) -> ~[TypeRef] {
21172117
return ~[];
21182118
}
21192119
let mut elts = vec::from_elem(n_elts, ptr::null());
2120-
llvm::LLVMGetStructElementTypes(struct_ty, &mut elts[0]);
2120+
llvm::LLVMGetStructElementTypes(
2121+
struct_ty, ptr::to_mut_unsafe_ptr(&mut elts[0]));
21212122
return elts;
21222123
}
21232124
}

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

Lines changed: 53 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -162,18 +162,19 @@ fn item_visibility(item: ebml::Doc) -> ast::visibility {
162162

163163
fn item_method_sort(item: ebml::Doc) -> char {
164164
for reader::tagged_docs(item, tag_item_trait_method_sort) |doc| {
165-
return doc.as_str_slice()[0] as char;
165+
return str::from_bytes(reader::doc_data(doc))[0] as char;
166166
}
167167
return 'r';
168168
}
169169

170170
fn item_symbol(item: ebml::Doc) -> ~str {
171-
reader::get_doc(item, tag_items_data_item_symbol).as_str()
171+
let sym = reader::get_doc(item, tag_items_data_item_symbol);
172+
return str::from_bytes(reader::doc_data(sym));
172173
}
173174

174175
fn item_parent_item(d: ebml::Doc) -> Option<ast::def_id> {
175176
for reader::tagged_docs(d, tag_items_data_parent_item) |did| {
176-
return Some(reader::with_doc_data(did, parse_def_id));
177+
return Some(reader::with_doc_data(did, |d| parse_def_id(d)));
177178
}
178179
None
179180
}
@@ -194,7 +195,8 @@ fn item_reqd_and_translated_parent_item(cnum: ast::crate_num,
194195

195196
fn item_def_id(d: ebml::Doc, cdata: cmd) -> ast::def_id {
196197
let tagdoc = reader::get_doc(d, tag_def_id);
197-
return translate_def_id(cdata, reader::with_doc_data(tagdoc, parse_def_id));
198+
return translate_def_id(cdata, reader::with_doc_data(tagdoc,
199+
|d| parse_def_id(d)));
198200
}
199201

200202
fn each_reexport(d: ebml::Doc, f: &fn(ebml::Doc) -> bool) -> bool {
@@ -208,19 +210,19 @@ fn each_reexport(d: ebml::Doc, f: &fn(ebml::Doc) -> bool) -> bool {
208210

209211
fn variant_disr_val(d: ebml::Doc) -> Option<int> {
210212
do reader::maybe_get_doc(d, tag_disr_val).chain |val_doc| {
211-
do reader::with_doc_data(val_doc) |data| { int::parse_bytes(data, 10u) }
213+
int::parse_bytes(reader::doc_data(val_doc), 10u)
212214
}
213215
}
214216

215217
fn doc_type(doc: ebml::Doc, tcx: ty::ctxt, cdata: cmd) -> ty::t {
216218
let tp = reader::get_doc(doc, tag_items_data_item_type);
217-
parse_ty_data(*tp.data, cdata.cnum, tp.start, tcx,
219+
parse_ty_data(tp.data, cdata.cnum, tp.start, tcx,
218220
|_, did| translate_def_id(cdata, did))
219221
}
220222

221223
fn doc_method_fty(doc: ebml::Doc, tcx: ty::ctxt, cdata: cmd) -> ty::BareFnTy {
222224
let tp = reader::get_doc(doc, tag_item_method_fty);
223-
parse_bare_fn_ty_data(*tp.data, cdata.cnum, tp.start, tcx,
225+
parse_bare_fn_ty_data(tp.data, cdata.cnum, tp.start, tcx,
224226
|_, did| translate_def_id(cdata, did))
225227
}
226228

@@ -229,7 +231,7 @@ fn doc_transformed_self_ty(doc: ebml::Doc,
229231
cdata: cmd) -> Option<ty::t>
230232
{
231233
do reader::maybe_get_doc(doc, tag_item_method_transformed_self_ty).map |tp| {
232-
parse_ty_data(*tp.data, cdata.cnum, tp.start, tcx,
234+
parse_ty_data(tp.data, cdata.cnum, tp.start, tcx,
233235
|_, did| translate_def_id(cdata, did))
234236
}
235237
}
@@ -240,7 +242,7 @@ pub fn item_type(_item_id: ast::def_id, item: ebml::Doc,
240242
}
241243

242244
fn doc_trait_ref(doc: ebml::Doc, tcx: ty::ctxt, cdata: cmd) -> ty::TraitRef {
243-
parse_trait_ref_data(*doc.data, cdata.cnum, doc.start, tcx,
245+
parse_trait_ref_data(doc.data, cdata.cnum, doc.start, tcx,
244246
|_, did| translate_def_id(cdata, did))
245247
}
246248

@@ -255,7 +257,7 @@ fn item_ty_param_defs(item: ebml::Doc, tcx: ty::ctxt, cdata: cmd,
255257
let mut bounds = ~[];
256258
for reader::tagged_docs(item, tag) |p| {
257259
let bd = parse_type_param_def_data(
258-
*p.data, p.start, cdata.cnum, tcx,
260+
p.data, p.start, cdata.cnum, tcx,
259261
|_, did| translate_def_id(cdata, did));
260262
bounds.push(bd);
261263
}
@@ -280,7 +282,7 @@ fn enum_variant_ids(item: ebml::Doc, cdata: cmd) -> ~[ast::def_id] {
280282
let mut ids: ~[ast::def_id] = ~[];
281283
let v = tag_items_data_item_variant;
282284
for reader::tagged_docs(item, v) |p| {
283-
let ext = reader::with_doc_data(p, parse_def_id);
285+
let ext = reader::with_doc_data(p, |d| parse_def_id(d));
284286
ids.push(ast::def_id { crate: cdata.cnum, node: ext.node });
285287
};
286288
return ids;
@@ -295,10 +297,10 @@ fn item_path(item_doc: ebml::Doc) -> ast_map::path {
295297
let mut result = vec::with_capacity(len);
296298
for reader::docs(path_doc) |tag, elt_doc| {
297299
if tag == tag_path_elt_mod {
298-
let str = elt_doc.as_str_slice();
300+
let str = reader::doc_as_str(elt_doc);
299301
result.push(ast_map::path_mod(token::str_to_ident(str)));
300302
} else if tag == tag_path_elt_name {
301-
let str = elt_doc.as_str_slice();
303+
let str = reader::doc_as_str(elt_doc);
302304
result.push(ast_map::path_name(token::str_to_ident(str)));
303305
} else {
304306
// ignore tag_path_len element
@@ -310,10 +312,12 @@ fn item_path(item_doc: ebml::Doc) -> ast_map::path {
310312

311313
fn item_name(intr: @ident_interner, item: ebml::Doc) -> ast::ident {
312314
let name = reader::get_doc(item, tag_paths_data_name);
313-
let string = name.as_str_slice();
314-
match intr.find_equiv(&StringRef(string)) {
315-
None => token::str_to_ident(string),
316-
Some(val) => ast::new_ident(val),
315+
do reader::with_doc_data(name) |data| {
316+
let string = str::from_bytes_slice(data);
317+
match intr.find_equiv(&StringRef(string)) {
318+
None => token::str_to_ident(string),
319+
Some(val) => ast::new_ident(val),
320+
}
317321
}
318322
}
319323

@@ -409,9 +413,15 @@ pub fn get_impl_trait(cdata: cmd,
409413
tcx: ty::ctxt) -> Option<@ty::TraitRef>
410414
{
411415
let item_doc = lookup_item(id, cdata.data);
412-
do reader::maybe_get_doc(item_doc, tag_item_trait_ref).map |&tp| {
413-
@doc_trait_ref(tp, tcx, cdata)
414-
}
416+
let mut result = None;
417+
for reader::tagged_docs(item_doc, tag_item_trait_ref) |tp| {
418+
let trait_ref =
419+
@parse_trait_ref_data(tp.data, cdata.cnum, tp.start, tcx,
420+
|_, did| translate_def_id(cdata, did));
421+
result = Some(trait_ref);
422+
break;
423+
};
424+
result
415425
}
416426

417427
pub fn get_impl_method(intr: @ident_interner, cdata: cmd, id: ast::node_id,
@@ -420,7 +430,7 @@ pub fn get_impl_method(intr: @ident_interner, cdata: cmd, id: ast::node_id,
420430
let mut found = None;
421431
for reader::tagged_docs(find_item(id, items), tag_item_impl_method)
422432
|mid| {
423-
let m_did = reader::with_doc_data(mid, parse_def_id);
433+
let m_did = reader::with_doc_data(mid, |d| parse_def_id(d));
424434
if item_name(intr, find_item(m_did.node, items)) == name {
425435
found = Some(translate_def_id(cdata, m_did));
426436
}
@@ -503,17 +513,19 @@ pub fn each_path(intr: @ident_interner,
503513
let def_id_doc =
504514
reader::get_doc(reexport_doc,
505515
tag_items_data_item_reexport_def_id);
506-
let def_id = reader::with_doc_data(def_id_doc, parse_def_id);
516+
let def_id =
517+
reader::with_doc_data(def_id_doc,
518+
|d| parse_def_id(d));
507519
let def_id = translate_def_id(cdata, def_id);
508520

509521
let reexport_name_doc =
510522
reader::get_doc(reexport_doc,
511523
tag_items_data_item_reexport_name);
512-
let reexport_name = reexport_name_doc.as_str_slice();
524+
let reexport_name = reader::doc_as_str(reexport_name_doc);
513525

514526
let reexport_path;
515527
if path_is_empty {
516-
reexport_path = reexport_name.to_owned();
528+
reexport_path = reexport_name;
517529
} else {
518530
reexport_path = path + "::" + reexport_name;
519531
}
@@ -634,7 +646,7 @@ fn get_explicit_self(item: ebml::Doc) -> ast::explicit_self_ {
634646
}
635647

636648
let explicit_self_doc = reader::get_doc(item, tag_item_trait_method_explicit_self);
637-
let string = explicit_self_doc.as_str_slice();
649+
let string = reader::doc_as_str(explicit_self_doc);
638650

639651
let explicit_self_kind = string[0];
640652
match explicit_self_kind as char {
@@ -656,7 +668,7 @@ fn item_impl_methods(intr: @ident_interner, cdata: cmd, item: ebml::Doc,
656668
base_tps: uint) -> ~[@resolve::MethodInfo] {
657669
let mut rslt = ~[];
658670
for reader::tagged_docs(item, tag_item_impl_method) |doc| {
659-
let m_did = reader::with_doc_data(doc, parse_def_id);
671+
let m_did = reader::with_doc_data(doc, |d| parse_def_id(d));
660672
let mth_item = lookup_item(m_did.node, cdata.data);
661673
let explicit_self = get_explicit_self(mth_item);
662674
rslt.push(@resolve::MethodInfo {
@@ -678,7 +690,7 @@ pub fn get_impls_for_mod(intr: @ident_interner,
678690
let mod_item = lookup_item(m_id, data);
679691
let mut result = ~[];
680692
for reader::tagged_docs(mod_item, tag_mod_impl) |doc| {
681-
let did = reader::with_doc_data(doc, parse_def_id);
693+
let did = reader::with_doc_data(doc, |d| parse_def_id(d));
682694
let local_did = translate_def_id(cdata, did);
683695
debug!("(get impls for mod) getting did %? for '%?'",
684696
local_did, name);
@@ -819,7 +831,7 @@ pub fn get_type_name_if_impl(cdata: cmd,
819831
}
820832

821833
for reader::tagged_docs(item, tag_item_impl_type_basename) |doc| {
822-
return Some(token::str_to_ident(doc.as_str_slice()));
834+
return Some(token::str_to_ident(str::from_bytes(reader::doc_data(doc))));
823835
}
824836

825837
return None;
@@ -841,7 +853,7 @@ pub fn get_static_methods_if_impl(intr: @ident_interner,
841853

842854
let mut impl_method_ids = ~[];
843855
for reader::tagged_docs(item, tag_item_impl_method) |impl_method_doc| {
844-
impl_method_ids.push(reader::with_doc_data(impl_method_doc, parse_def_id));
856+
impl_method_ids.push(parse_def_id(reader::doc_data(impl_method_doc)));
845857
}
846858

847859
let mut static_impl_methods = ~[];
@@ -938,13 +950,12 @@ fn family_names_type(fam: Family) -> bool {
938950
}
939951

940952
fn read_path(d: ebml::Doc) -> (~str, uint) {
941-
do reader::with_doc_data(d) |desc| {
942-
let pos = io::u64_from_be_bytes(desc, 0u, 4u) as uint;
943-
let pathbytes = desc.slice(4u, desc.len());
944-
let path = str::from_bytes(pathbytes);
953+
let desc = reader::doc_data(d);
954+
let pos = io::u64_from_be_bytes(desc, 0u, 4u) as uint;
955+
let pathbytes = vec::slice::<u8>(desc, 4u, vec::len::<u8>(desc));
956+
let path = str::from_bytes(pathbytes);
945957

946-
(path, pos)
947-
}
958+
(path, pos)
948959
}
949960

950961
fn describe_def(items: ebml::Doc, id: ast::def_id) -> ~str {
@@ -985,21 +996,21 @@ fn get_meta_items(md: ebml::Doc) -> ~[@ast::meta_item] {
985996
let mut items: ~[@ast::meta_item] = ~[];
986997
for reader::tagged_docs(md, tag_meta_item_word) |meta_item_doc| {
987998
let nd = reader::get_doc(meta_item_doc, tag_meta_item_name);
988-
let n = nd.as_str();
999+
let n = str::from_bytes(reader::doc_data(nd));
9891000
items.push(attr::mk_word_item(@n));
9901001
};
9911002
for reader::tagged_docs(md, tag_meta_item_name_value) |meta_item_doc| {
9921003
let nd = reader::get_doc(meta_item_doc, tag_meta_item_name);
9931004
let vd = reader::get_doc(meta_item_doc, tag_meta_item_value);
994-
let n = nd.as_str();
995-
let v = vd.as_str();
1005+
let n = str::from_bytes(reader::doc_data(nd));
1006+
let v = str::from_bytes(reader::doc_data(vd));
9961007
// FIXME (#623): Should be able to decode meta_name_value variants,
9971008
// but currently the encoder just drops them
9981009
items.push(attr::mk_name_value_item_str(@n, @v));
9991010
};
10001011
for reader::tagged_docs(md, tag_meta_item_list) |meta_item_doc| {
10011012
let nd = reader::get_doc(meta_item_doc, tag_meta_item_name);
1002-
let n = nd.as_str();
1013+
let n = str::from_bytes(reader::doc_data(nd));
10031014
let subitems = get_meta_items(meta_item_doc);
10041015
items.push(attr::mk_list_item(@n, subitems));
10051016
};
@@ -1068,7 +1079,7 @@ pub fn get_crate_deps(data: @~[u8]) -> ~[crate_dep] {
10681079
let depsdoc = reader::get_doc(cratedoc, tag_crate_deps);
10691080
let mut crate_num = 1;
10701081
fn docstr(doc: ebml::Doc, tag_: uint) -> ~str {
1071-
reader::get_doc(doc, tag_).as_str()
1082+
str::from_bytes(reader::doc_data(reader::get_doc(doc, tag_)))
10721083
}
10731084
for reader::tagged_docs(depsdoc, tag_crate_dep) |depdoc| {
10741085
deps.push(crate_dep {cnum: crate_num,
@@ -1095,7 +1106,7 @@ fn list_crate_deps(data: @~[u8], out: @io::Writer) {
10951106
pub fn get_crate_hash(data: @~[u8]) -> @~str {
10961107
let cratedoc = reader::Doc(data);
10971108
let hashdoc = reader::get_doc(cratedoc, tag_crate_hash);
1098-
@hashdoc.as_str()
1109+
@str::from_bytes(reader::doc_data(hashdoc))
10991110
}
11001111

11011112
pub fn get_crate_vers(data: @~[u8]) -> @~str {
@@ -1150,7 +1161,7 @@ pub fn get_link_args_for_crate(cdata: cmd) -> ~[~str] {
11501161
let link_args = reader::get_doc(reader::Doc(cdata.data), tag_link_args);
11511162
let mut result = ~[];
11521163
for reader::tagged_docs(link_args, tag_link_args_arg) |arg_doc| {
1153-
result.push(arg_doc.as_str());
1164+
result.push(reader::doc_as_str(arg_doc));
11541165
}
11551166
result
11561167
}

0 commit comments

Comments
 (0)