Revision: 6553
Author: [email protected]
Date: Tue Feb  1 04:39:02 2011
Log: 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.

Review URL: http://codereview.chromium.org/6250054
http://code.google.com/p/v8/source/detail?r=6553

Modified:
 /branches/bleeding_edge/test/cctest/cctest.status
 /branches/bleeding_edge/test/cctest/test-log.cc

=======================================
--- /branches/bleeding_edge/test/cctest/cctest.status Thu Jan 27 04:31:24 2011 +++ /branches/bleeding_edge/test/cctest/cctest.status Tue Feb 1 04:39:02 2011
@@ -29,11 +29,6 @@

 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
=======================================
--- /branches/bleeding_edge/test/cctest/test-log.cc     Tue Dec  7 03:31:57 2010
+++ /branches/bleeding_edge/test/cctest/test-log.cc     Tue Feb  1 04:39:02 2011
@@ -1074,6 +1074,21 @@
       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