summaryrefslogtreecommitdiff
path: root/compiler/optimizing/optimizing_compiler.cc
diff options
context:
space:
mode:
author Mythri Alle <mythria@google.com> 2024-07-18 14:32:48 +0000
committer Mythri Alle <mythria@google.com> 2024-07-23 15:19:10 +0000
commit623a4456a0e5d2525e8aa180a82c581767ece8fd (patch)
tree43f57868e02b461a74748bddecc87c5c9bfb8571 /compiler/optimizing/optimizing_compiler.cc
parentbdb056806d3daefbe923913cf50d57710a1b0a2a (diff)
Mark methods that failed compilation as kAccCompileDontBother
We might fail to compile methods for several reasons like large methods, have invalid bytecode and others. There is no need to retry compilations on such methods since they will fail again. So mark such methods with kAccCompileDontBother. Bug: 350094426 Test: art/test.py Change-Id: I86b7b62bafcd4d4461cec2aa3459a50726043de7
Diffstat (limited to 'compiler/optimizing/optimizing_compiler.cc')
-rw-r--r--compiler/optimizing/optimizing_compiler.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc
index 3f73459a00..89edbed54d 100644
--- a/compiler/optimizing/optimizing_compiler.cc
+++ b/compiler/optimizing/optimizing_compiler.cc
@@ -868,6 +868,11 @@ CodeGenerator* OptimizingCompiler::TryCompile(ArenaAllocator* allocator,
compilation_stats_.get());
GraphAnalysisResult result = builder.BuildGraph();
if (result != kAnalysisSuccess) {
+ // Don't try recompiling this method again.
+ if (method != nullptr) {
+ ScopedObjectAccess soa(Thread::Current());
+ method->SetDontCompile();
+ }
SCOPED_TRACE << "Not compiling because of " << result;
switch (result) {
case kAnalysisSkipped: {