diff --git a/pkgs/racket-test-core/tests/racket/module.rktl b/pkgs/racket-test-core/tests/racket/module.rktl index 50c2f25609..2a0025b716 100644 --- a/pkgs/racket-test-core/tests/racket/module.rktl +++ b/pkgs/racket-test-core/tests/racket/module.rktl @@ -3621,7 +3621,6 @@ case of module-leve bindings; it doesn't cover local bindings. #t `(has ,p) (for/or ([pr (in-list ctx)]) - (printf ">> ~s\n" (cdr pr)) (and (cdr pr) (equal? p (srcloc-source (cdr pr)))))))) (let ([m1 (parameterize ([current-load-relative-directory #f]) @@ -3633,6 +3632,18 @@ case of module-leve bindings; it doesn't cover local bindings. (check-name m1 (build-path (find-system-path 'temp-dir) "the-file.rkt")) (void))) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Make sure a top-level `begin` can be instantiated from +;; machine-independent form + +(let ([o (open-output-bytes)]) + (parameterize ([current-compile-target-machine #f]) + (write (compile '(begin (random) 10)) o)) + + (test 10 'top-begin/compile-any + (eval (parameterize ([read-accept-compiled #t]) + (read (open-input-bytes (get-output-bytes o))))))) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs) diff --git a/racket/src/bc/src/startup.inc b/racket/src/bc/src/startup.inc index 78cc291412..1965040870 100644 --- a/racket/src/bc/src/startup.inc +++ b/racket/src/bc/src/startup.inc @@ -42662,7 +42662,7 @@ static const char *startup_source = "(begin" "(let-values(((data-instance_0)" "(instantiate-linklet$1" -" data-linklet_0" +"(force-compile-linklet data-linklet_0)" "(list" " deserialize-instance" "(let-values(((ns1_0) ns_0)" diff --git a/racket/src/cs/schemified/expander.scm b/racket/src/cs/schemified/expander.scm index 4bd436ce7e..c3d6cfa071 100644 --- a/racket/src/cs/schemified/expander.scm +++ b/racket/src/cs/schemified/expander.scm @@ -48238,23 +48238,24 @@ (define create-compiled-in-memorys-using-shared-data (lambda (tops_0 data-linklet_0 ns_0) (let ((data-instance_0 - (instantiate-linklet - data-linklet_0 - (list - deserialize-instance - (let ((temp2_0 (namespace-phase ns_0))) - (let ((temp3_0 (namespace-mpi ns_0))) - (let ((temp4_0 (namespace-bulk-binding-registry ns_0))) - (let ((temp5_0 (current-code-inspector))) - (let ((temp4_1 temp4_0) - (temp3_1 temp3_0) - (temp2_1 temp2_0)) - (make-eager-instance-instance.1 - temp4_1 - temp2_1 - temp5_0 - ns_0 - temp3_1)))))))))) + (let ((app_0 (force-compile-linklet data-linklet_0))) + (instantiate-linklet + app_0 + (list + deserialize-instance + (let ((temp2_0 (namespace-phase ns_0))) + (let ((temp3_0 (namespace-mpi ns_0))) + (let ((temp4_0 (namespace-bulk-binding-registry ns_0))) + (let ((temp5_0 (current-code-inspector))) + (let ((temp4_1 temp4_0) + (temp3_1 temp3_0) + (temp2_1 temp2_0)) + (make-eager-instance-instance.1 + temp4_1 + temp2_1 + temp5_0 + ns_0 + temp3_1))))))))))) (let ((data_0 (|#%name| data diff --git a/racket/src/expander/eval/multi-top.rkt b/racket/src/expander/eval/multi-top.rkt index 943fee14f2..49d46b7215 100644 --- a/racket/src/expander/eval/multi-top.rkt +++ b/racket/src/expander/eval/multi-top.rkt @@ -7,13 +7,14 @@ "../compile/reserved-symbol.rkt" "../compile/namespace-scope.rkt" "../compile/multi-top.rkt" - "../compile/linklet.rkt") + "../compile/linklet.rkt" + "../compile/correlated-linklet.rkt") (provide create-compiled-in-memorys-using-shared-data) (define (create-compiled-in-memorys-using-shared-data tops data-linklet ns) (define data-instance - (instantiate-linklet data-linklet + (instantiate-linklet (force-compile-linklet data-linklet) (list deserialize-instance (make-eager-instance-instance #:namespace ns