Title: [91869] trunk/Source/_javascript_Core
Revision
91869
Author
[email protected]
Date
2011-07-27 14:44:49 -0700 (Wed, 27 Jul 2011)

Log Message

Revert http://trac.webkit.org/changeset/90415.
Caused a 5% sunspider regression in-browser.

Unreviewed rollout.

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::visitAggregate):
* heap/Heap.cpp:
(JSC::Heap::collectAllGarbage):
* heap/MarkStack.h:
(JSC::MarkStack::MarkStack):
* runtime/JSGlobalData.cpp:
(JSC::JSGlobalData::releaseExecutableMemory):
* runtime/RegExp.cpp:
(JSC::RegExp::compile):
(JSC::RegExp::invalidateCode):
* runtime/RegExp.h:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (91868 => 91869)


--- trunk/Source/_javascript_Core/ChangeLog	2011-07-27 21:20:57 UTC (rev 91868)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-07-27 21:44:49 UTC (rev 91869)
@@ -1,3 +1,23 @@
+2011-07-27  Stephanie Lewis  <[email protected]>
+
+        Revert http://trac.webkit.org/changeset/90415.
+        Caused a 5% sunspider regression in-browser.
+
+        Unreviewed rollout.
+
+        * bytecode/CodeBlock.cpp:
+        (JSC::CodeBlock::visitAggregate):
+        * heap/Heap.cpp:
+        (JSC::Heap::collectAllGarbage):
+        * heap/MarkStack.h:
+        (JSC::MarkStack::MarkStack):
+        * runtime/JSGlobalData.cpp:
+        (JSC::JSGlobalData::releaseExecutableMemory):
+        * runtime/RegExp.cpp:
+        (JSC::RegExp::compile):
+        (JSC::RegExp::invalidateCode):
+        * runtime/RegExp.h:
+
 2011-07-27  Shinya Kawanaka  <[email protected]>
 
         Added an interface to take IsWhiteSpaceFunctionPtr.

Modified: trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp (91868 => 91869)


--- trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2011-07-27 21:20:57 UTC (rev 91868)
+++ trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2011-07-27 21:44:49 UTC (rev 91869)
@@ -1546,8 +1546,6 @@
     for (size_t i = 0; i < m_functionDecls.size(); ++i)
         visitor.append(&m_functionDecls[i]);
 #if ENABLE(JIT)
-    if (visitor.shouldUnlinkCalls())
-        unlinkCalls();
     for (unsigned i = 0; i < numberOfCallLinkInfos(); ++i)
         if (callLinkInfo(i).isLinked())
             visitor.append(&callLinkInfo(i).callee);

Modified: trunk/Source/_javascript_Core/heap/Heap.cpp (91868 => 91869)


--- trunk/Source/_javascript_Core/heap/Heap.cpp	2011-07-27 21:20:57 UTC (rev 91868)
+++ trunk/Source/_javascript_Core/heap/Heap.cpp	2011-07-27 21:44:49 UTC (rev 91869)
@@ -539,9 +539,10 @@
 {
     if (!m_isSafeToCollect)
         return;
-    m_slotVisitor.setShouldUnlinkCalls(true);
+    if (!m_globalData->dynamicGlobalObject)
+        m_globalData->recompileAllJSFunctions();
+
     collect(DoSweep);
-    m_slotVisitor.setShouldUnlinkCalls(false);
 }
 
 void Heap::collect(SweepToggle sweepToggle)

Modified: trunk/Source/_javascript_Core/heap/MarkStack.h (91868 => 91869)


--- trunk/Source/_javascript_Core/heap/MarkStack.h	2011-07-27 21:20:57 UTC (rev 91868)
+++ trunk/Source/_javascript_Core/heap/MarkStack.h	2011-07-27 21:44:49 UTC (rev 91869)
@@ -97,9 +97,6 @@
 
         void reset();
 
-        bool shouldUnlinkCalls() const { return m_shouldUnlinkCalls; }
-        void setShouldUnlinkCalls(bool shouldUnlinkCalls) { m_shouldUnlinkCalls = shouldUnlinkCalls; }
-
     protected:
 #if ENABLE(GC_VALIDATION)
         static void validateSet(JSValue*, size_t);
@@ -123,9 +120,6 @@
         bool m_isCheckingForDefaultMarkViolation;
         bool m_isDraining;
 #endif
-
-    private:
-        bool m_shouldUnlinkCalls;
     };
 
     inline MarkStack::MarkStack(void* jsArrayVPtr)
@@ -134,7 +128,6 @@
         , m_isCheckingForDefaultMarkViolation(false)
         , m_isDraining(false)
 #endif
-        , m_shouldUnlinkCalls(false)
     {
     }
 

Modified: trunk/Source/_javascript_Core/runtime/JSGlobalData.cpp (91868 => 91869)


--- trunk/Source/_javascript_Core/runtime/JSGlobalData.cpp	2011-07-27 21:20:57 UTC (rev 91868)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalData.cpp	2011-07-27 21:44:49 UTC (rev 91869)
@@ -497,9 +497,7 @@
                 
         }
         heap.forEachCell<StackPreservingRecompiler>(recompiler);
-    } else
-        recompileAllJSFunctions();
-
+    }
     m_regExpCache->invalidateCode();
     heap.collectAllGarbage();
 }

Modified: trunk/Source/_javascript_Core/runtime/RegExp.cpp (91868 => 91869)


--- trunk/Source/_javascript_Core/runtime/RegExp.cpp	2011-07-27 21:20:57 UTC (rev 91868)
+++ trunk/Source/_javascript_Core/runtime/RegExp.cpp	2011-07-27 21:44:49 UTC (rev 91869)
@@ -113,7 +113,6 @@
 {
     ASSERT(m_state == NotCompiled);
     m_representation = adoptPtr(new RegExpRepresentation);
-    m_state = Compiling;
     Yarr::YarrPattern pattern(m_patternString, ignoreCase(), multiline(), &m_constructionError);
     if (m_constructionError) {
         ASSERT_NOT_REACHED();
@@ -125,6 +124,8 @@
 
     ASSERT(m_numSubpatterns == pattern.m_numSubpatterns);
 
+    m_state = ByteCode;
+
 #if ENABLE(YARR_JIT)
     if (!pattern.m_containsBackreferences && globalData->canUseJIT()) {
         Yarr::jitCompile(pattern, globalData, m_representation->m_regExpJITCode);
@@ -143,8 +144,6 @@
 #endif
 
     m_representation->m_regExpBytecode = Yarr::byteCompile(pattern, &globalData->m_regExpAllocator);
-
-    m_state = ByteCode;
 }
 
 int RegExp::match(JSGlobalData& globalData, const UString& s, int startOffset, Vector<int, 32>* ovector)
@@ -205,7 +204,7 @@
 
 void RegExp::invalidateCode()
 {
-    if (!m_representation || m_state == Compiling)
+    if (!m_representation)
         return;
     m_state = NotCompiled;
     m_representation.clear();

Modified: trunk/Source/_javascript_Core/runtime/RegExp.h (91868 => 91869)


--- trunk/Source/_javascript_Core/runtime/RegExp.h	2011-07-27 21:20:57 UTC (rev 91868)
+++ trunk/Source/_javascript_Core/runtime/RegExp.h	2011-07-27 21:44:49 UTC (rev 91869)
@@ -83,8 +83,7 @@
             ParseError,
             JITCode,
             ByteCode,
-            NotCompiled,
-            Compiling
+            NotCompiled
         } m_state;
 
         void compile(JSGlobalData*);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to