Title: [188699] trunk/Source/_javascript_Core
Revision
188699
Author
[email protected]
Date
2015-08-20 14:09:19 -0700 (Thu, 20 Aug 2015)

Log Message

Unreviewed, rolling out r188675.
https://bugs.webkit.org/show_bug.cgi?id=148244

"caused a 17% Mac PLT regression" (Requested by ggaren on
#webkit).

Reverted changeset:

"clearCode() should clear code"
https://bugs.webkit.org/show_bug.cgi?id=148203
http://trac.webkit.org/changeset/188675

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (188698 => 188699)


--- trunk/Source/_javascript_Core/ChangeLog	2015-08-20 20:53:26 UTC (rev 188698)
+++ trunk/Source/_javascript_Core/ChangeLog	2015-08-20 21:09:19 UTC (rev 188699)
@@ -1,3 +1,17 @@
+2015-08-20  Commit Queue  <[email protected]>
+
+        Unreviewed, rolling out r188675.
+        https://bugs.webkit.org/show_bug.cgi?id=148244
+
+        "caused a 17% Mac PLT regression" (Requested by ggaren on
+        #webkit).
+
+        Reverted changeset:
+
+        "clearCode() should clear code"
+        https://bugs.webkit.org/show_bug.cgi?id=148203
+        http://trac.webkit.org/changeset/188675
+
 2015-08-11  Yusuke Suzuki  <[email protected]>
 
         Introduce put_by_id like IC into put_by_val when the given name is String or Symbol

Modified: trunk/Source/_javascript_Core/bytecode/UnlinkedFunctionExecutable.h (188698 => 188699)


--- trunk/Source/_javascript_Core/bytecode/UnlinkedFunctionExecutable.h	2015-08-20 20:53:26 UTC (rev 188698)
+++ trunk/Source/_javascript_Core/bytecode/UnlinkedFunctionExecutable.h	2015-08-20 21:09:19 UTC (rev 188699)
@@ -102,7 +102,7 @@
 
     FunctionExecutable* link(VM&, const SourceCode&, int overrideLineNumber = -1);
 
-    void clearCode()
+    void clearCodeForRecompilation()
     {
         m_codeBlockForCall.clear();
         m_codeBlockForConstruct.clear();

Modified: trunk/Source/_javascript_Core/debugger/Debugger.cpp (188698 => 188699)


--- trunk/Source/_javascript_Core/debugger/Debugger.cpp	2015-08-20 20:53:26 UTC (rev 188698)
+++ trunk/Source/_javascript_Core/debugger/Debugger.cpp	2015-08-20 21:09:19 UTC (rev 188699)
@@ -88,6 +88,7 @@
 
     ExecState* exec = function->scope()->globalObject()->JSGlobalObject::globalExec();
     executable->clearCode();
+    executable->clearUnlinkedCodeForRecompilation();
     if (m_debugger == function->scope()->globalObject()->debugger())
         m_sourceProviders.add(executable->source().provider(), exec);
 }

Modified: trunk/Source/_javascript_Core/heap/Heap.cpp (188698 => 188699)


--- trunk/Source/_javascript_Core/heap/Heap.cpp	2015-08-20 20:53:26 UTC (rev 188698)
+++ trunk/Source/_javascript_Core/heap/Heap.cpp	2015-08-20 21:09:19 UTC (rev 188699)
@@ -936,6 +936,15 @@
     m_codeBlocks.deleteUnmarkedAndUnreferenced(FullCollection);
 }
 
+void Heap::deleteAllUnlinkedFunctionCode()
+{
+    for (ExecutableBase* current : m_compiledCode) {
+        if (!current->isFunctionExecutable())
+            continue;
+        static_cast<FunctionExecutable*>(current)->clearUnlinkedCodeForRecompilation();
+    }
+}
+
 void Heap::clearUnmarkedExecutables()
 {
     GCPHASE(ClearUnmarkedExecutables);

Modified: trunk/Source/_javascript_Core/heap/Heap.h (188698 => 188699)


--- trunk/Source/_javascript_Core/heap/Heap.h	2015-08-20 20:53:26 UTC (rev 188698)
+++ trunk/Source/_javascript_Core/heap/Heap.h	2015-08-20 21:09:19 UTC (rev 188699)
@@ -209,6 +209,7 @@
     size_t sizeAfterLastFullCollection() const { return m_sizeAfterLastFullCollect; }
 
     JS_EXPORT_PRIVATE void deleteAllCompiledCode();
+    void deleteAllUnlinkedFunctionCode();
 
     void didAllocate(size_t);
     void didAbandon(size_t);

Modified: trunk/Source/_javascript_Core/inspector/agents/InspectorRuntimeAgent.cpp (188698 => 188699)


--- trunk/Source/_javascript_Core/inspector/agents/InspectorRuntimeAgent.cpp	2015-08-20 20:53:26 UTC (rev 188698)
+++ trunk/Source/_javascript_Core/inspector/agents/InspectorRuntimeAgent.cpp	2015-08-20 21:09:19 UTC (rev 188699)
@@ -316,6 +316,7 @@
 
         FunctionExecutable* executable = jsCast<FunctionExecutable*>(cell);
         executable->clearCode();
+        executable->clearUnlinkedCodeForRecompilation();
     }
     inline IterationStatus operator()(JSCell* cell)
     {

Modified: trunk/Source/_javascript_Core/runtime/Executable.cpp (188698 => 188699)


--- trunk/Source/_javascript_Core/runtime/Executable.cpp	2015-08-20 20:53:26 UTC (rev 188698)
+++ trunk/Source/_javascript_Core/runtime/Executable.cpp	2015-08-20 21:09:19 UTC (rev 188699)
@@ -557,9 +557,13 @@
     visitor.append(&thisObject->m_singletonFunction);
 }
 
+void FunctionExecutable::clearUnlinkedCodeForRecompilation()
+{
+    m_unlinkedExecutable->clearCodeForRecompilation();
+}
+
 void FunctionExecutable::clearCode()
 {
-    m_unlinkedExecutable->clearCode();
     m_codeBlockForCall = nullptr;
     m_codeBlockForConstruct = nullptr;
     Base::clearCode();

Modified: trunk/Source/_javascript_Core/runtime/Executable.h (188698 => 188699)


--- trunk/Source/_javascript_Core/runtime/Executable.h	2015-08-20 20:53:26 UTC (rev 188698)
+++ trunk/Source/_javascript_Core/runtime/Executable.h	2015-08-20 21:09:19 UTC (rev 188699)
@@ -640,6 +640,7 @@
     JSString* nameValue() const { return m_unlinkedExecutable->nameValue(); }
     size_t parameterCount() const { return m_unlinkedExecutable->parameterCount(); } // Excluding 'this'!
 
+    void clearUnlinkedCodeForRecompilation();
     static void visitChildren(JSCell*, SlotVisitor&);
     static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)
     {

Modified: trunk/Source/_javascript_Core/runtime/VM.cpp (188698 => 188699)


--- trunk/Source/_javascript_Core/runtime/VM.cpp	2015-08-20 20:53:26 UTC (rev 188698)
+++ trunk/Source/_javascript_Core/runtime/VM.cpp	2015-08-20 21:09:19 UTC (rev 188699)
@@ -487,6 +487,7 @@
     m_codeCache->clear();
     m_regExpCache->deleteAllCode();
     heap.deleteAllCompiledCode();
+    heap.deleteAllUnlinkedFunctionCode();
     heap.reportAbandonedObjectGraph();
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to