~ chicken-core (chicken-5) 445099034df2fa486aff393b0074d12fb8e16cfb


commit 445099034df2fa486aff393b0074d12fb8e16cfb
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Sat Jun 18 23:47:58 2011 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Sat Jun 18 23:47:58 2011 +0200

    rewrite-rules for number-of-bytes and number-of-slots

diff --git a/types.db b/types.db
index 70f2f40b..62cd4746 100644
--- a/types.db
+++ b/types.db
@@ -1150,8 +1150,17 @@
 (mutate-procedure (procedure! mutate-procedure (procedure procedure) procedure))
 (null-pointer deprecated)
 (null-pointer? deprecated)
-(number-of-bytes (procedure number-of-bytes (*) fixnum))
-(number-of-slots (procedure number-of-slots (*) fixnum)) ;XXX
+
+(number-of-bytes (procedure number-of-bytes (*) fixnum)
+		 (((or blob string)) (##sys#size #(1)))
+		 (((or port procedure symbol pair vector locative float pointer-vector))
+		  ;; would be applicable to all structure types, but we can't specify
+		  ;; "(struct *)" (yet)
+		  (##core#inline "C_w2b" (##sys#size #(1)))))
+
+(number-of-slots (procedure number-of-slots (*) fixnum)
+		 (((or vector symbol pair)) (##sys#size #(1))))
+
 (object->pointer (procedure object->pointer (*) *))
 (object-become! (procedure object-become! (list) *))
 (object-copy (procedure object-copy (*) *))
Trap