summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/programs.c8
-rw-r--r--src/vm.c4
-rw-r--r--src/vm_engine.c1
-rw-r--r--src/vm_engine.h24
-rw-r--r--src/vm_loader.c6
-rw-r--r--src/vm_system.c28
6 files changed, 42 insertions, 29 deletions
diff --git a/src/programs.c b/src/programs.c
index 111f87f66..d45cd96dd 100644
--- a/src/programs.c
+++ b/src/programs.c
@@ -149,10 +149,10 @@ SCM_DEFINE (scm_program_arity, "program-arity", 1, 0, 0,
SCM_VALIDATE_PROGRAM (1, program);
p = SCM_PROGRAM_DATA (program);
- return SCM_LIST4 (SCM_MAKINUM (p->nargs),
- SCM_MAKINUM (p->nrest),
- SCM_MAKINUM (p->nlocs),
- SCM_MAKINUM (p->nexts));
+ return SCM_LIST4 (scm_from_uchar (p->nargs),
+ scm_from_uchar (p->nrest),
+ scm_from_uchar (p->nlocs),
+ scm_from_uchar (p->nexts));
}
#undef FUNC_NAME
diff --git a/src/vm.c b/src/vm.c
index 36bd9e6ee..8a826ef41 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -369,7 +369,7 @@ SCM_DEFINE (scm_vm_fp, "vm:fp", 1, 0, 0,
SCM_VALIDATE_VM (1, vm); \
vp = SCM_VM_DATA (vm); \
if (SCM_FALSEP (vp->hooks[n])) \
- vp->hooks[n] = scm_make_hook (SCM_MAKINUM (1)); \
+ vp->hooks[n] = scm_make_hook (SCM_I_MAKINUM (1)); \
return vp->hooks[n]; \
}
@@ -528,7 +528,7 @@ SCM_DEFINE (scm_vm_fetch_code, "vm-fetch-code", 1, 0, 0,
list = SCM_LIST1 (scm_str2symbol (p->name));
for (i = 1; i <= p->len; i++)
- list = scm_cons (SCM_MAKINUM (ip[i]), list);
+ list = scm_cons (scm_from_uint8 (ip[i]), list);
return scm_reverse_x (list, SCM_EOL);
}
#undef FUNC_NAME
diff --git a/src/vm_engine.c b/src/vm_engine.c
index c275cfb02..21b8468ef 100644
--- a/src/vm_engine.c
+++ b/src/vm_engine.c
@@ -43,6 +43,7 @@
#include "vm_engine.h"
+
static SCM
vm_run (SCM vm, SCM program, SCM args)
#define FUNC_NAME "vm-engine"
diff --git a/src/vm_engine.h b/src/vm_engine.h
index c4ce6b40f..745b68972 100644
--- a/src/vm_engine.h
+++ b/src/vm_engine.h
@@ -130,10 +130,20 @@
vp->fp = fp; \
}
-#define CACHE_PROGRAM() \
-{ \
- bp = SCM_PROGRAM_DATA (program); \
- objects = SCM_VELTS (bp->objs); \
+/* Get a local copy of the program's "object table" (i.e. the vector of
+ external bindings that are referenced by the program), initialized by
+ `load-program'. */
+#define CACHE_PROGRAM() \
+{ \
+ size_t _vsize; \
+ ssize_t _vincr; \
+ scm_t_array_handle _vhandle; \
+ \
+ bp = SCM_PROGRAM_DATA (program); \
+ /* Was: objects = SCM_VELTS (bp->objs); */ \
+ objects = scm_vector_elements (bp->objs, &_vhandle, \
+ &_vsize, &_vincr); \
+ scm_array_handle_release (&_vhandle); \
}
#define SYNC_BEFORE_GC() \
@@ -208,12 +218,8 @@
#define CONS(x,y,z) \
{ \
- SCM cell; \
SYNC_BEFORE_GC (); \
- SCM_NEWCELL (cell); \
- SCM_SET_CELL_OBJECT_0 (cell, y); \
- SCM_SET_CELL_OBJECT_1 (cell, z); \
- x = cell; \
+ x = scm_cons (y, z); \
}
#define POP_LIST(n) \
diff --git a/src/vm_loader.c b/src/vm_loader.c
index fb30b54ee..6516b36c5 100644
--- a/src/vm_loader.c
+++ b/src/vm_loader.c
@@ -130,7 +130,7 @@ VM_DEFINE_LOADER (load_program, "load-program")
}
/* init object table */
- if (SCM_VECTORP (x))
+ if (scm_is_vector (x))
{
p->objs = x;
POP (x);
@@ -178,7 +178,7 @@ VM_DEFINE_LOADER (link, "link")
size_t len;
FETCH_LENGTH (len);
- sym = scm_mem2symbol (ip, len);
+ sym = scm_from_locale_symboln (ip, len);
ip += len;
#if 0
@@ -193,7 +193,7 @@ VM_DEFINE_LOADER (link, "link")
/* Create a new variable if not defined yet */
var = scm_eval_closure_lookup (scm_standard_eval_closure (mod),
sym, SCM_BOOL_T);
- PUSH (scm_variable_ref (var));
+ PUSH (var);
/* Was: SCM_VARVCELL (var)); */
NEXT;
}
diff --git a/src/vm_system.c b/src/vm_system.c
index 894c74643..9b4522747 100644
--- a/src/vm_system.c
+++ b/src/vm_system.c
@@ -119,19 +119,19 @@ VM_DEFINE_INSTRUCTION (make_eol, "make-eol", 0, 0, 1)
VM_DEFINE_INSTRUCTION (make_int8, "make-int8", 1, 0, 1)
{
- PUSH (SCM_MAKINUM ((signed char) FETCH ()));
+ PUSH (scm_from_schar ((signed char) FETCH ()));
NEXT;
}
VM_DEFINE_INSTRUCTION (make_int8_0, "make-int8:0", 0, 0, 1)
{
- PUSH (SCM_MAKINUM (0));
+ PUSH (SCM_INUM0);
NEXT;
}
VM_DEFINE_INSTRUCTION (make_int8_1, "make-int8:1", 0, 0, 1)
{
- PUSH (SCM_MAKINUM (1));
+ PUSH (SCM_I_MAKINUM (1));
NEXT;
}
@@ -139,7 +139,7 @@ VM_DEFINE_INSTRUCTION (make_int16, "make-int16", 2, 0, 1)
{
int h = FETCH ();
int l = FETCH ();
- PUSH (SCM_MAKINUM ((signed short) (h << 8) + l));
+ PUSH (scm_from_short ((signed short) (h << 8) + l));
NEXT;
}
@@ -197,8 +197,8 @@ VM_DEFINE_INSTRUCTION (list_break, "list-break", 0, 0, 0)
#define LOCAL_REF(i) SCM_FRAME_VARIABLE (fp, i)
#define LOCAL_SET(i,o) SCM_FRAME_VARIABLE (fp, i) = o
-#define VARIABLE_REF(v) SCM_CDR (v)
-#define VARIABLE_SET(v,o) SCM_SETCDR (v, o)
+/* #define VARIABLE_REF(v) SCM_CDR (v) */
+/* #define VARIABLE_SET(v,o) SCM_SETCDR (v, o) */
/* ref */
@@ -231,13 +231,19 @@ VM_DEFINE_INSTRUCTION (external_ref, "external-ref", 1, 0, 1)
VM_DEFINE_INSTRUCTION (variable_ref, "variable-ref", 0, 0, 1)
{
SCM x = *sp;
- SCM o = VARIABLE_REF (x);
- if (SCM_UNBNDP (o))
+
+ if (SCM_FALSEP (scm_variable_bound_p (x)))
{
- err_args = SCM_LIST1 (SCM_CAR (x));
+ err_args = SCM_LIST1 (x);
+ /* Was: err_args = SCM_LIST1 (SCM_CAR (x)); */
goto vm_error_unbound;
}
- *sp = o;
+ else
+ {
+ SCM o = scm_variable_ref (x);
+ *sp = o;
+ }
+
NEXT;
}
@@ -267,7 +273,7 @@ VM_DEFINE_INSTRUCTION (external_set, "external-set", 1, 1, 0)
VM_DEFINE_INSTRUCTION (variable_set, "variable-set", 0, 1, 0)
{
- VARIABLE_SET (sp[0], sp[-1]);
+ scm_variable_set_x (sp[0], sp[-1]);
scm_set_object_property_x (sp[-1], scm_sym_name, SCM_CAR (sp[0]));
sp -= 2;
NEXT;