summaryrefslogtreecommitdiff
path: root/compiler/optimizing/optimizing_compiler.cc
diff options
context:
space:
mode:
authorDavid Srbecky <dsrbecky@google.com>2020-02-20 19:15:49 +0000
committerTreehugger Robot <treehugger-gerrit@google.com>2020-02-22 07:24:40 +0000
commit6a8e66c753abdb53847107c1cb2f13e9114c811d (patch)
treeea8ca2171ca63818e4d9c3dcdd1d9d80af16d96e /compiler/optimizing/optimizing_compiler.cc
parent725da8fb9665abfb9c9c6aaca147120e46381b2d (diff)
Remove JIT native debug info on failed commits.
This could happen if single-implementation assumptions are invalid, and would result in temporary double entries in JIT debug info. Test: ./art/test.py -b -r --host --gcstress --jit --32 -t 068 Change-Id: I765c9310b6cc4fa440e4121780f8b9053388bd3d
Diffstat (limited to 'compiler/optimizing/optimizing_compiler.cc')
-rw-r--r--compiler/optimizing/optimizing_compiler.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc
index 9978a6fa18..0344fc565a 100644
--- a/compiler/optimizing/optimizing_compiler.cc
+++ b/compiler/optimizing/optimizing_compiler.cc
@@ -1295,6 +1295,8 @@ bool OptimizingCompiler::JitCompile(Thread* self,
/* has_should_deoptimize_flag= */ false,
cha_single_implementation_list)) {
code_cache->Free(self, region, reserved_code.data(), reserved_data.data());
+ MutexLock mu(self, *Locks::jit_lock_);
+ RemoveNativeDebugInfoForJit(ArrayRef<const void*>(reinterpret_cast<const void**>(&code), 1));
return false;
}
@@ -1403,6 +1405,8 @@ bool OptimizingCompiler::JitCompile(Thread* self,
codegen->GetGraph()->HasShouldDeoptimizeFlag(),
codegen->GetGraph()->GetCHASingleImplementationList())) {
code_cache->Free(self, region, reserved_code.data(), reserved_data.data());
+ MutexLock mu(self, *Locks::jit_lock_);
+ RemoveNativeDebugInfoForJit(ArrayRef<const void*>(reinterpret_cast<const void**>(&code), 1));
return false;
}