]> gitweb.factorcode.org Git - factor.git/commitdiff
stack-checker.dependencies: adding depends-on-struct-slots
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 14 Jan 2022 03:51:25 +0000 (19:51 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 14 Jan 2022 03:51:25 +0000 (19:51 -0800)
basis/stack-checker/dependencies/dependencies.factor

index 33c65d1cd9acbd7b54cc6cc75dcf8e776dcc150d..649d2fd95b6d6a05e7928411dde3a659686401fc 100644 (file)
@@ -1,9 +1,11 @@
 ! 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
 
@@ -126,6 +128,15 @@ TUPLE: depends-on-tuple-layout class layout ;
 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 -- )