-! Copyright (C) 2009, 2010 Slava Pestov.
+! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors combinators.short-circuit kernel namespaces
-sequences math compiler.utilities compiler.cfg
-compiler.cfg.instructions compiler.cfg.rpo
+USING: accessors combinators.short-circuit kernel sequences math
+compiler.utilities compiler.cfg compiler.cfg.instructions compiler.cfg.rpo
compiler.cfg.predecessors compiler.cfg.utilities ;
IN: compiler.cfg.block-joining
: update-successors ( bb pred -- )
[ successors>> ] dip successors<< ;
-: join-unlikely ( bb pred -- )
- over unlikely?>> [ t >>unlikely? ] when 2drop ;
-
: join-block ( bb pred -- )
- [ join-instructions ]
- [ update-successors ]
- [ join-unlikely ]
- 2tri ;
-
-SYMBOL: changed?
+ [ join-instructions ] [ update-successors ] 2bi ;
: join-blocks ( cfg -- cfg' )
needs-predecessors
dup post-order [
dup join-block?
- [ changed? on dup predecessor join-block ] [ drop ] if
+ [ dup predecessor join-block ] [ drop ] if
] each
- changed? get [ cfg-changed predecessors-changed ] when ;
+ cfg-changed predecessors-changed ;
compiler.cfg.scheduling compiler.cfg.gc-checks
compiler.cfg.save-contexts compiler.cfg.ssa.destruction
compiler.cfg.build-stack-frame compiler.cfg.linear-scan
-compiler.cfg.stacks.uninitialized compiler.cfg.block-joining ;
+compiler.cfg.stacks.uninitialized ;
IN: compiler.cfg.finalization
: finalize-cfg ( cfg -- cfg' )
insert-save-contexts
destruct-ssa
linear-scan
- join-blocks
build-stack-frame ;