fix a problem mixing JIT and non-JIT code

Crashes the "optimize.rktl" test suite when the JIT supported but
disabled, because that test suite re-enables the JIT.
This commit is contained in:
Matthew Flatt 2014-12-05 10:16:40 -07:00
parent b7039106e6
commit 38da2aa2e7

View File

@ -2448,7 +2448,11 @@ scheme_make_closure(Scheme_Thread *p, Scheme_Object *code, int close)
data = (Scheme_Closure_Data *)code;
#ifdef MZ_USE_JIT
if (data->u.native_code) {
if (data->u.native_code
/* If the union points to a another Scheme_Closure_Data*, then it's not actually
a pointer to native code. We must have a closure referenced frmo non-JITted code
where the closure is also referenced by JITted code. */
&& !SAME_TYPE(SCHEME_TYPE(data->u.native_code), scheme_unclosed_procedure_type)) {
Scheme_Object *nc;
nc = scheme_make_native_closure(data->u.native_code);