fix JIT bug related to inlining `variable-reference-constant?'
This commit is contained in:
parent
5cb3422ea9
commit
16ef341e98
|
@ -2096,10 +2096,10 @@ int scheme_generate(Scheme_Object *obj, mz_jit_state *jitter, int is_tail, int w
|
||||||
CHECK_LIMIT();
|
CHECK_LIMIT();
|
||||||
mz_rs_sync();
|
mz_rs_sync();
|
||||||
|
|
||||||
/* Load global+stx array: */
|
/* Load prefix: */
|
||||||
pos = mz_remap(SCHEME_TOPLEVEL_DEPTH(v));
|
pos = mz_remap(SCHEME_TOPLEVEL_DEPTH(v));
|
||||||
jit_ldxi_p(JIT_R2, JIT_RUNSTACK, WORDS_TO_BYTES(pos));
|
mz_rs_ldxi(JIT_R2, pos);
|
||||||
/* Try already-renamed stx: */
|
/* Extract bucket from prefix: */
|
||||||
pos = SCHEME_TOPLEVEL_POS(v);
|
pos = SCHEME_TOPLEVEL_POS(v);
|
||||||
jit_ldxi_p(JIT_R2, JIT_R2, &(((Scheme_Prefix *)0x0)->a[pos]));
|
jit_ldxi_p(JIT_R2, JIT_R2, &(((Scheme_Prefix *)0x0)->a[pos]));
|
||||||
CHECK_LIMIT();
|
CHECK_LIMIT();
|
||||||
|
@ -2115,7 +2115,7 @@ int scheme_generate(Scheme_Object *obj, mz_jit_state *jitter, int is_tail, int w
|
||||||
jit_stxi_p(&((Scheme_Bucket *)0x0)->val, JIT_R2, JIT_R0);
|
jit_stxi_p(&((Scheme_Bucket *)0x0)->val, JIT_R2, JIT_R0);
|
||||||
ref3 = jit_jmpi(jit_forward());
|
ref3 = jit_jmpi(jit_forward());
|
||||||
|
|
||||||
/* slow path: */
|
/* Slow path: */
|
||||||
mz_patch_branch(ref1);
|
mz_patch_branch(ref1);
|
||||||
mz_patch_branch(ref2);
|
mz_patch_branch(ref2);
|
||||||
__END_SHORT_JUMPS__(1);
|
__END_SHORT_JUMPS__(1);
|
||||||
|
|
|
@ -451,7 +451,7 @@ static int generate_inlined_constant_varref_test(mz_jit_state *jitter, Scheme_Ob
|
||||||
|
|
||||||
/* Load global array: */
|
/* Load global array: */
|
||||||
pos = mz_remap(SCHEME_TOPLEVEL_DEPTH(obj));
|
pos = mz_remap(SCHEME_TOPLEVEL_DEPTH(obj));
|
||||||
jit_ldxi_p(JIT_R2, JIT_RUNSTACK, WORDS_TO_BYTES(pos));
|
mz_rs_ldxi(JIT_R2, pos);
|
||||||
/* Load bucket: */
|
/* Load bucket: */
|
||||||
pos = SCHEME_TOPLEVEL_POS(obj);
|
pos = SCHEME_TOPLEVEL_POS(obj);
|
||||||
jit_ldxi_p(JIT_R1, JIT_R2, &(((Scheme_Prefix *)0x0)->a[pos]));
|
jit_ldxi_p(JIT_R1, JIT_R2, &(((Scheme_Prefix *)0x0)->a[pos]));
|
||||||
|
|
Loading…
Reference in New Issue
Block a user