diff options
author | Andy Wingo <wingo@pobox.com> | 2008-10-16 12:55:27 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2008-10-16 12:55:27 +0200 |
commit | 28a2f57bde42030e96b4c2ab574336c6e8c394b5 (patch) | |
tree | 22ecb529d9e75e3ef24d446646cb0888bf5886e8 | |
parent | 2588eccdf4b69272f978305c7c79eb4c7975b92f (diff) | |
download | guile-28a2f57bde42030e96b4c2ab574336c6e8c394b5.tar.gz |
fix asyncs running in the vm; re-enable popen.scm compilation
* libguile/vm-i-system.c (goto/args): Sync the registers before doing the
SCM_TICK. We probably need a different SCM_TICK that saves the regs
only if necessary. This fixes GC problems with a compiled popen.scm.
* ice-9/Makefile.am: Re-enable popen.scm compilation.
-rw-r--r-- | ice-9/Makefile.am | 7 | ||||
-rw-r--r-- | libguile/vm-i-system.c | 1 |
2 files changed, 3 insertions, 5 deletions
diff --git a/ice-9/Makefile.am b/ice-9/Makefile.am index 134d6f7b3..43e5284b3 100644 --- a/ice-9/Makefile.am +++ b/ice-9/Makefile.am @@ -36,7 +36,7 @@ SOURCES = psyntax-pp.scm boot-9.scm \ format.scm getopt-long.scm hcons.scm i18n.scm \ lineio.scm ls.scm mapping.scm \ networking.scm null.scm optargs.scm poe.scm \ - posix.scm q.scm r4rs.scm r5rs.scm \ + popen.scm posix.scm q.scm r4rs.scm r5rs.scm \ rdelim.scm receive.scm regex.scm runq.scm rw.scm \ safe-r5rs.scm safe.scm session.scm slib.scm stack-catch.scm \ streams.scm string-fun.scm syncase.scm threads.scm \ @@ -49,16 +49,13 @@ SOURCES = psyntax-pp.scm boot-9.scm \ # snarf-check-and-output-texi) fails. need to figure out what the # problem is. # -# popen.scm compiles, but then breaks the test suite via random lost gc -# references. need to figure out what's going on there. -# # occam-channel and gds-client use goops, which is not yet vm-compatible # (it does some compilation-like optimizations for the interpreter), so # punt on them for the time being. # # psyntax.scm needs help. fortunately it's only needed when recompiling # psyntax-pp.scm. -NOCOMP_SOURCES = match.scm occam-channel.scm gds-client.scm psyntax.scm popen.scm +NOCOMP_SOURCES = match.scm occam-channel.scm gds-client.scm psyntax.scm include $(top_srcdir)/guilec.mk diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c index 251239493..80eb9249a 100644 --- a/libguile/vm-i-system.c +++ b/libguile/vm-i-system.c @@ -604,6 +604,7 @@ VM_DEFINE_INSTRUCTION (goto_args, "goto/args", 1, -1, 1) vm_goto_args: x = sp[-nargs]; + SYNC_REGISTER (); SCM_TICK; /* allow interrupt here */ /* |