cs: fix procedure names in jitified linlet to use 'inferred-name
When a linklet is too large to pass to Chez Scheme whole, then names for the procedures that are individually compiled need to be extracted from 'inferred-name for reference in the wrapper. Closes #2787
This commit is contained in:
parent
2a5df8ad2a
commit
9f424cfe0a
|
@ -563,7 +563,7 @@
|
|||
(add-code-hash a)
|
||||
a)
|
||||
arity-mask
|
||||
name)))]
|
||||
(extract-inferred-name expr name))))]
|
||||
[else
|
||||
;; Compile an individual `lambda`:
|
||||
(lambda (expr arity-mask name)
|
||||
|
@ -576,7 +576,7 @@
|
|||
compile*)
|
||||
(show lambda-on? "lambda" (correlated->annotation expr)))])
|
||||
(if serializable?
|
||||
(make-wrapped-code code arity-mask name)
|
||||
(make-wrapped-code code arity-mask (extract-inferred-name expr name))
|
||||
code))))])))]))
|
||||
(define-values (paths impl-lam/paths)
|
||||
(if serializable?
|
||||
|
|
|
@ -30,6 +30,15 @@
|
|||
;; correlated will be nested only in pairs with current expander
|
||||
[else (values v v)]))
|
||||
|
||||
(define (extract-inferred-name expr default-name)
|
||||
(let ([name (and (correlated? expr)
|
||||
(correlated-property expr 'inferred-name))])
|
||||
(cond
|
||||
[(void? name) #f]
|
||||
[(correlated? name) (correlated-e name)]
|
||||
[(symbol? name) name]
|
||||
[else default-name])))
|
||||
|
||||
(define (transfer-srcloc v e stripped-e)
|
||||
(let ([src (correlated-source v)]
|
||||
[pos (correlated-position v)]
|
||||
|
|
|
@ -101,12 +101,14 @@
|
|||
get-e)
|
||||
new-lifts)]
|
||||
[else
|
||||
(define e (extractable-annotation `(lambda ,(if (no-lifts? body-lifts)
|
||||
captures
|
||||
(cons lifts-id captures))
|
||||
,jitted-proc)
|
||||
arity-mask
|
||||
name))
|
||||
(define e (extractable-annotation (reannotate
|
||||
v
|
||||
`(lambda ,(if (no-lifts? body-lifts)
|
||||
captures
|
||||
(cons lifts-id captures))
|
||||
,jitted-proc))
|
||||
arity-mask
|
||||
name))
|
||||
(define-values (all-captures new-lifts)
|
||||
(cond
|
||||
[(no-lifts? body-lifts)
|
||||
|
|
Loading…
Reference in New Issue
Block a user