Commit 1ae7e8a1 authored by ishell@chromium.org's avatar ishell@chromium.org

Fix for failing asserts in HBoundsCheck code generation on x64: index register...

Fix for failing asserts in HBoundsCheck code generation on x64: index register should be zero extended.

BUG=345820
LOG=N
R=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19549 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent d5caeccc
......@@ -1459,7 +1459,8 @@ int DisassemblerX64::InstructionDecode(v8::internal::Vector<char> out_buffer,
data += 3;
break;
case OPERAND_DOUBLEWORD_SIZE:
addr = reinterpret_cast<byte*>(*reinterpret_cast<int32_t*>(data + 1));
addr =
reinterpret_cast<byte*>(*reinterpret_cast<uint32_t*>(data + 1));
data += 5;
break;
case OPERAND_QUADWORD_SIZE:
......
......@@ -198,7 +198,7 @@ void LGapResolver::EmitMove(int index) {
if (cgen_->IsSmiConstant(constant_source)) {
__ Move(dst, cgen_->ToSmi(constant_source));
} else if (cgen_->IsInteger32Constant(constant_source)) {
__ Set(dst, cgen_->ToInteger32(constant_source));
__ Set(dst, static_cast<uint32_t>(cgen_->ToInteger32(constant_source)));
} else {
__ Move(dst, cgen_->ToHandle(constant_source));
}
......
// 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 --debug-code
var __v_6 = {};
__v_6 = new Int32Array(5);
for (var i = 0; i < __v_6.length; i++) __v_6[i] = 0;
function __f_7(N) {
for (var i = -1; i < N; i++) {
__v_6[i] = i;
}
}
__f_7(1);
%OptimizeFunctionOnNextCall(__f_7);
__f_7(__v_6.length);
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