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*);