Skip to content

Commit d0a23db

Browse files
committed
---
yaml --- r: 96958 b: refs/heads/dist-snap c: 2ead970 h: refs/heads/master v: v3
1 parent fe6c471 commit d0a23db

File tree

4 files changed

+22
-11
lines changed

4 files changed

+22
-11
lines changed

[refs]

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

branches/dist-snap/src/librustc/middle/kind.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,13 @@ fn check_impl_of_trait(cx: &mut Context, it: @item, trait_ref: &trait_ref, self_
119119
let ast_trait_def = cx.tcx.def_map.find(&trait_ref.ref_id)
120120
.expect("trait ref not in def map!");
121121
let trait_def_id = ast_util::def_id_of_def(*ast_trait_def);
122-
let trait_def = cx.tcx.trait_defs.find(&trait_def_id)
123-
.expect("trait def not in trait-defs map!");
122+
let trait_def;
123+
{
124+
let trait_defs = cx.tcx.trait_defs.borrow();
125+
trait_def = *trait_defs.get()
126+
.find(&trait_def_id)
127+
.expect("trait def not in trait-defs map!");
128+
}
124129

125130
// If this trait has builtin-kind supertraits, meet them.
126131
let self_ty: ty::t = ty::node_id_to_type(cx.tcx, it.id);

branches/dist-snap/src/librustc/middle/ty.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ struct ctxt_ {
298298
impl_trait_cache: RefCell<HashMap<ast::DefId, Option<@ty::TraitRef>>>,
299299

300300
trait_refs: RefCell<HashMap<NodeId, @TraitRef>>,
301-
trait_defs: @mut HashMap<DefId, @TraitDef>,
301+
trait_defs: RefCell<HashMap<DefId, @TraitDef>>,
302302

303303
/// Despite its name, `items` does not only map NodeId to an item but
304304
/// also to expr/stmt/local/arg/etc
@@ -987,7 +987,7 @@ pub fn mk_ctxt(s: session::Session,
987987
node_types: @mut HashMap::new(),
988988
node_type_substs: RefCell::new(HashMap::new()),
989989
trait_refs: RefCell::new(HashMap::new()),
990-
trait_defs: @mut HashMap::new(),
990+
trait_defs: RefCell::new(HashMap::new()),
991991
items: amap,
992992
intrinsic_defs: @mut HashMap::new(),
993993
freevars: freevars,
@@ -3963,7 +3963,8 @@ pub fn lookup_impl_vtables(cx: ctxt,
39633963

39643964
/// Given the did of a trait, returns its canonical trait ref.
39653965
pub fn lookup_trait_def(cx: ctxt, did: ast::DefId) -> @ty::TraitDef {
3966-
match cx.trait_defs.find(&did) {
3966+
let mut trait_defs = cx.trait_defs.borrow_mut();
3967+
match trait_defs.get().find(&did) {
39673968
Some(&trait_def) => {
39683969
// The item is in this crate. The caller should have added it to the
39693970
// type cache already
@@ -3972,7 +3973,7 @@ pub fn lookup_trait_def(cx: ctxt, did: ast::DefId) -> @ty::TraitDef {
39723973
None => {
39733974
assert!(did.crate != ast::LOCAL_CRATE);
39743975
let trait_def = @csearch::get_trait_def(cx, did);
3975-
cx.trait_defs.insert(did, trait_def);
3976+
trait_defs.get().insert(did, trait_def);
39763977
return trait_def;
39773978
}
39783979
}

branches/dist-snap/src/librustc/middle/typeck/collect.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -740,10 +740,14 @@ fn get_trait_def(ccx: &CrateCtxt, trait_id: ast::DefId) -> @ty::TraitDef {
740740
pub fn trait_def_of_item(ccx: &CrateCtxt, it: &ast::item) -> @ty::TraitDef {
741741
let def_id = local_def(it.id);
742742
let tcx = ccx.tcx;
743-
match tcx.trait_defs.find(&def_id) {
744-
Some(&def) => return def,
745-
_ => {}
743+
{
744+
let trait_defs = tcx.trait_defs.borrow();
745+
match trait_defs.get().find(&def_id) {
746+
Some(&def) => return def,
747+
_ => {}
748+
}
746749
}
750+
747751
match it.node {
748752
ast::item_trait(ref generics, ref supertraits, _) => {
749753
let self_ty = ty::mk_self(tcx, def_id);
@@ -755,7 +759,8 @@ pub fn trait_def_of_item(ccx: &CrateCtxt, it: &ast::item) -> @ty::TraitDef {
755759
let trait_def = @ty::TraitDef {generics: ty_generics,
756760
bounds: bounds,
757761
trait_ref: trait_ref};
758-
tcx.trait_defs.insert(def_id, trait_def);
762+
let mut trait_defs = tcx.trait_defs.borrow_mut();
763+
trait_defs.get().insert(def_id, trait_def);
759764
return trait_def;
760765
}
761766
ref s => {

0 commit comments

Comments
 (0)