From 2c1ae6230d8e98d40199ea042848903bb29ddc74 Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Tue, 11 Oct 2016 21:42:30 +0200 Subject: [PATCH 1/9] Replace uses of (##sys#fudge 7) by C_wordstobytes. --- lolevel.scm | 4 ++-- runtime.c | 2 +- support.scm | 13 +++---------- tests/compiler-tests.scm | 6 ++++-- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/lolevel.scm b/lolevel.scm index bac44f9..cd98f52 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 8af8cdd..6eb2352 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 1bce489..5f9bf7b 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 2d149d9..459fbaf 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 -- 2.1.4