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