Skip to content

Commit ab83132

Browse files
committed
---
yaml --- r: 97016 b: refs/heads/dist-snap c: c554d23 h: refs/heads/master v: v3
1 parent 7277c8a commit ab83132

File tree

6 files changed

+26
-14
lines changed

6 files changed

+26
-14
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: a66fcca9c9c279db5ab804734a0310b6aec60415
9+
refs/heads/dist-snap: c554d23a9a615e6317011fc44a5eeaba1930b783
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1212
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -878,7 +878,8 @@ fn encode_inherent_implementations(ecx: &EncodeContext,
878878
fn encode_extension_implementations(ecx: &EncodeContext,
879879
ebml_w: &mut writer::Encoder,
880880
trait_def_id: DefId) {
881-
match ecx.tcx.trait_impls.find(&trait_def_id) {
881+
let trait_impls = ecx.tcx.trait_impls.borrow();
882+
match trait_impls.get().find(&trait_def_id) {
882883
None => {}
883884
Some(&implementations) => {
884885
for implementation in implementations.iter() {

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ struct ctxt_ {
333333
destructors: RefCell<HashSet<ast::DefId>>,
334334

335335
// Maps a trait onto a list of impls of that trait.
336-
trait_impls: @mut HashMap<ast::DefId, @mut ~[@Impl]>,
336+
trait_impls: RefCell<HashMap<ast::DefId, @mut ~[@Impl]>>,
337337

338338
// Maps a def_id of a type to a list of its inherent impls.
339339
// Contains implementations of methods that are inherent to a type.
@@ -1005,7 +1005,7 @@ pub fn mk_ctxt(s: session::Session,
10051005
supertraits: RefCell::new(HashMap::new()),
10061006
destructor_for_type: RefCell::new(HashMap::new()),
10071007
destructors: RefCell::new(HashSet::new()),
1008-
trait_impls: @mut HashMap::new(),
1008+
trait_impls: RefCell::new(HashMap::new()),
10091009
inherent_impls: @mut HashMap::new(),
10101010
impls: @mut HashMap::new(),
10111011
used_unsafe: @mut HashSet::new(),
@@ -4498,10 +4498,11 @@ fn record_trait_implementation(tcx: ctxt,
44984498
trait_def_id: DefId,
44994499
implementation: @Impl) {
45004500
let implementation_list;
4501-
match tcx.trait_impls.find(&trait_def_id) {
4501+
let mut trait_impls = tcx.trait_impls.borrow_mut();
4502+
match trait_impls.get().find(&trait_def_id) {
45024503
None => {
45034504
implementation_list = @mut ~[];
4504-
tcx.trait_impls.insert(trait_def_id, implementation_list);
4505+
trait_impls.get().insert(trait_def_id, implementation_list);
45054506
}
45064507
Some(&existing_implementation_list) => {
45074508
implementation_list = existing_implementation_list

branches/dist-snap/src/librustc/middle/typeck/check/method.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,8 @@ impl<'a> LookupContext<'a> {
352352
*trait_did);
353353

354354
// Look for explicit implementations.
355-
let opt_impl_infos = self.tcx().trait_impls.find(trait_did);
355+
let trait_impls = self.tcx().trait_impls.borrow();
356+
let opt_impl_infos = trait_impls.get().find(trait_did);
356357
for impl_infos in opt_impl_infos.iter() {
357358
for impl_info in impl_infos.iter() {
358359
self.push_candidates_from_impl(

branches/dist-snap/src/librustc/middle/typeck/check/vtable.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,12 @@ fn search_for_vtable(vcx: &VtableContext,
329329

330330
// XXX: this is a bad way to do this, since we do
331331
// pointless allocations.
332-
let impls = tcx.trait_impls.find(&trait_ref.def_id).map_default(@mut ~[], |x| *x);
332+
let impls = {
333+
let trait_impls = tcx.trait_impls.borrow();
334+
trait_impls.get()
335+
.find(&trait_ref.def_id)
336+
.map_default(@mut ~[], |x| *x)
337+
};
333338
// impls is the list of all impls in scope for trait_ref.
334339
for im in impls.iter() {
335340
// im is one specific impl of trait_ref.

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -402,10 +402,11 @@ impl CoherenceChecker {
402402
implementation: @Impl) {
403403
let tcx = self.crate_context.tcx;
404404
let implementation_list;
405-
match tcx.trait_impls.find(&base_def_id) {
405+
let mut trait_impls = tcx.trait_impls.borrow_mut();
406+
match trait_impls.get().find(&base_def_id) {
406407
None => {
407408
implementation_list = @mut ~[];
408-
tcx.trait_impls.insert(base_def_id, implementation_list);
409+
trait_impls.get().insert(base_def_id, implementation_list);
409410
}
410411
Some(&existing_implementation_list) => {
411412
implementation_list = existing_implementation_list;
@@ -416,7 +417,8 @@ impl CoherenceChecker {
416417
}
417418

418419
pub fn check_implementation_coherence(&self) {
419-
self.crate_context.tcx.trait_impls.each_key(|&trait_id| {
420+
let trait_impls = self.crate_context.tcx.trait_impls.borrow();
421+
trait_impls.get().each_key(|&trait_id| {
420422
self.check_implementation_coherence_of(trait_id);
421423
true
422424
});
@@ -455,7 +457,8 @@ impl CoherenceChecker {
455457
}
456458

457459
pub fn iter_impls_of_trait(&self, trait_def_id: DefId, f: |@Impl|) {
458-
match self.crate_context.tcx.trait_impls.find(&trait_def_id) {
460+
let trait_impls = self.crate_context.tcx.trait_impls.borrow();
461+
match trait_impls.get().find(&trait_def_id) {
459462
Some(impls) => {
460463
for &im in impls.iter() {
461464
f(im);
@@ -687,11 +690,12 @@ impl CoherenceChecker {
687690
let drop_trait = match tcx.lang_items.drop_trait() {
688691
Some(id) => id, None => { return }
689692
};
690-
let impls_opt = tcx.trait_impls.find(&drop_trait);
691693

694+
let trait_impls = tcx.trait_impls.borrow();
695+
let impls_opt = trait_impls.get().find(&drop_trait);
692696
let impls;
693697
match impls_opt {
694-
None => return, // No types with (new-style) destructors present.
698+
None => return, // No types with (new-style) dtors present.
695699
Some(found_impls) => impls = found_impls
696700
}
697701

0 commit comments

Comments
 (0)