From d2c6ed6b07c800e223a10df5aab74ff2d70d4e9d Mon Sep 17 00:00:00 2001 From: k0kubun Date: Tue, 29 May 2018 02:48:38 +0000 Subject: [PATCH] mjit_compile.c: drop catch table handling The loop for `vm_exce_handle_exception` doesn't trigger `mjit_exec`, so I don't think this code is no longer needed. This was needed in development of original version of this JIT, but it seems not needed from the beginning (r62189) at Ruby repository. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- mjit_compile.c | 8 ++------ 1 file 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);