1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-21 03:00:19 +02:00
guile/module/language/cps
Andy Wingo a08b3d40f8 Untag values and indexes for all bytevector instructions
* libguile/vm-engine.c (bv-s8-ref, bv-s16-ref, bv-s32-ref, bv-s64-ref):
  Unbox index and return unboxed S32 value.
  (bv-s8-set!, bv-s16-set!, bv-s32-set!, bv-s64-set!): Unbox index and
  take unboxed S32 value.
  (bv-u8-ref, bv-u16-ref, bv-u32-ref, bv-u64-ref)
  (bv-s8-set!, bv-s16-set!, bv-s32-set!, bv-s64-set!): Likewise, but
  with unsigned values.
  (bv-f32-ref, bv-f32-set!, bv-f64-ref, bv-f64-set!): Use memcpy to
  access the value so we don't have to think about alignment.  GCC will
  inline this to a single instruction on architectures that support
  unaligned access.
* libguile/vm.c (vm_error_out_of_range_uint64)
  (vm_error_out_of_range_int64): New helpers.

* module/language/cps/slot-allocation.scm (compute-var-representations):
  All bytevector ref operations produce untagged values.

* module/language/cps/types.scm (define-bytevector-accessors): Update
  for bytevector untagged indices and values.

* module/language/cps/utils.scm (compute-constant-values): Fix s64
  case.

* module/language/tree-il/compile-cps.scm (convert): Box results of all
  bytevector accesses, and unbox incoming indices and values.
2015-12-01 15:42:24 +01:00
..
closure-conversion.scm Fix miscompilation of closures allocated as vectors 2015-11-11 16:30:59 +01:00
compile-bytecode.scm Add support for unboxed s64 values 2015-12-01 15:42:19 +01:00
constructors.scm Add missing files 2015-07-22 18:27:37 +02:00
contification.scm Replace return primcalls with $values 2015-10-28 11:11:23 +00:00
cse.scm Add support for unboxed s64 values 2015-12-01 15:42:19 +01:00
dce.scm Factor out compute-effects/elide-type-checks from dce.scm 2015-07-24 11:39:18 +02:00
effects-analysis.scm Add support for unboxed s64 values 2015-12-01 15:42:19 +01:00
elide-values.scm Add missing files 2015-07-22 18:27:37 +02:00
intmap.scm Fix intmap-ref bug 2015-06-05 00:34:05 +02:00
intset.scm intset-intersect bugfix 2015-07-22 16:59:47 +02:00
licm.scm Loop-invariant code motion 2015-07-24 16:50:58 +02:00
optimize.scm Add tagged and untagged arithmetic ops with immediate operands 2015-12-01 11:30:55 +01:00
peel-loops.scm Loop peeling 2015-07-27 13:45:23 +02:00
primitives.scm Remove add1 and sub1 2015-12-01 11:30:55 +01:00
prune-bailouts.scm Add missing files 2015-07-22 18:27:37 +02:00
prune-top-level-scopes.scm Add missing files 2015-07-22 18:27:37 +02:00
reify-primitives.scm Add missing files 2015-07-22 18:27:37 +02:00
renumber.scm Add missing files 2015-07-22 18:27:37 +02:00
rotate-loops.scm Simplify rotate-loops.scm 2015-07-27 12:59:09 +02:00
self-references.scm Add missing files 2015-07-22 18:27:37 +02:00
simplify.scm Add missing files 2015-07-22 18:27:37 +02:00
slot-allocation.scm Untag values and indexes for all bytevector instructions 2015-12-01 15:42:24 +01:00
spec.scm Add missing files 2015-07-22 18:27:37 +02:00
specialize-numbers.scm Specialize u64 arithmetic 2015-12-01 11:30:55 +01:00
specialize-primcalls.scm Untag values and indexes for all bytevector instructions 2015-12-01 15:42:24 +01:00
split-rec.scm Add missing files 2015-07-22 18:27:37 +02:00
type-checks.scm Factor out compute-effects/elide-type-checks from dce.scm 2015-07-24 11:39:18 +02:00
type-fold.scm Add instructions to branch on u64 comparisons 2015-12-01 11:30:54 +01:00
types.scm Untag values and indexes for all bytevector instructions 2015-12-01 15:42:24 +01:00
utils.scm Untag values and indexes for all bytevector instructions 2015-12-01 15:42:24 +01:00
verify.scm Replace return primcalls with $values 2015-10-28 11:11:23 +00:00
with-cps.scm Add missing files 2015-07-22 18:27:37 +02:00