Skip to content

Commit 68f6941

Browse files
committed
8314452: Explicitly indicate inlining success/failure in PrintInlining
Reviewed-by: kvn, shade, thartmann
1 parent b482e6d commit 68f6941

File tree

13 files changed

+61
-47
lines changed

13 files changed

+61
-47
lines changed

src/hotspot/share/c1/c1_GraphBuilder.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4438,12 +4438,12 @@ void GraphBuilder::print_inlining(ciMethod* callee, const char* msg, bool succes
44384438
CompilerEvent::InlineEvent::post(event, compilation()->env()->task()->compile_id(), method()->get_Method(), callee, success, msg, bci());
44394439
}
44404440

4441-
CompileTask::print_inlining_ul(callee, scope()->level(), bci(), msg);
4441+
CompileTask::print_inlining_ul(callee, scope()->level(), bci(), inlining_result_of(success), msg);
44424442

44434443
if (!compilation()->directive()->PrintInliningOption) {
44444444
return;
44454445
}
4446-
CompileTask::print_inlining_tty(callee, scope()->level(), bci(), msg);
4446+
CompileTask::print_inlining_tty(callee, scope()->level(), bci(), inlining_result_of(success), msg);
44474447
if (success && CIPrintMethodCodes) {
44484448
callee->print_codes();
44494449
}

