1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel accessors math sequences grouping namespaces
4 compiler.cfg.linearization.order ;
5 IN: compiler.cfg.linear-scan.numbering
7 : number-instructions ( rpo -- )
8 linearization-order 0 [
10 [ (>>insn#) ] [ drop 2 + ] 2bi
14 SYMBOL: check-numbering?
16 ERROR: bad-numbering bb ;
18 : check-block-numbering ( bb -- )
19 dup instructions>> [ insn#>> ] map sift [ <= ] monotonic?
20 [ drop ] [ bad-numbering ] if ;
22 : check-numbering ( cfg -- )
24 [ linearization-order [ check-block-numbering ] each ] [ drop ] if ;