Title: [148857] trunk/Source
Revision
148857
Author
[email protected]
Date
2013-04-21 23:21:22 -0700 (Sun, 21 Apr 2013)

Log Message

Improve StringImpl code density for older ARM hardware
https://bugs.webkit.org/show_bug.cgi?id=114898

Reviewed by Geoffrey Garen.

Source/WebKit: 

* WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

Source/WebKit/win: 

* WebKit.vcproj/WebKitExports.def.in:

Source/WTF: 

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):

Modified Paths

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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to