Reviewers: Mikhail Naganov (Chromium),

Message:
Misha,

small review for you.  If it's lgty, I'll file a bug.

Description:
Temporary disable comparison of optimizability of code objects in some cases.

With crankshaft, a code object can change its optimizability: it can start as
optimizable code object, but later we can find out it was a bad idea to
optimize it.  Alas, currently we don't have a proper event to communicate
this back to logger.  Hence we temporary allow a code object to be viewed
as optimizable judging from logs while being unoptimizable judging from
heap traversal.

Please review this at http://codereview.chromium.org/6250054/

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

Affected files:
  M test/cctest/cctest.status
  M test/cctest/test-log.cc


Index: test/cctest/cctest.status
diff --git a/test/cctest/cctest.status b/test/cctest/cctest.status
index 1009f85c0f4a6ad540b1bad818d2910d11cfe3c9..40ab26ca44d84523a72b900726b3d055e00981ac 100644
--- a/test/cctest/cctest.status
+++ b/test/cctest/cctest.status
@@ -29,11 +29,6 @@ prefix cctest

 test-api/Bug*: FAIL

-# The problem is that a code object can get a different optimizable flag
-# in crankshaft after creation.
-test-log/EquivalenceOfLoggingAndTraversal: SKIP
-
-
##############################################################################
 # BUG(281): This test fails on some Linuxes.
 test-debug/DebuggerAgent: PASS, (PASS || FAIL) if $system == linux
Index: test/cctest/test-log.cc
diff --git a/test/cctest/test-log.cc b/test/cctest/test-log.cc
index 503e0cf7c3ac3d0beef8539dccdd3eb1ebf8a62c..032a1836612eeed41220034a358ca102197e4532 100644
--- a/test/cctest/test-log.cc
+++ b/test/cctest/test-log.cc
@@ -1074,6 +1074,21 @@ static bool AreFuncNamesEqual(CodeEntityInfo ref_s, CodeEntityInfo new_s) {
       return true;
     }
   }
+  // Code objects can change their optimizability: code object may start
+ // as optimizable, but later be discovered to be actually not optimizable.
+  // Alas, we don't record this info as of now, so we allow cases when
+  // ref is thought to be optimizable while traverse finds it to be
+  // not optimizable.
+  if (ref_s[1] == '~') {  // Code object used to be optimizable
+    if (new_s[1] == ' ') {  // ...but later was set unoptimizable.
+      CHECK_EQ('"', ref_s[0]);
+      CHECK_EQ('"', new_s[0]);
+      ref_s += 2;  // Cut the leading quote and the marker
+      ref_len -= 2;
+      new_s += 1;  // Cut the leading quote only.
+      new_len -= 1;
+    }
+  }
   return ref_len == new_len && strncmp(ref_s, new_s, ref_len) == 0;
 }



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

Reply via email to