1 ! Copyright (C) 2008, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors classes classes.tuple combinators.short-circuit
4 compiler.tree compiler.tree.propagation.info kernel math
6 IN: compiler.tree.escape-analysis.check
8 GENERIC: run-escape-analysis* ( node -- ? )
10 : unbox-inputs? ( nodes -- ? )
17 : run-escape-analysis? ( nodes -- ? )
18 { [ unbox-inputs? ] [ [ run-escape-analysis* ] any? ] } 1|| ;
20 M: #push run-escape-analysis*
21 literal>> class-of immutable-tuple-class? ;
23 M: #call run-escape-analysis*
24 immutable-tuple-boa? ;
26 M: #recursive run-escape-analysis*
27 child>> run-escape-analysis? ;
29 M: #branch run-escape-analysis*
30 children>> [ run-escape-analysis? ] any? ;
32 M: node run-escape-analysis* drop f ;