1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-24 12:20:20 +02:00

Add tag-fixnum instruction

* libguile/vm-engine.c (tag-fixnum): New instruction.
* module/language/cps/compile-bytecode.scm (compile-function):
* module/language/cps/cse.scm (compute-equivalent-subexpressions):
* module/language/cps/effects-analysis.scm:
* module/language/cps/types.scm (&min/fixnum, &max/fixnum, tag-fixnum):
* module/system/vm/assembler.scm: Add support for the new instruction.
This commit is contained in:
Andy Wingo 2017-11-09 14:18:01 +01:00
parent 7bfdd46ea5
commit 8b5f9648ff
6 changed files with 27 additions and 2 deletions

View file

@ -329,6 +329,11 @@ false. It could be that both true and false proofs are available."
(match defs
((scm)
(add-def! `(primcall scm->s64 #f ,scm) s64))))
(('primcall 'untag-fixnum #f scm)
(match defs
((s64)
(add-def! `(primcall s64->scm #f ,s64) scm)
(add-def! `(primcall tag-fixnum #f ,s64) scm))))
(_ #t))))
(define (visit-label label equiv-labels var-substs)