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)