guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 01/02: Add new vtable reserved unboxed field


From: Andy Wingo
Subject: [Guile-commits] 01/02: Add new vtable reserved unboxed field
Date: Tue, 26 Sep 2017 16:03:46 -0400 (EDT)

wingo pushed a commit to branch master
in repository guile.

commit f32500acca82f13824e0d6d06836411f9d0c9c01
Author: Andy Wingo <address@hidden>
Date:   Tue Sep 26 20:47:27 2017 +0200

    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.
---
 libguile/struct.h    | 6 ++++--
 module/oop/goops.scm | 5 +++--
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/libguile/struct.h b/libguile/struct.h
index 53ef4be..66c1740 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 bd5cc75..4bde684 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}



reply via email to

[Prev in Thread] Current Thread [Next in Thread]