+2008-10-05 Aleksey Demakov <ademakov@gmail.com>
+
+ * jit/jit-interp.c (_jit_run_function): fix implementation of the
+ JIT_OP_TRUNC_INT and JIT_OP_TRUNC_UINT opcodes in interpreter.
+
+ * jit/jit-rules-interp.c (_jit_gen_insn): add support of the
+ JIT_OP_INCOMING_REG opcode, interpreter needs it for exception
+ handling.
+
2008-08-07 Klaus Treichel <ktreichel@web.de>
* jit/jit-apply.c jit/jit-insn.c, jit/jit-interp.c,
VMCASE(JIT_OP_TRUNC_INT):
{
/* Truncate an integer to a signed 32-bit value */
- /* In the interpreter, this is a NOP */
+ VM_R0_INT = VM_R1_INT;
VM_MODIFY_PC(1);
}
VMBREAK;
VMCASE(JIT_OP_TRUNC_UINT):
{
/* Truncate an integer to an unsigned 32-bit value */
- /* In the interpreter, this is a NOP */
+ VM_R0_INT = VM_R1_INT;
VM_MODIFY_PC(1);
}
VMBREAK;
jit_cache_opcode(&(gen->posn), insn->opcode);
break;
+ case JIT_OP_INCOMING_REG:
+ /* Store incoming value (in interpreter this is used to
+ pass an exception object to the catcher) */
+ store_value(gen, insn->value1);
+ break;
+
case JIT_OP_RETURN_REG:
/* Push a function return value back onto the stack */
switch(jit_type_normalize(insn->value1->type)->kind)