~ 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