From 3cd4fc8bbb40a57d2ffde85f543c124f53237c1d Mon Sep 17 00:00:00 2001 From: Calin Juravle Date: Thu, 14 May 2015 15:15:42 +0100 Subject: Eliminate redundant constructor barriers when inlining. Bug: 20410297 Change-Id: I2097743d00eb795d050d390b1918e38c7f41d506 --- compiler/optimizing/optimizing_compiler.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'compiler/optimizing/optimizing_compiler.cc') diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc index 8bb5d8ebae..be9a42425b 100644 --- a/compiler/optimizing/optimizing_compiler.cc +++ b/compiler/optimizing/optimizing_compiler.cc @@ -512,9 +512,14 @@ CompiledMethod* OptimizingCompiler::TryCompile(const DexFile::CodeItem* code_ite class_def_idx, method_idx, access_flags, compiler_driver->GetVerifiedMethod(&dex_file, method_idx)); + bool requires_barrier = dex_compilation_unit.IsConstructor() + && compiler_driver->RequiresConstructorBarrier(Thread::Current(), + dex_compilation_unit.GetDexFile(), + dex_compilation_unit.GetClassDefIndex()); ArenaAllocator arena(Runtime::Current()->GetArenaPool()); HGraph* graph = new (&arena) HGraph( - &arena, dex_file, method_idx, compiler_driver->GetCompilerOptions().GetDebuggable()); + &arena, dex_file, method_idx, requires_barrier, + compiler_driver->GetCompilerOptions().GetDebuggable()); // For testing purposes, we put a special marker on method names that should be compiled // with this compiler. This makes sure we're not regressing. -- cgit v1.2.3-59-g8ed1b