summaryrefslogtreecommitdiff
path: root/benchmark-suite
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 /benchmark-suite
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 'benchmark-suite')
-rw-r--r--benchmark-suite/benchmarks/structs.bm35
1 files changed, 9 insertions, 26 deletions
diff --git a/benchmark-suite/benchmarks/structs.bm b/benchmark-suite/benchmarks/structs.bm
index 65c8e975e..465afbd24 100644
--- a/benchmark-suite/benchmarks/structs.bm
+++ b/benchmark-suite/benchmarks/structs.bm
@@ -1,7 +1,7 @@
;;; -*- mode: scheme; coding: iso-8859-1; -*-
;;; Structs.
;;;
-;;; Copyright 2009 Free Software Foundation, Inc.
+;;; Copyright 2009, 2017 Free Software Foundation, Inc.
;;;
;;; This program is free software; you can redistribute it and/or
;;; modify it under the terms of the GNU Lesser General Public License
@@ -25,44 +25,27 @@
(define iterations 2000000)
(define vtable2
- (make-vtable "prpr"))
+ (make-vtable "pwpw"))
(define vtable7
- (make-vtable (string-concatenate (make-list 7 "pr"))))
+ (make-vtable (string-concatenate (make-list 7 "pw"))))
(with-benchmark-prefix "constructors"
- (benchmark "make-struct2 (opcode)" iterations
- (make-struct vtable2 0 1 2))
+ (benchmark "make-struct2" iterations
+ (make-struct/no-tail vtable2 1 2))
- (benchmark "make-struct2 (procedure)" iterations
- (let ((s make-struct))
- (s vtable2 0 1 2)))
-
- (benchmark "make-struct7 (opcode)" iterations
- (make-struct vtable7 0 1 2 3 4 5 6 7))
-
- (benchmark "make-struct7 (procedure)" iterations
- (let ((s make-struct))
- (s vtable7 0 1 2 3 4 5 6 7))))
+ (benchmark "make-struct7" iterations
+ (make-struct/no-tail vtable7 1 2 3 4 5 6 7)))
(with-benchmark-prefix "pairs" ;; for comparison
-
- (benchmark "cons (opcode)" iterations
+ (benchmark "cons" iterations
(cons 1 2))
- (benchmark "cons (procedure)" iterations
- (let ((c cons))
- (c 1 2)))
-
- (benchmark "list (opcode)" iterations
+ (benchmark "list" iterations
(list 1 2 3 4 5 6 7))
- (benchmark "list (procedure)" iterations
- (let ((l list))
- (l 1 2 3 4 5 6 7)))
-
(benchmark "make-list" iterations
(make-list 7)))