mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 03:30:27 +02:00
* src/vm.c (lookup_variable): New function.
(scm_make_bytecode): Call lookup_variable for top-level variables. * src/vm_engine.h (VM_VARIABLE_REF, VM_VARIABLE_SET): New macros. * src/vm_system.c (TOPLEVEL_VAR, TOPLEVEL_VAR_SET): Removed. Use VM_VARIABLE_REF and VM_VARIABLE_SET instead.
This commit is contained in:
parent
db7880185f
commit
9df03fd0c1
3 changed files with 33 additions and 18 deletions
|
@ -95,17 +95,6 @@
|
|||
* Type checking
|
||||
*/
|
||||
|
||||
#define VM_ASSERT_PROGRAM(OBJ) SCM_VALIDATE_PROGRAM (1, OBJ)
|
||||
|
||||
#undef VM_ASSERT_BOUND
|
||||
#if VM_CHECK_BINDING
|
||||
#define VM_ASSERT_BOUND(CELL) \
|
||||
if (SCM_UNBNDP (SCM_CDR (CELL))) \
|
||||
SCM_MISC_ERROR ("Unbound variable: ~S", SCM_LIST1 (SCM_CAR (CELL)))
|
||||
#else
|
||||
#define VM_ASSERT_BOUND(CELL)
|
||||
#endif
|
||||
|
||||
#undef VM_ASSERT_LINK
|
||||
#if VM_CHECK_LINK
|
||||
#define VM_ASSERT_LINK(OBJ) \
|
||||
|
@ -115,6 +104,23 @@
|
|||
#define VM_ASSERT_LINK(OBJ)
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Top-level variable
|
||||
*/
|
||||
|
||||
#define VM_VARIABLE_REF(VAR) SCM_CDDR (VAR)
|
||||
#define VM_VARIABLE_SET(VAR,VAL) SCM_SETCDR (SCM_CDR (VAR), VAL)
|
||||
|
||||
#undef VM_ASSERT_BOUND
|
||||
#if VM_CHECK_BINDING
|
||||
#define VM_ASSERT_BOUND(VAR) \
|
||||
if (SCM_UNBNDP (VM_VARIABLE_REF (VAR))) \
|
||||
SCM_MISC_ERROR ("Unbound variable: ~S", SCM_LIST1 (SCM_CADR (VAR)))
|
||||
#else
|
||||
#define VM_ASSERT_BOUND(CELL)
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Hooks
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue