1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-18 17:50:29 +02:00

(scm_t_contregs): New 'offset' member for relocating debug frames.

(scm_make_continuation): Set it.
This commit is contained in:
Marius Vollmer 2004-12-23 15:30:16 +00:00
parent e6e63c5632
commit 5c5c27dc0d
2 changed files with 14 additions and 2 deletions

View file

@ -134,6 +134,7 @@ scm_make_continuation (int *first)
#if ! SCM_STACK_GROWS_UP
src -= stack_size;
#endif
continuation->offset = continuation->stack - src;
memcpy (continuation->stack, src, sizeof (SCM_STACKITEM) * stack_size);
#ifdef __ia64__

View file

@ -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. */