summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'compiler')
-rw-r--r--compiler/Android.bp10
-rw-r--r--compiler/optimizing/nodes.cc9
-rw-r--r--compiler/optimizing/nodes.h7
3 files changed, 8 insertions, 18 deletions
diff --git a/compiler/Android.bp b/compiler/Android.bp
index cde64b058c..ec9fef7492 100644
--- a/compiler/Android.bp
+++ b/compiler/Android.bp
@@ -210,7 +210,10 @@ gensrcs {
art_cc_library {
name: "libart-compiler",
- defaults: ["libart-compiler-defaults"],
+ defaults: [
+ "libart-compiler-defaults",
+ "dex2oat-pgo-defaults",
+ ],
codegen: {
arm: {
// VIXL assembly support for ARM targets.
@@ -244,11 +247,6 @@ art_cc_library {
"libdexfile",
],
- pgo: {
- instrumentation: true,
- profile_file: "art/dex2oat.profdata",
- benchmarks: ["dex2oat"],
- },
target: {
android: {
lto: {
diff --git a/compiler/optimizing/nodes.cc b/compiler/optimizing/nodes.cc
index f784f8f7f3..79bb70b9aa 100644
--- a/compiler/optimizing/nodes.cc
+++ b/compiler/optimizing/nodes.cc
@@ -1916,15 +1916,6 @@ const HTryBoundary* HBasicBlock::ComputeTryEntryOfSuccessors() const {
}
}
-bool HBasicBlock::HasThrowingInstructions() const {
- for (HInstructionIterator it(GetInstructions()); !it.Done(); it.Advance()) {
- if (it.Current()->CanThrow()) {
- return true;
- }
- }
- return false;
-}
-
static bool HasOnlyOneInstruction(const HBasicBlock& block) {
return block.GetPhis().IsEmpty()
&& !block.GetInstructions().IsEmpty()
diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h
index 79d733060b..b315c81693 100644
--- a/compiler/optimizing/nodes.h
+++ b/compiler/optimizing/nodes.h
@@ -1272,8 +1272,6 @@ class HBasicBlock : public ArenaObject<kArenaAllocBasicBlock> {
// the appropriate try entry will be returned.
const HTryBoundary* ComputeTryEntryOfSuccessors() const;
- bool HasThrowingInstructions() const;
-
// Returns whether this block dominates the blocked passed as parameter.
bool Dominates(HBasicBlock* block) const;
@@ -2132,6 +2130,7 @@ class HInstruction : public ArenaObject<kArenaAllocInstruction> {
!CanThrow() &&
!IsSuspendCheck() &&
!IsControlFlow() &&
+ !IsDeoptimize() &&
!IsNativeDebugInfo() &&
!IsParameterValue() &&
// If we added an explicit barrier then we should keep it.
@@ -3238,7 +3237,9 @@ class HDeoptimize FINAL : public HVariableInputSizeInstruction {
bool NeedsEnvironment() const OVERRIDE { return true; }
- bool CanThrow() const OVERRIDE { return true; }
+ // Even though deoptimize is often used for "exceptional cases" to go back to
+ // the interpreter, it never throws an exception.
+ bool CanThrow() const OVERRIDE { return false; }
DeoptimizationKind GetDeoptimizationKind() const { return GetPackedField<DeoptimizeKindField>(); }