factor/basis/compiler/cfg/cfg.factor

31 lines
718 B
Factor
Raw Normal View History

2008-07-20 05:24:37 -04:00
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
2008-11-03 00:09:31 -05:00
USING: kernel arrays vectors accessors namespaces ;
2008-07-20 05:24:37 -04:00
IN: compiler.cfg
TUPLE: basic-block < identity-tuple
id
2008-07-20 05:24:37 -04:00
number
2008-11-03 00:09:31 -05:00
{ instructions vector }
{ successors vector }
{ predecessors vector } ;
2008-07-20 05:24:37 -04:00
: <basic-block> ( -- basic-block )
basic-block new
V{ } clone >>instructions
V{ } clone >>successors
2008-11-03 00:09:31 -05:00
V{ } clone >>predecessors
\ basic-block counter >>id ;
2008-07-20 05:24:37 -04:00
2008-11-03 00:09:31 -05:00
TUPLE: cfg { entry basic-block } word label ;
C: <cfg> cfg
2008-10-19 02:10:21 -04:00
TUPLE: mr { instructions array } word label spill-counts ;
2008-07-20 05:24:37 -04:00
: <mr> ( instructions word label -- mr )
mr new
swap >>label
swap >>word
swap >>instructions ;