diff --git a/src/arm64/lithium-arm64.cc b/src/arm64/lithium-arm64.cc index fef51c669b..dc28f8d9a2 100644 --- a/src/arm64/lithium-arm64.cc +++ b/src/arm64/lithium-arm64.cc @@ -1203,7 +1203,7 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) { } else if (to.IsSmi()) { LOperand* value = UseRegisterAtStart(val); LInstruction* result = DefineAsRegister(new(zone()) LSmiTag(value)); - if (val->CheckFlag(HInstruction::kUint32)) { + if (instr->CheckFlag(HValue::kCanOverflow)) { result = AssignEnvironment(result); } return result; diff --git a/test/mjsunit/regress/regress-crbug-490021.js b/test/mjsunit/regress/regress-crbug-490021.js new file mode 100644 index 0000000000..745c0a8010 --- /dev/null +++ b/test/mjsunit/regress/regress-crbug-490021.js @@ -0,0 +1,15 @@ +// Copyright 2015 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 + +var global = new Object(3); +function f() { + global[0] = global[0] >>> 15.5; +} + +f(); +f(); +%OptimizeFunctionOnNextCall(f); +f();