mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
Parenthesize and type SCM_FRAME' macros; check layout of
scm_vm_frame'.
* libguile/frames.c: Add compile-time assertions on the layout of `struct scm_vm_frame'. (RELOC): Parenthesize and type VAL. * libguile/frames.h (SCM_FRAME_STRUCT): Write in terms of `SCM_FRAME_DATA_ADDRESS'. (SCM_FRAME_DATA_ADDRESS): Parenthesize and type FP. (SCM_FRAME_SET_DYNAMIC_LINK): Write in terms of `SCM_FRAME_DYNAMIC_LINK'. * libguile/vm.c (RELOC): Parenthesize and type SCM_P.
This commit is contained in:
parent
17cc6e40a9
commit
0fc9040fa2
3 changed files with 16 additions and 7 deletions
|
@ -70,9 +70,10 @@ struct scm_vm_frame
|
|||
SCM stack[1]; /* Variable-length */
|
||||
};
|
||||
|
||||
#define SCM_FRAME_STRUCT(fp) ((struct scm_vm_frame*)(((SCM*)(fp)) - 4))
|
||||
#define SCM_FRAME_STRUCT(fp) \
|
||||
((struct scm_vm_frame *) SCM_FRAME_DATA_ADDRESS (fp))
|
||||
|
||||
#define SCM_FRAME_DATA_ADDRESS(fp) (fp - 4)
|
||||
#define SCM_FRAME_DATA_ADDRESS(fp) (((SCM *) (fp)) - 4)
|
||||
#define SCM_FRAME_STACK_ADDRESS(fp) (SCM_FRAME_STRUCT (fp)->stack)
|
||||
#define SCM_FRAME_UPPER_ADDRESS(fp) ((SCM*)&SCM_FRAME_STRUCT (fp)->return_address)
|
||||
#define SCM_FRAME_LOWER_ADDRESS(fp) ((SCM*)SCM_FRAME_STRUCT (fp))
|
||||
|
@ -91,7 +92,7 @@ struct scm_vm_frame
|
|||
#define SCM_FRAME_DYNAMIC_LINK(fp) \
|
||||
(SCM_FRAME_STRUCT (fp)->dynamic_link)
|
||||
#define SCM_FRAME_SET_DYNAMIC_LINK(fp, dl) \
|
||||
SCM_FRAME_STRUCT (fp)->dynamic_link = (dl)
|
||||
SCM_FRAME_DYNAMIC_LINK (fp) = (dl)
|
||||
#define SCM_FRAME_VARIABLE(fp,i) \
|
||||
(SCM_FRAME_STRUCT (fp)->stack[i])
|
||||
#define SCM_FRAME_PROGRAM(fp) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue