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
|
! Quotation which coerces return value to required type
|
||||||
infer-return ;
|
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 )
|
: callback-xt ( word -- alien )
|
||||||
callbacks get [
|
callbacks get [
|
||||||
dup "stack-cleanup" word-prop <callback>
|
dup "stack-cleanup" word-prop <callback>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2004, 2010 Slava Pestov.
|
! Copyright (C) 2004, 2010 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors byte-arrays byte-vectors continuations.private
|
USING: accessors assocs byte-arrays byte-vectors continuations.private
|
||||||
init kernel kernel.private math namespaces sequences ;
|
destructors init kernel kernel.private math namespaces sequences ;
|
||||||
IN: alien
|
IN: alien
|
||||||
|
|
||||||
BUILTIN: alien { underlying c-ptr read-only initial: f } expired ;
|
BUILTIN: alien { underlying c-ptr read-only initial: f } expired ;
|
||||||
|
@ -111,6 +111,15 @@ SYMBOL: callbacks
|
||||||
current-callback
|
current-callback
|
||||||
[ 2drop call ] [ swap call( callback -- ) drop ] 3bi ; inline
|
[ 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
|
! A utility for defining global variables that are recompiled in
|
||||||
! every session
|
! every session
|
||||||
TUPLE: expiry-check object alien ;
|
TUPLE: expiry-check object alien ;
|
||||||
|
|
Loading…
Reference in New Issue