Skip to content

Commit 79c2a73

Browse files
committed
---
yaml --- r: 151004 b: refs/heads/try2 c: 075ab30 h: refs/heads/master v: v3
1 parent 8d3b86c commit 79c2a73

File tree

6 files changed

+84
-74
lines changed

6 files changed

+84
-74
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: fa33012b71de68f5fe2fac0e19a3d467ea1b5727
8+
refs/heads/try2: 075ab306505ccaaf350a70a56130b45bab6f2a21
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/src/librustc/metadata/creader.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ fn resolve_crate<'a>(e: &mut Env,
279279
hash: Option<&Svh>,
280280
should_link: bool,
281281
span: Span)
282-
-> (ast::CrateNum, @cstore::crate_metadata,
282+
-> (ast::CrateNum, Rc<cstore::crate_metadata>,
283283
cstore::CrateSource) {
284284
match existing_match(e, crate_id, hash) {
285285
None => {
@@ -330,13 +330,13 @@ fn resolve_crate<'a>(e: &mut Env,
330330
-1
331331
};
332332

333-
let cmeta = @cstore::crate_metadata {
333+
let cmeta = Rc::new(cstore::crate_metadata {
334334
name: load_ctxt.crate_id.name.to_owned(),
335335
data: metadata,
336336
cnum_map: cnum_map,
337337
cnum: cnum,
338338
span: span,
339-
};
339+
});
340340

341341
let source = cstore::CrateSource {
342342
dylib: dylib,
@@ -345,7 +345,7 @@ fn resolve_crate<'a>(e: &mut Env,
345345
};
346346

347347
if should_link {
348-
e.sess.cstore.set_crate_data(cnum, cmeta);
348+
e.sess.cstore.set_crate_data(cnum, cmeta.clone());
349349
e.sess.cstore.add_used_crate_source(source.clone());
350350
}
351351
(cnum, cmeta, source)
@@ -402,8 +402,8 @@ impl<'a> CrateLoader for Loader<'a> {
402402
info.ident, &info.crate_id,
403403
None, info.should_link,
404404
krate.span);
405-
let macros = decoder::get_exported_macros(data);
406-
let registrar = decoder::get_macro_registrar_fn(data).map(|id| {
405+
let macros = decoder::get_exported_macros(&*data);
406+
let registrar = decoder::get_macro_registrar_fn(&*data).map(|id| {
407407
decoder::get_symbol(data.data.as_slice(), id)
408408
});
409409
MacroCrate {

branches/try2/src/librustc/metadata/csearch.rs

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ pub struct StaticMethodInfo {
3333
}
3434

3535
pub fn get_symbol(cstore: &cstore::CStore, def: ast::DefId) -> ~str {
36-
let cdata = cstore.get_crate_data(def.krate).data();
37-
return decoder::get_symbol(cdata, def.node);
36+
let cdata = cstore.get_crate_data(def.krate);
37+
decoder::get_symbol(cdata.data(), def.node)
3838
}
3939

4040
/// Iterates over all the language items in the given crate.
@@ -43,7 +43,7 @@ pub fn each_lang_item(cstore: &cstore::CStore,
4343
f: |ast::NodeId, uint| -> bool)
4444
-> bool {
4545
let crate_data = cstore.get_crate_data(cnum);
46-
decoder::each_lang_item(crate_data, f)
46+
decoder::each_lang_item(&*crate_data, f)
4747
}
4848

4949
/// Iterates over each child of the given item.
@@ -57,7 +57,7 @@ pub fn each_child_of_item(cstore: &cstore::CStore,
5757
cstore.get_crate_data(cnum)
5858
};
5959
decoder::each_child_of_item(cstore.intr.clone(),
60-
crate_data,
60+
&*crate_data,
6161
def_id.node,
6262
get_crate_data,
6363
callback)
@@ -74,15 +74,15 @@ pub fn each_top_level_item_of_crate(cstore: &cstore::CStore,
7474
cstore.get_crate_data(cnum)
7575
};
7676
decoder::each_top_level_item_of_crate(cstore.intr.clone(),
77-
crate_data,
77+
&*crate_data,
7878
get_crate_data,
7979
callback)
8080
}
8181

8282
pub fn get_item_path(tcx: &ty::ctxt, def: ast::DefId) -> Vec<ast_map::PathElem> {
8383
let cstore = &tcx.sess.cstore;
8484
let cdata = cstore.get_crate_data(def.krate);
85-
let path = decoder::get_item_path(cdata, def.node);
85+
let path = decoder::get_item_path(&*cdata, def.node);
8686

8787
// FIXME #1920: This path is not always correct if the crate is not linked
8888
// into the root namespace.
@@ -103,101 +103,101 @@ pub fn maybe_get_item_ast(tcx: &ty::ctxt, def: ast::DefId,
103103
-> found_ast {
104104
let cstore = &tcx.sess.cstore;
105105
let cdata = cstore.get_crate_data(def.krate);
106-
decoder::maybe_get_item_ast(cdata, tcx, def.node, decode_inlined_item)
106+
decoder::maybe_get_item_ast(&*cdata, tcx, def.node, decode_inlined_item)
107107
}
108108

109109
pub fn get_enum_variants(tcx: &ty::ctxt, def: ast::DefId)
110110
-> Vec<@ty::VariantInfo> {
111111
let cstore = &tcx.sess.cstore;
112112
let cdata = cstore.get_crate_data(def.krate);
113-
return decoder::get_enum_variants(cstore.intr.clone(), cdata, def.node, tcx)
113+
return decoder::get_enum_variants(cstore.intr.clone(), &*cdata, def.node, tcx)
114114
}
115115

116116
/// Returns information about the given implementation.
117117
pub fn get_impl(tcx: &ty::ctxt, impl_def_id: ast::DefId)
118118
-> ty::Impl {
119119
let cdata = tcx.sess.cstore.get_crate_data(impl_def_id.krate);
120-
decoder::get_impl(tcx.sess.cstore.intr.clone(), cdata, impl_def_id.node, tcx)
120+
decoder::get_impl(tcx.sess.cstore.intr.clone(), &*cdata, impl_def_id.node, tcx)
121121
}
122122

123123
pub fn get_method(tcx: &ty::ctxt, def: ast::DefId) -> ty::Method {
124124
let cdata = tcx.sess.cstore.get_crate_data(def.krate);
125-
decoder::get_method(tcx.sess.cstore.intr.clone(), cdata, def.node, tcx)
125+
decoder::get_method(tcx.sess.cstore.intr.clone(), &*cdata, def.node, tcx)
126126
}
127127

128128
pub fn get_method_name_and_explicit_self(cstore: &cstore::CStore,
129129
def: ast::DefId)
130130
-> (ast::Ident, ast::ExplicitSelf_)
131131
{
132132
let cdata = cstore.get_crate_data(def.krate);
133-
decoder::get_method_name_and_explicit_self(cstore.intr.clone(), cdata, def.node)
133+
decoder::get_method_name_and_explicit_self(cstore.intr.clone(), &*cdata, def.node)
134134
}
135135

136136
pub fn get_trait_method_def_ids(cstore: &cstore::CStore,
137137
def: ast::DefId) -> Vec<ast::DefId> {
138138
let cdata = cstore.get_crate_data(def.krate);
139-
decoder::get_trait_method_def_ids(cdata, def.node)
139+
decoder::get_trait_method_def_ids(&*cdata, def.node)
140140
}
141141

142142
pub fn get_item_variances(cstore: &cstore::CStore,
143143
def: ast::DefId) -> ty::ItemVariances {
144144
let cdata = cstore.get_crate_data(def.krate);
145-
decoder::get_item_variances(cdata, def.node)
145+
decoder::get_item_variances(&*cdata, def.node)
146146
}
147147

148148
pub fn get_provided_trait_methods(tcx: &ty::ctxt,
149149
def: ast::DefId)
150150
-> Vec<@ty::Method> {
151151
let cstore = &tcx.sess.cstore;
152152
let cdata = cstore.get_crate_data(def.krate);
153-
decoder::get_provided_trait_methods(cstore.intr.clone(), cdata, def.node, tcx)
153+
decoder::get_provided_trait_methods(cstore.intr.clone(), &*cdata, def.node, tcx)
154154
}
155155

156156
pub fn get_supertraits(tcx: &ty::ctxt, def: ast::DefId) -> Vec<@ty::TraitRef> {
157157
let cstore = &tcx.sess.cstore;
158158
let cdata = cstore.get_crate_data(def.krate);
159-
decoder::get_supertraits(cdata, def.node, tcx)
159+
decoder::get_supertraits(&*cdata, def.node, tcx)
160160
}
161161

162162
pub fn get_type_name_if_impl(cstore: &cstore::CStore, def: ast::DefId)
163163
-> Option<ast::Ident> {
164164
let cdata = cstore.get_crate_data(def.krate);
165-
decoder::get_type_name_if_impl(cdata, def.node)
165+
decoder::get_type_name_if_impl(&*cdata, def.node)
166166
}
167167

168168
pub fn get_static_methods_if_impl(cstore: &cstore::CStore,
169169
def: ast::DefId)
170170
-> Option<Vec<StaticMethodInfo> > {
171171
let cdata = cstore.get_crate_data(def.krate);
172-
decoder::get_static_methods_if_impl(cstore.intr.clone(), cdata, def.node)
172+
decoder::get_static_methods_if_impl(cstore.intr.clone(), &*cdata, def.node)
173173
}
174174

175175
pub fn get_item_attrs(cstore: &cstore::CStore,
176176
def_id: ast::DefId,
177177
f: |Vec<@ast::MetaItem> |) {
178178
let cdata = cstore.get_crate_data(def_id.krate);
179-
decoder::get_item_attrs(cdata, def_id.node, f)
179+
decoder::get_item_attrs(&*cdata, def_id.node, f)
180180
}
181181

182182
pub fn get_struct_fields(cstore: &cstore::CStore,
183183
def: ast::DefId)
184184
-> Vec<ty::field_ty> {
185185
let cdata = cstore.get_crate_data(def.krate);
186-
decoder::get_struct_fields(cstore.intr.clone(), cdata, def.node)
186+
decoder::get_struct_fields(cstore.intr.clone(), &*cdata, def.node)
187187
}
188188

189189
pub fn get_type(tcx: &ty::ctxt,
190190
def: ast::DefId)
191191
-> ty::ty_param_bounds_and_ty {
192192
let cstore = &tcx.sess.cstore;
193193
let cdata = cstore.get_crate_data(def.krate);
194-
decoder::get_type(cdata, def.node, tcx)
194+
decoder::get_type(&*cdata, def.node, tcx)
195195
}
196196

197197
pub fn get_trait_def(tcx: &ty::ctxt, def: ast::DefId) -> ty::TraitDef {
198198
let cstore = &tcx.sess.cstore;
199199
let cdata = cstore.get_crate_data(def.krate);
200-
decoder::get_trait_def(cdata, def.node, tcx)
200+
decoder::get_trait_def(&*cdata, def.node, tcx)
201201
}
202202

203203
pub fn get_field_type(tcx: &ty::ctxt, class_id: ast::DefId,
@@ -213,7 +213,7 @@ pub fn get_field_type(tcx: &ty::ctxt, class_id: ast::DefId,
213213
decoder::maybe_find_item(def.node, class_doc),
214214
|| format!("get_field_type: in class {:?}, field ID {:?} not found",
215215
class_id, def) );
216-
let ty = decoder::item_type(def, the_field, tcx, cdata);
216+
let ty = decoder::item_type(def, the_field, tcx, &*cdata);
217217
ty::ty_param_bounds_and_ty {
218218
generics: ty::Generics {type_param_defs: Rc::new(Vec::new()),
219219
region_param_defs: Rc::new(Vec::new())},
@@ -227,43 +227,43 @@ pub fn get_impl_trait(tcx: &ty::ctxt,
227227
def: ast::DefId) -> Option<@ty::TraitRef> {
228228
let cstore = &tcx.sess.cstore;
229229
let cdata = cstore.get_crate_data(def.krate);
230-
decoder::get_impl_trait(cdata, def.node, tcx)
230+
decoder::get_impl_trait(&*cdata, def.node, tcx)
231231
}
232232

233233
// Given a def_id for an impl, return information about its vtables
234234
pub fn get_impl_vtables(tcx: &ty::ctxt,
235235
def: ast::DefId) -> typeck::impl_res {
236236
let cstore = &tcx.sess.cstore;
237237
let cdata = cstore.get_crate_data(def.krate);
238-
decoder::get_impl_vtables(cdata, def.node, tcx)
238+
decoder::get_impl_vtables(&*cdata, def.node, tcx)
239239
}
240240

241241
pub fn get_native_libraries(cstore: &cstore::CStore,
242242
crate_num: ast::CrateNum)
243243
-> Vec<(cstore::NativeLibaryKind, ~str)> {
244244
let cdata = cstore.get_crate_data(crate_num);
245-
decoder::get_native_libraries(cdata)
245+
decoder::get_native_libraries(&*cdata)
246246
}
247247

248248
pub fn each_impl(cstore: &cstore::CStore,
249249
crate_num: ast::CrateNum,
250250
callback: |ast::DefId|) {
251251
let cdata = cstore.get_crate_data(crate_num);
252-
decoder::each_impl(cdata, callback)
252+
decoder::each_impl(&*cdata, callback)
253253
}
254254

255255
pub fn each_implementation_for_type(cstore: &cstore::CStore,
256256
def_id: ast::DefId,
257257
callback: |ast::DefId|) {
258258
let cdata = cstore.get_crate_data(def_id.krate);
259-
decoder::each_implementation_for_type(cdata, def_id.node, callback)
259+
decoder::each_implementation_for_type(&*cdata, def_id.node, callback)
260260
}
261261

262262
pub fn each_implementation_for_trait(cstore: &cstore::CStore,
263263
def_id: ast::DefId,
264264
callback: |ast::DefId|) {
265265
let cdata = cstore.get_crate_data(def_id.krate);
266-
decoder::each_implementation_for_trait(cdata, def_id.node, callback)
266+
decoder::each_implementation_for_trait(&*cdata, def_id.node, callback)
267267
}
268268

269269
/// If the given def ID describes a method belonging to a trait (either a
@@ -274,27 +274,27 @@ pub fn get_trait_of_method(cstore: &cstore::CStore,
274274
tcx: &ty::ctxt)
275275
-> Option<ast::DefId> {
276276
let cdata = cstore.get_crate_data(def_id.krate);
277-
decoder::get_trait_of_method(cdata, def_id.node, tcx)
277+
decoder::get_trait_of_method(&*cdata, def_id.node, tcx)
278278
}
279279

280280
pub fn get_macro_registrar_fn(cstore: &cstore::CStore,
281281
crate_num: ast::CrateNum)
282282
-> Option<ast::NodeId> {
283283
let cdata = cstore.get_crate_data(crate_num);
284-
decoder::get_macro_registrar_fn(cdata)
284+
decoder::get_macro_registrar_fn(&*cdata)
285285
}
286286

287287
pub fn get_exported_macros(cstore: &cstore::CStore,
288288
crate_num: ast::CrateNum)
289289
-> Vec<~str> {
290290
let cdata = cstore.get_crate_data(crate_num);
291-
decoder::get_exported_macros(cdata)
291+
decoder::get_exported_macros(&*cdata)
292292
}
293293

294294
pub fn get_tuple_struct_definition_if_ctor(cstore: &cstore::CStore,
295295
def_id: ast::DefId)
296296
-> Option<ast::DefId>
297297
{
298298
let cdata = cstore.get_crate_data(def_id.krate);
299-
decoder::get_tuple_struct_definition_if_ctor(cdata, def_id.node)
299+
decoder::get_tuple_struct_definition_if_ctor(&*cdata, def_id.node)
300300
}

branches/try2/src/librustc/metadata/cstore.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ pub struct CrateSource {
6868
}
6969

7070
pub struct CStore {
71-
metas: RefCell<HashMap<ast::CrateNum, @crate_metadata>>,
71+
metas: RefCell<HashMap<ast::CrateNum, Rc<crate_metadata>>>,
7272
extern_mod_crate_map: RefCell<extern_mod_crate_map>,
7373
used_crate_sources: RefCell<Vec<CrateSource>>,
7474
used_libraries: RefCell<Vec<(~str, NativeLibaryKind)>>,
@@ -95,22 +95,22 @@ impl CStore {
9595
self.metas.borrow().len() as ast::CrateNum + 1
9696
}
9797

98-
pub fn get_crate_data(&self, cnum: ast::CrateNum) -> @crate_metadata {
99-
*self.metas.borrow().get(&cnum)
98+
pub fn get_crate_data(&self, cnum: ast::CrateNum) -> Rc<crate_metadata> {
99+
self.metas.borrow().get(&cnum).clone()
100100
}
101101

102102
pub fn get_crate_hash(&self, cnum: ast::CrateNum) -> Svh {
103103
let cdata = self.get_crate_data(cnum);
104104
decoder::get_crate_hash(cdata.data())
105105
}
106106

107-
pub fn set_crate_data(&self, cnum: ast::CrateNum, data: @crate_metadata) {
107+
pub fn set_crate_data(&self, cnum: ast::CrateNum, data: Rc<crate_metadata>) {
108108
self.metas.borrow_mut().insert(cnum, data);
109109
}
110110

111-
pub fn iter_crate_data(&self, i: |ast::CrateNum, @crate_metadata|) {
112-
for (&k, &v) in self.metas.borrow().iter() {
113-
i(k, v);
111+
pub fn iter_crate_data(&self, i: |ast::CrateNum, &crate_metadata|) {
112+
for (&k, v) in self.metas.borrow().iter() {
113+
i(k, &**v);
114114
}
115115
}
116116

0 commit comments

Comments
 (0)