cs: use unsafe application after schemify

Since schemify adds its own checking for procedureness in an
application, always compile the application as unsafe at the Chez
Scheme level. This simple change saves about 5% in code size for
DrRacket, which is a 1-2% footprint saving overall.
This commit is contained in:
Matthew Flatt 2020-01-23 17:15:15 -07:00
parent b7fcf4112a
commit 8d6bdafb45
4 changed files with 14 additions and 4 deletions

View File

@ -12,7 +12,7 @@
(define collection 'multi)
(define version "7.6.0.4")
(define version "7.6.0.5")
(define deps `("racket-lib"
["racket" #:version ,version]))

View File

@ -2,7 +2,7 @@
;; Check to make we're using a build of Chez Scheme
;; that has all the features we need.
(define-values (need-maj need-min need-sub need-dev)
(values 9 5 3 13))
(values 9 5 3 14))
(unless (guard (x [else #f]) (eval 'scheme-fork-version-number))
(error 'compile-file

View File

@ -1238,4 +1238,14 @@
(enable-arithmetic-left-associative #t)
(expand-omit-library-invocations #t)
(enable-error-source-expression #f))
(enable-error-source-expression #f)
;; Since the schemify layer inserts `|#%app|` any time the rator of
;; an application might not be a procedure, we can avoid redundant
;; checks for other applications by enabling unsafe mode. But do that
;; only if we're compiling the primitive layer in unsafe mode.
(meta-cond
[(>= (optimize-level) 3)
(enable-unsafe-application #t)]
[else
(void)]))

View File

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