build-aux/mes-snarf.scm $<
mini-mes: mini-mes.h mini-mes.i mini-mes.environment.i mini-mes.symbols.i
+mini-mes: vector.c
mini-mes: mlibc.c mstart.c
mini-mes: GNUmakefile
mini-mes: module/mes/read-0-32.mo
chmod +x $@
guile-mini-mes: mini-mes.h mini-mes.i mini-mes.environment.i mini-mes.symbols.i
+guile-mini-mes: vector.c
guile-mini-mes: module/mes/read-0-32.mo
guile-mini-mes: scaffold/mini-mes.c
guile/mescc.scm $< > $@ || rm -f $@
make_cell_ (SCM type, SCM car, SCM cdr)
{
SCM x = alloc (1);
-#if __GNUC__
assert (TYPE (type) == TNUMBER);
-#endif
TYPE (x) = VALUE (type);
if (VALUE (type) == TCHAR || VALUE (type) == TNUMBER) {
if (car) CAR (x) = CAR (car);
list_of_char_equal_p (SCM a, SCM b) ///((internal))
{
while (a != cell_nil && b != cell_nil && VALUE (car (a)) == VALUE (car (b))) {
-#if __GNUC__
assert (TYPE (car (a)) == TCHAR);
assert (TYPE (car (b)) == TCHAR);
-#endif
a = cdr (a);
b = cdr (b);
}
append2 (SCM x, SCM y)
{
if (x == cell_nil) return y;
-#if __GNUC__
assert (TYPE (x) == TPAIR);
-#endif
return cons (car (x), append2 (cdr (x), y));
}
SCM
set_car_x (SCM x, SCM e)
{
-#if __GNUC__
assert (TYPE (x) == TPAIR);
-#endif
CAR (x) = e;
return cell_unspecified;
}
VALUE (tmp_num) = TVECTOR;
SCM v = alloc (k);
SCM x = make_cell_ (tmp_num, k, v);
+#if 0
+ //__GNUC__
for (int i=0; i<k; i++) g_cells[v+i] = g_cells[vector_entry (cell_unspecified)];
+#else
+ for (int i=0; i<k; i++)
+ {
+ SCM y = v+i;
+ SCM z = vector_entry (cell_unspecified);
+ //g_cells[y] = g_cells[z];
+ SCM zz = TYPE (z);
+ TYPE (y) = zz;
+ zz = CAR (z);
+ CAR (y) = zz;
+ zz = CDR (z);
+ CDR (y) = zz;
+ }
+#endif
return x;
}
{
assert (TYPE (x) == TVECTOR);
assert (VALUE (i) < LENGTH (x));
+#if 0
+ //__GNUC__
g_cells[VECTOR (x)+VALUE (i)] = g_cells[vector_entry (e)];
+#else
+ SCM y = VECTOR (x)+VALUE (i);
+ SCM z = vector_entry (e);
+ //g_cells[y] = g_cells[z];
+ SCM zz = TYPE (z);
+ TYPE (y) = zz;
+ zz = CAR (z);
+ CAR (y) = zz;
+ zz = CDR (z);
+ CDR (y) = zz;
+#endif
return cell_unspecified;
}
SCM p = VECTOR (v);
while (x != cell_nil)
{
+#if 0
+ //__GNUC__
g_cells[p++] = g_cells[vector_entry (car (x))];
+#else
+ SCM y = p;
+ SCM z = vector_entry (car (x));
+ //g_cells[p++] = g_cells[y];
+ SCM zz = TYPE (z);
+ TYPE (y) = zz;
+ zz = CAR (z);
+ CAR (y) = zz;
+ zz = CDR (z);
+ CDR (y) = zz;
+ p++;
+#endif
x = cdr (x);
}
return v;