dup begin-local-analysis instructions>> building set ;
: end-basic-block ( block -- )
- [ end-local-analysis ] when* building off ;
+ end-local-analysis building off ;
: (begin-basic-block) ( block -- block' )
- <basic-block> swap [ over connect-bbs ] when* dup set-basic-block ;
+ <basic-block> dup set-basic-block [ connect-bbs ] keep ;
: begin-basic-block ( block -- block' )
dup end-basic-block (begin-basic-block) ;
sift [ f ] [
dup first second height-state set
[ first ] map
- f begin-basic-block
+ <basic-block> dup set-basic-block
[ connect-Nto1-bbs ] keep
] if-empty ;
{
V{ T{ ##call { word set-slot } } T{ ##branch } }
} [
- [ f call-node-1 emit-node ] V{ } make drop
+ [
+ <basic-block> dup set-basic-block call-node-1 emit-node
+ ] V{ } make drop
predecessors>> first instructions>>
] cfg-unit-test