diff options
author | Andy Wingo <wingo@pobox.com> | 2017-09-26 20:47:27 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2017-09-26 20:47:27 +0200 |
commit | f32500acca82f13824e0d6d06836411f9d0c9c01 (patch) | |
tree | 566bce688217951e921f5af1be40f6ebc09e3b0b | |
parent | c3a81128478bed4a65a509d3a3a7074b712e94fd (diff) | |
download | guile-f32500acca82f13824e0d6d06836411f9d0c9c01.tar.gz |
Add new vtable reserved unboxed field
* libguile/struct.h (SCM_VTABLE_BASE_LAYOUT)
(scm_vtable_index_reserved_6): Add a reserved field.
* module/oop/goops.scm (fold-class-slots, unboxed-slot?): Reserve a new
unboxed field.
-rw-r--r-- | libguile/struct.h | 6 | ||||
-rw-r--r-- | module/oop/goops.scm | 5 |
2 files changed, 7 insertions, 4 deletions
diff --git a/libguile/struct.h b/libguile/struct.h index 53ef4befe..66c1740d7 100644 --- a/libguile/struct.h +++ b/libguile/struct.h @@ -61,6 +61,7 @@ "pw" /* printer */ \ "ph" /* name (hidden from make-struct for back-compat reasons) */ \ "uh" /* size */ \ + "uh" /* reserved */ \ "uh" /* reserved */ #define scm_vtable_index_layout 0 /* A symbol describing the physical arrangement of this type. */ @@ -69,8 +70,9 @@ #define scm_vtable_index_instance_printer 3 /* A printer for this struct type. */ #define scm_vtable_index_name 4 /* Name of this vtable. */ #define scm_vtable_index_size 5 /* Number of fields, for simple structs. */ -#define scm_vtable_index_reserved_7 6 -#define scm_vtable_offset_user 7 /* Where do user fields start in the vtable? */ +#define scm_vtable_index_reserved_6 6 +#define scm_vtable_index_reserved_7 7 +#define scm_vtable_offset_user 8 /* Where do user fields start in the vtable? */ /* All applicable structs have the following fields. */ #define SCM_APPLICABLE_BASE_LAYOUT \ diff --git a/module/oop/goops.scm b/module/oop/goops.scm index bd5cc7522..4bde684e7 100644 --- a/module/oop/goops.scm +++ b/module/oop/goops.scm @@ -190,7 +190,8 @@ (print) (name #:class <protected-hidden-slot>) (nfields #:class <hidden-slot>) - (%reserved #:class <hidden-slot>) + (%reserved-6 #:class <hidden-slot>) + (%reserved-7 #:class <hidden-slot>) (direct-supers) (direct-slots) (direct-subclasses) @@ -739,7 +740,7 @@ followed by its associated value. If @var{l} does not hold a value for (define (read-only-slot? slot) #f) (define (unboxed-slot? slot) (memq (%slot-definition-name slot) - '(flags instance-finalizer nfields %reserved))) + '(flags instance-finalizer nfields %reserved-6 %reserved-7))) (define (allocate-slots class slots) "Transform the computed list of direct slot definitions @var{slots} |