mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-30 14:52:51 -06:00
using instruction RET was wrong; now use EVAL
This commit is contained in:
@@ -118,9 +118,8 @@ typedef enum {
|
||||
PGF_INSTR_SET_PAD = 8,
|
||||
PGF_INSTR_PUSH = 9,
|
||||
PGF_INSTR_EVAL = 10,
|
||||
PGF_INSTR_RET = 13,
|
||||
PGF_INSTR_DROP = 15,
|
||||
PGF_INSTR_FAIL = 16
|
||||
PGF_INSTR_DROP = 13,
|
||||
PGF_INSTR_FAIL = 14
|
||||
} PgfInstruction;
|
||||
|
||||
struct PgfPGF {
|
||||
|
||||
@@ -1085,35 +1085,6 @@ pgf_jit_function(PgfReader* rdr, PgfAbstr* abstr,
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PGF_INSTR_RET: {
|
||||
size_t h = pgf_read_int(rdr);
|
||||
|
||||
if (h > 0)
|
||||
jit_addi_p(JIT_VHEAP, JIT_VHEAP, h*sizeof(PgfClosure*));
|
||||
|
||||
size_t a, b;
|
||||
if (mod == 1) {
|
||||
a = pgf_read_int(rdr);
|
||||
b = pgf_read_int(rdr);
|
||||
#ifdef PGF_JIT_DEBUG
|
||||
gu_printf(out, err, "RET hp(%d) tail(%d,%d)\n", h, a, b);
|
||||
#endif
|
||||
} else {
|
||||
a = 0;
|
||||
b = pgf_read_int(rdr);
|
||||
#ifdef PGF_JIT_DEBUG
|
||||
gu_printf(out, err, "RET hp(%d) update(%d)\n", h, b);
|
||||
#endif
|
||||
jit_movi_p(JIT_R0, abstr->eval_gates->evaluate_indirection);
|
||||
jit_str_p(JIT_VCLOS, JIT_R0);
|
||||
jit_stxi_p(offsetof(PgfIndirection,val), JIT_VCLOS, JIT_VHEAP);
|
||||
}
|
||||
|
||||
if (b-(a+1) > 0)
|
||||
jit_addi_p(JIT_SP, JIT_SP, (b-(a+1))*sizeof(PgfClosure*));
|
||||
jit_bare_ret(a*sizeof(PgfClosure*));
|
||||
break;
|
||||
}
|
||||
case PGF_INSTR_DROP: {
|
||||
size_t n = pgf_read_int(rdr);
|
||||
size_t target = pgf_read_int(rdr);
|
||||
|
||||
Reference in New Issue
Block a user