schemify: propagate 'compiler-hint:cross-module-inline through values
This change makes (begin-encourage-inline (define-values (f g h) (values e1 e2 e3))) equivalent to (begin-encourage-inline (define f e1) (define g e2) (define h e3))
This commit is contained in:
parent
4a65dfb1aa
commit
db34c62241
|
@ -16028,11 +16028,13 @@
|
|||
(call-with-values
|
||||
(lambda ()
|
||||
(let ((temp26_0
|
||||
(list
|
||||
'define-values
|
||||
(propagate-inline-hint
|
||||
v5_0
|
||||
(list
|
||||
id_0)
|
||||
rhs_2)))
|
||||
'define-values
|
||||
(list
|
||||
id_0)
|
||||
rhs_2))))
|
||||
(find-definitions.1
|
||||
optimize?2_0
|
||||
hash2610
|
||||
|
@ -16069,6 +16071,11 @@
|
|||
(loop_0 rhs_0)))
|
||||
(args (raise-binding-result-arity-error 2 args))))
|
||||
(values knowns7_0 #f)))))))))))
|
||||
(define propagate-inline-hint
|
||||
(lambda (defn_0 new-defn_0)
|
||||
(if (wrap-property defn_0 'compiler-hint:cross-module-inline)
|
||||
(wrap-property-set new-defn_0 'compiler-hint:cross-module-inline #t)
|
||||
new-defn_0)))
|
||||
(define struct-convert
|
||||
(lambda (form_0
|
||||
prim-knowns_0
|
||||
|
|
|
@ -129,7 +129,7 @@
|
|||
(for/fold ([knowns knowns]) ([id (in-list ids)]
|
||||
[rhs (in-list rhss)])
|
||||
(define-values (new-knowns info)
|
||||
(find-definitions `(define-values (,id) ,rhs)
|
||||
(find-definitions (propagate-inline-hint v `(define-values (,id) ,rhs))
|
||||
prim-knowns knowns imports mutated simples unsafe-mode? target
|
||||
#:optimize? optimize?))
|
||||
new-knowns)
|
||||
|
@ -137,3 +137,10 @@
|
|||
[else (values knowns #f)])]
|
||||
[`,_ (values knowns #f)]))]
|
||||
[`,_ (values knowns #f)]))
|
||||
|
||||
;; ----------------------------------------
|
||||
|
||||
(define (propagate-inline-hint defn new-defn)
|
||||
(if (wrap-property defn 'compiler-hint:cross-module-inline)
|
||||
(wrap-property-set new-defn 'compiler-hint:cross-module-inline #t)
|
||||
new-defn))
|
||||
|
|
Loading…
Reference in New Issue
Block a user