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:
parent
e6e63c5632
commit
5c5c27dc0d
2 changed files with 14 additions and 2 deletions
|
@ -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__
|
||||
|
|
|
@ -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. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue