diff options
author | Roland Levillain <rpl@google.com> | 2015-04-24 18:17:40 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-04-24 18:17:41 +0000 |
commit | eb5459ca861b58ee8a9907789f11400dcdddb87b (patch) | |
tree | 36c1f328c48f0ec111ee31702cc4a82ddb2ad784 /compiler/optimizing/code_generator_x86_64.cc | |
parent | ae803f6efbe8378b5423c51ee3c5564cae0e6e59 (diff) | |
parent | 4c0eb42259d790fddcd9978b66328dbb3ab65615 (diff) | |
download | art-eb5459ca861b58ee8a9907789f11400dcdddb87b.tar.gz art-eb5459ca861b58ee8a9907789f11400dcdddb87b.tar.bz2 art-eb5459ca861b58ee8a9907789f11400dcdddb87b.zip |
Merge "Ensure inlined static calls perform clinit checks in Optimizing."
Diffstat (limited to 'compiler/optimizing/code_generator_x86_64.cc')
-rw-r--r-- | compiler/optimizing/code_generator_x86_64.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler/optimizing/code_generator_x86_64.cc b/compiler/optimizing/code_generator_x86_64.cc index 0c97a6e159..9cf5c218d4 100644 --- a/compiler/optimizing/code_generator_x86_64.cc +++ b/compiler/optimizing/code_generator_x86_64.cc @@ -1289,6 +1289,10 @@ Location InvokeDexCallingConventionVisitor::GetNextLocation(Primitive::Type type } void LocationsBuilderX86_64::VisitInvokeStaticOrDirect(HInvokeStaticOrDirect* invoke) { + // Explicit clinit checks triggered by static invokes must have been + // pruned by art::PrepareForRegisterAllocation. + DCHECK(!invoke->IsStaticWithExplicitClinitCheck()); + IntrinsicLocationsBuilderX86_64 intrinsic(codegen_); if (intrinsic.TryDispatch(invoke)) { return; @@ -1307,6 +1311,10 @@ static bool TryGenerateIntrinsicCode(HInvoke* invoke, CodeGeneratorX86_64* codeg } void InstructionCodeGeneratorX86_64::VisitInvokeStaticOrDirect(HInvokeStaticOrDirect* invoke) { + // Explicit clinit checks triggered by static invokes must have been + // pruned by art::PrepareForRegisterAllocation. + DCHECK(!invoke->IsStaticWithExplicitClinitCheck()); + if (TryGenerateIntrinsicCode(invoke, codegen_)) { return; } |