From e9477c17b4bc0acc3410e0fe16cb31f9e87dd523 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 30 Jun 2011 09:28:07 -0600 Subject: [PATCH] fix JIT-generated `apply-values' for chaperones Closes PR 11981 --- collects/tests/racket/optimize.rktl | 8 ++++++++ src/racket/src/jit.c | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) 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(); }