Reviewers: Benedikt Meurer,

Description:
Removed RelocInfo::target_object_address() and reconstructed_obj_ptr_.

Depends on https://codereview.chromium.org/46583006/ and has similar reasoning
behind it.

Please review this at https://codereview.chromium.org/50413004/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+6, -43 lines):
  M src/arm/assembler-arm-inl.h
  M src/assembler.h
  M src/ia32/assembler-ia32-inl.h
  M src/mark-compact.cc
  M src/mips/assembler-mips-inl.h
  M src/objects.cc
  M src/serialize.cc
  M src/x64/assembler-x64-inl.h


Index: src/arm/assembler-arm-inl.h
diff --git a/src/arm/assembler-arm-inl.h b/src/arm/assembler-arm-inl.h
index 7b246ac7cc10a5fa5e25af3ff0eb9e4323d1ce32..9a83a42e4714894c347ffab4cb4b26d09d620b12 100644
--- a/src/arm/assembler-arm-inl.h
+++ b/src/arm/assembler-arm-inl.h
@@ -137,16 +137,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_pointer_at(pc_));
-  return &reconstructed_obj_ptr_;
-}
-
-
 void RelocInfo::set_target_object(Object* target, WriteBarrierMode mode) {
   ASSERT(IsCodeTarget(rmode_) || rmode_ == EMBEDDED_OBJECT);
   ASSERT(!target->IsConsString());
Index: src/assembler.h
diff --git a/src/assembler.h b/src/assembler.h
index cf5396ae7d3920b4c0c4c0561f6a1249e1ab0fa8..11087da8c37a91d115c2ac9a32d2f2fee9002840 100644
--- a/src/assembler.h
+++ b/src/assembler.h
@@ -390,7 +390,6 @@ class RelocInfo BASE_EMBEDDED {
WriteBarrierMode mode = UPDATE_WRITE_BARRIER));
   INLINE(Object* target_object());
   INLINE(Handle<Object> target_object_handle(Assembler* origin));
-  INLINE(Object** target_object_address());
   INLINE(void set_target_object(Object* target,
WriteBarrierMode mode = UPDATE_WRITE_BARRIER));
   INLINE(Address target_runtime_entry(Assembler* origin));
@@ -486,12 +485,6 @@ class RelocInfo BASE_EMBEDDED {
     double data64_;
   };
   Code* host_;
-  // Code and Embedded Object pointers on some platforms are stored split
-  // across two consecutive 32-bit instructions. Heap management
-  // routines expect to access these pointers indirectly. The following
-  // location provides a place for these pointers to exist naturally
-  // when accessed via the Iterator.
-  Object* reconstructed_obj_ptr_;
   // External-reference pointers are also split across instruction-pairs
// on some platforms, but are accessed via indirect pointers. This location
   // provides a place for that pointer to exist naturally. Its address
Index: src/ia32/assembler-ia32-inl.h
diff --git a/src/ia32/assembler-ia32-inl.h b/src/ia32/assembler-ia32-inl.h
index 509658e15590fd36938bcee895cb7ea6eccd0ccd..00f7a633fad92c74e9f0d8dc48ef1797606cd38b 100644
--- a/src/ia32/assembler-ia32-inl.h
+++ b/src/ia32/assembler-ia32-inl.h
@@ -125,12 +125,6 @@ Handle<Object> RelocInfo::target_object_handle(Assembler* origin) {
 }


-Object** RelocInfo::target_object_address() {
-  ASSERT(IsCodeTarget(rmode_) || rmode_ == EMBEDDED_OBJECT);
-  return &Memory::Object_at(pc_);
-}
-
-
 void RelocInfo::set_target_object(Object* target, WriteBarrierMode mode) {
   ASSERT(IsCodeTarget(rmode_) || rmode_ == EMBEDDED_OBJECT);
   ASSERT(!target->IsConsString());
Index: src/mark-compact.cc
diff --git a/src/mark-compact.cc b/src/mark-compact.cc
index b75ddb382b1d1638e6ab8b89a7af137386e3277d..4aff0d3cb46603a3734845d3b7c61faab2438fb9 100644
--- a/src/mark-compact.cc
+++ b/src/mark-compact.cc
@@ -93,7 +93,8 @@ class VerifyMarkingVisitor: public ObjectVisitor {
     ASSERT(rinfo->rmode() == RelocInfo::EMBEDDED_OBJECT);
     if (!Code::IsWeakEmbeddedObject(rinfo->host()->kind(),
                                     rinfo->target_object())) {
-      VisitPointer(rinfo->target_object_address());
+      Object* p = rinfo->target_object();
+      VisitPointer(&p);
     }
   }

Index: src/mips/assembler-mips-inl.h
diff --git a/src/mips/assembler-mips-inl.h b/src/mips/assembler-mips-inl.h
index d095037b5140c97467a95296e15f7d6bbe159686..b430b1f0525983e9356f04787c349e6420f7c951 100644
--- a/src/mips/assembler-mips-inl.h
+++ b/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());
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index 459a5a90c3339aa6b1160dc1f879e929556074b9..65ff378b31f29d5896fe86549f82dd8dc69ce74c 100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -10317,7 +10317,8 @@ void ObjectVisitor::VisitDebugTarget(RelocInfo* rinfo) {

 void ObjectVisitor::VisitEmbeddedPointer(RelocInfo* rinfo) {
   ASSERT(rinfo->rmode() == RelocInfo::EMBEDDED_OBJECT);
-  VisitPointer(rinfo->target_object_address());
+  Object* p = rinfo->target_object();
+  VisitPointer(&p);
 }


Index: src/serialize.cc
diff --git a/src/serialize.cc b/src/serialize.cc
index f350ce5fda9488496f424a7ce6ec65e9ad35b87d..130fbee72e9469ea59f050f554f02dc9ec7759fd 100644
--- a/src/serialize.cc
+++ b/src/serialize.cc
@@ -1668,12 +1668,12 @@ void Serializer::ObjectSerializer::VisitPointers(Object** start,


 void Serializer::ObjectSerializer::VisitEmbeddedPointer(RelocInfo* rinfo) {
-  Object** current = rinfo->target_object_address();
+  Object* current = rinfo->target_object();

   int skip = OutputRawData(rinfo->target_address_address(),
                            kCanReturnSkipInsteadOfSkipping);
HowToCode representation = rinfo->IsCodedSpecially() ? kFromCode : kPlain; - serializer_->SerializeObject(*current, representation, kStartOfObject, skip); + serializer_->SerializeObject(current, representation, kStartOfObject, skip);
   bytes_processed_so_far_ += rinfo->target_address_size();
 }

Index: src/x64/assembler-x64-inl.h
diff --git a/src/x64/assembler-x64-inl.h b/src/x64/assembler-x64-inl.h
index 1f47c89ce7091a5271b9557f0a72c673bf86e0ea..f4ee4e652f298dba67ee0a2f1b051bafe5a046d9 100644
--- a/src/x64/assembler-x64-inl.h
+++ b/src/x64/assembler-x64-inl.h
@@ -303,12 +303,6 @@ 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() {
   ASSERT(rmode_ == RelocInfo::EXTERNAL_REFERENCE);
   return Memory::Address_at(pc_);


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to