summaryrefslogtreecommitdiff
path: root/libguile/programs.h
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/programs.h')
-rw-r--r--libguile/programs.h25
1 files changed, 8 insertions, 17 deletions
diff --git a/libguile/programs.h b/libguile/programs.h
index 4b5447fb8..024ca1926 100644
--- a/libguile/programs.h
+++ b/libguile/programs.h
@@ -43,6 +43,7 @@
#define _SCM_PROGRAMS_H_
#include <libguile.h>
+#include <libguile/objcodes.h>
/*
* Programs
@@ -50,26 +51,16 @@
typedef unsigned char scm_byte_t;
-struct scm_program {
- size_t size; /* the size of the program */
- unsigned char nargs; /* the number of arguments */
- unsigned char nrest; /* the number of rest argument (0 or 1) */
- unsigned char nlocs; /* the number of local variables */
- unsigned char nexts; /* the number of external variables */
- scm_byte_t *base; /* program base address */
- SCM objs; /* constant objects */
- SCM external; /* external environment */
- SCM holder; /* the owner of bytecode */
-};
-
extern scm_t_bits scm_tc16_program;
#define SCM_PROGRAM_P(x) (SCM_SMOB_PREDICATE (scm_tc16_program, x))
-#define SCM_PROGRAM_DATA(x) ((struct scm_program *) SCM_SMOB_DATA (x))
+#define SCM_PROGRAM_OBJCODE(x) (SCM_SMOB_OBJECT (x))
+#define SCM_PROGRAM_OBJTABLE(x) (SCM_SMOB_OBJECT_2 (x))
+#define SCM_PROGRAM_EXTERNALS(x) (SCM_SMOB_OBJECT_3 (x))
+#define SCM_PROGRAM_DATA(x) (SCM_OBJCODE_DATA (SCM_PROGRAM_OBJCODE (x)))
#define SCM_VALIDATE_PROGRAM(p,x) SCM_MAKE_VALIDATE (p, x, PROGRAM_P)
-extern SCM scm_c_make_program (void *addr, size_t size, SCM objs, SCM holder);
-extern SCM scm_c_make_closure (SCM program, SCM external);
+extern SCM scm_make_program (SCM objcode, SCM objtable, SCM externals);
extern SCM scm_program_p (SCM obj);
extern SCM scm_program_base (SCM program);
@@ -79,9 +70,9 @@ extern SCM scm_program_objects (SCM program);
extern SCM scm_program_module (SCM program);
extern SCM scm_program_external (SCM program);
extern SCM scm_program_external_set_x (SCM program, SCM external);
-extern SCM scm_program_bytecode (SCM program);
+extern SCM scm_program_objcode (SCM program);
-extern SCM scm_c_program_source (struct scm_program *p, size_t ip);
+extern SCM scm_c_program_source (SCM program, size_t ip);
extern void scm_bootstrap_programs (void);
extern void scm_init_programs (void);