@@ -246,7 +246,7 @@ struct IrMaps {
246
246
capture_map : moves:: CaptureMap ,
247
247
248
248
num_live_nodes : Cell < uint > ,
249
- num_vars : uint ,
249
+ num_vars : Cell < uint > ,
250
250
live_node_map : HashMap < NodeId , LiveNode > ,
251
251
variable_map : HashMap < NodeId , Variable > ,
252
252
capture_info_map : HashMap < NodeId , @~[ CaptureInfo ] > ,
@@ -263,7 +263,7 @@ fn IrMaps(tcx: ty::ctxt,
263
263
method_map : method_map,
264
264
capture_map : capture_map,
265
265
num_live_nodes : Cell :: new ( 0 ) ,
266
- num_vars : 0 ,
266
+ num_vars : Cell :: new ( 0 ) ,
267
267
live_node_map : HashMap :: new ( ) ,
268
268
variable_map : HashMap :: new ( ) ,
269
269
capture_info_map : HashMap :: new ( ) ,
@@ -295,9 +295,9 @@ impl IrMaps {
295
295
}
296
296
297
297
pub fn add_variable ( & mut self , vk : VarKind ) -> Variable {
298
- let v = Variable ( self . num_vars ) ;
298
+ let v = Variable ( self . num_vars . get ( ) ) ;
299
299
self . var_kinds . push ( vk) ;
300
- self . num_vars += 1 ;
300
+ self . num_vars . set ( self . num_vars . get ( ) + 1 ) ;
301
301
302
302
match vk {
303
303
Local ( LocalInfo { id : node_id, .. } ) | Arg ( node_id, _) => {
@@ -604,7 +604,8 @@ fn Liveness(ir: @mut IrMaps, specials: Specials) -> Liveness {
604
604
s : specials,
605
605
successors : @mut vec:: from_elem ( ir. num_live_nodes . get ( ) ,
606
606
invalid_node ( ) ) ,
607
- users : @mut vec:: from_elem ( ir. num_live_nodes . get ( ) * ir. num_vars ,
607
+ users : @mut vec:: from_elem ( ir. num_live_nodes . get ( ) *
608
+ ir. num_vars . get ( ) ,
608
609
invalid_users ( ) ) ,
609
610
loop_scope : @mut ~[ ] ,
610
611
break_ln : @RefCell :: new ( HashMap :: new ( ) ) ,
@@ -672,7 +673,7 @@ impl Liveness {
672
673
}
673
674
674
675
pub fn idx ( & self , ln : LiveNode , var : Variable ) -> uint {
675
- * ln * self . ir . num_vars + * var
676
+ * ln * self . ir . num_vars . get ( ) + * var
676
677
}
677
678
678
679
pub fn live_on_entry ( & self , ln : LiveNode , var : Variable )
@@ -713,7 +714,7 @@ impl Liveness {
713
714
op : |uint , uint|) {
714
715
let node_base_idx = self . idx ( ln, Variable ( 0 u) ) ;
715
716
let succ_base_idx = self . idx ( succ_ln, Variable ( 0 u) ) ;
716
- for var_idx in range ( 0 u, self . ir . num_vars ) {
717
+ for var_idx in range ( 0 u, self . ir . num_vars . get ( ) ) {
717
718
op ( node_base_idx + var_idx, succ_base_idx + var_idx) ;
718
719
}
719
720
}
@@ -723,7 +724,7 @@ impl Liveness {
723
724
ln : LiveNode ,
724
725
test: |uint| -> LiveNode ) {
725
726
let node_base_idx = self . idx ( ln, Variable ( 0 ) ) ;
726
- for var_idx in range ( 0 u, self . ir . num_vars ) {
727
+ for var_idx in range ( 0 u, self . ir . num_vars . get ( ) ) {
727
728
let idx = node_base_idx + var_idx;
728
729
if test ( idx) . is_valid ( ) {
729
730
write ! ( wr, " {}" , Variable ( var_idx) . to_str( ) ) ;
0 commit comments