]> gitweb.factorcode.org Git - factor.git/commitdiff
Lock callbacks in memory
authorslava <slava@factorcode.org>
Mon, 16 Oct 2006 22:06:34 +0000 (22:06 +0000)
committerslava <slava@factorcode.org>
Mon, 16 Oct 2006 22:06:34 +0000 (22:06 +0000)
TODO.FACTOR.txt
library/compiler/alien/alien-callback.factor

index 36285dbc1ffedfb6be17b92eb10aded6ff43b489..e3a8aeb901eddd1a60c0993f8040f18c12ec2b4c 100644 (file)
@@ -1,7 +1,6 @@
 - live search: timer delay would be nice
 - help responder has no way to access { "foo" "bar" }
 - httpd search tools
-- lock callbacks
 
 + ui:
 
index d3065d7a2c9b7bb6df098f0849dbfe6b8c866b75..091508e68bc673f612d11af75ba02dd96fb7448f 100644 (file)
@@ -4,6 +4,14 @@ IN: alien
 USING: compiler errors generic hashtables inference
 kernel namespaces sequences strings words parser prettyprint ;
 
+! Callbacks are registered in a global hashtable. If you clear
+! this hashtable, they will all be blown away by code GC, beware
+SYMBOL: callbacks
+
+H{ } clone callbacks set-global
+
+: register-callback ( word -- ) dup callbacks get set-hash ;
+
 TUPLE: alien-callback return parameters quot xt ;
 C: alien-callback make-node ;
 
@@ -26,7 +34,7 @@ M: alien-callback-error summary
     pop-literal nip over set-alien-callback-quot
     pop-literal nip over set-alien-callback-parameters
     pop-literal nip over set-alien-callback-return
-    gensym over set-alien-callback-xt
+    gensym dup register-callback over set-alien-callback-xt
     callback-bottom
 ] "infer" set-word-prop