jumps encoded using 24 bits, not 19; blocks no longer aligned
authorAndy Wingo <wingo@pobox.com>
Thu, 17 Sep 2009 12:58:31 +0000 (14:58 +0200)
committerAndy Wingo <wingo@pobox.com>
Fri, 16 Oct 2009 13:56:11 +0000 (15:56 +0200)
commit97fcf583b7239ea17dbb73eae9438d21136eb2db
treef92ae6b6b840255fe58289b9ed3824aac3cbd0c5
parentf95f82f8e183f2744740bdc950dba9c856e09094
jumps encoded using 24 bits, not 19; blocks no longer aligned

* libguile/_scm.h (SCM_OBJCODE_MINOR_VERSION): Bump.
* libguile/vm-i-system.c (FETCH_OFFSET, BR): Labels are no longer 8-byte
  aligned; instead, jumps are encoded into 3 bytes instead of 2.
  (br, br-if, br-if-not, br-if-eq, br-if-not-eq, br-if-null)
  (br-if-not-null, mv-call): Adapt for new length of br instructions (3
  bytes instead of 2).

* libguile/vm.c (really_make_boot_program): Adapt hand-coded bytecode
  for new offset regime.

* module/language/assembly.scm (align-block): No alignment necessary.

* module/language/assembly/compile-bytecode.scm (write-bytecode): Write
  out breaks as 24-bit relative jumps.
* module/language/assembly/decompile-bytecode.scm (decode-load-program):
  Decompile break instructions.
libguile/_scm.h
libguile/vm-i-system.c
libguile/vm.c
module/language/assembly.scm
module/language/assembly/compile-bytecode.scm
module/language/assembly/decompile-bytecode.scm