Title: [153207] trunk/Source/_javascript_Core
Revision
153207
Author
oli...@apple.com
Date
2013-07-24 21:01:59 -0700 (Wed, 24 Jul 2013)

Log Message

fourthTier: The DFG JIT should populate frame bytecodeOffsets on OSR exit.
https://bugs.webkit.org/show_bug.cgi?id=117103.

Reviewed by Geoffrey Garen.

* dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::reifyInlinedCallFrames):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (153206 => 153207)


--- trunk/Source/_javascript_Core/ChangeLog	2013-07-25 04:01:56 UTC (rev 153206)
+++ trunk/Source/_javascript_Core/ChangeLog	2013-07-25 04:01:59 UTC (rev 153207)
@@ -1,3 +1,13 @@
+2013-06-04  Mark Lam  <mark....@apple.com>
+
+        The DFG JIT should populate frame bytecodeOffsets on OSR exit.
+        https://bugs.webkit.org/show_bug.cgi?id=117103.
+
+        Reviewed by Geoffrey Garen.
+
+        * dfg/DFGOSRExitCompilerCommon.cpp:
+        (JSC::DFG::reifyInlinedCallFrames):
+
 2013-06-03  Filip Pizlo  <fpi...@apple.com>
 
         fourthTier: all cached put_by_id transitions, even ones that weren't inlined by the DFG, should be propagated by the GC

Modified: trunk/Source/_javascript_Core/dfg/DFGOSRExitCompilerCommon.cpp (153206 => 153207)


--- trunk/Source/_javascript_Core/dfg/DFGOSRExitCompilerCommon.cpp	2013-07-25 04:01:56 UTC (rev 153206)
+++ trunk/Source/_javascript_Core/dfg/DFGOSRExitCompilerCommon.cpp	2013-07-25 04:01:59 UTC (rev 153207)
@@ -79,8 +79,9 @@
 {
     ASSERT(jit.baselineCodeBlock()->jitType() == JITCode::BaselineJIT);
     jit.storePtr(AssemblyHelpers::TrustedImmPtr(jit.baselineCodeBlock()), AssemblyHelpers::addressFor((VirtualRegister)JSStack::CodeBlock));
-    
-    for (CodeOrigin codeOrigin = exit.m_codeOrigin; codeOrigin.inlineCallFrame; codeOrigin = codeOrigin.inlineCallFrame->caller) {
+
+    CodeOrigin codeOrigin;
+    for (codeOrigin = exit.m_codeOrigin; codeOrigin.inlineCallFrame; codeOrigin = codeOrigin.inlineCallFrame->caller) {
         InlineCallFrame* inlineCallFrame = codeOrigin.inlineCallFrame;
         CodeBlock* baselineCodeBlock = jit.baselineCodeBlockFor(codeOrigin);
         CodeBlock* baselineCodeBlockForCaller = jit.baselineCodeBlockFor(inlineCallFrame->caller);
@@ -125,7 +126,11 @@
         if (!inlineCallFrame->isClosureCall())
             jit.storePtr(AssemblyHelpers::TrustedImmPtr(inlineCallFrame->callee.get()), AssemblyHelpers::payloadFor((VirtualRegister)(inlineCallFrame->stackOffset + JSStack::Callee)));
 #endif // USE(JSVALUE64) // ending the #else part, so directly above is the 32-bit part
+
+        jit.store32(AssemblyHelpers::TrustedImm32(codeOrigin.bytecodeIndex), AssemblyHelpers::tagFor((VirtualRegister)(inlineCallFrame->stackOffset + JSStack::ArgumentCount)));
     }
+
+    jit.store32(AssemblyHelpers::TrustedImm32(codeOrigin.bytecodeIndex), AssemblyHelpers::tagFor((VirtualRegister)(JSStack::ArgumentCount)));
 }
 
 void adjustAndJumpToTarget(CCallHelpers& jit, const OSRExitBase& exit)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to