@@ -133,7 +133,7 @@ impl of to_str::to_str for variable {
133
133
// assignment. And so forth.
134
134
135
135
impl methods for live_node {
136
- fn is_valid ( ) -> bool { * self != uint:: max_value }
136
+ pure fn is_valid ( ) -> bool { * self != uint:: max_value }
137
137
}
138
138
139
139
fn invalid_node ( ) -> live_node { live_node ( uint:: max_value) }
@@ -571,7 +571,7 @@ class liveness {
571
571
fn live_on_exit( ln: live_node, var: variable)
572
572
-> option < live_node_kind > {
573
573
574
- self . live_on_entry( self . successors[ * ln] , var)
574
+ self . live_on_entry( copy self. successors[ * ln] , var)
575
575
}
576
576
577
577
fn used_on_entry( ln: live_node, var: variable) -> bool {
@@ -590,7 +590,7 @@ class liveness {
590
590
fn assigned_on_exit( ln: live_node, var: variable)
591
591
-> option < live_node_kind > {
592
592
593
- self . assigned_on_entry( self . successors[ * ln] , var)
593
+ self . assigned_on_entry( copy self. successors[ * ln] , var)
594
594
}
595
595
596
596
fn indices( ln: live_node, op: fn ( uint) ) {
@@ -627,14 +627,14 @@ class liveness {
627
627
wr. write_str( "[ln(" ) ;
628
628
wr. write_uint( * ln) ;
629
629
wr. write_str( ") of kind " ) ;
630
- wr. write_str( #fmt[ "%?" , self . ir. lnks[ * ln] ] ) ;
630
+ wr. write_str( #fmt[ "%?" , copy self. ir. lnks[ * ln] ] ) ;
631
631
wr. write_str( " reads" ) ;
632
632
self . write_vars( wr, ln, { |idx| self . users[ idx] . reader} ) ;
633
633
wr. write_str( " writes" ) ;
634
634
self . write_vars( wr, ln, { |idx| self . users[ idx] . writer} ) ;
635
635
wr. write_str( " " ) ;
636
636
wr. write_str( " precedes " ) ;
637
- wr. write_str( self . successors[ * ln] . to_str( ) ) ;
637
+ wr. write_str( ( copy self. successors[ * ln] ) . to_str( ) ) ;
638
638
wr. write_str( "]" ) ;
639
639
}
640
640
}
@@ -668,9 +668,9 @@ class liveness {
668
668
669
669
let mut changed = false ;
670
670
self . indices2( ln, succ_ln) { |idx, succ_idx|
671
- changed |= copy_if_invalid( self . users[ succ_idx] . reader,
671
+ changed |= copy_if_invalid( copy self. users[ succ_idx] . reader,
672
672
self . users[ idx] . reader) ;
673
- changed |= copy_if_invalid( self . users[ succ_idx] . writer,
673
+ changed |= copy_if_invalid( copy self. users[ succ_idx] . writer,
674
674
self . users[ idx] . writer) ;
675
675
if self . users[ succ_idx] . used && !self. users[ idx] . used {
676
676
self. users[ idx] . used = true ;
0 commit comments