Diff
Modified: trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_CoreExports.def (148856 => 148857)
--- trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_CoreExports.def 2013-04-22 06:06:18 UTC (rev 148856)
+++ trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_CoreExports.def 2013-04-22 06:21:22 UTC (rev 148857)
@@ -58,7 +58,6 @@
??1RefCountedLeakCounter@WTF@@QAE@XZ
??1SourceProvider@JSC@@UAE@XZ
??1SourceProviderCache@JSC@@QAE@XZ
- ??1StringImpl@WTF@@QAE@XZ
??1StringPrintStream@WTF@@UAE@XZ
??1ThreadCondition@WTF@@QAE@XZ
??1VM@JSC@@QAE@XZ
@@ -232,6 +231,7 @@
?destroy@JSCell@JSC@@KAXPAV12@@Z
?destroy@JSGlobalObject@JSC@@SAXPAVJSCell@2@@Z
?destroy@OutOfLineBits@BitVector@WTF@@SAXPAV123@@Z
+ ?destroy@StringImpl@WTF@@SAXPAV12@@Z
?detach@Debugger@JSC@@UAEXPAVJSGlobalObject@2@@Z
?detachThread@WTF@@YAXI@Z
?discardAllCode@VM@JSC@@QAEXXZ
Modified: trunk/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_CoreExportGenerator/_javascript_CoreExports.def.in (148856 => 148857)
--- trunk/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_CoreExportGenerator/_javascript_CoreExports.def.in 2013-04-22 06:06:18 UTC (rev 148856)
+++ trunk/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_CoreExportGenerator/_javascript_CoreExports.def.in 2013-04-22 06:21:22 UTC (rev 148857)
@@ -57,7 +57,6 @@
??1RefCountedLeakCounter@WTF@@QAE@XZ
??1SourceProvider@JSC@@UAE@XZ
??1SourceProviderCache@JSC@@QAE@XZ
- ??1StringImpl@WTF@@QAE@XZ
??1StringPrintStream@WTF@@UAE@XZ
??1ThreadCondition@WTF@@QAE@XZ
??1VM@JSC@@QAE@XZ
@@ -231,6 +230,7 @@
?destroy@JSCell@JSC@@KAXPAV12@@Z
?destroy@JSGlobalObject@JSC@@SAXPAVJSCell@2@@Z
?destroy@OutOfLineBits@BitVector@WTF@@SAXPAV123@@Z
+ ?destroy@StringImpl@WTF@@SAXPAV12@@Z
?detach@Debugger@JSC@@UAEXPAVJSGlobalObject@2@@Z
?detachThread@WTF@@YAXI@Z
?discardAllCode@VM@JSC@@QAEXXZ
Modified: trunk/Source/WTF/ChangeLog (148856 => 148857)
--- trunk/Source/WTF/ChangeLog 2013-04-22 06:06:18 UTC (rev 148856)
+++ trunk/Source/WTF/ChangeLog 2013-04-22 06:21:22 UTC (rev 148857)
@@ -1,3 +1,21 @@
+2013-04-21 Benjamin Poulain <[email protected]>
+
+ Improve StringImpl code density for older ARM hardware
+ https://bugs.webkit.org/show_bug.cgi?id=114898
+
+ Reviewed by Geoffrey Garen.
+
+ Reduce the number of instructions needed for StringImpl::deref
+ on older ARM hardware.
+
+ The extra indirection should have a negligible impact on x86_64.
+
+ * wtf/text/StringImpl.cpp:
+ (WTF::StringImpl::destroy):
+ * wtf/text/StringImpl.h:
+ (StringImpl):
+ (WTF::StringImpl::deref):
+
2013-04-20 Allan Sandfeld Jensen <[email protected]>
LLint should be able to use x87 instead of SSE for floating pointer
Modified: trunk/Source/WTF/wtf/text/StringImpl.cpp (148856 => 148857)
--- trunk/Source/WTF/wtf/text/StringImpl.cpp 2013-04-22 06:06:18 UTC (rev 148856)
+++ trunk/Source/WTF/wtf/text/StringImpl.cpp 2013-04-22 06:21:22 UTC (rev 148857)
@@ -148,6 +148,12 @@
m_substringBuffer->deref();
}
+void StringImpl::destroy(StringImpl* stringImpl)
+{
+ stringImpl->~StringImpl();
+ fastFree(stringImpl);
+}
+
PassRefPtr<StringImpl> StringImpl::createFromLiteral(const char* characters, unsigned length)
{
ASSERT_WITH_MESSAGE(length, "Use StringImpl::empty() to create an empty string");
Modified: trunk/Source/WTF/wtf/text/StringImpl.h (148856 => 148857)
--- trunk/Source/WTF/wtf/text/StringImpl.h 2013-04-22 06:06:18 UTC (rev 148856)
+++ trunk/Source/WTF/wtf/text/StringImpl.h 2013-04-22 06:21:22 UTC (rev 148857)
@@ -346,9 +346,10 @@
STRING_STATS_ADD_16BIT_STRING(m_length);
}
#endif
+ ~StringImpl();
public:
- WTF_EXPORT_STRING_API ~StringImpl();
+ WTF_EXPORT_STRING_API static void destroy(StringImpl*);
WTF_EXPORT_STRING_API static PassRefPtr<StringImpl> create(const UChar*, unsigned length);
WTF_EXPORT_STRING_API static PassRefPtr<StringImpl> create(const LChar*, unsigned length);
@@ -588,12 +589,12 @@
inline void deref()
{
- if (m_refCount == s_refCountIncrement) {
- delete this;
+ unsigned tempRefCount = m_refCount - s_refCountIncrement;
+ if (!tempRefCount) {
+ StringImpl::destroy(this);
return;
}
-
- m_refCount -= s_refCountIncrement;
+ m_refCount = tempRefCount;
}
WTF_EXPORT_PRIVATE static StringImpl* empty();
Modified: trunk/Source/WebKit/ChangeLog (148856 => 148857)
--- trunk/Source/WebKit/ChangeLog 2013-04-22 06:06:18 UTC (rev 148856)
+++ trunk/Source/WebKit/ChangeLog 2013-04-22 06:21:22 UTC (rev 148857)
@@ -1,3 +1,12 @@
+2013-04-21 Benjamin Poulain <[email protected]>
+
+ Improve StringImpl code density for older ARM hardware
+ https://bugs.webkit.org/show_bug.cgi?id=114898
+
+ Reviewed by Geoffrey Garen.
+
+ * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
+
2013-04-19 Roger Fong <[email protected]>
Unreviewed. WebKit_Source is incorrectly set.
Modified: trunk/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in (148856 => 148857)
--- trunk/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in 2013-04-22 06:06:18 UTC (rev 148856)
+++ trunk/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in 2013-04-22 06:21:22 UTC (rev 148857)
@@ -114,7 +114,6 @@
??0Mutex@WTF@@QAE@XZ
??0ThreadCondition@WTF@@QAE@XZ
??1Mutex@WTF@@QAE@XZ
- ??1StringImpl@WTF@@QAE@XZ
??1ThreadCondition@WTF@@QAE@XZ
?addTextMatchMarker@DocumentMarkerController@WebCore@@QAEXPBVRange@2@_N@Z
?broadcast@ThreadCondition@WTF@@QAEXXZ
@@ -129,6 +128,7 @@
?createThread@WTF@@YAIP6AXPAX@Z0PBD@Z
?currentThread@WTF@@YAIXZ
?detachThread@WTF@@YAXI@Z
+ ?destroy@StringImpl@WTF@@SAXPAV12@@Z
?initializeMainThread@WTF@@YAXXZ
?initializeThreading@WTF@@YAXXZ
?instrumentationForPage@WebCore@@YAPAVInstrumentingAgents@1@PAVPage@1@@Z
Modified: trunk/Source/WebKit/win/ChangeLog (148856 => 148857)
--- trunk/Source/WebKit/win/ChangeLog 2013-04-22 06:06:18 UTC (rev 148856)
+++ trunk/Source/WebKit/win/ChangeLog 2013-04-22 06:21:22 UTC (rev 148857)
@@ -1,3 +1,12 @@
+2013-04-21 Benjamin Poulain <[email protected]>
+
+ Improve StringImpl code density for older ARM hardware
+ https://bugs.webkit.org/show_bug.cgi?id=114898
+
+ Reviewed by Geoffrey Garen.
+
+ * WebKit.vcproj/WebKitExports.def.in:
+
2013-04-17 Geoffrey Garen <[email protected]>
Renamed JSGlobalData to VM
Modified: trunk/Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in (148856 => 148857)
--- trunk/Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in 2013-04-22 06:06:18 UTC (rev 148856)
+++ trunk/Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in 2013-04-22 06:21:22 UTC (rev 148857)
@@ -114,7 +114,6 @@
??0Mutex@WTF@@QAE@XZ
??0ThreadCondition@WTF@@QAE@XZ
??1Mutex@WTF@@QAE@XZ
- ??1StringImpl@WTF@@QAE@XZ
??1ThreadCondition@WTF@@QAE@XZ
?addTextMatchMarker@DocumentMarkerController@WebCore@@QAEXPBVRange@2@_N@Z
?broadcast@ThreadCondition@WTF@@QAEXXZ
@@ -129,6 +128,7 @@
?createThread@WTF@@YAIP6AXPAX@Z0PBD@Z
?currentThread@WTF@@YAIXZ
?detachThread@WTF@@YAXI@Z
+ ?destroy@StringImpl@WTF@@SAXPAV12@@Z
?initializeMainThread@WTF@@YAXXZ
?initializeThreading@WTF@@YAXXZ
?instrumentationForPage@WebCore@@YAPAVInstrumentingAgents@1@PAVPage@1@@Z