mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-28 16:00:22 +02:00
* 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. |
||
---|---|---|
.. | ||
ice-9 | ||
language | ||
oop | ||
rnrs | ||
scripts | ||
srfi | ||
sxml | ||
system | ||
texinfo | ||
web | ||
Makefile.am | ||
rnrs.scm | ||
statprof.scm | ||
texinfo.scm |