move module and meta inside programs' object tables
authorAndy Wingo <wingo@pobox.com>
Sat, 17 Jan 2009 15:42:53 +0000 (16:42 +0100)
committerAndy Wingo <wingo@pobox.com>
Sat, 17 Jan 2009 15:42:53 +0000 (16:42 +0100)
commit2fda0242214e1b650b8fd3eb084e1c930a8399a5
treecb0e118575713554b98b11e4d15c91a0605f6941
parenta72317988fa29377928d30c7e52b5acf63b6943a
move module and meta inside programs' object tables

* libguile/programs.h (struct scm_program): Remove the module and meta
  fields.

* libguile/programs.c (scm_c_make_program): Add a new argument, `objs'.
  If it's a vector, we'll look for the module and the metadata in there,
  instead of having them in the scm_program structure.
  (scm_c_make_closure, program_mark, scm_program_meta)
  (scm_c_program_source, scm_program_module): Adapt to the new program
  representation.

* libguile/objcodes.c (scm_objcode_to_program): Pass #f as the object
  table when making the program.

* libguile/vm-engine.h (CACHE_PROGRAM):
* libguile/vm-engine.c (vm_run): Rework to use the simple vector API for
  getting the current object table. Call the helper,
  vm_make_boot_program, to make the boot program.

* libguile/vm-i-loader.c (load-program): Set the current module and the
  meta in the object vector, which we pass to scm_c_make_program.

* libguile/vm-i-system.c (toplevel-ref, toplevel-set): Adapt to the new
  program representation.

* module/language/glil/compile-objcode.scm (codegen): Clarify.
libguile/objcodes.c
libguile/programs.c
libguile/programs.h
libguile/vm-engine.c
libguile/vm-engine.h
libguile/vm-i-loader.c
libguile/vm-i-system.c
libguile/vm.c
module/language/glil/compile-objcode.scm