summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2017-09-26 20:47:27 +0200
committerAndy Wingo <wingo@pobox.com>2017-09-26 20:47:27 +0200
commitf32500acca82f13824e0d6d06836411f9d0c9c01 (patch)
tree566bce688217951e921f5af1be40f6ebc09e3b0b
parentc3a81128478bed4a65a509d3a3a7074b712e94fd (diff)
downloadguile-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.h6
-rw-r--r--module/oop/goops.scm5
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}