! 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>
! 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 ;
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 ;