alien,stack-checker.alien: move callback-destructor to the alien vocab
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.db4
parent
3f65984055
commit
5cf8c7cfba
|
@ -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>
|
||||
|
|
|
@ -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 ;
|
||||
|
|
Loading…
Reference in New Issue