Fix optimistic BCE to back off after deopt

BUG=v8:3176
LOG=n
R=danno@chromium.org

Review URL: https://codereview.chromium.org/177523002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19530 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 3ffc6b5d
......@@ -375,7 +375,8 @@ BoundsCheckBbData* HBoundsCheckEliminationPhase::PreProcessBlock(
check->DeleteAndReplaceWith(check->ActualValue());
} else if (data->BasicBlock() == bb) {
data->CoverCheck(check, offset);
} else {
} else if (graph()->use_optimistic_licm() ||
bb->IsLoopSuccessorDominator()) {
int32_t new_lower_offset = offset < data->LowerOffset()
? offset
: data->LowerOffset();
......
// Copyright 2014 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --allow-natives-syntax
function foo(a) {
var sum = 0;
for (var i = 0; i < 10; i++) {
sum += a[i];
if (i > 6) {
sum -= a[i - 4];
sum -= a[i - 5];
}
}
return sum;
}
var a = new Int32Array(10);
foo(a);
foo(a);
%OptimizeFunctionOnNextCall(foo);
foo(a);
%OptimizeFunctionOnNextCall(foo);
foo(a);
assertOptimized(foo);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment