| Index: src/x64/assembler-x64-inl.h
|
| ===================================================================
|
| --- src/x64/assembler-x64-inl.h (revision 4713)
|
| +++ src/x64/assembler-x64-inl.h (working copy)
|
| @@ -29,6 +29,7 @@
|
| #define V8_X64_ASSEMBLER_X64_INL_H_
|
|
|
| #include "cpu.h"
|
| +#include "debug.h"
|
| #include "memory.h"
|
|
|
| namespace v8 {
|
| @@ -229,6 +230,15 @@
|
| }
|
|
|
|
|
| +int RelocInfo::target_address_size() {
|
| + if (IsCodedSpecially()) {
|
| + return Assembler::kCallTargetSize;
|
| + } else {
|
| + return Assembler::kExternalTargetSize;
|
| + }
|
| +}
|
| +
|
| +
|
| void RelocInfo::set_target_address(Address target) {
|
| ASSERT(IsCodeTarget(rmode_) || rmode_ == RUNTIME_ENTRY);
|
| if (IsCodeTarget(rmode_)) {
|
| @@ -320,6 +330,27 @@
|
| pc_ + Assembler::kPatchReturnSequenceAddressOffset);
|
| }
|
|
|
| +
|
| +void RelocInfo::Visit(ObjectVisitor* visitor) {
|
| + RelocInfo::Mode mode = rmode();
|
| + if (mode == RelocInfo::EMBEDDED_OBJECT) {
|
| + visitor->VisitPointer(target_object_address());
|
| + } else if (RelocInfo::IsCodeTarget(mode)) {
|
| + visitor->VisitCodeTarget(this);
|
| + } else if (mode == RelocInfo::EXTERNAL_REFERENCE) {
|
| + visitor->VisitExternalReference(target_reference_address());
|
| +#ifdef ENABLE_DEBUGGER_SUPPORT
|
| + } else if (Debug::has_break_points() &&
|
| + RelocInfo::IsJSReturn(mode) &&
|
| + IsPatchedReturnSequence()) {
|
| + visitor->VisitDebugTarget(this);
|
| +#endif
|
| + } else if (mode == RelocInfo::RUNTIME_ENTRY) {
|
| + visitor->VisitRuntimeEntry(this);
|
| + }
|
| +}
|
| +
|
| +
|
| // -----------------------------------------------------------------------------
|
| // Implementation of Operand
|
|
|
|
|