@@ -248,7 +248,7 @@ struct IrMaps {
248
248
num_live_nodes : Cell < uint > ,
249
249
num_vars : Cell < uint > ,
250
250
live_node_map : RefCell < HashMap < NodeId , LiveNode > > ,
251
- variable_map : HashMap < NodeId , Variable > ,
251
+ variable_map : RefCell < HashMap < NodeId , Variable > > ,
252
252
capture_info_map : HashMap < NodeId , @~[ CaptureInfo ] > ,
253
253
var_kinds : ~[ VarKind ] ,
254
254
lnks : ~[ LiveNodeKind ] ,
@@ -265,7 +265,7 @@ fn IrMaps(tcx: ty::ctxt,
265
265
num_live_nodes : Cell :: new ( 0 ) ,
266
266
num_vars : Cell :: new ( 0 ) ,
267
267
live_node_map : RefCell :: new ( HashMap :: new ( ) ) ,
268
- variable_map : HashMap :: new ( ) ,
268
+ variable_map : RefCell :: new ( HashMap :: new ( ) ) ,
269
269
capture_info_map : HashMap :: new ( ) ,
270
270
var_kinds : ~[ ] ,
271
271
lnks : ~[ ] ,
@@ -302,7 +302,8 @@ impl IrMaps {
302
302
303
303
match vk {
304
304
Local ( LocalInfo { id : node_id, .. } ) | Arg ( node_id, _) => {
305
- self . variable_map . insert ( node_id, v) ;
305
+ let mut variable_map = self . variable_map . borrow_mut ( ) ;
306
+ variable_map. get ( ) . insert ( node_id, v) ;
306
307
} ,
307
308
ImplicitRet => { }
308
309
}
@@ -313,7 +314,8 @@ impl IrMaps {
313
314
}
314
315
315
316
pub fn variable ( & mut self , node_id : NodeId , span : Span ) -> Variable {
316
- match self . variable_map . find ( & node_id) {
317
+ let variable_map = self . variable_map . borrow ( ) ;
318
+ match variable_map. get ( ) . find ( & node_id) {
317
319
Some ( & var) => var,
318
320
None => {
319
321
self . tcx . sess . span_bug (
0 commit comments