@@ -789,21 +789,32 @@ impl Liveness {
789789 str:: from_utf8_owned ( io:: mem:: with_mem_writer ( |wr| {
790790 let wr = wr as & mut io:: Writer ;
791791 {
792- let lnks = self . ir . lnks . borrow ( ) ;
792+ let lnks = self . ir . lnks . try_borrow ( ) ;
793793 write ! ( wr,
794794 "[ln({}) of kind {:?} reads" ,
795795 * 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+ }
797817 }
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( ) ) ;
807818 } ) )
808819 }
809820
0 commit comments