]> gitweb.factorcode.org Git - factor.git/commitdiff
alien,stack-checker.alien: move callback-destructor to the alien vocab
authorBjörn Lindqvist <bjourne@gmail.com>
Sun, 21 Sep 2014 22:02:57 +0000 (00:02 +0200)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 29 Sep 2014 14:30:22 +0000 (07:30 -0700)
It can't be placed in stack-checker.alien because that vocab isn't
included in deployed images which lead to weird errors when the
destructors trigger.

basis/stack-checker/alien/alien.factor
core/alien/alien.factor

index fab94157d1c15827207bcc91b84972edf4c63d14..12f2a7beebf219aee7647d8742a97df825e5af87 100644 (file)
@@ -104,14 +104,6 @@ TUPLE: alien-callback-params < alien-node-params xt ;
     ! Quotation which coerces return value to required type
     infer-return ;
 
-: delete-values ( value assoc -- )
-    [ rot drop = not ] with assoc-filter! drop ;
-
-TUPLE: callback-destructor callback ;
-
-M: callback-destructor dispose ( disposable -- )
-    callback>> [ callbacks get delete-values ] [ free-callback ] bi ;
-
 : callback-xt ( word -- alien )
     callbacks get [
         dup "stack-cleanup" word-prop <callback>
index 43617f451e4eaf6d0b51cfd9dbedf628aba23988..12466ef5c1f703fb404e638fc91030869b9e6a63 100755 (executable)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2004, 2010 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors byte-arrays byte-vectors continuations.private
-init kernel kernel.private math namespaces sequences ;
+USING: accessors assocs byte-arrays byte-vectors continuations.private
+destructors init kernel kernel.private math namespaces sequences ;
 IN: alien
 
 BUILTIN: alien { underlying c-ptr read-only initial: f } expired ;
@@ -111,6 +111,15 @@ SYMBOL: callbacks
     current-callback
     [ 2drop call ] [ swap call( callback -- ) drop ] 3bi ; inline
 
+! Used by stack-checker.alien to register destructors for callbacks.
+TUPLE: callback-destructor callback ;
+
+: delete-values ( value assoc -- )
+    [ rot drop = not ] with assoc-filter! drop ;
+
+M: callback-destructor dispose ( disposable -- )
+    callback>> [ callbacks get delete-values ] [ free-callback ] bi ;
+
 ! A utility for defining global variables that are recompiled in
 ! every session
 TUPLE: expiry-check object alien ;