diff --git a/collects/tests/racket/optimize.rktl b/collects/tests/racket/optimize.rktl index b06f40b473..151edc2e50 100644 --- a/collects/tests/racket/optimize.rktl +++ b/collects/tests/racket/optimize.rktl @@ -1483,6 +1483,14 @@ (list x results))) (test '(3 (a b c)) example-1 '(a b c))) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Make sure JIT-implemented `apply-values' recognizes chaperones: + +(test 99 (lambda () + (call-with-values + (lambda () (apply values (make-list (add1 (random 1)) '(99)))) + (chaperone-procedure car (lambda (v) v))))) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs) diff --git a/src/racket/src/jit.c b/src/racket/src/jit.c index 12a394e2b3..05a3fa89e3 100644 --- a/src/racket/src/jit.c +++ b/src/racket/src/jit.c @@ -2072,7 +2072,7 @@ int scheme_generate(Scheme_Object *obj, mz_jit_state *jitter, int is_tail, int w (void)jit_bmsi_l(sjc.bad_app_vals_target, JIT_R0, 0x1); jit_ldxi_s(JIT_R1, JIT_R0, &((Scheme_Object *)0x0)->type); (void)jit_blti_i(sjc.bad_app_vals_target, JIT_R1, scheme_prim_type); - (void)jit_bgti_i(sjc.bad_app_vals_target, JIT_R1, scheme_native_closure_type); + (void)jit_bgti_i(sjc.bad_app_vals_target, JIT_R1, scheme_proc_chaperone_type); CHECK_LIMIT(); }