diff options
author | Andy Wingo <wingo@pobox.com> | 2015-12-03 09:01:24 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2015-12-03 09:01:24 +0100 |
commit | 1d4b4ec39cc7a7fa18c9e352e5ff4cc59874e039 (patch) | |
tree | f7485a9e67c6cc49b8c33ce16ec1a85905867d9f /module/system/vm/assembler.scm | |
parent | 97755a1adecbb5af084f33b1ca816c70cb8cb2de (diff) | |
download | guile-1d4b4ec39cc7a7fa18c9e352e5ff4cc59874e039.tar.gz |
Add support for comparing u64 values with SCM values
* libguile/vm-engine.c (BR_U64_SCM_COMPARISON): New helper.
(br-if-u64-<=-scm, br-if-u64-<-scm, br-if-u64-=-scm)
(br-if-u64->-scm, br-if-u64->=-scm): New instructions, to compare an
untagged u64 with a tagged SCM. Avoids many u64->scm operations.
* module/language/cps/compile-bytecode.scm (compile-function):
* module/language/cps/effects-analysis.scm:
* module/language/cps/type-fold.scm:
* module/system/vm/assembler.scm:
* module/system/vm/disassembler.scm (code-annotation, compute-labels):
* module/language/cps/primitives.scm (*branching-primcall-arities*): Add
support for new opcodes.
* module/language/cps/specialize-numbers.scm
(specialize-u64-scm-comparison): New helper.
* module/language/cps/specialize-numbers.scm (specialize-operations):
Specialize u64 comparisons.
* module/language/cps/types.scm (true-comparison-restrictions): New helper.
(define-comparison-inferrer): Use the new helper. Add support for
u64-<-scm et al.
Diffstat (limited to 'module/system/vm/assembler.scm')
-rw-r--r-- | module/system/vm/assembler.scm | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm index a4d5efc30..4fcf17296 100644 --- a/module/system/vm/assembler.scm +++ b/module/system/vm/assembler.scm @@ -98,6 +98,11 @@ emit-br-if-u64-= emit-br-if-u64-< emit-br-if-u64-<= + emit-br-if-u64-<-scm + emit-br-if-u64-<=-scm + emit-br-if-u64-=-scm + emit-br-if-u64->=-scm + emit-br-if-u64->-scm (emit-mov* . emit-mov) (emit-fmov* . emit-fmov) (emit-box* . emit-box) |