summaryrefslogtreecommitdiff
path: root/module/rnrs
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2017-09-23 15:16:04 +0200
committerAndy Wingo <wingo@pobox.com>2017-09-23 15:33:02 +0200
commit5870188eb4b6c4246569a1aaaf358bc8a9e6a65d (patch)
tree239d2b31275520a409576073b67a8cd952a87fc8 /module/rnrs
parent0f14a9e59826c1c304d1f50c741e91d99760ff43 (diff)
downloadguile-5870188eb4b6c4246569a1aaaf358bc8a9e6a65d.tar.gz
Replace "pr" struct fields with "pw" fields
* libguile/struct.h (SCM_VTABLE_BASE_LAYOUT): Layout is a "pr" field. * module/ice-9/boot-9.scm (record-type-vtable): Record vtable fields are writable. (<parameter>): "pw" fields. * module/oop/goops.scm (<class>, %compute-layout): <read-only> fields are "pw" underneath. * module/rnrs/records/procedural.scm (record-type-vtable) (record-constructor-vtable, make-record-type-descriptor): Use "pw" fields in vtables. * module/srfi/srfi-35.scm (%condition-type-vtable) (struct-layout-for-condition): "pw" fields in vtables. * test-suite/tests/goops.test: * test-suite/tests/structs.test: Use "pw" fields only. * benchmark-suite/benchmarks/structs.bm: Update for make-struct/no-tail, to use pw fields, and also to remove useless tests that the compiler would optimize away. * doc/ref/api-data.texi (Vtables): Add a note about the now-vestigial permissions character and update documentation. (Structure Basics, Meta-Vtables): Update examples. * libguile/hash.c (scm_i_struct_hash): Remove code that would handle opaque/self fields. * libguile/print.h (SCM_PRINT_STATE_LAYOUT): Use "pw" fields. * libguile/struct.c (scm_struct_init): Simplify check for hidden fields. * libguile/values.c (scm_init_values): Field is "pw".
Diffstat (limited to 'module/rnrs')
-rw-r--r--module/rnrs/records/procedural.scm8
1 files changed, 4 insertions, 4 deletions
diff --git a/module/rnrs/records/procedural.scm b/module/rnrs/records/procedural.scm
index 69c5d1c56..cbcd4e5ce 100644
--- a/module/rnrs/records/procedural.scm
+++ b/module/rnrs/records/procedural.scm
@@ -80,13 +80,13 @@
(define vtable-base-layout (symbol->string (struct-layout (make-vtable ""))))
(define record-type-vtable
- (make-vtable (string-append vtable-base-layout "prprprprprprprprprpr")
+ (make-vtable (string-append vtable-base-layout "pwpwpwpwpwpwpwpwpwpw")
(lambda (obj port)
(simple-format port "#<r6rs:record-type:~A>"
(struct-ref obj rtd-index-name)))))
(define record-constructor-vtable
- (make-vtable "prprpr"
+ (make-vtable "pwpwpw"
(lambda (obj port)
(simple-format port "#<r6rs:record-constructor:~A>"
(struct-ref (struct-ref obj rctd-index-rtd)
@@ -97,7 +97,7 @@
(define (make-record-type-descriptor name parent uid sealed? opaque? fields)
(define fields-pair
(let loop ((field-list (vector->list fields))
- (layout-sym 'pr)
+ (layout-sym 'pw)
(layout-bit-field 0)
(counter 0))
(if (null? field-list)
@@ -105,7 +105,7 @@
(case (caar field-list)
((immutable)
(loop (cdr field-list)
- (symbol-append layout-sym 'pr)
+ (symbol-append layout-sym 'pw)
layout-bit-field
(+ counter 1)))
((mutable)