@@ -789,21 +789,32 @@ impl Liveness {
789
789
str:: from_utf8_owned ( io:: mem:: with_mem_writer ( |wr| {
790
790
let wr = wr as & mut io:: Writer ;
791
791
{
792
- let lnks = self . ir . lnks . borrow ( ) ;
792
+ let lnks = self . ir . lnks . try_borrow ( ) ;
793
793
write ! ( wr,
794
794
"[ln({}) of kind {:?} reads" ,
795
795
* ln,
796
- lnks. get( ) [ * ln] ) ;
796
+ lnks. and_then( |lnks| Some ( lnks. get( ) [ * ln] ) ) ) ;
797
+ }
798
+ let users = self . users . try_borrow ( ) ;
799
+ match users {
800
+ Some ( users) => {
801
+ self . write_vars ( wr, ln, |idx| users. get ( ) [ idx] . reader ) ;
802
+ write ! ( wr, " writes" ) ;
803
+ self . write_vars ( wr, ln, |idx| users. get ( ) [ idx] . writer ) ;
804
+ }
805
+ None => {
806
+ write ! ( wr, " (users borrowed)" ) ;
807
+ }
808
+ }
809
+ let successors = self . successors . try_borrow ( ) ;
810
+ match successors {
811
+ Some ( successors) => {
812
+ write ! ( wr, " precedes {}]" , successors. get( ) [ * ln] . to_str( ) ) ;
813
+ }
814
+ None => {
815
+ write ! ( wr, " precedes (successors borrowed)]" ) ;
816
+ }
797
817
}
798
- let users = self . users . borrow ( ) ;
799
- self . write_vars ( wr, ln, |idx| users. get ( ) [ idx] . reader ) ;
800
- write ! ( wr, " writes" ) ;
801
- self . write_vars ( wr, ln, |idx| users. get ( ) [ idx] . writer ) ;
802
- let successor = {
803
- let successors = self . successors . borrow ( ) ;
804
- successors. get ( ) [ * ln]
805
- } ;
806
- write ! ( wr, " precedes {}]" , successor. to_str( ) ) ;
807
818
} ) )
808
819
}
809
820
0 commit comments