RTL compiler supports static bitvectors
authorAndy Wingo <wingo@pobox.com>
Sun, 3 Nov 2013 20:45:34 +0000 (21:45 +0100)
committerAndy Wingo <wingo@pobox.com>
Sun, 3 Nov 2013 20:48:48 +0000 (21:48 +0100)
commitd65514a2de2ef922d3613f0e35dea27a88313392
tree7019c09ba8b323b0de16c0871a4b1b1373eb2226
parent9ae9debbd35505ef4040c1a876f7bd64434d6d14
RTL compiler supports static bitvectors

* libguile/arrays.c (scm_from_contiguous_typed_array):
* libguile/bytevectors.c (scm_uniform_array_to_bytevector): For
  bitvectors, round up the length to 32-bit units, as they are stored
  internally.  Otherwise I think this probably does the wrong thing for
  the last word on big-endian systems.
* libguile/bitvectors.c (BITVECTOR_LENGTH, BITVECTOR_BITS):
  (scm_c_make_bitvector): Reorder the length and pointer words to match
  the layout of bytevectors.

* module/language/cps/primitives.scm (*branching-primcall-arities*):
* module/system/vm/assembler.scm (br-if-bitvector):
* module/system/vm/disassembler.scm (code-annotation): Add bitvector
  test support.

* module/system/vm/assembler.scm (<uniform-vector-backing-store>): Add
  an element-size field.
  (intern-constant): Adapt make-uniform-vector-backing-store call.  Use
  uniform-array->bytevector, as the old compiler did.
  (link-data): Add bitvector cases.
libguile/arrays.c
libguile/bitvectors.c
libguile/bytevectors.c
module/language/cps/primitives.scm
module/system/vm/assembler.scm
module/system/vm/disassembler.scm