diff options
Diffstat (limited to 'chromium/v8/src/mips/assembler-mips-inl.h')
-rw-r--r-- | chromium/v8/src/mips/assembler-mips-inl.h | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/chromium/v8/src/mips/assembler-mips-inl.h b/chromium/v8/src/mips/assembler-mips-inl.h index 2fa6804d198..514b3aaa4f0 100644 --- a/chromium/v8/src/mips/assembler-mips-inl.h +++ b/chromium/v8/src/mips/assembler-mips-inl.h @@ -190,16 +190,6 @@ Handle<Object> RelocInfo::target_object_handle(Assembler* origin) { } -Object** RelocInfo::target_object_address() { - // Provide a "natural pointer" to the embedded object, - // which can be de-referenced during heap iteration. - ASSERT(IsCodeTarget(rmode_) || rmode_ == EMBEDDED_OBJECT); - reconstructed_obj_ptr_ = - reinterpret_cast<Object*>(Assembler::target_address_at(pc_)); - return &reconstructed_obj_ptr_; -} - - void RelocInfo::set_target_object(Object* target, WriteBarrierMode mode) { ASSERT(IsCodeTarget(rmode_) || rmode_ == EMBEDDED_OBJECT); ASSERT(!target->IsConsString()); @@ -213,10 +203,9 @@ void RelocInfo::set_target_object(Object* target, WriteBarrierMode mode) { } -Address* RelocInfo::target_reference_address() { +Address RelocInfo::target_reference() { ASSERT(rmode_ == EXTERNAL_REFERENCE); - reconstructed_adr_ptr_ = Assembler::target_address_at(pc_); - return &reconstructed_adr_ptr_; + return Assembler::target_address_at(pc_); } @@ -261,19 +250,24 @@ void RelocInfo::set_target_cell(Cell* cell, WriteBarrierMode mode) { static const int kNoCodeAgeSequenceLength = 7; + +Handle<Object> RelocInfo::code_age_stub_handle(Assembler* origin) { + UNREACHABLE(); // This should never be reached on Arm. + return Handle<Object>(); +} + + Code* RelocInfo::code_age_stub() { ASSERT(rmode_ == RelocInfo::CODE_AGE_SEQUENCE); return Code::GetCodeFromTargetAddress( - Memory::Address_at(pc_ + Assembler::kInstrSize * - (kNoCodeAgeSequenceLength - 1))); + Assembler::target_address_at(pc_ + Assembler::kInstrSize)); } void RelocInfo::set_code_age_stub(Code* stub) { ASSERT(rmode_ == RelocInfo::CODE_AGE_SEQUENCE); - Memory::Address_at(pc_ + Assembler::kInstrSize * - (kNoCodeAgeSequenceLength - 1)) = - stub->instruction_start(); + Assembler::set_target_address_at(pc_ + Assembler::kInstrSize, + stub->instruction_start()); } @@ -319,6 +313,15 @@ void RelocInfo::set_call_object(Object* target) { } +void RelocInfo::WipeOut() { + ASSERT(IsEmbeddedObject(rmode_) || + IsCodeTarget(rmode_) || + IsRuntimeEntry(rmode_) || + IsExternalReference(rmode_)); + Assembler::set_target_address_at(pc_, NULL); +} + + bool RelocInfo::IsPatchedReturnSequence() { Instr instr0 = Assembler::instr_at(pc_); Instr instr1 = Assembler::instr_at(pc_ + 1 * Assembler::kInstrSize); |