@@ -247,7 +247,7 @@ struct IrMaps {
247
247
248
248
num_live_nodes : Cell < uint > ,
249
249
num_vars : Cell < uint > ,
250
- live_node_map : HashMap < NodeId , LiveNode > ,
250
+ live_node_map : RefCell < HashMap < NodeId , LiveNode > > ,
251
251
variable_map : HashMap < NodeId , Variable > ,
252
252
capture_info_map : HashMap < NodeId , @~[ CaptureInfo ] > ,
253
253
var_kinds : ~[ VarKind ] ,
@@ -264,7 +264,7 @@ fn IrMaps(tcx: ty::ctxt,
264
264
capture_map : capture_map,
265
265
num_live_nodes : Cell :: new ( 0 ) ,
266
266
num_vars : Cell :: new ( 0 ) ,
267
- live_node_map : HashMap :: new ( ) ,
267
+ live_node_map : RefCell :: new ( HashMap :: new ( ) ) ,
268
268
variable_map : HashMap :: new ( ) ,
269
269
capture_info_map : HashMap :: new ( ) ,
270
270
var_kinds : ~[ ] ,
@@ -289,7 +289,8 @@ impl IrMaps {
289
289
node_id : NodeId ,
290
290
lnk : LiveNodeKind ) {
291
291
let ln = self . add_live_node ( lnk) ;
292
- self . live_node_map . insert ( node_id, ln) ;
292
+ let mut live_node_map = self . live_node_map . borrow_mut ( ) ;
293
+ live_node_map. get ( ) . insert ( node_id, ln) ;
293
294
294
295
debug ! ( "{} is node {}" , ln. to_str( ) , node_id) ;
295
296
}
@@ -616,7 +617,8 @@ fn Liveness(ir: @mut IrMaps, specials: Specials) -> Liveness {
616
617
impl Liveness {
617
618
pub fn live_node ( & self , node_id : NodeId , span : Span ) -> LiveNode {
618
619
let ir: & mut IrMaps = self . ir ;
619
- match ir. live_node_map . find ( & node_id) {
620
+ let live_node_map = ir. live_node_map . borrow ( ) ;
621
+ match live_node_map. get ( ) . find ( & node_id) {
620
622
Some ( & ln) => ln,
621
623
None => {
622
624
// This must be a mismatch between the ir_map construction
0 commit comments