Title: [124230] trunk/Source/_javascript_Core
Revision
124230
Author
[email protected]
Date
2012-07-31 11:48:17 -0700 (Tue, 31 Jul 2012)

Log Message

DFG OSR exit profiling has unusual oversights
https://bugs.webkit.org/show_bug.cgi?id=92728

Reviewed by Geoffrey Garen.

* dfg/DFGOSRExit.cpp:
(JSC::DFG::OSRExit::considerAddingAsFrequentExitSiteSlow):
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::speculationWatchpoint):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (124229 => 124230)


--- trunk/Source/_javascript_Core/ChangeLog	2012-07-31 18:47:33 UTC (rev 124229)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-07-31 18:48:17 UTC (rev 124230)
@@ -1,3 +1,19 @@
+2012-07-31  Filip Pizlo  <[email protected]>
+
+        DFG OSR exit profiling has unusual oversights
+        https://bugs.webkit.org/show_bug.cgi?id=92728
+
+        Reviewed by Geoffrey Garen.
+
+        * dfg/DFGOSRExit.cpp:
+        (JSC::DFG::OSRExit::considerAddingAsFrequentExitSiteSlow):
+        * dfg/DFGSpeculativeJIT.h:
+        (JSC::DFG::SpeculativeJIT::speculationWatchpoint):
+        * dfg/DFGSpeculativeJIT32_64.cpp:
+        (JSC::DFG::SpeculativeJIT::compile):
+        * dfg/DFGSpeculativeJIT64.cpp:
+        (JSC::DFG::SpeculativeJIT::compile):
+
 2012-07-31  Chao-ying Fu  <[email protected]>
 
         Add MIPS add32 function

Modified: trunk/Source/_javascript_Core/dfg/DFGOSRExit.cpp (124229 => 124230)


--- trunk/Source/_javascript_Core/dfg/DFGOSRExit.cpp	2012-07-31 18:47:33 UTC (rev 124229)
+++ trunk/Source/_javascript_Core/dfg/DFGOSRExit.cpp	2012-07-31 18:48:17 UTC (rev 124230)
@@ -64,7 +64,7 @@
     } else
         exitSite = FrequentExitSite(m_codeOriginForExitProfile.bytecodeIndex, m_kind);
     
-    return baselineCodeBlockForOriginAndBaselineCodeBlock(m_codeOrigin, profiledCodeBlock)->addFrequentExitSite(exitSite);
+    return baselineCodeBlockForOriginAndBaselineCodeBlock(m_codeOriginForExitProfile, profiledCodeBlock)->addFrequentExitSite(exitSite);
 }
 
 } } // namespace JSC::DFG

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.h (124229 => 124230)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.h	2012-07-31 18:47:33 UTC (rev 124229)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.h	2012-07-31 18:48:17 UTC (rev 124230)
@@ -2224,9 +2224,9 @@
     // The default for speculation watchpoints is that they're uncounted, because the
     // act of firing a watchpoint invalidates it. So, future recompilations will not
     // attempt to set this watchpoint again.
-    JumpReplacementWatchpoint* speculationWatchpoint()
+    JumpReplacementWatchpoint* speculationWatchpoint(ExitKind kind = UncountableWatchpoint)
     {
-        return speculationWatchpoint(UncountableWatchpoint, JSValueSource(), NoNode);
+        return speculationWatchpoint(kind, JSValueSource(), NoNode);
     }
     void forwardSpeculationCheck(ExitKind kind, JSValueSource jsValueSource, NodeIndex nodeIndex, MacroAssembler::Jump jumpToFail, const ValueRecovery& valueRecovery)
     {

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp (124229 => 124230)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp	2012-07-31 18:47:33 UTC (rev 124229)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp	2012-07-31 18:48:17 UTC (rev 124230)
@@ -3505,7 +3505,7 @@
         
     case StructureTransitionWatchpoint: {
         m_jit.addWeakReference(node.structure());
-        node.structure()->addTransitionWatchpoint(speculationWatchpoint());
+        node.structure()->addTransitionWatchpoint(speculationWatchpoint(BadCache));
         
 #if !ASSERT_DISABLED
         SpeculateCellOperand op1(this, node.child1());

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp (124229 => 124230)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2012-07-31 18:47:33 UTC (rev 124229)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2012-07-31 18:48:17 UTC (rev 124230)
@@ -3520,7 +3520,7 @@
         
     case StructureTransitionWatchpoint: {
         m_jit.addWeakReference(node.structure());
-        node.structure()->addTransitionWatchpoint(speculationWatchpoint());
+        node.structure()->addTransitionWatchpoint(speculationWatchpoint(BadCache));
 
 #if !ASSERT_DISABLED
         SpeculateCellOperand op1(this, node.child1());
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to