summaryrefslogtreecommitdiff
path: root/module/system/vm/assembler.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2015-12-03 09:01:24 +0100
committerAndy Wingo <wingo@pobox.com>2015-12-03 09:01:24 +0100
commit1d4b4ec39cc7a7fa18c9e352e5ff4cc59874e039 (patch)
treef7485a9e67c6cc49b8c33ce16ec1a85905867d9f /module/system/vm/assembler.scm
parent97755a1adecbb5af084f33b1ca816c70cb8cb2de (diff)
downloadguile-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.scm5
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)