mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
* 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".
51 lines
1.5 KiB
Scheme
51 lines
1.5 KiB
Scheme
;;; -*- mode: scheme; coding: iso-8859-1; -*-
|
||
;;; Structs.
|
||
;;;
|
||
;;; 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
|
||
;;; as published by the Free Software Foundation; either version 3, or
|
||
;;; (at your option) any later version.
|
||
;;;
|
||
;;; This program is distributed in the hope that it will be useful,
|
||
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
;;; GNU Lesser General Public License for more details.
|
||
;;;
|
||
;;; You should have received a copy of the GNU Lesser General Public
|
||
;;; License along with this software; see the file COPYING.LESSER. If
|
||
;;; not, write to the Free Software Foundation, Inc., 51 Franklin
|
||
;;; Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||
|
||
(define-module (benchmarks structs)
|
||
:use-module (benchmark-suite lib))
|
||
|
||
;; Note: Use `--iteration-factor' to change this.
|
||
(define iterations 2000000)
|
||
|
||
(define vtable2
|
||
(make-vtable "pwpw"))
|
||
|
||
(define vtable7
|
||
(make-vtable (string-concatenate (make-list 7 "pw"))))
|
||
|
||
|
||
(with-benchmark-prefix "constructors"
|
||
|
||
(benchmark "make-struct2" iterations
|
||
(make-struct/no-tail vtable2 1 2))
|
||
|
||
(benchmark "make-struct7" iterations
|
||
(make-struct/no-tail vtable7 1 2 3 4 5 6 7)))
|
||
|
||
|
||
(with-benchmark-prefix "pairs" ;; for comparison
|
||
(benchmark "cons" iterations
|
||
(cons 1 2))
|
||
|
||
(benchmark "list" iterations
|
||
(list 1 2 3 4 5 6 7))
|
||
|
||
(benchmark "make-list" iterations
|
||
(make-list 7)))
|