]> gitweb.factorcode.org Git - factor.git/blob - basis/compiler/cfg/ssa/destruction/copies/copies.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / basis / compiler / cfg / ssa / destruction / copies / copies.factor
1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs hashtables fry kernel make namespaces
4 sequences compiler.cfg.ssa.destruction.state compiler.cfg.parallel-copy ;
5 IN: compiler.cfg.ssa.destruction.copies
6
7 ERROR: bad-copy ;
8
9 : compute-copies ( assoc -- assoc' )
10     dup assoc-size <hashtable> [
11         '[
12             [
13                 2dup eq? [ 2drop ] [
14                     _ 2dup key?
15                     [ bad-copy ] [ set-at ] if
16                 ] if
17             ] with each
18         ] assoc-each
19     ] keep ;
20
21 : insert-copies ( -- )
22     waiting get [
23         [ instructions>> building ] dip '[
24             building get pop
25             _ compute-copies parallel-copy
26             ,
27         ] with-variable
28     ] assoc-each ;