1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-21 12:10:26 +02:00
guile/module
Andy Wingo af95414f1d Various RTL VM and calling convention tweaks
* libguile/instructions.c (FOR_EACH_INSTRUCTION_WORD_TYPE): Allow for
  five-word instructions, and for new instruction word types.

* libguile/vm-engine.c (RETURN_ONE_VALUE): Instead of returning the
  value in the fixed part of the call frame, return it in the same place
  multiple-value returns go: from slot 1.
  (BR_ARITHMETIC): Allow arithmetic tests to be negated.
  (rtl_vm_engine): Change calling convention to use the same location
  for single and multiple-value returns.  Renumber all instructions.

  (halt, halt/values): Fold into a single instruction (halt).
  (call): Take the location of the procedure instead of the location of
  the call frame.  Also take the number of args, and reset the sp before
  jumping to the procedure, so as to indicate the number of arguments.
  (call/values): Remove, as the new calling convention has RA == MVRA.
  (tail-call): Require the procedure to be shuffled down already, and
  take "nlocals" as an arg instead of "nargs".
  (receive, receive-values): New instructions, for receiving returned
  values from calls.
  (return-values): Rename from return/values.  Remove "values".
  (alloc-frame): Rename from reserve-locals.
  (reset-frame): New instruction.
  (drop-locals): Remove.
  (br-if-=, br-if-<, br-if-<=): Allow these instructions to be
  negatable.
  (br-if->, br-if->=): Remove.  Probably a bad idea, given NaN.
  (box-ref): Don't bother trying to do a reverse lookup -- the
  toplevel-box, module-box, and resolve instructions should handle
  that.
  (resolve): Add arg to check that the variable is bound.
  (toplevel-box, module-box): New instructions, replacing toplevel-ref,
  toplevel-set, module-ref, and module-set.

* libguile/vm.c (rtl_boot_continuation_code, rtl_values_code): Adapt to
  instruction set changes.

* module/Makefile.am: Make the assembler and disassembler dependent on
  vm-operations.h.

* module/system/vm/assembler.scm:
* module/system/vm/disassembler.scm: Adapt to instruction changes and
  new instruction word kinds.

* test-suite/tests/rtl.test: Adapt to instruction set changes.
2013-08-11 16:45:31 +02:00
..
ice-9 String ports use UTF-8; ignore %default-port-encoding. 2013-08-07 01:22:22 -04:00
language Inline escape-only prompt bodies in the Tree-IL 2013-08-11 16:45:31 +02:00
oop Merge remote-tracking branch 'origin/stable-2.0' 2013-01-31 11:52:42 +01:00
rnrs String ports use UTF-8; ignore %default-port-encoding. 2013-08-07 01:22:22 -04:00
scripts instead of our custom .go format, use elf 2012-06-22 13:40:50 +02:00
srfi String ports use UTF-8; ignore %default-port-encoding. 2013-08-07 01:22:22 -04:00
sxml Remove duplicate definitions of call/ec' and let/ec'. 2013-04-06 15:40:19 +02:00
system Various RTL VM and calling convention tweaks 2013-08-11 16:45:31 +02:00
texinfo texinfo plain-text: Use match' for stexi->plain-text'. 2013-03-22 22:09:05 +01:00
web Merge remote-tracking branch 'origin/stable-2.0' 2013-07-18 15:31:34 -04:00
Makefile.am Various RTL VM and calling convention tweaks 2013-08-11 16:45:31 +02:00
rnrs.scm Add missing R6RS `open-file-input/output-port' procedure 2012-11-12 20:47:57 +01:00
statprof.scm
texinfo.scm texinfo: Recognize `@:'. 2013-03-21 18:52:29 +01:00