diff --git a/racket/src/cs/linklet.sls b/racket/src/cs/linklet.sls index 7626d5f057..562bd48c01 100644 --- a/racket/src/cs/linklet.sls +++ b/racket/src/cs/linklet.sls @@ -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? diff --git a/racket/src/cs/linklet/annotation.ss b/racket/src/cs/linklet/annotation.ss index becfccd64c..85c57a561d 100644 --- a/racket/src/cs/linklet/annotation.ss +++ b/racket/src/cs/linklet/annotation.ss @@ -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)] diff --git a/racket/src/schemify/jitify.rkt b/racket/src/schemify/jitify.rkt index 9be6f9c2f4..31dfcdd3a9 100644 --- a/racket/src/schemify/jitify.rkt +++ b/racket/src/schemify/jitify.rkt @@ -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)