diff options
Diffstat (limited to 'mjit_compile.c')
-rw-r--r-- | mjit_compile.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/mjit_compile.c b/mjit_compile.c index 4f87550e78..5eafd72329 100644 --- a/mjit_compile.c +++ b/mjit_compile.c @@ -214,7 +214,8 @@ mjit_compile(FILE *f, const struct rb_iseq_constant_body *body, const char *func fprintf(f, " static const VALUE *const original_body_iseq = (VALUE *)0x%"PRIxVALUE";\n", (VALUE)body->iseq_encoded); - /* Simulate `opt_pc` in setup_parameters_complex */ + /* Simulate `opt_pc` in setup_parameters_complex. Other PCs which may be passed by catch tables + are not considered since vm_exec doesn't call mjit_exec for catch tables. */ if (body->param.flags.has_opt) { int i; fprintf(f, "\n"); @@ -227,11 +228,6 @@ mjit_compile(FILE *f, const struct rb_iseq_constant_body *body, const char *func fprintf(f, " }\n"); } - /* ISeq might be used for catch table too. For that usage, this code cancels JIT execution. */ - fprintf(f, " if (reg_cfp->pc != original_body_iseq) {\n"); - fprintf(f, " return Qundef;\n"); - fprintf(f, " }\n"); - compile_insns(f, body, 0, 0, &status); compile_cancel_handler(f, body, &status); fprintf(f, "\n} /* end of %s */\n", funcname); |