summaryrefslogtreecommitdiff
path: root/libguile/continuations.h
diff options
context:
space:
mode:
authorMarius Vollmer <mvo@zagadka.de>2004-12-23 15:30:16 +0000
committerMarius Vollmer <mvo@zagadka.de>2004-12-23 15:30:16 +0000
commit5c5c27dc0d3ff3d74ddb64b3054900ebbbab6d61 (patch)
treeb36d02682ea7e050c99c3a8aaf8023009e64663c /libguile/continuations.h
parente6e63c5632cc83ba922e559cf515282e02d954b9 (diff)
downloadguile-5c5c27dc0d3ff3d74ddb64b3054900ebbbab6d61.tar.gz
(scm_t_contregs): New 'offset' member for relocating debug frames.
(scm_make_continuation): Set it.
Diffstat (limited to 'libguile/continuations.h')
-rw-r--r--libguile/continuations.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/libguile/continuations.h b/libguile/continuations.h
index 6f0982033..d1298c22d 100644
--- a/libguile/continuations.h
+++ b/libguile/continuations.h
@@ -55,8 +55,19 @@ typedef struct
size_t num_stack_items; /* size of the saved stack. */
unsigned long seq; /* dynamic root identifier. */
- /* the most recently created debug frame on the live stack, before
- it was saved. */
+ /* The offset from the live stack location and this copy. This is
+ used to adjust pointers from within the copied stack to the stack
+ itself.
+
+ Thus, when you read a pointer from the copied stack that points
+ into the live stack, you need to add OFFSET so that it points
+ into the copy.
+ */
+ scm_t_ptrdiff offset;
+
+ /* The most recently created debug frame on the live stack, before
+ it was saved. This need to be adjusted with OFFSET, above.
+ */
struct scm_t_debug_frame *dframe;
SCM_STACKITEM stack[1]; /* copied stack of size num_stack_items. */