From fcd4901bef43fb17ab245e70ac420249bb951ef6 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Wed, 20 Aug 2008 14:32:36 -0700 Subject: [PATCH] fix some compilation warnings, in anticipation of moving to libguile/ * src/Makefile.am: Use standard guile CFLAGS, which has -Werror and -Wmissing-prototypes. * src/frames.h: * src/instructions.h: * src/objcodes.h: * src/programs.h: * src/vm.h: * src/vm.c: Fix warnings, mostly about prototypes. * src/vm_system.c: Fix a tricky x-is-not-initialized error. Thanks, GCC! --- src/Makefile.am | 4 ---- src/frames.h | 7 +++++++ src/instructions.h | 8 ++++++++ src/objcodes.h | 3 +++ src/programs.h | 9 +++++++++ src/vm.c | 5 ++++- src/vm.h | 24 ++++++++++++++++++++++++ src/vm_system.c | 11 +++++++---- 8 files changed, 62 insertions(+), 9 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index fab6063fc..8b0a8e710 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -3,10 +3,6 @@ bin_SCRIPTS = guilec guile-disasm guile_vm_SOURCES = guile-vm.c guile_vm_LDADD = libguile-vm.la ../libguile/libguile.la -AM_CFLAGS = -Wall -g - -CFLAGS:=$(filter-out -Wmissing-prototypes,$(CFLAGS)) - lib_LTLIBRARIES = libguile-vm.la libguile_vm_la_SOURCES = \ bootstrap.h \ diff --git a/src/frames.h b/src/frames.h index b0ac0c79a..a7292ff74 100644 --- a/src/frames.h +++ b/src/frames.h @@ -104,6 +104,13 @@ extern scm_t_bits scm_tc16_heap_frame; #define SCM_HEAP_FRAME_POINTER(f) (SCM_HEAP_FRAME_DATA (f) + 2) #define SCM_VALIDATE_HEAP_FRAME(p,x) SCM_MAKE_VALIDATE (p, x, HEAP_FRAME_P) +extern SCM scm_frame_program (SCM frame); +extern SCM scm_frame_local_ref (SCM frame, SCM index); +extern SCM scm_frame_local_set_x (SCM frame, SCM index, SCM val); +extern SCM scm_frame_return_address (SCM frame); +extern SCM scm_frame_dynamic_link (SCM frame); +extern SCM scm_frame_external_link (SCM frame); + extern SCM scm_c_make_heap_frame (SCM *fp); extern void scm_bootstrap_frames (void); extern void scm_init_frames (void); diff --git a/src/instructions.h b/src/instructions.h index d3f183761..2f872adc7 100644 --- a/src/instructions.h +++ b/src/instructions.h @@ -79,6 +79,14 @@ struct scm_instruction { extern struct scm_instruction scm_instruction_table[]; extern struct scm_instruction *scm_lookup_instruction (SCM name); +extern SCM scm_instruction_list (void); +extern SCM scm_instruction_p (SCM obj); +extern SCM scm_instruction_length (SCM inst); +extern SCM scm_instruction_pops (SCM inst); +extern SCM scm_instruction_pushes (SCM inst); +extern SCM scm_instruction_to_opcode (SCM inst); +extern SCM scm_opcode_to_instruction (SCM op); + extern void scm_bootstrap_instructions (void); extern void scm_init_instructions (void); diff --git a/src/objcodes.h b/src/objcodes.h index 9acdbcc0f..2cedefa98 100644 --- a/src/objcodes.h +++ b/src/objcodes.h @@ -62,6 +62,9 @@ extern scm_t_bits scm_tc16_objcode; extern SCM scm_load_objcode (SCM file); extern SCM scm_objcode_to_program (SCM objcode); +extern SCM scm_objcode_p (SCM obj); +extern SCM scm_bytecode_to_objcode (SCM bytecode, SCM nlocs, SCM nexts); +extern SCM scm_objcode_to_u8vector (SCM objcode); extern void scm_bootstrap_objcodes (void); extern void scm_init_objcodes (void); diff --git a/src/programs.h b/src/programs.h index 8bc3f8ad5..04f2d459d 100644 --- a/src/programs.h +++ b/src/programs.h @@ -72,6 +72,15 @@ extern scm_t_bits scm_tc16_program; extern SCM scm_c_make_program (void *addr, size_t size, SCM holder); extern SCM scm_c_make_closure (SCM program, SCM external); +extern SCM scm_program_p (SCM obj); +extern SCM scm_program_base (SCM program); +extern SCM scm_program_arity (SCM program); +extern SCM scm_program_meta (SCM program); +extern SCM scm_program_objects (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 void scm_bootstrap_programs (void); extern void scm_init_programs (void); diff --git a/src/vm.c b/src/vm.c index e0a368c2b..d8e604a34 100644 --- a/src/vm.c +++ b/src/vm.c @@ -44,6 +44,7 @@ #endif #include +#include "bootstrap.h" #include "frames.h" #include "instructions.h" #include "objcodes.h" @@ -175,7 +176,9 @@ vm_heapify_frames_1 (struct scm_vm *vp, SCM *fp, SCM *sp, SCM **destp) { SCM frame; SCM *dl = SCM_FRAME_DYNAMIC_LINK (fp); +#if 0 SCM *src = SCM_FRAME_UPPER_ADDRESS (fp); +#endif SCM *dest = SCM_FRAME_LOWER_ADDRESS (fp); if (!dl) @@ -336,7 +339,7 @@ SCM_DEFINE (scm_vm_version, "vm-version", 0, 0, 0, #undef FUNC_NAME SCM_DEFINE (scm_the_vm, "the-vm", 0, 0, 0, - (), + (void), "") #define FUNC_NAME s_scm_the_vm { diff --git a/src/vm.h b/src/vm.h index d0fe11265..af4c81588 100644 --- a/src/vm.h +++ b/src/vm.h @@ -80,6 +80,30 @@ extern SCM scm_vm_apply (SCM vm, SCM program, SCM args); extern SCM scm_vm_option_ref (SCM vm, SCM key); extern SCM scm_vm_option_set_x (SCM vm, SCM key, SCM val); +extern SCM scm_vm_version (void); +extern SCM scm_the_vm (void); +extern SCM scm_vm_p (SCM obj); +extern SCM scm_vm_ip (SCM vm); +extern SCM scm_vm_sp (SCM vm); +extern SCM scm_vm_fp (SCM vm); +extern SCM scm_vm_boot_hook (SCM vm); +extern SCM scm_vm_halt_hook (SCM vm); +extern SCM scm_vm_next_hook (SCM vm); +extern SCM scm_vm_break_hook (SCM vm); +extern SCM scm_vm_enter_hook (SCM vm); +extern SCM scm_vm_apply_hook (SCM vm); +extern SCM scm_vm_exit_hook (SCM vm); +extern SCM scm_vm_return_hook (SCM vm); +extern SCM scm_vm_option (SCM vm, SCM key); +extern SCM scm_set_vm_option_x (SCM vm, SCM key, SCM val); +extern SCM scm_vm_stats (SCM vm); +extern SCM scm_vm_this_frame (SCM vm); +extern SCM scm_vm_last_frame (SCM vm); +extern SCM scm_vm_last_ip (SCM vm); +extern SCM scm_vm_save_stack (SCM vm); +extern SCM scm_vm_fetch_code (SCM vm); +extern SCM scm_vm_fetch_stack (SCM vm); + extern SCM scm_load_compiled_with_vm (SCM file); extern void scm_init_vm (void); diff --git a/src/vm_system.c b/src/vm_system.c index 179208e0a..353b3b8a2 100644 --- a/src/vm_system.c +++ b/src/vm_system.c @@ -490,14 +490,15 @@ VM_DEFINE_INSTRUCTION (call, "call", 1, -1, 1) */ if (SCM_VM_CONT_P (x)) { + program = x; vm_call_cc: /* Check the number of arguments */ if (nargs != 1) - scm_wrong_num_args (x); + scm_wrong_num_args (program); /* Reinstate the continuation */ EXIT_HOOK (); - reinstate_vm_cont (vp, x); + reinstate_vm_cont (vp, program); CACHE_REGISTER (); program = SCM_FRAME_PROGRAM (fp); CACHE_PROGRAM (); @@ -607,13 +608,15 @@ VM_DEFINE_INSTRUCTION (tail_call, "tail-call", 1, -1, 1) *sp = scm_apply (x, args, SCM_EOL); goto vm_return; } + + program = x; + /* * Continuation call */ - if (SCM_VM_CONT_P (x)) + if (SCM_VM_CONT_P (program)) goto vm_call_cc; - program = x; goto vm_error_wrong_type_apply; }