diff options
author | 2018-04-19 05:32:07 +0000 | |
---|---|---|
committer | 2018-04-19 05:32:07 +0000 | |
commit | cee49280366af9aa35e889e90d0ae0e90b453a22 (patch) | |
tree | 6b0b08d809291da44d9fdd368e4d6c5d9e4ce25e /compiler/optimizing/nodes.h | |
parent | b8b38900bef869495afe63458f04c85ef9d5aae7 (diff) | |
parent | 080820c8e7a25bc3fb28d7c5a1524b0e5537c7a9 (diff) |
Merge "Revert "Deopt does not throw""
Diffstat (limited to 'compiler/optimizing/nodes.h')
-rw-r--r-- | compiler/optimizing/nodes.h | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index b315c81693..79d733060b 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -1272,6 +1272,8 @@ 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; @@ -2130,7 +2132,6 @@ class HInstruction : public ArenaObject<kArenaAllocInstruction> { !CanThrow() && !IsSuspendCheck() && !IsControlFlow() && - !IsDeoptimize() && !IsNativeDebugInfo() && !IsParameterValue() && // If we added an explicit barrier then we should keep it. @@ -3237,9 +3238,7 @@ class HDeoptimize FINAL : public HVariableInputSizeInstruction { bool NeedsEnvironment() 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; } + bool CanThrow() const OVERRIDE { return true; } DeoptimizationKind GetDeoptimizationKind() const { return GetPackedField<DeoptimizeKindField>(); } |