lib_LTLIBRARIES = libguilevm.la
libguilevm_la_SOURCES = vm.c
libguilevm_la_LDFLAGS = -version-info 0:0:0 -export-dynamic
-noinst_HEADERS = vm.h vm_engine.h vm-snarf.h
+noinst_HEADERS = vm.h vm_engine.h vm_expand.h
EXTRA_DIST = vm_engine.c vm_system.c vm_scheme.c vm_number.c \
test.scm guile-compile.in
-BUILT_SOURCES = vm_system.inst vm_scheme.inst vm_number.inst \
- vm_system.label vm_scheme.label vm_number.label \
- vm_system.opcode vm_scheme.opcode vm_number.opcode vm.x
+BUILT_SOURCES = vm_system.i vm_scheme.i vm_number.i vm.x
CFLAGS = -g -O2 -Wall
INCLUDES = $(GUILE_CFLAGS)
MAINTAINERCLEANFILES = Makefile.in config.h.in stamp-h.in
SNARF = guile-snarf
-SUFFIXES = .x .inst .label .opcode
+SUFFIXES = .x .i
.c.x:
$(SNARF) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $< > $@ \
|| { rm $@; false; }
-.c.inst:
- $(SNARF) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $< > $@ \
- || { rm $@; false; }
-
-.c.label:
- $(SNARF) -DSCM_SNARF_LABEL $(DEFS) $(INCLUDES) $(CPPFLAGS) \
- $(CFLAGS) $< > $@ || { rm $@; false; }
-
-.c.opcode:
- $(SNARF) -DSCM_SNARF_OPCODE $(DEFS) $(INCLUDES) $(CPPFLAGS) \
- $(CFLAGS) $< > $@ || { rm $@; false; }
+.c.i:
+ grep '^SCM_DEFINE' $< > $@
-$(BUILT_SOURCES): config.h vm-snarf.h
+$(BUILT_SOURCES): config.h vm_expand.h
guile-compile: guile-compile.in
sed -e 's!\@bindir\@!$(bindir)!' -e 's!\@PACKAGE\@!$(PACKAGE)!' \
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice. */
-#ifndef VM_SNARF_H
-#define VM_SNARF_H
-
#include "config.h"
+#ifndef VM_LABEL
#define VM_LABEL(TAG) l_##TAG##
#define VM_OPCODE(TAG) op_##TAG##
#define VM_TAG(TAG) case VM_OPCODE(TAG):
#define VM_ADDR(TAG) NULL
#endif /* not HAVE_LABELS_AS_VALUES */
+#endif /* VM_LABEL */
-#ifndef SCM_MAGIC_SNARFER
-
+#undef SCM_DEFINE_INSTRUCTION
+#undef SCM_DEFINE_VM_FUNCTION
+#ifdef VM_INSTRUCTION_TO_TABLE
/*
- * These are directly included in vm_engine.c
- */
-#define SCM_DEFINE_INSTRUCTION(TAG,NAME,TYPE) VM_TAG(TAG)
-#define SCM_DEFINE_VM_FUNCTION(TAG,SNAME,NAME,NARGS,RESTP) VM_TAG(TAG)
-
-#else /* SCM_MAGIC_SNARFER */
-#ifndef SCM_SNARF_OPCODE
-#ifndef SCM_SNARF_LABEL
-
-/*
- * These will go to *.inst
+ * These will go to scm_instruction_table in vm.c
*/
#define SCM_DEFINE_INSTRUCTION(TAG,NAME,TYPE) \
- SCM_SNARF_INIT_START {VM_OPCODE(TAG), TYPE, NAME, SCM_BOOL_F, NULL, 0, 0},
+ {VM_OPCODE(TAG), TYPE, NAME, SCM_PACK (0), NULL, 0, 0},
#define SCM_DEFINE_VM_FUNCTION(TAG,SNAME,NAME,NARGS,RESTP) \
- SCM_SNARF_INIT_START {VM_OPCODE(TAG), INST_NONE, NAME, SCM_BOOL_F, SNAME, NARGS, RESTP},
-
-#else /* SCM_SNARF_LABEL */
+ {VM_OPCODE(TAG), INST_NONE, NAME, SCM_PACK (0), SNAME, NARGS, RESTP},
+#else
+#ifdef VM_INSTRUCTION_TO_LABEL
/*
- * These will go to *.label
+ * These will go to jump_table in vm_engine.c
*/
-#define SCM_DEFINE_INSTRUCTION(TAG,NAME,TYPE) \
- SCM_SNARF_INIT_START VM_ADDR(TAG),
-#define SCM_DEFINE_VM_FUNCTION(TAG,SNAME,NAME,NARGS,RESTP) \
- SCM_SNARF_INIT_START VM_ADDR(TAG),
-
-#endif /* SCM_SNARF_LABEL */
-#else /* SCM_SNARF_OPCODE */
+#define SCM_DEFINE_INSTRUCTION(TAG,NAME,TYPE) VM_ADDR(TAG),
+#define SCM_DEFINE_VM_FUNCTION(TAG,SNAME,NAME,NARGS,RESTP) VM_ADDR(TAG),
+#else
+#ifdef VM_INSTRUCTION_TO_OPCODE
/*
- * These will go to *.opcode
+ * These will go to scm_opcode in vm.h
*/
-#define SCM_DEFINE_INSTRUCTION(TAG,NAME,TYPE) \
- SCM_SNARF_INIT_START VM_OPCODE(TAG),
-#define SCM_DEFINE_VM_FUNCTION(TAG,SNAME,NAME,NARGS,RESTP) \
- SCM_SNARF_INIT_START VM_OPCODE(TAG),
+#define SCM_DEFINE_INSTRUCTION(TAG,NAME,TYPE) VM_OPCODE(TAG),
+#define SCM_DEFINE_VM_FUNCTION(TAG,SNAME,NAME,NARGS,RESTP) VM_OPCODE(TAG),
-#endif /* SCM_SNARF_OPCODE */
-#endif /* SCM_MAGIC_SNARFER */
+#else /* Otherwise */
+/*
+ * These are directly included in vm_engine.c
+ */
+#define SCM_DEFINE_INSTRUCTION(TAG,NAME,TYPE) VM_TAG(TAG)
+#define SCM_DEFINE_VM_FUNCTION(TAG,SNAME,NAME,NARGS,RESTP) VM_TAG(TAG)
-#endif /* not VM_SNARF_H */
+#endif /* VM_INSTRUCTION_TO_OPCODE */
+#endif /* VM_INSTRUCTION_TO_LABEL */
+#endif /* VM_INSTRUCTION_TO_TABLE */