Index: src/arm/assembler-arm-inl.h |
diff --git a/src/arm/assembler-arm-inl.h b/src/arm/assembler-arm-inl.h |
index e388ed5b9f3131f84d868c6af014a6374a6b66c2..89c7a6d0ad2fe8d6f3124aba7b3d9335013a3b8e 100644 |
--- a/src/arm/assembler-arm-inl.h |
+++ b/src/arm/assembler-arm-inl.h |
@@ -101,7 +101,7 @@ void RelocInfo::apply(intptr_t delta) { |
Address RelocInfo::target_address() { |
ASSERT(IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_)); |
- return Assembler::target_address_at(pc_); |
+ return Assembler::target_address_at(pc_, host_); |
} |
@@ -127,7 +127,7 @@ int RelocInfo::target_address_size() { |
void RelocInfo::set_target_address(Address target, WriteBarrierMode mode) { |
ASSERT(IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_)); |
- Assembler::set_target_address_at(pc_, target); |
+ Assembler::set_target_address_at(pc_, host_, target); |
if (mode == UPDATE_WRITE_BARRIER && host() != NULL && IsCodeTarget(rmode_)) { |
Object* target_code = Code::GetCodeFromTargetAddress(target); |
host()->GetHeap()->incremental_marking()->RecordWriteIntoCode( |
@@ -138,21 +138,22 @@ void RelocInfo::set_target_address(Address target, WriteBarrierMode mode) { |
Object* RelocInfo::target_object() { |
ASSERT(IsCodeTarget(rmode_) || rmode_ == EMBEDDED_OBJECT); |
- return reinterpret_cast<Object*>(Assembler::target_address_at(pc_)); |
+ return reinterpret_cast<Object*>(Assembler::target_address_at(pc_, host_)); |
} |
Handle<Object> RelocInfo::target_object_handle(Assembler* origin) { |
ASSERT(IsCodeTarget(rmode_) || rmode_ == EMBEDDED_OBJECT); |
return Handle<Object>(reinterpret_cast<Object**>( |
- Assembler::target_address_at(pc_))); |
+ Assembler::target_address_at(pc_, host_))); |
} |
void RelocInfo::set_target_object(Object* target, WriteBarrierMode mode) { |
ASSERT(IsCodeTarget(rmode_) || rmode_ == EMBEDDED_OBJECT); |
ASSERT(!target->IsConsString()); |
- Assembler::set_target_address_at(pc_, reinterpret_cast<Address>(target)); |
+ Assembler::set_target_address_at(pc_, host_, |
+ reinterpret_cast<Address>(target)); |
if (mode == UPDATE_WRITE_BARRIER && |
host() != NULL && |
target->IsHeapObject()) { |
@@ -164,7 +165,7 @@ void RelocInfo::set_target_object(Object* target, WriteBarrierMode mode) { |
Address RelocInfo::target_reference() { |
ASSERT(rmode_ == EXTERNAL_REFERENCE); |
- return Assembler::target_address_at(pc_); |
+ return Assembler::target_address_at(pc_, host_); |
} |
@@ -275,7 +276,7 @@ void RelocInfo::WipeOut() { |
IsCodeTarget(rmode_) || |
IsRuntimeEntry(rmode_) || |
IsExternalReference(rmode_)); |
- Assembler::set_target_address_at(pc_, NULL); |
+ Assembler::set_target_address_at(pc_, host_, NULL); |
} |
@@ -409,7 +410,8 @@ Address Assembler::target_pointer_address_at(Address pc) { |
} |
-Address Assembler::target_address_at(Address pc) { |
+Address Assembler::target_address_at(Address pc, |
+ ConstantPoolArray* constant_pool) { |
if (IsMovW(Memory::int32_at(pc))) { |
ASSERT(IsMovT(Memory::int32_at(pc + kInstrSize))); |
Instruction* instr = Instruction::At(pc); |
@@ -459,7 +461,7 @@ Address Assembler::return_address_from_call_start(Address pc) { |
void Assembler::deserialization_set_special_target_at( |
- Address constant_pool_entry, Address target) { |
+ Address constant_pool_entry, Code* code, Address target) { |
Memory::Address_at(constant_pool_entry) = target; |
} |
@@ -470,7 +472,9 @@ static Instr EncodeMovwImmediate(uint32_t immediate) { |
} |
-void Assembler::set_target_address_at(Address pc, Address target) { |
+void Assembler::set_target_address_at(Address pc, |
+ ConstantPoolArray* constant_pool, |
+ Address target) { |
if (IsMovW(Memory::int32_at(pc))) { |
ASSERT(IsMovT(Memory::int32_at(pc + kInstrSize))); |
uint32_t* instr_ptr = reinterpret_cast<uint32_t*>(pc); |