mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-29 00:10:21 +02:00
* module/language/cps/primitives.scm (*macro-instruction-arities*): Declare new u64->s64, s64->u64, sadd, ssub, smul, sadd/immediate, ssub/immediate, smul/immediate, slsh, and slsh/immediate primcalls that don't have corresponding VM instructions. * module/language/cps/effects-analysis.scm: The new instructions are effect-free. * module/language/cps/reify-primitives.scm (wrap-unary, wrap-binary): (wrap-binary/exp, reify-primitives): Add horrible code that turns e.g. sadd into a series of s64->u64, uadd, and then u64->s64. This way we keep our ability to do range inference on unboxed signed arithmetic, but we still bottom out to the same instructions for both unboxed signed and unboxed unsigned arithmetic. * module/language/cps/types.scm: Add type inferrers for new instructions. Remove type checkers for some effect-free primitives. * module/language/cps/compile-bytecode.scm (compile-function): Add pseudo-emitter for u64->s64 and s64->u64 no-ops. |
||
---|---|---|
.. | ||
ice-9 | ||
language | ||
oop | ||
rnrs | ||
scripts | ||
srfi | ||
sxml | ||
system | ||
texinfo | ||
web | ||
Makefile.am | ||
rnrs.scm | ||
statprof.scm | ||
texinfo.scm |