From af3c22dd11b2e9b025bfd817854936523c47bfdc Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 30 Dec 2019 08:15:23 -0700 Subject: [PATCH] cs: mark some internal representations as sealed This change makes a small but measurable difference for mpairs, at least (about 5% on the mpair-intensive "lists.rkt" benchmark). --- pkgs/base/info.rkt | 2 +- racket/src/cs/rumble/keyword.ss | 1 + racket/src/cs/rumble/memory.ss | 3 ++- racket/src/cs/rumble/mpair.ss | 5 ++++- racket/src/cs/rumble/parameter.ss | 4 +++- racket/src/cs/rumble/struct.ss | 4 +++- racket/src/cs/rumble/thread-cell.ss | 3 ++- racket/src/cs/rumble/variable.ss | 4 +++- racket/src/cs/rumble/will-executor.ss | 3 ++- racket/src/racket/src/schvers.h | 2 +- 10 files changed, 22 insertions(+), 9 deletions(-) diff --git a/pkgs/base/info.rkt b/pkgs/base/info.rkt index 0c6968e16e..fa40a13ab4 100644 --- a/pkgs/base/info.rkt +++ b/pkgs/base/info.rkt @@ -12,7 +12,7 @@ (define collection 'multi) -(define version "7.5.0.15") +(define version "7.5.0.16") (define deps `("racket-lib" ["racket" #:version ,version])) diff --git a/racket/src/cs/rumble/keyword.ss b/racket/src/cs/rumble/keyword.ss index c4a5e0499b..ff5bc90d2e 100644 --- a/racket/src/cs/rumble/keyword.ss +++ b/racket/src/cs/rumble/keyword.ss @@ -1,6 +1,7 @@ (define-record-type keyword (fields symbol) + (sealed #t) (nongenerative #{keyword dhghafpy3v03qbye1a9lwf-0})) (define keywords (make-weak-eq-hashtable)) diff --git a/racket/src/cs/rumble/memory.ss b/racket/src/cs/rumble/memory.ss index ecf8d6ac1f..596f0dac0b 100644 --- a/racket/src/cs/rumble/memory.ss +++ b/racket/src/cs/rumble/memory.ss @@ -368,7 +368,8 @@ ;; ---------------------------------------- (define-record-type (phantom-bytes create-phantom-bytes phantom-bytes?) - (fields pbv)) + (fields pbv) + (sealed #t)) (define/who (make-phantom-bytes k) (check who exact-nonnegative-integer? k) diff --git a/racket/src/cs/rumble/mpair.ss b/racket/src/cs/rumble/mpair.ss index 177138ee7b..7a8ed9bb84 100644 --- a/racket/src/cs/rumble/mpair.ss +++ b/racket/src/cs/rumble/mpair.ss @@ -1,4 +1,7 @@ -(define-record mpair (car cdr)) +(define-record-type mpair + (fields (mutable car mpair-car set-mpair-car!) + (mutable cdr mpair-cdr set-mpair-cdr!)) + (sealed #t)) (define (mcons a b) (make-mpair a b)) diff --git a/racket/src/cs/rumble/parameter.ss b/racket/src/cs/rumble/parameter.ss index b17fd361e4..4c5fad17bd 100644 --- a/racket/src/cs/rumble/parameter.ss +++ b/racket/src/cs/rumble/parameter.ss @@ -2,7 +2,9 @@ ;; Continuation-mark key: (define parameterization-key '#{parameterization n1kcvqw4c9hh8t3fi3659ci94-1}) -(define-record parameterization (ht)) +(define-record-type parameterization + (fields ht) + (sealed #t)) (define empty-parameterization (make-parameterization empty-hasheq)) diff --git a/racket/src/cs/rumble/struct.ss b/racket/src/cs/rumble/struct.ss index 9c8395f217..90ea0f234e 100644 --- a/racket/src/cs/rumble/struct.ss +++ b/racket/src/cs/rumble/struct.ss @@ -140,7 +140,9 @@ ;; ---------------------------------------- -(define-record-type (inspector new-inspector inspector?) (fields parent)) +(define-record-type (inspector new-inspector inspector?) + (fields parent) + (sealed #t)) (define root-inspector (new-inspector #f)) diff --git a/racket/src/cs/rumble/thread-cell.ss b/racket/src/cs/rumble/thread-cell.ss index cd2ea981ca..18fa572a42 100644 --- a/racket/src/cs/rumble/thread-cell.ss +++ b/racket/src/cs/rumble/thread-cell.ss @@ -4,7 +4,8 @@ (define-record-type (thread-cell create-thread-cell thread-cell?) (fields default-value preserved? - (mutable mutated?))) + (mutable mutated?)) + (sealed #t)) (define make-thread-cell (case-lambda diff --git a/racket/src/cs/rumble/variable.ss b/racket/src/cs/rumble/variable.ss index 799e5e4ab1..cb344ed1ea 100644 --- a/racket/src/cs/rumble/variable.ss +++ b/racket/src/cs/rumble/variable.ss @@ -2,7 +2,9 @@ (define undefined '#{undefined bjjxts6iq4xqtw8kz4eb1jxbs-0}) -(define-record-type variable (fields (mutable val) name)) +(define-record-type variable + (fields (mutable val) name) + (sealed #t)) (define (variable-set! var val) (variable-val-set! var val)) diff --git a/racket/src/cs/rumble/will-executor.ss b/racket/src/cs/rumble/will-executor.ss index fb4f7d39ad..64f5d408ef 100644 --- a/racket/src/cs/rumble/will-executor.ss +++ b/racket/src/cs/rumble/will-executor.ss @@ -16,7 +16,8 @@ (define-thread-local late-will-executors-with-pending (make-eq-hashtable)) (define-record-type (will-executor create-will-executor will-executor?) - (fields guardian will-stacks (mutable ready) notify keep?)) + (fields guardian will-stacks (mutable ready) notify keep?) + (sealed #t)) (define (make-will-executor notify) (create-will-executor the-will-guardian the-will-stacks '() notify #f)) diff --git a/racket/src/racket/src/schvers.h b/racket/src/racket/src/schvers.h index 3e0d656571..a1acde579b 100644 --- a/racket/src/racket/src/schvers.h +++ b/racket/src/racket/src/schvers.h @@ -16,7 +16,7 @@ #define MZSCHEME_VERSION_X 7 #define MZSCHEME_VERSION_Y 5 #define MZSCHEME_VERSION_Z 0 -#define MZSCHEME_VERSION_W 15 +#define MZSCHEME_VERSION_W 16 /* A level of indirection makes `#` work as needed: */ #define AS_a_STR_HELPER(x) #x