cs: improve #%variable-reference-constant?
Repair constant detection for unmodified imports.
This commit is contained in:
parent
64b2694986
commit
d5bb22c2d9
|
@ -5,7 +5,7 @@ RACKET = ../../bin/racket
|
|||
SCHEME = scheme
|
||||
|
||||
# Controls whether Racket layers are built as unsafe:
|
||||
UNSAFE_COMP = --unsafe
|
||||
UNSAFE_COMP = # --unsafe
|
||||
|
||||
# Controls whether Racket layers are built with expression-level debugging:
|
||||
DEBUG_COMP = # --debug
|
||||
|
|
|
@ -176,6 +176,11 @@
|
|||
(define (compile-to-port* s o)
|
||||
(call-with-system-wind (lambda () (compile-to-port s o))))
|
||||
|
||||
(define (eval/foreign e mode)
|
||||
(performance-region
|
||||
mode
|
||||
(compile* e)))
|
||||
|
||||
(define primitives (make-hasheq))
|
||||
(define (install-linklet-primitive-tables! . tables)
|
||||
(for-each
|
||||
|
@ -827,6 +832,8 @@
|
|||
(generate-inspector-information (not omit-debugging?))
|
||||
(generate-procedure-source-information #t))
|
||||
|
||||
(set-foreign-eval! eval/foreign)
|
||||
|
||||
(expand-omit-library-invocations #t)
|
||||
|
||||
(install-linklet-bundle-write!))
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
(define (read-compiled-linklet in)
|
||||
(read-compiled-linklet-or-directory in #t))
|
||||
(performance-region
|
||||
'read
|
||||
(read-compiled-linklet-or-directory in #t)))
|
||||
|
||||
(define (read-compiled-linklet-or-directory in initial?)
|
||||
;; `#~` has already been read
|
||||
|
|
|
@ -579,6 +579,7 @@
|
|||
set-ffi-get-lib-and-obj! ; not exported to Racket
|
||||
poll-async-callbacks ; not exported to Racket
|
||||
set-async-callback-poll-wakeup! ; not exported to Racket
|
||||
set-foreign-eval! ; not exported to racket
|
||||
|
||||
unsafe-unbox
|
||||
unsafe-unbox*
|
||||
|
|
|
@ -1279,6 +1279,13 @@
|
|||
|
||||
;; ----------------------------------------
|
||||
|
||||
(define eval/foreign
|
||||
(lambda (expr mode)
|
||||
(call-with-system-wind (lambda () (eval expr)))))
|
||||
|
||||
(define (set-foreign-eval! proc)
|
||||
(set! eval/foreign proc))
|
||||
|
||||
(define/who ffi-call
|
||||
(case-lambda
|
||||
[(p in-types out-type)
|
||||
|
@ -1385,7 +1392,7 @@
|
|||
(make-ftype-pointer ,id p))))
|
||||
ids)
|
||||
'())))])
|
||||
(call-with-system-wind (lambda () (eval expr))))]
|
||||
(eval/foreign expr (if call? 'comp-ffi 'comp-ffi-back)))]
|
||||
[gen-proc (car gen-proc+ret-maker+arg-makers)]
|
||||
[ret-maker (cadr gen-proc+ret-maker+arg-makers)]
|
||||
[arg-makers (cddr gen-proc+ret-maker+arg-makers)]
|
||||
|
|
|
@ -152,10 +152,9 @@
|
|||
(define v (known-inline->export-known (hash-ref defn-info id #f)
|
||||
prim-knowns imports exports))
|
||||
(cond
|
||||
[(and v
|
||||
(not (set!ed-mutated-state? (hash-ref mutated id #f))))
|
||||
[(not (set!ed-mutated-state? (hash-ref mutated id #f)))
|
||||
(define ext-id (ex-ext-id ex-id))
|
||||
(hash-set knowns ext-id v)]
|
||||
(hash-set knowns ext-id (or v a-known-constant))]
|
||||
[else knowns])))]))
|
||||
|
||||
;; ----------------------------------------
|
||||
|
|
Loading…
Reference in New Issue
Block a user