1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-28 16:00:22 +02:00
guile/module
Andy Wingo 7e79a3291e Better untagging of fixnums
* module/language/cps/compile-bytecode.scm (compile-function): Add
  support for tag-fixnum/unlikely.
* module/language/cps/cse.scm (compute-equivalent-subexpressions): Add
  equivalent subexpressions for tag-fixnum.
* module/language/cps/effects-analysis.scm:
* module/language/cps/primitives.scm (*macro-instruction-arities*): Add
  tag-fixnum/unlikely.
* module/language/cps/specialize-numbers.scm (specialize-u64-unop)
  (specialize-u64-binop, specialize-u64-shift)
  (specialize-u64-comparison): Make the arg unboxers and result boxers
  into keyword arguments.
  (specialize-s64-unop): New helper.
  (specialize-fixnum-comparison, specialize-fixnum-scm-comparison)
  (specialize-scm-fixnum-comparison): Rename from
  specialize-s64-comparison et al.  Perhaps this should be expanded
  again to include the whole s64 range, once we start to expand scm->s64
  et al.
  (specialize-operations): Specialize arithmetic, etc on signed
  operands and results.  Use less powerful unboxing/boxing ops if
  possible -- e.g. tag-fixnum instead of u64->scm.  Prefer fixnum
  comparisons over u64 comparisons.
  (compute-specializable-fixnum-vars): New helper.
  (compute-specializable-phis): Specialize fixnum phis as well.
  (specialize-primcalls): Specialize untag-fixnum of a constant to
  load-s64.
* module/language/cps/type-fold.scm (u64->scm, s64->scm):
  (scm->s64, scm->u64): Reduce to fixnum ops where possible.
* module/language/cps/types.scm: Remove type checkers for ops that don't
  throw type errors.  Alias tag-fixnum/unlikely to tag-fixnum.
2017-11-13 14:39:30 +01:00
..
ice-9 Replace "pr" struct fields with "pw" fields 2017-09-23 15:33:02 +02:00
language Better untagging of fixnums 2017-11-13 14:39:30 +01:00
oop Add new vtable reserved unboxed field 2017-09-26 20:47:27 +02:00
rnrs Replace "pr" struct fields with "pw" fields 2017-09-23 15:33:02 +02:00
scripts Wire up `guild compile -O0 foo.scm' 2015-10-22 17:44:17 +00:00
srfi Replace "pr" struct fields with "pw" fields 2017-09-23 15:33:02 +02:00
sxml Remove duplicate definitions of call/ec' and let/ec'. 2013-04-06 15:40:19 +02:00
system Add srsh, srsh/immediate instructions 2017-11-13 10:25:20 +01:00
texinfo Remove all deprecated code 2017-05-22 13:36:42 +02:00
web Remove all deprecated code 2017-05-22 13:36:42 +02:00
Makefile.am Add (system base types internal). 2017-10-25 12:55:30 +02:00
rnrs.scm Add R6RS bytevector->string, string->bytevector 2016-06-21 11:29:14 +02:00
statprof.scm Remove all deprecated code 2017-05-22 13:36:42 +02:00
texinfo.scm texinfo: fix @url{@@} parsing 2014-11-09 15:56:33 +00:00