Skip to content

Commit ae1d187

Browse files
committed
---
yaml --- r: 147567 b: refs/heads/try2 c: 4fe1cb1 h: refs/heads/master i: 147565: 1901dfe 147563: 9aaae01 147559: a39da66 147551: 10f90f9 v: v3
1 parent cb853ca commit ae1d187

File tree

9 files changed

+41
-24
lines changed

9 files changed

+41
-24
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: dd745b388dad16973baf798a86b7141f96b76af4
8+
refs/heads/try2: 4fe1cb1aff79ecf66a7962374c5e048110f8d782
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/src/librustc/middle/astencode.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -992,7 +992,8 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext,
992992
}
993993

994994
{
995-
let r = maps.vtable_map.find(&id);
995+
let vtable_map = maps.vtable_map.borrow();
996+
let r = vtable_map.get().find(&id);
996997
for &dr in r.iter() {
997998
ebml_w.tag(c::tag_table_vtable_map, |ebml_w| {
998999
ebml_w.id(id);
@@ -1267,9 +1268,11 @@ fn decode_side_tables(xcx: @ExtendedDecodeContext,
12671268
val_dsr.read_method_map_entry(xcx));
12681269
}
12691270
c::tag_table_vtable_map => {
1270-
dcx.maps.vtable_map.insert(
1271-
id,
1272-
val_dsr.read_vtable_res(xcx.dcx.tcx, xcx.dcx.cdata));
1271+
let vtable_res =
1272+
val_dsr.read_vtable_res(xcx.dcx.tcx,
1273+
xcx.dcx.cdata);
1274+
let mut vtable_map = dcx.maps.vtable_map.borrow_mut();
1275+
vtable_map.get().insert(id, vtable_res);
12731276
}
12741277
c::tag_table_adjustments => {
12751278
let adj: @ty::AutoAdjustment = @Decodable::decode(val_dsr);

branches/try2/src/librustc/middle/const_eval.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ pub fn lookup_variant_by_id(tcx: ty::ctxt,
122122
let maps = astencode::Maps {
123123
root_map: @RefCell::new(HashMap::new()),
124124
method_map: @mut HashMap::new(),
125-
vtable_map: @mut HashMap::new(),
125+
vtable_map: @RefCell::new(HashMap::new()),
126126
write_guard_map: @mut HashSet::new(),
127127
capture_map: @RefCell::new(HashMap::new())
128128
};
@@ -172,7 +172,7 @@ pub fn lookup_const_by_id(tcx: ty::ctxt,
172172
let maps = astencode::Maps {
173173
root_map: @RefCell::new(HashMap::new()),
174174
method_map: @mut HashMap::new(),
175-
vtable_map: @mut HashMap::new(),
175+
vtable_map: @RefCell::new(HashMap::new()),
176176
write_guard_map: @mut HashSet::new(),
177177
capture_map: @RefCell::new(HashMap::new())
178178
};

branches/try2/src/librustc/middle/trans/common.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1160,7 +1160,8 @@ pub fn node_id_type_params(bcx: &Block, id: ast::NodeId) -> ~[ty::t] {
11601160

11611161
pub fn node_vtables(bcx: @Block, id: ast::NodeId)
11621162
-> Option<typeck::vtable_res> {
1163-
let raw_vtables = bcx.ccx().maps.vtable_map.find(&id);
1163+
let vtable_map = bcx.ccx().maps.vtable_map.borrow();
1164+
let raw_vtables = vtable_map.get().find(&id);
11641165
raw_vtables.map(|vts| resolve_vtables_in_fn_ctxt(bcx.fcx, *vts))
11651166
}
11661167

branches/try2/src/librustc/middle/trans/meth.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -262,8 +262,11 @@ pub fn trans_static_method_callee(bcx: @Block,
262262
debug!("trans_static_method_callee: method_id={:?}, callee_id={:?}, \
263263
name={}", method_id, callee_id, ccx.sess.str_of(mname));
264264

265-
let vtbls = resolve_vtables_in_fn_ctxt(
266-
bcx.fcx, ccx.maps.vtable_map.get_copy(&callee_id));
265+
let vtbls = {
266+
let vtable_map = ccx.maps.vtable_map.borrow();
267+
vtable_map.get().get_copy(&callee_id)
268+
};
269+
let vtbls = resolve_vtables_in_fn_ctxt(bcx.fcx, vtbls);
267270

268271
match vtbls[bound_index][0] {
269272
typeck::vtable_static(impl_did, ref rcvr_substs, rcvr_origins) => {
@@ -670,8 +673,11 @@ pub fn trans_trait_cast(bcx: @Block,
670673
// Store the vtable into the pair or triple.
671674
// This is structured a bit funny because of dynamic borrow failures.
672675
let origins = {
673-
let res = ccx.maps.vtable_map.get(&id);
674-
let res = resolve_vtables_in_fn_ctxt(bcx.fcx, *res);
676+
let res = {
677+
let vtable_map = ccx.maps.vtable_map.borrow();
678+
*vtable_map.get().get(&id)
679+
};
680+
let res = resolve_vtables_in_fn_ctxt(bcx.fcx, res);
675681
res[0]
676682
};
677683
let vtable = get_vtable(bcx, v_ty, origins);

branches/try2/src/librustc/middle/typeck/check/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ impl Inherited {
266266
node_type_substs: RefCell::new(HashMap::new()),
267267
adjustments: RefCell::new(HashMap::new()),
268268
method_map: @mut HashMap::new(),
269-
vtable_map: @mut HashMap::new(),
269+
vtable_map: @RefCell::new(HashMap::new()),
270270
}
271271
}
272272
}

branches/try2/src/librustc/middle/typeck/check/vtable.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,8 @@ fn insert_vtables(fcx: @FnCtxt,
538538
vtables: vtable_res) {
539539
debug!("insert_vtables(callee_id={}, vtables={:?})",
540540
callee_id, vtables.repr(fcx.tcx()));
541-
fcx.inh.vtable_map.insert(callee_id, vtables);
541+
let mut vtable_map = fcx.inh.vtable_map.borrow_mut();
542+
vtable_map.get().insert(callee_id, vtables);
542543
}
543544

544545
pub fn location_info_for_expr(expr: @ast::Expr) -> LocationInfo {

branches/try2/src/librustc/middle/typeck/check/writeback.rs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,14 +82,20 @@ fn resolve_method_map_entry(fcx: @FnCtxt, sp: Span, id: ast::NodeId) {
8282

8383
fn resolve_vtable_map_entry(fcx: @FnCtxt, sp: Span, id: ast::NodeId) {
8484
// Resolve any method map entry
85-
match fcx.inh.vtable_map.find(&id) {
86-
None => {}
87-
Some(origins) => {
88-
let r_origins = resolve_origins(fcx, sp, *origins);
89-
let vtable_map = fcx.ccx.vtable_map;
90-
vtable_map.insert(id, r_origins);
91-
debug!("writeback::resolve_vtable_map_entry(id={}, vtables={:?})",
92-
id, r_origins.repr(fcx.tcx()));
85+
{
86+
let origins_opt = {
87+
let vtable_map = fcx.inh.vtable_map.borrow();
88+
vtable_map.get().find_copy(&id)
89+
};
90+
match origins_opt {
91+
None => {}
92+
Some(origins) => {
93+
let r_origins = resolve_origins(fcx, sp, origins);
94+
let mut vtable_map = fcx.ccx.vtable_map.borrow_mut();
95+
vtable_map.get().insert(id, r_origins);
96+
debug!("writeback::resolve_vtable_map_entry(id={}, vtables={:?})",
97+
id, r_origins.repr(fcx.tcx()));
98+
}
9399
}
94100
}
95101

branches/try2/src/librustc/middle/typeck/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ impl Repr for vtable_origin {
204204
}
205205
}
206206

207-
pub type vtable_map = @mut HashMap<ast::NodeId, vtable_res>;
207+
pub type vtable_map = @RefCell<HashMap<ast::NodeId, vtable_res>>;
208208

209209

210210
// Information about the vtable resolutions for for a trait impl.
@@ -459,7 +459,7 @@ pub fn check_crate(tcx: ty::ctxt,
459459
let ccx = @mut CrateCtxt {
460460
trait_map: trait_map,
461461
method_map: @mut HashMap::new(),
462-
vtable_map: @mut HashMap::new(),
462+
vtable_map: @RefCell::new(HashMap::new()),
463463
tcx: tcx
464464
};
465465

0 commit comments

Comments
 (0)