summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mjit.c12
-rw-r--r--tool/ruby_vm/views/mjit_compile.inc.erb6
2 files changed, 12 insertions, 6 deletions
diff --git a/mjit.c b/mjit.c
index a16ef7f5ec..49d60d7ef1 100644
--- a/mjit.c
+++ b/mjit.c
@@ -735,6 +735,14 @@ header_name_end(const char *s)
}
#endif
+static void
+print_jit_result(const char *result, const struct rb_mjit_unit *unit, const double duration, const char *c_file)
+{
+ verbose(1, "JIT %s (%.1fms): %s@%s:%d -> %s", result,
+ duration, RSTRING_PTR(unit->iseq->body->location.label),
+ RSTRING_PTR(rb_iseq_path(unit->iseq)), FIX2INT(unit->iseq->body->location.first_lineno), c_file);
+}
+
/* Compile ISeq in UNIT and return function pointer of JIT-ed code.
It may return NOT_COMPILABLE_JIT_ISEQ_FUNC if something went wrong. */
static mjit_func_t
@@ -830,6 +838,7 @@ convert_unit_to_func(struct rb_mjit_unit *unit)
if (!success) {
if (!mjit_opts.save_temps)
remove(c_file);
+ print_jit_result("failure", unit, 0, c_file);
return (mjit_func_t)NOT_COMPILABLE_JIT_ISEQ_FUNC;
}
@@ -853,8 +862,7 @@ convert_unit_to_func(struct rb_mjit_unit *unit)
CRITICAL_SECTION_START(3, "end of jit");
add_to_list(node, &active_units);
if (unit->iseq)
- verbose(1, "JIT success (%.1fms): %s@%s:%d -> %s", end_time - start_time, RSTRING_PTR(unit->iseq->body->location.label),
- RSTRING_PTR(rb_iseq_path(unit->iseq)), FIX2INT(unit->iseq->body->location.first_lineno), c_file);
+ print_jit_result("success", unit, end_time - start_time, c_file);
CRITICAL_SECTION_FINISH(3, "end of jit");
}
return (mjit_func_t)func;
diff --git a/tool/ruby_vm/views/mjit_compile.inc.erb b/tool/ruby_vm/views/mjit_compile.inc.erb
index 47492a0ed8..3c4dba6786 100644
--- a/tool/ruby_vm/views/mjit_compile.inc.erb
+++ b/tool/ruby_vm/views/mjit_compile.inc.erb
@@ -53,10 +53,8 @@ switch (insn) {
% # We don't support InstructionsUnifications yet because it's not used for now.
% # We don't support TraceInstructions yet. There is no blocker for it but it's just not implemented.
default:
- if (mjit_opts.warnings || mjit_opts.verbose >= 3)
- /* passing excessive arguments to suppress warning in insns_info.inc as workaround... */
- fprintf(stderr, "MJIT warning: Failed to compile instruction: %s (%s: %d...)\n",
- insn_name(insn), insn_op_types(insn), insn_len(insn) > 0 ? insn_op_type(insn, 0) : 0);
+ if (mjit_opts.warnings || mjit_opts.verbose)
+ fprintf(stderr, "MJIT warning: Skipped to compile unsupported instruction: %s\n", insn_name(insn));
status->success = FALSE;
break;
}