File tree 2 files changed +17
-3
lines changed
2 files changed +17
-3
lines changed Original file line number Diff line number Diff line change @@ -2054,7 +2054,7 @@ impl Compiler {
2054
2054
) -> CompileResult < ( ) > {
2055
2055
self . compile_expression ( subject) ?;
2056
2056
// Block at the end of the switch statement that we jump to after finishing a branch
2057
- let pattern_blocks = std:: iter:: repeat_with ( || self . new_block ( ) )
2057
+ let mut pattern_blocks = std:: iter:: repeat_with ( || self . new_block ( ) )
2058
2058
. take ( cases. len ( ) + 1 )
2059
2059
. collect :: < Vec < _ > > ( ) ;
2060
2060
eprintln ! ( "created pattern_blocks: {:?} - {:?}(end block)" , pattern_blocks. first( ) . unwrap( ) , pattern_blocks. last( ) . unwrap( ) ) ;
@@ -2118,7 +2118,21 @@ impl Compiler {
2118
2118
}
2119
2119
self . compile_statements ( & m. body ) ?;
2120
2120
}
2121
-
2121
+ let block = self . new_block ( ) ;
2122
+ pattern_blocks. push ( block) ;
2123
+ let code = self . current_code_info ( ) ;
2124
+ let _ = pattern_blocks. iter ( )
2125
+ . zip ( pattern_blocks. iter ( ) . skip ( 1 ) )
2126
+ . for_each ( |( a, b) | {
2127
+ eprintln ! ( "linking: {} -> {}" , a. 0 , b. 0 ) ;
2128
+ code. blocks [ a. 0 as usize ] . next = * b;
2129
+ } ) ;
2130
+ self . switch_to_block ( * pattern_blocks. last ( ) . unwrap ( ) ) ;
2131
+ let code = self . current_code_info ( ) ;
2132
+ for block in pattern_blocks {
2133
+ let b = & code. blocks [ block. 0 as usize ] ;
2134
+ eprintln ! ( "block: {} -> {}" , block. 0 , b. next. 0 ) ;
2135
+ }
2122
2136
Ok ( ( ) )
2123
2137
}
2124
2138
Original file line number Diff line number Diff line change @@ -227,7 +227,7 @@ impl CodeInfo {
227
227
let mut start_depths = vec ! [ u32 :: MAX ; self . blocks. len( ) ] ;
228
228
start_depths[ 0 ] = 0 ;
229
229
stack. push ( BlockIdx ( 0 ) ) ;
230
- const DEBUG : bool = false ;
230
+ const DEBUG : bool = true ;
231
231
' process_blocks: while let Some ( block) = stack. pop ( ) {
232
232
let mut depth = start_depths[ block. idx ( ) ] ;
233
233
if DEBUG {
You can’t perform that action at this time.
0 commit comments