src/hotspot/share/compiler/compileTask.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ bool CompileTask::check_break_at_flags() {
409409

410410
// ------------------------------------------------------------------
411411
// CompileTask::print_inlining
412-
void CompileTask::print_inlining_inner(outputStream* st, ciMethod* method, int inline_level, int bci, const char* msg) {
412+
void CompileTask::print_inlining_inner(outputStream* st, ciMethod* method, int inline_level, int bci, InliningResult result, const char* msg) {
413413
// 1234567
414414
st->print(" "); // print timestamp
415415
// 1234
@@ -444,7 +444,9 @@ void CompileTask::print_inlining_inner(outputStream* st, ciMethod* method, int i
444444
st->print(" (not loaded)");
445445

446446
if (msg != nullptr) {
447-
st->print(" %s", msg);
447+
st->print(" %s%s", result == InliningResult::SUCCESS ? "" : "failed to inline: ", msg);
448+
} else if (result == InliningResult::FAILURE) {
449+
st->print(" %s", "failed to inline");
448450
}
449451
st->cr();
450452
}
@@ -469,11 +471,11 @@ void CompileTask::print_ul(const nmethod* nm, const char* msg) {
469471
}
470472
}
471473

472-
void CompileTask::print_inlining_ul(ciMethod* method, int inline_level, int bci, const char* msg) {
474+
void CompileTask::print_inlining_ul(ciMethod* method, int inline_level, int bci, InliningResult result, const char* msg) {
473475
LogTarget(Debug, jit, inlining) lt;
474476
if (lt.is_enabled()) {
475477
LogStream ls(lt);
476-
print_inlining_inner(&ls, method, inline_level, bci, msg);
478+
print_inlining_inner(&ls, method, inline_level, bci, result, msg);
477479
}
478480
}
479481

src/hotspot/share/compiler/compileTask.hpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ class DirectiveSet;
3535

3636
JVMCI_ONLY(class JVMCICompileState;)
3737

38+
enum class InliningResult { SUCCESS, FAILURE };
39+
40+
inline InliningResult inlining_result_of(bool success) {
41+
return success ? InliningResult::SUCCESS : InliningResult::FAILURE;
42+
}
43+
3844
// CompileTask
3945
//
4046
// An entry in the compile queue. It represents a pending or current
@@ -225,11 +231,11 @@ class CompileTask : public CHeapObj<mtCompiler> {
225231

226232
bool check_break_at_flags();
227233

228-
static void print_inlining_inner(outputStream* st, ciMethod* method, int inline_level, int bci, const char* msg = nullptr);
229-
static void print_inlining_tty(ciMethod* method, int inline_level, int bci, const char* msg = nullptr) {
230-
print_inlining_inner(tty, method, inline_level, bci, msg);
234+
static void print_inlining_inner(outputStream* st, ciMethod* method, int inline_level, int bci, InliningResult result, const char* msg = nullptr);
235+
static void print_inlining_tty(ciMethod* method, int inline_level, int bci, InliningResult result, const char* msg = nullptr) {
236+
print_inlining_inner(tty, method, inline_level, bci, result, msg);
231237
}
232-
static void print_inlining_ul(ciMethod* method, int inline_level, int bci, const char* msg = nullptr);
238+
static void print_inlining_ul(ciMethod* method, int inline_level, int bci, InliningResult result, const char* msg = nullptr);
233239
};
234240

235241
#endif // SHARE_COMPILER_COMPILETASK_HPP

src/hotspot/share/opto/bytecodeInfo.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -545,9 +545,9 @@ void InlineTree::print_inlining(ciMethod* callee_method, int caller_bci,
545545
}
546546
}
547547
CompileTask::print_inlining_ul(callee_method, inline_level(),
548-
caller_bci, inline_msg);
548+
caller_bci, inlining_result_of(success), inline_msg);
549549
if (C->print_inlining()) {
550-
C->print_inlining(callee_method, inline_level(), caller_bci, inline_msg);
550+
C->print_inlining(callee_method, inline_level(), caller_bci, inlining_result_of(success), inline_msg);
551551
guarantee(callee_method != nullptr, "would crash in CompilerEvent::InlineEvent::post");
552552
if (Verbose) {
553553
const InlineTree *top = this;

src/hotspot/share/opto/callGenerator.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -352,11 +352,11 @@ class LateInlineCallGenerator : public DirectCallGenerator {
352352
return DirectCallGenerator::generate(jvms);
353353
}
354354

355-
virtual void print_inlining_late(const char* msg) {
355+
virtual void print_inlining_late(InliningResult result, const char* msg) {
356356
CallNode* call = call_node();
357357
Compile* C = Compile::current();
358358
C->print_inlining_assert_ready();
359-
C->print_inlining(method(), call->jvms()->depth()-1, call->jvms()->bci(), msg);
359+
C->print_inlining(method(), call->jvms()->depth()-1, call->jvms()->bci(), result, msg);
360360
C->print_inlining_move_to(this);
361361
C->print_inlining_update_delayed(this);
362362
}
@@ -494,11 +494,11 @@ class LateInlineVirtualCallGenerator : public VirtualCallGenerator {
494494
return new_jvms;
495495
}
496496

497-
virtual void print_inlining_late(const char* msg) {
497+
virtual void print_inlining_late(InliningResult result, const char* msg) {
498498
CallNode* call = call_node();
499499
Compile* C = Compile::current();
500500
C->print_inlining_assert_ready();
501-
C->print_inlining(method(), call->jvms()->depth()-1, call->jvms()->bci(), msg);
501+
C->print_inlining(method(), call->jvms()->depth()-1, call->jvms()->bci(), result, msg);
502502
C->print_inlining_move_to(this);
503503
C->print_inlining_update_delayed(this);
504504
}
@@ -527,7 +527,7 @@ bool LateInlineVirtualCallGenerator::do_late_inline_check(Compile* C, JVMState*
527527
const Type* recv_type = C->initial_gvn()->type(receiver);
528528
if (recv_type->maybe_null()) {
529529
if (C->print_inlining() || C->print_intrinsics()) {
530-
C->print_inlining(method(), jvms->depth()-1, call_node()->jvms()->bci(),
530+
C->print_inlining(method(), jvms->depth()-1, call_node()->jvms()->bci(), InliningResult::FAILURE,
531531
"late call devirtualization failed (receiver may be null)");
532532
}
533533
return false;
@@ -537,7 +537,7 @@ bool LateInlineVirtualCallGenerator::do_late_inline_check(Compile* C, JVMState*
537537
if (!allow_inline && _callee->holder()->is_interface()) {
538538
// Don't convert the interface call to a direct call guarded by an interface subtype check.
539539
if (C->print_inlining() || C->print_intrinsics()) {
540-
C->print_inlining(method(), jvms->depth()-1, call_node()->jvms()->bci(),
540+
C->print_inlining(method(), jvms->depth()-1, call_node()->jvms()->bci(), InliningResult::FAILURE,
541541
"late call devirtualization failed (interface call)");
542542
}
543543
return false;

src/hotspot/share/opto/callGenerator.hpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,22 +171,28 @@ class CallGenerator : public ArenaObj {
171171
CallGenerator* cg);
172172
virtual Node* generate_predicate(JVMState* jvms, int predicate) { return nullptr; };
173173

174-
virtual void print_inlining_late(const char* msg) { ShouldNotReachHere(); }
174+
virtual void print_inlining_late(InliningResult result, const char* msg) { ShouldNotReachHere(); }
175175

176176
static void print_inlining(Compile* C, ciMethod* callee, int inline_level, int bci, const char* msg) {
177-
if (C->print_inlining()) {
178-
C->print_inlining(callee, inline_level, bci, msg);
179-
}
177+
print_inlining_impl(C, callee, inline_level, bci, InliningResult::SUCCESS, msg);
180178
}
181179

182180
static void print_inlining_failure(Compile* C, ciMethod* callee, int inline_level, int bci, const char* msg) {
183-
print_inlining(C, callee, inline_level, bci, msg);
181+
print_inlining_impl(C, callee, inline_level, bci, InliningResult::FAILURE, msg);
184182
C->log_inline_failure(msg);
185183
}
186184

187185
static bool is_inlined_method_handle_intrinsic(JVMState* jvms, ciMethod* m);
188186
static bool is_inlined_method_handle_intrinsic(ciMethod* caller, int bci, ciMethod* m);
189187
static bool is_inlined_method_handle_intrinsic(ciMethod* symbolic_info, ciMethod* m);
188+
189+
private:
190+
static void print_inlining_impl(Compile* C, ciMethod* callee, int inline_level, int bci,
191+
InliningResult result, const char* msg) {
192+
if (C->print_inlining()) {
193+
C->print_inlining(callee, inline_level, bci, result, msg);
194+
}
195+
}
190196
};
191197

192198

src/hotspot/share/opto/compile.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2101,7 +2101,7 @@ void Compile::inline_incrementally(PhaseIterGVN& igvn) {
21012101
CallGenerator* cg = _late_inlines.at(i);
21022102
const char* msg = "live nodes > LiveNodeCountInliningCutoff";
21032103
if (do_print_inlining) {
2104-
cg->print_inlining_late(msg);
2104+
cg->print_inlining_late(InliningResult::FAILURE, msg);
21052105
}
21062106
log_late_inline_failure(cg, msg);
21072107
}

src/hotspot/share/opto/compile.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -512,9 +512,9 @@ class Compile : public Phase {
512512
void print_inlining_assert_ready();
513513
void print_inlining_reset();
514514

515-
void print_inlining(ciMethod* method, int inline_level, int bci, const char* msg = nullptr) {
515+
void print_inlining(ciMethod* method, int inline_level, int bci, InliningResult result, const char* msg = nullptr) {
516516
stringStream ss;
517-
CompileTask::print_inlining_inner(&ss, method, inline_level, bci, msg);
517+
CompileTask::print_inlining_inner(&ss, method, inline_level, bci, result, msg);
518518
print_inlining_stream()->print("%s", ss.freeze());
519519
}
520520

src/hotspot/share/opto/doCall.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ void trace_type_profile(Compile* C, ciMethod* method, int depth, int bci, ciMeth
6666
method->print_short_name();
6767
tty->cr();
6868
}
69-
CompileTask::print_inlining_tty(prof_method, depth, bci);
69+
CompileTask::print_inlining_tty(prof_method, depth, bci, InliningResult::SUCCESS);
7070
} else {
7171
out = C->print_inlining_stream();
7272
}
@@ -373,7 +373,7 @@ CallGenerator* Compile::call_generator(ciMethod* callee, int vtable_index, bool
373373
if (call_does_dispatch) {
374374
const char* msg = "virtual call";
375375
if (C->print_inlining()) {
376-
print_inlining(callee, jvms->depth() - 1, jvms->bci(), msg);
376+
print_inlining(callee, jvms->depth() - 1, jvms->bci(), InliningResult::FAILURE, msg);
377377
}
378378
C->log_inline_failure(msg);
379379
if (IncrementalInlineVirtual && allow_inline) {

src/hotspot/share/opto/library_call.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,9 @@ JVMState* LibraryIntrinsic::generate(JVMState* jvms) {
118118
kit.try_to_inline(_last_predicate)) {
119119
const char *inline_msg = is_virtual() ? "(intrinsic, virtual)"
120120
: "(intrinsic)";
121-
CompileTask::print_inlining_ul(callee, jvms->depth() - 1, bci, inline_msg);
121+
CompileTask::print_inlining_ul(callee, jvms->depth() - 1, bci, InliningResult::SUCCESS, inline_msg);
122122
if (C->print_intrinsics() || C->print_inlining()) {
123-
C->print_inlining(callee, jvms->depth() - 1, bci, inline_msg);
123+
C->print_inlining(callee, jvms->depth() - 1, bci, InliningResult::SUCCESS, inline_msg);
124124
}
125125
C->gather_intrinsic_statistics(intrinsic_id(), is_virtual(), Compile::_intrinsic_worked);
126126
if (C->log()) {
@@ -146,9 +146,9 @@ JVMState* LibraryIntrinsic::generate(JVMState* jvms) {
146146
msg = is_virtual() ? "failed to inline (intrinsic, virtual), method not annotated"
147147
: "failed to inline (intrinsic), method not annotated";
148148
}
149-
CompileTask::print_inlining_ul(callee, jvms->depth() - 1, bci, msg);
149+
CompileTask::print_inlining_ul(callee, jvms->depth() - 1, bci, InliningResult::FAILURE, msg);
150150
if (C->print_intrinsics() || C->print_inlining()) {
151-
C->print_inlining(callee, jvms->depth() - 1, bci, msg);
151+
C->print_inlining(callee, jvms->depth() - 1, bci, InliningResult::FAILURE, msg);
152152
}
153153
} else {
154154
// Root compile
@@ -189,9 +189,9 @@ Node* LibraryIntrinsic::generate_predicate(JVMState* jvms, int predicate) {
189189
if (!kit.failing()) {
190190
const char *inline_msg = is_virtual() ? "(intrinsic, virtual, predicate)"
191191
: "(intrinsic, predicate)";
192-
CompileTask::print_inlining_ul(callee, jvms->depth() - 1, bci, inline_msg);
192+
CompileTask::print_inlining_ul(callee, jvms->depth() - 1, bci, InliningResult::SUCCESS, inline_msg);
193193
if (C->print_intrinsics() || C->print_inlining()) {
194-
C->print_inlining(callee, jvms->depth() - 1, bci, inline_msg);
194+
C->print_inlining(callee, jvms->depth() - 1, bci, InliningResult::SUCCESS, inline_msg);
195195
}
196196
C->gather_intrinsic_statistics(intrinsic_id(), is_virtual(), Compile::_intrinsic_worked);
197197
if (C->log()) {
@@ -207,9 +207,9 @@ Node* LibraryIntrinsic::generate_predicate(JVMState* jvms, int predicate) {
207207
if (jvms->has_method()) {
208208
// Not a root compile.
209209
const char* msg = "failed to generate predicate for intrinsic";
210-
CompileTask::print_inlining_ul(kit.callee(), jvms->depth() - 1, bci, msg);
210+
CompileTask::print_inlining_ul(kit.callee(), jvms->depth() - 1, bci, InliningResult::FAILURE, msg);
211211
if (C->print_intrinsics() || C->print_inlining()) {
212-
C->print_inlining(kit.callee(), jvms->depth() - 1, bci, msg);
212+
C->print_inlining(kit.callee(), jvms->depth() - 1, bci, InliningResult::FAILURE, msg);
213213
}
214214
} else {
215215
// Root compile

0 commit comments

Comments
 (0)