| Index: src/x64/assembler-x64-inl.h
|
| diff --git a/src/x64/assembler-x64-inl.h b/src/x64/assembler-x64-inl.h
|
| index afac886c730e12fb6b26fe0b9746144987ecc933..073fcbe8e944902ac096b63f91b976bd3acd1ea0 100644
|
| --- a/src/x64/assembler-x64-inl.h
|
| +++ b/src/x64/assembler-x64-inl.h
|
| @@ -303,15 +303,9 @@ Handle<Object> RelocInfo::target_object_handle(Assembler* origin) {
|
| }
|
|
|
|
|
| -Object** RelocInfo::target_object_address() {
|
| - ASSERT(IsCodeTarget(rmode_) || rmode_ == EMBEDDED_OBJECT);
|
| - return reinterpret_cast<Object**>(pc_);
|
| -}
|
| -
|
| -
|
| -Address* RelocInfo::target_reference_address() {
|
| +Address RelocInfo::target_reference() {
|
| ASSERT(rmode_ == RelocInfo::EXTERNAL_REFERENCE);
|
| - return reinterpret_cast<Address*>(pc_);
|
| + return Memory::Address_at(pc_);
|
| }
|
|
|
|
|
| @@ -370,6 +364,18 @@ void RelocInfo::set_target_cell(Cell* cell, WriteBarrierMode mode) {
|
| }
|
|
|
|
|
| +void RelocInfo::WipeOut() {
|
| + if (IsEmbeddedObject(rmode_) || IsExternalReference(rmode_)) {
|
| + Memory::Address_at(pc_) = NULL;
|
| + } else if (IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_)) {
|
| + // Effectively write zero into the relocation.
|
| + Assembler::set_target_address_at(pc_, pc_ + sizeof(int32_t));
|
| + } else {
|
| + UNREACHABLE();
|
| + }
|
| +}
|
| +
|
| +
|
| bool RelocInfo::IsPatchedReturnSequence() {
|
| // The recognized call sequence is:
|
| // movq(kScratchRegister, address); call(kScratchRegister);
|
|
|