From 6c3af16609a71286b3d2e93131034248a4f639ba Mon Sep 17 00:00:00 2001 From: Roland Levillain Date: Thu, 27 Apr 2017 11:18:56 +0100 Subject: Use dex2oat instead of dex2oatd in non-debug run-tests. The "$inline$" and "$noinline$" substrings in methods' names are now always honored when compiling with a core image, regardless of the debug mode status. Test: art/test/testrunner/testrunner.py --ndebug --debug Change-Id: I3c3e0fb9c33644093bb5fb218180b68dcc10fc83 --- compiler/optimizing/inliner.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'compiler/optimizing/inliner.cc') diff --git a/compiler/optimizing/inliner.cc b/compiler/optimizing/inliner.cc index 1f8a58cdaa..92d0f3c032 100644 --- a/compiler/optimizing/inliner.cc +++ b/compiler/optimizing/inliner.cc @@ -140,6 +140,14 @@ void HInliner::Run() { DCHECK_NE(total_number_of_instructions_, 0u); DCHECK_NE(inlining_budget_, 0u); + // If we're compiling with a core image (which is only used for + // test purposes), honor inlining directives in method names: + // - if a method's name contains the substring "$inline$", ensure + // that this method is actually inlined; + // - if a method's name contains the substring "$noinline$", do not + // inline that method. + const bool honor_inlining_directives = IsCompilingWithCoreImage(); + // Keep a copy of all blocks when starting the visit. ArenaVector blocks = graph_->GetReversePostOrder(); DCHECK(!blocks.empty()); @@ -152,7 +160,7 @@ void HInliner::Run() { HInvoke* call = instruction->AsInvoke(); // As long as the call is not intrinsified, it is worth trying to inline. if (call != nullptr && call->GetIntrinsic() == Intrinsics::kNone) { - if (kIsDebugBuild && IsCompilingWithCoreImage()) { + if (honor_inlining_directives) { // Debugging case: directives in method names control or assert on inlining. std::string callee_name = outer_compilation_unit_.GetDexFile()->PrettyMethod( call->GetDexMethodIndex(), /* with_signature */ false); -- cgit v1.2.3-59-g8ed1b