Reviewers: ulan,

Description:
Avoid unnecessary code target changes during code compaction.

[email protected]


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

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

Affected files:
  M src/mark-compact.cc


Index: src/mark-compact.cc
diff --git a/src/mark-compact.cc b/src/mark-compact.cc
index 0740ca04a820d42cc2682bd1a36a10af207d7bae..7a25855d5316ed643837ba356b0a6e64ffebbdc6 100644
--- a/src/mark-compact.cc
+++ b/src/mark-compact.cc
@@ -2315,8 +2315,13 @@ class PointersUpdatingVisitor: public ObjectVisitor {
   void VisitEmbeddedPointer(RelocInfo* rinfo) {
     ASSERT(rinfo->rmode() == RelocInfo::EMBEDDED_OBJECT);
     Object* target = rinfo->target_object();
+    Object* old_target = target;
     VisitPointer(&target);
-    rinfo->set_target_object(target);
+ // Avoid unnecessary changes that might unnecessary flush the instruction
+    // cache.
+    if (target != old_target) {
+      rinfo->set_target_object(target);
+    }
   }

   void VisitCodeTarget(RelocInfo* rinfo) {


--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to