From 93e838423cba836fd90662f9acd362ddf3aa6fb1 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 1 Jul 2014 11:30:29 +0200 Subject: [PATCH] Fix intset on 32-bit machines * module/language/cps/intset.scm (*leaf-bits*): Define to 4 on 32-bit machines, to stay in fixnum range. --- module/language/cps/intset.scm | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/module/language/cps/intset.scm b/module/language/cps/intset.scm index 4201cc8f8..e8e6df2d6 100644 --- a/module/language/cps/intset.scm +++ b/module/language/cps/intset.scm @@ -40,7 +40,26 @@ (define-syntax-rule (define-inline name val) (define-syntax name (identifier-syntax val))) -(define-inline *leaf-bits* 5) +(eval-when (expand) + (use-modules (system base target)) + (define-syntax compile-time-cond + (lambda (x) + (syntax-case x (else) + ((_ (test body ...) rest ...) + (if (primitive-eval (syntax->datum #'test)) + #'(begin body ...) + #'(begin (compile-time-cond rest ...)))) + ((_ (else body ...)) + #'(begin body ...)) + ((_) + (error "no compile-time-cond expression matched")))))) + +(compile-time-cond + ((eqv? (target-word-size) 4) + (define-inline *leaf-bits* 4)) + ((eqv? (target-word-size) 8) + (define-inline *leaf-bits* 5))) + (define-inline *leaf-size* (ash 1 *leaf-bits*)) (define-inline *leaf-mask* (1- *leaf-size*)) (define-inline *branch-bits* 3)