! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien.c-types arrays assocs classes classes.algebra
-classes.algebra.private classes.maybe classes.tuple
-combinators.short-circuit fry generic kernel math namespaces sequences
-sets words ;
+
+USING: accessors alien.c-types arrays assocs classes
+classes.algebra classes.algebra.private classes.maybe
+classes.struct classes.tuple combinators.short-circuit fry
+generic kernel math namespaces sequences sets words ;
+
FROM: classes.tuple.private => tuple-layout ;
IN: stack-checker.dependencies
M: depends-on-tuple-layout satisfied?
[ class>> tuple-layout ] [ layout>> ] bi eq? ;
+TUPLE: depends-on-struct-slots class slots ;
+
+: add-depends-on-struct-slots ( class slots -- )
+ [ drop +conditional+ depends-on ]
+ [ depends-on-struct-slots add-conditional-dependency ] 2bi ;
+
+M: depends-on-struct-slots satisfied?
+ [ class>> struct-slots ] [ slots>> ] bi eq? ;
+
TUPLE: depends-on-flushable word ;
: add-depends-on-flushable ( word -- )