@@ -250,7 +250,7 @@ struct IrMaps {
250
250
live_node_map : RefCell < HashMap < NodeId , LiveNode > > ,
251
251
variable_map : RefCell < HashMap < NodeId , Variable > > ,
252
252
capture_info_map : RefCell < HashMap < NodeId , @~[ CaptureInfo ] > > ,
253
- var_kinds : ~[ VarKind ] ,
253
+ var_kinds : RefCell < ~[ VarKind ] > ,
254
254
lnks : ~[ LiveNodeKind ] ,
255
255
}
256
256
@@ -267,7 +267,7 @@ fn IrMaps(tcx: ty::ctxt,
267
267
live_node_map : RefCell :: new ( HashMap :: new ( ) ) ,
268
268
variable_map : RefCell :: new ( HashMap :: new ( ) ) ,
269
269
capture_info_map : RefCell :: new ( HashMap :: new ( ) ) ,
270
- var_kinds : ~[ ] ,
270
+ var_kinds : RefCell :: new ( ~[ ] ) ,
271
271
lnks : ~[ ] ,
272
272
}
273
273
}
@@ -297,7 +297,10 @@ impl IrMaps {
297
297
298
298
pub fn add_variable ( & mut self , vk : VarKind ) -> Variable {
299
299
let v = Variable ( self . num_vars . get ( ) ) ;
300
- self . var_kinds . push ( vk) ;
300
+ {
301
+ let mut var_kinds = self . var_kinds . borrow_mut ( ) ;
302
+ var_kinds. get ( ) . push ( vk) ;
303
+ }
301
304
self . num_vars . set ( self . num_vars . get ( ) + 1 ) ;
302
305
303
306
match vk {
@@ -325,7 +328,8 @@ impl IrMaps {
325
328
}
326
329
327
330
pub fn variable_name ( & mut self , var : Variable ) -> @str {
328
- match self . var_kinds [ * var] {
331
+ let var_kinds = self . var_kinds . borrow ( ) ;
332
+ match var_kinds. get ( ) [ * var] {
329
333
Local ( LocalInfo { ident : nm, .. } ) | Arg ( _, nm) => {
330
334
self . tcx . sess . str_of ( nm)
331
335
} ,
0 commit comments