Title: [131268] trunk/Source/_javascript_Core
Revision
131268
Author
[email protected]
Date
2012-10-14 12:42:17 -0700 (Sun, 14 Oct 2012)

Log Message

Array length array profiling is broken in the baseline JIT
https://bugs.webkit.org/show_bug.cgi?id=99258

Reviewed by Oliver Hunt.

The code generator for array length stubs calls into
emitArrayProfilingSiteForBytecodeIndex(), which emits profiling only if
canBeOptimized() returns true. But m_canBeOptimized is only initialized during
full method compiles, so in a stub compile it may (or may not) be false, meaning
that we may, or may not, get meaningful profiling info.
        
This appeared to not affect too many programs since the LLInt has good array
length array profiling.

* jit/JIT.h:
(JSC::JIT::compilePatchGetArrayLength):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (131267 => 131268)


--- trunk/Source/_javascript_Core/ChangeLog	2012-10-14 16:22:49 UTC (rev 131267)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-10-14 19:42:17 UTC (rev 131268)
@@ -1,3 +1,22 @@
+2012-10-13  Filip Pizlo  <[email protected]>
+
+        Array length array profiling is broken in the baseline JIT
+        https://bugs.webkit.org/show_bug.cgi?id=99258
+
+        Reviewed by Oliver Hunt.
+
+        The code generator for array length stubs calls into
+        emitArrayProfilingSiteForBytecodeIndex(), which emits profiling only if
+        canBeOptimized() returns true. But m_canBeOptimized is only initialized during
+        full method compiles, so in a stub compile it may (or may not) be false, meaning
+        that we may, or may not, get meaningful profiling info.
+        
+        This appeared to not affect too many programs since the LLInt has good array
+        length array profiling.
+
+        * jit/JIT.h:
+        (JSC::JIT::compilePatchGetArrayLength):
+
 2012-10-14  Patrick Gansterer  <[email protected]>
 
         Build fix for WinCE after r131089.

Modified: trunk/Source/_javascript_Core/jit/JIT.h (131267 => 131268)


--- trunk/Source/_javascript_Core/jit/JIT.h	2012-10-14 16:22:49 UTC (rev 131267)
+++ trunk/Source/_javascript_Core/jit/JIT.h	2012-10-14 19:42:17 UTC (rev 131268)
@@ -412,6 +412,10 @@
         static void compilePatchGetArrayLength(JSGlobalData* globalData, CodeBlock* codeBlock, ReturnAddressPtr returnAddress)
         {
             JIT jit(globalData, codeBlock);
+#if ENABLE(DFG_JIT)
+            // Force profiling to be enabled during stub generation.
+            jit.m_canBeOptimized = true;
+#endif // ENABLE(DFG_JIT)
             return jit.privateCompilePatchGetArrayLength(returnAddress);
         }
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to