@@ -667,8 +667,8 @@ struct Liveness {
667
667
tcx : ty:: ctxt,
668
668
ir : @mut IrMaps ,
669
669
s : Specials ,
670
- successors : ~ [ mut LiveNode ] ,
671
- users : ~ [ mut Users ] ,
670
+ successors : @ mut ~ [ LiveNode ] ,
671
+ users : @ mut ~ [ Users ] ,
672
672
// The list of node IDs for the nested loop scopes
673
673
// we're in.
674
674
loop_scope: DVec < node_id > ,
@@ -684,14 +684,9 @@ fn Liveness(ir: @mut IrMaps, specials: Specials) -> Liveness {
684
684
ir: ir,
685
685
tcx: ir. tcx,
686
686
s: specials,
687
- successors:
688
- vec:: cast_to_mut(
689
- vec:: from_elem( ir. num_live_nodes,
690
- invalid_node( ) ) ) ,
691
- users:
692
- vec:: cast_to_mut(
693
- vec:: from_elem( ir. num_live_nodes * ir. num_vars,
694
- invalid_users( ) ) ) ,
687
+ successors: @mut vec:: from_elem( ir. num_live_nodes, invalid_node( ) ) ,
688
+ users: @mut vec:: from_elem( ir. num_live_nodes * ir. num_vars,
689
+ invalid_users( ) ) ,
695
690
loop_scope: DVec ( ) ,
696
691
break_ln: HashMap ( ) ,
697
692
cont_ln: HashMap ( )
@@ -916,12 +911,13 @@ impl Liveness {
916
911
917
912
let mut changed = false;
918
913
do self . indices2( ln, succ_ln) |idx, succ_idx| {
919
- changed |= copy_if_invalid( copy self. users[ succ_idx] . reader,
920
- & mut self . users[ idx] . reader) ;
921
- changed |= copy_if_invalid( copy self . users[ succ_idx] . writer,
922
- & mut self . users[ idx] . writer) ;
923
- if self . users[ succ_idx] . used && !self . users[ idx] . used {
924
- self . users[ idx] . used = true;
914
+ let users = & mut * self . users;
915
+ changed |= copy_if_invalid( copy users[ succ_idx] . reader,
916
+ & mut users[ idx] . reader) ;
917
+ changed |= copy_if_invalid( copy users[ succ_idx] . writer,
918
+ & mut users[ idx] . writer) ;
919
+ if users[ succ_idx] . used && !users[ idx] . used {
920
+ users[ idx] . used = true;
925
921
changed = true;
926
922
}
927
923
}
@@ -956,7 +952,8 @@ impl Liveness {
956
952
// Either read, write, or both depending on the acc bitset
957
953
fn acc( & self , ln: LiveNode , var: Variable , acc: uint) {
958
954
let idx = self . idx( ln, var) ;
959
- let user = & mut self . users[ idx] ;
955
+ let users = & mut * self . users;
956
+ let user = & mut users[ idx] ;
960
957
961
958
if ( acc & ACC_WRITE ) != 0 {
962
959
user. reader = invalid_node( ) ;
@@ -970,7 +967,7 @@ impl Liveness {
970
967
}
971
968
972
969
if ( acc & ACC_USE ) != 0 {
973
- self . users [ idx ] . used = true;
970
+ user . used = true;
974
971
}
975
972
976
973
debug!( "%s accesses[ %x] %s: %s",
0 commit comments