Skip to content
  • Andy Wingo's avatar
    VM continuations store FP/SP by offset · 00ed4043
    Andy Wingo authored
    * libguile/continuations.c (scm_i_continuation_to_frame):
    * libguile/stacks.c (scm_make_stack):
    * libguile/vm.c (scm_i_vm_cont_to_frame, scm_i_vm_capture_stack):
      (vm_return_to_continuation_inner)
      (struct vm_reinstate_partial_continuation_data):
      (vm_reinstate_partial_continuation_inner):
      (vm_reinstate_partial_continuation):
    * libguile/vm.h (sstruct scm_vm_cont): Simplify VM continuations by
      recording the top FP by offset, not value + reloc.
    * libguile/frames.c (frame_offset, scm_i_vm_frame_offset): Remove unused
      functions.
    * libguile/frames.h (SCM_VALIDATE_VM_FRAME, scm_i_vm_frame_offset):
      Remove.
    * libguile/control.c (reify_partial_continuation): Once we know the
      base_fp, relocate the dynamic stack.
    * libguile/dynstack.h:
    * libguile/dynstack.c (scm_dynstack_relocate_prompts): New function.
      (scm_dynstack_wind_prompt): Adapt to add new fp offset.
    00ed4043