cs: fix name of pending-unmarshal procedures

The new encoding of struct constructors and predicates collided with
the encoding of another kind of procedures --- ones that are
unmarshaled on demand in especially large modules. The resulting
symptom was that `object-name` was broken for on-demand procedures.
This commit is contained in:
Matthew Flatt 2020-12-09 12:54:43 -07:00
parent 1173006212
commit d228aeb060
4 changed files with 10 additions and 8 deletions

View File

@ -14,7 +14,7 @@
;; In the Racket source repo, this version should change only when
;; "racket_version.h" changes:
(define version "7.9.0.11")
(define version "7.9.0.12")
(define deps `("racket-lib"
["racket" #:version ,version]))

View File

@ -338,8 +338,9 @@
;; - (vector <symbol-or-#f> <proc> 'method) => is a method
;; - (box <symbol>) => JIT function generated, name is <symbol>, not a method
;; - <parameter-data> => parameter
;; - 'constructor => struct constructor
;; - 'predicate => struct predicate
;; - <symbol> => JITted with <symbol> name
;; - #\c => struct constructor
;; - #\p => struct predicate
;; - (cons rtd pos) => struct accessor
;; - (cons pos rtd) => struct mutator
@ -584,6 +585,7 @@
[(#%vector? name) (or (#%vector-ref name 0)
(object-name (#%vector-ref name 1)))]
[(parameter-data? name) (parameter-data-name name)]
[(symbol? name) name]
[else (object-name (wrapper-procedure-procedure p))])))
;; ----------------------------------------

View File

@ -412,10 +412,10 @@
(resize! rtd-props))))
(define (|#%struct-constructor| p arity-mask)
(make-wrapper-procedure p arity-mask 'constructor))
(make-wrapper-procedure p arity-mask #\c))
(define (|#%struct-predicate| p)
(make-wrapper-procedure p 2 'predicate))
(make-wrapper-procedure p 2 #\p))
(define (|#%struct-field-accessor| p rtd pos)
(make-wrapper-procedure p 2 (cons rtd pos)))
@ -426,12 +426,12 @@
(define (struct-constructor-procedure? v)
(let ([v (strip-impersonator v)])
(and (wrapper-procedure? v)
(eq? 'constructor (wrapper-procedure-data v)))))
(eq? #\c (wrapper-procedure-data v)))))
(define (struct-predicate-procedure? v)
(let ([v (strip-impersonator v)])
(and (wrapper-procedure? v)
(eq? 'predicate (wrapper-procedure-data v)))))
(eq? #\p (wrapper-procedure-data v)))))
(define (struct-accessor-procedure? v)
(let ([v (strip-impersonator v)])

View File

@ -16,7 +16,7 @@
#define MZSCHEME_VERSION_X 7
#define MZSCHEME_VERSION_Y 9
#define MZSCHEME_VERSION_Z 0
#define MZSCHEME_VERSION_W 11
#define MZSCHEME_VERSION_W 12
/* A level of indirection makes `#` work as needed: */
#define AS_a_STR_HELPER(x) #x