~ chicken-core (chicken-5) 4bea71ab16718617449c19f1080f6bd4851fd05f
commit 4bea71ab16718617449c19f1080f6bd4851fd05f
Author: Peter Bex <peter@more-magic.net>
AuthorDate: Tue Oct 11 21:42:30 2016 +0200
Commit: Evan Hanson <evhan@foldling.org>
CommitDate: Fri Oct 28 12:26:32 2016 +1300
Replace uses of (##sys#fudge 7) by C_wordstobytes.
Signed-off-by: Evan Hanson <evhan@foldling.org>
diff --git a/lolevel.scm b/lolevel.scm
index bac44f9c..cd98f528 100644
--- a/lolevel.scm
+++ b/lolevel.scm
@@ -341,8 +341,8 @@ EOF
(let ((unset (list 'unset)))
(lambda (n #!optional (init unset))
(##sys#check-exact n 'make-pointer-vector)
- (let* ((mul (##sys#fudge 7)) ; wordsize
- (size (fx* n mul))
+ (let* ((words->bytes (foreign-lambda int "C_wordstobytes" int))
+ (size (words->bytes n))
(buf (##sys#make-blob size)))
(unless (eq? init unset)
(when init
diff --git a/runtime.c b/runtime.c
index 8af8cddb..6eb23526 100644
--- a/runtime.c
+++ b/runtime.c
@@ -4862,7 +4862,7 @@ C_regparm C_word C_fcall C_fudge(C_word fudge_factor)
panic(C_text("(##sys#fudge 6) [current CPU milliseconds] not implemented"));
case C_fix(7): /* wordsize */
- return C_fix(sizeof(C_word));
+ panic(C_text("(##sys#fudge 7) [wordsize] is obsolete"));
case C_fix(8): /* words needed for double */
return C_fix(C_wordsperdouble(1));
diff --git a/support.scm b/support.scm
index 1bce489a..5f9bf7b4 100644
--- a/support.scm
+++ b/support.scm
@@ -253,16 +253,9 @@
(any (lambda (c) (or (char-alphabetic? c) (char-numeric? c) (char=? #\_ c)))
(cdr str) ) ) ) ) ) )
-(eval-when (load)
- (define bytes->words (foreign-lambda int "C_bytestowords" int))
- (define words->bytes (foreign-lambda int "C_wordstobytes" int)) )
-
-(eval-when (eval)
- (define (bytes->words n)
- (let ([wordsize (##sys#fudge 7)])
- (+ (quotient n wordsize) (if (zero? (modulo n wordsize)) 0 1)) ) )
- (define (words->bytes n)
- (* n (##sys#fudge 7)) ) )
+;; TODO: Move these to (chicken memory)?
+(define bytes->words (foreign-lambda int "C_bytestowords" int))
+(define words->bytes (foreign-lambda int "C_wordstobytes" int))
;; Used only in batch-driver; move it there?
(define (check-and-open-input-file fname . line)
diff --git a/tests/compiler-tests.scm b/tests/compiler-tests.scm
index 2d149d9f..769b338c 100644
--- a/tests/compiler-tests.scm
+++ b/tests/compiler-tests.scm
@@ -1,7 +1,8 @@
;;;; compiler-tests.scm
-(import bitwise flonum foreign srfi-4)
+(import (chicken bitwise) (chicken flonum) (chicken foreign)
+ (srfi 4))
(import-for-syntax data-structures expand)
;; test dropping of previous toplevel assignments
@@ -14,7 +15,8 @@
(assert (eq? 'ok (foo)))
(assert (= 1 (foreign-type-size "char")))
-(let ((bytes-in-a-word (##sys#fudge 7)))
+(let* ((words->bytes (foreign-lambda int "C_wordstobytes" int))
+ (bytes-in-a-word (words->bytes 1)))
(assert (= bytes-in-a-word (foreign-type-size "C_word"))))
;; test hiding of unexported toplevel variables
Trap