summaryrefslogtreecommitdiff
path: root/module/rnrs
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2017-09-13 22:23:20 +0200
committerAndy Wingo <wingo@pobox.com>2017-09-14 09:49:55 +0200
commitee5994a5178c14de685011c28e3c3c0a0a353622 (patch)
tree0fb51e90c8b833a39723e078c60a4ef25025a998 /module/rnrs
parent7e91ff651b3c9f7c27f2be146ea611bab65809a8 (diff)
downloadguile-ee5994a5178c14de685011c28e3c3c0a0a353622.tar.gz
remove self field of vtables
* libguile/struct.h (SCM_VTABLE_BASE_LAYOUT, scm_vtable_index_self): Remove "self" field. Renumber the other fields. * module/oop/goops.scm (<self-slot>): Remove. (fold-class-slots): Adapt for "self" slot removal. Adapt all users. (class-redefinition): Now that there is no "self" slot to update, use %modify-instance instead of %modify-class. * libguile/goops.c (class_self): Remove. (scm_sys_modify_class): Remove. * libguile/goops.h (scm_sys_modify_class): Remove. * module/rnrs/records/procedural.scm: Import vtable-offset-user. Renumber rtd indexes using vtable-offset-user. * module/srfi/srfi-35.scm (%condition-type-vtable): Remove mention of vtable fields. * module/system/base/types.scm (address->inferior-struct): Adapt for different vtable field layout.
Diffstat (limited to 'module/rnrs')
-rw-r--r--module/rnrs/records/procedural.scm22
1 files changed, 12 insertions, 10 deletions
diff --git a/module/rnrs/records/procedural.scm b/module/rnrs/records/procedural.scm
index 6976eebdd..d925263d8 100644
--- a/module/rnrs/records/procedural.scm
+++ b/module/rnrs/records/procedural.scm
@@ -54,22 +54,24 @@
hashq-ref
hashq-set!
- vector->list)
+ vector->list
+
+ vtable-offset-user)
(ice-9 receive)
(only (srfi :1) fold split-at take))
(define (record-internal? obj)
(and (struct? obj) (record-type-descriptor? (struct-vtable obj))))
- (define rtd-index-name 8)
- (define rtd-index-uid 9)
- (define rtd-index-parent 10)
- (define rtd-index-sealed? 11)
- (define rtd-index-opaque? 12)
- (define rtd-index-predicate 13)
- (define rtd-index-field-names 14)
- (define rtd-index-field-bit-field 15)
- (define rtd-index-field-binder 16)
+ (define rtd-index-name (+ vtable-offset-user 0))
+ (define rtd-index-uid (+ vtable-offset-user 1))
+ (define rtd-index-parent (+ vtable-offset-user 2))
+ (define rtd-index-sealed? (+ vtable-offset-user 3))
+ (define rtd-index-opaque? (+ vtable-offset-user 4))
+ (define rtd-index-predicate (+ vtable-offset-user 5))
+ (define rtd-index-field-names (+ vtable-offset-user 6))
+ (define rtd-index-field-bit-field (+ vtable-offset-user 7))
+ (define rtd-index-field-binder (+ vtable-offset-user 8))
(define rctd-index-rtd 0)
(define rctd-index-parent 1)