Index: src/mips64/assembler-mips64.cc |
diff --git a/src/mips64/assembler-mips64.cc b/src/mips64/assembler-mips64.cc |
index 4ce970da332c9e3a2a6ff0fbed5fedef7209a1c3..9fdcf759449fe1158db28097bbb495a8bd696713 100644 |
--- a/src/mips64/assembler-mips64.cc |
+++ b/src/mips64/assembler-mips64.cc |
@@ -32,7 +32,6 @@ |
// modified significantly by Google Inc. |
// Copyright 2012 the V8 project authors. All rights reserved. |
- |
#include "src/v8.h" |
#if V8_TARGET_ARCH_MIPS64 |
@@ -635,7 +634,7 @@ bool Assembler::IsAndImmediate(Instr instr) { |
} |
-int64_t Assembler::target_at(int64_t pos, bool is_internal) { |
+int Assembler::target_at(int pos, bool is_internal) { |
if (is_internal) { |
int64_t* p = reinterpret_cast<int64_t*>(buffer_ + pos); |
int64_t address = *p; |
@@ -643,7 +642,8 @@ int64_t Assembler::target_at(int64_t pos, bool is_internal) { |
return kEndOfChain; |
} else { |
int64_t instr_address = reinterpret_cast<int64_t>(p); |
- int64_t delta = instr_address - address; |
+ DCHECK(instr_address - address < INT_MAX); |
+ int delta = static_cast<int>(instr_address - address); |
DCHECK(pos > delta); |
return pos - delta; |
} |
@@ -689,7 +689,8 @@ int64_t Assembler::target_at(int64_t pos, bool is_internal) { |
return kEndOfChain; |
} else { |
uint64_t instr_address = reinterpret_cast<int64_t>(buffer_ + pos); |
- int64_t delta = instr_address - imm; |
+ DCHECK(instr_address - imm < INT_MAX); |
+ int delta = static_cast<int>(instr_address - imm); |
DCHECK(pos > delta); |
return pos - delta; |
} |
@@ -701,7 +702,7 @@ int64_t Assembler::target_at(int64_t pos, bool is_internal) { |
} else { |
uint64_t instr_address = reinterpret_cast<int64_t>(buffer_ + pos); |
instr_address &= kImm28Mask; |
- int64_t delta = instr_address - imm28; |
+ int delta = static_cast<int>(instr_address - imm28); |
DCHECK(pos > delta); |
return pos - delta; |
} |
@@ -709,8 +710,7 @@ int64_t Assembler::target_at(int64_t pos, bool is_internal) { |
} |
-void Assembler::target_at_put(int64_t pos, int64_t target_pos, |
- bool is_internal) { |
+void Assembler::target_at_put(int pos, int target_pos, bool is_internal) { |
if (is_internal) { |
uint64_t imm = reinterpret_cast<uint64_t>(buffer_) + target_pos; |
*reinterpret_cast<uint64_t*>(buffer_ + pos) = imm; |
@@ -796,7 +796,7 @@ void Assembler::print(Label* L) { |
void Assembler::bind_to(Label* L, int pos) { |
DCHECK(0 <= pos && pos <= pc_offset()); // Must have valid binding position. |
- int32_t trampoline_pos = kInvalidSlotPos; |
+ int trampoline_pos = kInvalidSlotPos; |
bool is_internal = false; |
if (L->is_linked() && !trampoline_emitted_) { |
unbound_labels_count_--; |
@@ -804,8 +804,8 @@ void Assembler::bind_to(Label* L, int pos) { |
} |
while (L->is_linked()) { |
- int32_t fixup_pos = L->pos(); |
- int32_t dist = pos - fixup_pos; |
+ int fixup_pos = L->pos(); |
+ int dist = pos - fixup_pos; |
is_internal = internal_reference_positions_.find(fixup_pos) != |
internal_reference_positions_.end(); |
next(L, is_internal); // Call next before overwriting link with target at |