1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-14 15:40:19 +02:00

partial-cont-call works

* libguile/vm-i-system.c (partial-cont-call): Sync registers before
  splatting a partial continuation, and cache them back afterwards.

* libguile/vm.c (vm_reinstate_partial_continuation): Actually implement,
  except dynamic-wind.
This commit is contained in:
Andy Wingo 2010-02-24 16:56:45 +01:00
parent 6d804376e9
commit 078014374c
2 changed files with 53 additions and 5 deletions

View file

@ -999,8 +999,12 @@ VM_DEFINE_INSTRUCTION (94, partial_cont_call, "partial-cont-call", 0, -1, 0)
POP (extwinds);
POP (intwinds);
POP (vmcont);
vm_reinstate_partial_continuation (vm, vmcont, intwinds, extwinds);
SYNC_REGISTER ();
vm_reinstate_partial_continuation (vm, vmcont, intwinds, extwinds,
sp + 1 - fp, fp);
CACHE_REGISTER ();
program = SCM_FRAME_PROGRAM (fp);
CACHE_PROGRAM ();
NEXT;
}