Index: src/ia32/assembler-ia32-inl.h |
=================================================================== |
--- src/ia32/assembler-ia32-inl.h (revision 4713) |
+++ src/ia32/assembler-ia32-inl.h (working copy) |
@@ -38,6 +38,7 @@ |
#define V8_IA32_ASSEMBLER_IA32_INL_H_ |
#include "cpu.h" |
+#include "debug.h" |
namespace v8 { |
namespace internal { |
@@ -77,6 +78,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); |
@@ -148,6 +154,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); |
+ } |
+} |
+ |
+ |
Immediate::Immediate(int x) { |
x_ = x; |
rmode_ = RelocInfo::NONE; |