Index: src/arm/assembler-arm-inl.h |
=================================================================== |
--- src/arm/assembler-arm-inl.h (revision 4713) |
+++ src/arm/assembler-arm-inl.h (working copy) |
@@ -39,6 +39,7 @@ |
#include "arm/assembler-arm.h" |
#include "cpu.h" |
+#include "debug.h" |
namespace v8 { |
@@ -73,6 +74,11 @@ |
} |
+int RelocInfo::target_address_size() { |
+ return Assembler::kExternalTargetSize; |
+} |
+ |
+ |
void RelocInfo::set_target_address(Address target) { |
ASSERT(IsCodeTarget(rmode_) || rmode_ == RUNTIME_ENTRY); |
Assembler::set_target_address_at(pc_, target); |
@@ -162,6 +168,26 @@ |
} |
+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); |
+ } |
+} |
+ |
+ |
Operand::Operand(int32_t immediate, RelocInfo::Mode rmode) { |
rm_ = no_reg; |
imm32_ = immediate; |