Scheme frame objects hold relative stack offsets
authorAndy Wingo <wingo@pobox.com>
Thu, 21 Nov 2013 10:20:19 +0000 (11:20 +0100)
committerAndy Wingo <wingo@pobox.com>
Thu, 21 Nov 2013 10:20:19 +0000 (11:20 +0100)
commit89b235afd34482f2e7d2af553f43d0744895ee83
tree520831cc6c7c85e5994bc253e02a4a200fcaef47
parenteadd9eb4c9f658c9a6081d1b644c7c472d241061
Scheme frame objects hold relative stack offsets

* libguile/frames.h: Wrap the C interface to VM frames in
  BUILDING_LIBGUILE.  Change VM frames to record relative offsets into a
  stack held by some other object, so that if the stack moves they will
  remain valid.
* libguile/frames.c (scm_c_make_frame): Remove offset argument.
  (scm_i_frame_offset): Instead, compute the offset from the stack
  holder.
  (scm_i_frame_stack_base): New helper.
  (scm_frame_previous): Adapt.

* libguile/stacks.c (scm_make_stack)
* libguile/vm.c (vm_dispatch_hook):
* libguile/continuations.c (scm_i_continuation_to_frame): Adapt.
libguile/continuations.c
libguile/frames.c
libguile/frames.h
libguile/stacks.c
libguile/vm.c