mjit.c: print JIT failure
mjit_compile.inc.erb: show unsupported insn name on --jit-verbose=1 too. Also, removed osboleted workaround. Now some insn-related functions are declared with MAYBE_UNUSED. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
7a0bc1f350
commit
dd64636a85
12
mjit.c
12
mjit.c
@ -735,6 +735,14 @@ header_name_end(const char *s)
|
|||||||
}
|
}
|
||||||
#endif
|
#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.
|
/* Compile ISeq in UNIT and return function pointer of JIT-ed code.
|
||||||
It may return NOT_COMPILABLE_JIT_ISEQ_FUNC if something went wrong. */
|
It may return NOT_COMPILABLE_JIT_ISEQ_FUNC if something went wrong. */
|
||||||
static mjit_func_t
|
static mjit_func_t
|
||||||
@ -830,6 +838,7 @@ convert_unit_to_func(struct rb_mjit_unit *unit)
|
|||||||
if (!success) {
|
if (!success) {
|
||||||
if (!mjit_opts.save_temps)
|
if (!mjit_opts.save_temps)
|
||||||
remove(c_file);
|
remove(c_file);
|
||||||
|
print_jit_result("failure", unit, 0, c_file);
|
||||||
return (mjit_func_t)NOT_COMPILABLE_JIT_ISEQ_FUNC;
|
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");
|
CRITICAL_SECTION_START(3, "end of jit");
|
||||||
add_to_list(node, &active_units);
|
add_to_list(node, &active_units);
|
||||||
if (unit->iseq)
|
if (unit->iseq)
|
||||||
verbose(1, "JIT success (%.1fms): %s@%s:%d -> %s", end_time - start_time, RSTRING_PTR(unit->iseq->body->location.label),
|
print_jit_result("success", unit, end_time - start_time, c_file);
|
||||||
RSTRING_PTR(rb_iseq_path(unit->iseq)), FIX2INT(unit->iseq->body->location.first_lineno), c_file);
|
|
||||||
CRITICAL_SECTION_FINISH(3, "end of jit");
|
CRITICAL_SECTION_FINISH(3, "end of jit");
|
||||||
}
|
}
|
||||||
return (mjit_func_t)func;
|
return (mjit_func_t)func;
|
||||||
|
@ -53,10 +53,8 @@ switch (insn) {
|
|||||||
% # We don't support InstructionsUnifications yet because it's not used for now.
|
% # 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.
|
% # We don't support TraceInstructions yet. There is no blocker for it but it's just not implemented.
|
||||||
default:
|
default:
|
||||||
if (mjit_opts.warnings || mjit_opts.verbose >= 3)
|
if (mjit_opts.warnings || mjit_opts.verbose)
|
||||||
/* passing excessive arguments to suppress warning in insns_info.inc as workaround... */
|
fprintf(stderr, "MJIT warning: Skipped to compile unsupported instruction: %s\n", insn_name(insn));
|
||||||
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);
|
|
||||||
status->success = FALSE;
|
status->success = FALSE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user