Title: [104094] trunk/Source/_javascript_Core
Revision
104094
Author
[email protected]
Date
2012-01-04 16:31:10 -0800 (Wed, 04 Jan 2012)

Log Message

StructureStubInfo not reset when corresponding MethodCallLinkInfo is reset
https://bugs.webkit.org/show_bug.cgi?id=75583

Reviewed by Filip Pizlo.

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finalizeUnconditionally): Find the corresponding
StructureStubInfo and reset the appropriate JIT and
the StructureStubInfo itself when reseting a MethodCallLinkInfo.

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (104093 => 104094)


--- trunk/Source/_javascript_Core/ChangeLog	2012-01-05 00:29:36 UTC (rev 104093)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-01-05 00:31:10 UTC (rev 104094)
@@ -1,5 +1,17 @@
 2012-01-04  Michael Saboff  <[email protected]>
 
+        StructureStubInfo not reset when corresponding MethodCallLinkInfo is reset
+        https://bugs.webkit.org/show_bug.cgi?id=75583
+
+        Reviewed by Filip Pizlo.
+
+        * bytecode/CodeBlock.cpp:
+        (JSC::CodeBlock::finalizeUnconditionally): Find the corresponding
+        StructureStubInfo and reset the appropriate JIT and
+        the StructureStubInfo itself when reseting a MethodCallLinkInfo.
+
+2012-01-04  Michael Saboff  <[email protected]>
+
         Invalid ASSERT() in DFGRepatch.cpp near line 385
         https://bugs.webkit.org/show_bug.cgi?id=75584
 

Modified: trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp (104093 => 104094)


--- trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2012-01-05 00:29:36 UTC (rev 104093)
+++ trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2012-01-05 00:31:10 UTC (rev 104094)
@@ -1788,6 +1788,19 @@
                 if (verboseUnlinking)
                     printf("Clearing method call in %p.\n", this);
                 m_methodCallLinkInfos[i].reset(repatchBuffer, getJITType());
+
+                StructureStubInfo& stubInfo = getStubInfo(m_methodCallLinkInfos[i].bytecodeIndex);
+
+                AccessType accessType = static_cast<AccessType>(stubInfo.accessType);
+
+                if (accessType != access_unset) {
+                    ASSERT(isGetByIdAccess(accessType));
+                    if (getJITCode().jitType() == JITCode::DFGJIT)
+                        DFG::dfgResetGetByID(repatchBuffer, stubInfo);
+                    else
+                        JIT::resetPatchGetById(repatchBuffer, &stubInfo);
+                    stubInfo.reset();
+                }
             }
         }
     }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to