Commit c16b8f6c authored by svenpanne's avatar svenpanne Committed by Commit bot

Fixed environment handling for LFlooringDivI on ARM.

Beautiful code... :-}

BUG=chromium:437765
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#25613}
parent d3c21767
......@@ -1397,8 +1397,16 @@ LInstruction* LChunkBuilder::DoFlooringDivI(HMathFloorOfDiv* instr) {
LOperand* divisor = UseRegister(instr->right());
LOperand* temp =
CpuFeatures::IsSupported(SUDIV) ? NULL : TempDoubleRegister();
LFlooringDivI* div = new(zone()) LFlooringDivI(dividend, divisor, temp);
return AssignEnvironment(DefineAsRegister(div));
LInstruction* result =
DefineAsRegister(new (zone()) LFlooringDivI(dividend, divisor, temp));
if (instr->CheckFlag(HValue::kCanBeDivByZero) ||
instr->CheckFlag(HValue::kBailoutOnMinusZero) ||
(instr->CheckFlag(HValue::kCanOverflow) &&
(!CpuFeatures::IsSupported(SUDIV) ||
!instr->CheckFlag(HValue::kAllUsesTruncatingToInt32)))) {
result = AssignEnvironment(result);
}
return result;
}
......
// 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 --no-fold-constants
function foo(x, y) {
return Math.floor(x / y);
}
function bar(x, y) {
return foo(x + 1, y + 1);
}
function baz() {
bar(64, 2);
}
baz();
baz();
%OptimizeFunctionOnNextCall(baz);
baz();
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