summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--module/language/cps/guile-vm/lower-primcalls.scm11
-rw-r--r--module/language/tree-il/cps-primitives.scm1
2 files changed, 12 insertions, 0 deletions
diff --git a/module/language/cps/guile-vm/lower-primcalls.scm b/module/language/cps/guile-vm/lower-primcalls.scm
index 3072bb7bf..cff370431 100644
--- a/module/language/cps/guile-vm/lower-primcalls.scm
+++ b/module/language/cps/guile-vm/lower-primcalls.scm
@@ -612,6 +612,17 @@
(build-term
($continue kcall src ($prim 'procedure?)))))
+(define-branching-primcall-lowerer (number? cps kf kt src #f (x))
+ (with-cps cps
+ (letk kheap-num
+ ($kargs () ()
+ ($branch kf kt src 'heap-number? #f (x))))
+ (letk kheap
+ ($kargs () ()
+ ($branch kf kheap-num src 'heap-object? #f (x))))
+ (build-term
+ ($branch kheap kt src 'fixnum? #f (x)))))
+
(define (lower-primcalls cps)
(with-fresh-name-state cps
(persistent-intmap
diff --git a/module/language/tree-il/cps-primitives.scm b/module/language/tree-il/cps-primitives.scm
index c6ab96471..5e7199d78 100644
--- a/module/language/tree-il/cps-primitives.scm
+++ b/module/language/tree-il/cps-primitives.scm
@@ -194,3 +194,4 @@
(define-branching-primitive = 2)
(define-branching-primitive procedure? 1)
+(define-branching-primitive number? 1)