fix JIT-generated `apply-values' for chaperones

Closes PR 11981
This commit is contained in:
Matthew Flatt 2011-06-30 09:28:07 -06:00
parent b86e96cf90
commit e9477c17b4
2 changed files with 9 additions and 1 deletions

View File

@ -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)

View File

@ -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();
}