diff options
author | Andy Wingo <wingo@pobox.com> | 2017-09-13 22:23:20 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2017-09-14 09:49:55 +0200 |
commit | ee5994a5178c14de685011c28e3c3c0a0a353622 (patch) | |
tree | 0fb51e90c8b833a39723e078c60a4ef25025a998 /module/rnrs | |
parent | 7e91ff651b3c9f7c27f2be146ea611bab65809a8 (diff) | |
download | guile-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.scm | 22 |
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) |