Title: [183832] trunk
Revision
183832
Author
[email protected]
Date
2015-05-05 15:20:34 -0700 (Tue, 05 May 2015)

Log Message

[Content Extensions] Use less memory to store the json input.
https://bugs.webkit.org/show_bug.cgi?id=144604

Reviewed by Benjamin Poulain.

Source/WebCore:

* contentextensions/ContentExtensionCompiler.cpp:
(WebCore::ContentExtensions::compileRuleList):
* contentextensions/ContentExtensionCompiler.h:
(WebCore::ContentExtensions::loadEncodedRules):
Don't copy strings as much or keep them alive after done using them.

Source/WebKit2:

* UIProcess/API/APIUserContentExtensionStore.cpp:
(API::compiledToFile):
(API::UserContentExtensionStore::compileContentExtension):
* UIProcess/API/APIUserContentExtensionStore.h:
Don't copy strings as much or keep them alive after done using them.

Tools:

* MiniBrowser/mac/ExtensionManagerWindowController.m:
(-[ExtensionManagerWindowController add:]):
* TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
(TestWebKitAPI::InMemoryCompiledContentExtension::createFromFilter):
* WebKitTestRunner/mac/TestControllerMac.mm:
(WTR::TestController::platformConfigureViewForTest):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (183831 => 183832)


--- trunk/Source/WebCore/ChangeLog	2015-05-05 22:01:42 UTC (rev 183831)
+++ trunk/Source/WebCore/ChangeLog	2015-05-05 22:20:34 UTC (rev 183832)
@@ -1,3 +1,16 @@
+2015-05-05  Alex Christensen  <[email protected]>
+
+        [Content Extensions] Use less memory to store the json input.
+        https://bugs.webkit.org/show_bug.cgi?id=144604
+
+        Reviewed by Benjamin Poulain.
+
+        * contentextensions/ContentExtensionCompiler.cpp:
+        (WebCore::ContentExtensions::compileRuleList):
+        * contentextensions/ContentExtensionCompiler.h:
+        (WebCore::ContentExtensions::loadEncodedRules):
+        Don't copy strings as much or keep them alive after done using them.
+
 2015-05-05  Eric Carlson  <[email protected]>
 
         Prevent recursive calls to show target picker menu.

Modified: trunk/Source/WebCore/contentextensions/ContentExtensionCompiler.cpp (183831 => 183832)


--- trunk/Source/WebCore/contentextensions/ContentExtensionCompiler.cpp	2015-05-05 22:01:42 UTC (rev 183831)
+++ trunk/Source/WebCore/contentextensions/ContentExtensionCompiler.cpp	2015-05-05 22:20:34 UTC (rev 183832)
@@ -136,10 +136,11 @@
     dfa.nodes[dfa.root].setActions(actionsStart, static_cast<uint16_t>(actionsLength));
 }
 
-std::error_code compileRuleList(ContentExtensionCompilationClient& client, const String& ruleList)
+std::error_code compileRuleList(ContentExtensionCompilationClient& client, String&& ruleList)
 {
     Vector<ContentExtensionRule> parsedRuleList;
     auto parserError = parseRuleList(ruleList, parsedRuleList);
+    ruleList = String();
     if (parserError)
         return parserError;
 

Modified: trunk/Source/WebCore/contentextensions/ContentExtensionCompiler.h (183831 => 183832)


--- trunk/Source/WebCore/contentextensions/ContentExtensionCompiler.h	2015-05-05 22:01:42 UTC (rev 183831)
+++ trunk/Source/WebCore/contentextensions/ContentExtensionCompiler.h	2015-05-05 22:20:34 UTC (rev 183832)
@@ -50,7 +50,7 @@
     virtual void finalize() = 0;
 };
 
-WEBCORE_EXPORT std::error_code compileRuleList(ContentExtensionCompilationClient&, const String&);
+WEBCORE_EXPORT std::error_code compileRuleList(ContentExtensionCompilationClient&, String&&);
 
 } // namespace ContentExtensions
 } // namespace WebCore

Modified: trunk/Source/WebKit2/ChangeLog (183831 => 183832)


--- trunk/Source/WebKit2/ChangeLog	2015-05-05 22:01:42 UTC (rev 183831)
+++ trunk/Source/WebKit2/ChangeLog	2015-05-05 22:20:34 UTC (rev 183832)
@@ -1,3 +1,16 @@
+2015-05-05  Alex Christensen  <[email protected]>
+
+        [Content Extensions] Use less memory to store the json input.
+        https://bugs.webkit.org/show_bug.cgi?id=144604
+
+        Reviewed by Benjamin Poulain.
+
+        * UIProcess/API/APIUserContentExtensionStore.cpp:
+        (API::compiledToFile):
+        (API::UserContentExtensionStore::compileContentExtension):
+        * UIProcess/API/APIUserContentExtensionStore.h:
+        Don't copy strings as much or keep them alive after done using them.
+
 2015-05-04  Alex Christensen  <[email protected]>
 
         [Content Extensions] Use less memory when writing byte code to file

Modified: trunk/Source/WebKit2/UIProcess/API/APIUserContentExtensionStore.cpp (183831 => 183832)


--- trunk/Source/WebKit2/UIProcess/API/APIUserContentExtensionStore.cpp	2015-05-05 22:01:42 UTC (rev 183831)
+++ trunk/Source/WebKit2/UIProcess/API/APIUserContentExtensionStore.cpp	2015-05-05 22:20:34 UTC (rev 183832)
@@ -153,7 +153,7 @@
     return success;
 }
 
-static std::error_code compiledToFile(const String& json, const String& finalFilePath, ContentExtensionMetaData& metaData, Data& mappedData)
+static std::error_code compiledToFile(String&& json, const String& finalFilePath, ContentExtensionMetaData& metaData, Data& mappedData)
 {
     using namespace WebCore::ContentExtensions;
 
@@ -223,7 +223,7 @@
 
     CompilationClient compilationClient(temporaryFileHandle, metaData);
     
-    if (auto compilerError = compileRuleList(compilationClient, json))
+    if (auto compilerError = compileRuleList(compilationClient, WTF::move(json)))
         return compilerError;
     if (compilationClient.hadErrorWhileWritingToFile())
         return UserContentExtensionStore::Error::CompileFailed;
@@ -280,19 +280,19 @@
     });
 }
 
-void UserContentExtensionStore::compileContentExtension(const WTF::String& identifier, const WTF::String& json, std::function<void(RefPtr<API::UserContentExtension>, std::error_code)> completionHandler)
+void UserContentExtensionStore::compileContentExtension(const WTF::String& identifier, WTF::String&& json, std::function<void(RefPtr<API::UserContentExtension>, std::error_code)> completionHandler)
 {
     RefPtr<UserContentExtensionStore> self(this);
     StringCapture identifierCapture(identifier);
-    StringCapture jsonCapture(json);
+    StringCapture jsonCapture(WTF::move(json));
     StringCapture pathCapture(m_storePath);
 
-    m_compileQueue->dispatch([self, identifierCapture, jsonCapture, pathCapture, completionHandler] {
+    m_compileQueue->dispatch([self, identifierCapture, jsonCapture, pathCapture, completionHandler] () mutable {
         auto path = constructedPath(pathCapture.string(), identifierCapture.string());
 
         ContentExtensionMetaData metaData;
         Data fileData;
-        auto error = compiledToFile(jsonCapture.string(), path, metaData, fileData);
+        auto error = compiledToFile(jsonCapture.releaseString(), path, metaData, fileData);
         if (error) {
             RunLoop::main().dispatch([self, error, completionHandler] {
                 completionHandler(nullptr, error);

Modified: trunk/Source/WebKit2/UIProcess/API/APIUserContentExtensionStore.h (183831 => 183832)


--- trunk/Source/WebKit2/UIProcess/API/APIUserContentExtensionStore.h	2015-05-05 22:01:42 UTC (rev 183831)
+++ trunk/Source/WebKit2/UIProcess/API/APIUserContentExtensionStore.h	2015-05-05 22:20:34 UTC (rev 183832)
@@ -54,7 +54,7 @@
     explicit UserContentExtensionStore(const WTF::String& storePath);
     virtual ~UserContentExtensionStore();
 
-    void compileContentExtension(const WTF::String& identifier, const WTF::String& json, std::function<void(RefPtr<API::UserContentExtension>, std::error_code)>);
+    void compileContentExtension(const WTF::String& identifier, WTF::String&& json, std::function<void(RefPtr<API::UserContentExtension>, std::error_code)>);
     void lookupContentExtension(const WTF::String& identifier, std::function<void(RefPtr<API::UserContentExtension>, std::error_code)>);
     void removeContentExtension(const WTF::String& identifier, std::function<void(std::error_code)>);
 

Modified: trunk/Tools/ChangeLog (183831 => 183832)


--- trunk/Tools/ChangeLog	2015-05-05 22:01:42 UTC (rev 183831)
+++ trunk/Tools/ChangeLog	2015-05-05 22:20:34 UTC (rev 183832)
@@ -1,3 +1,17 @@
+2015-05-05  Alex Christensen  <[email protected]>
+
+        [Content Extensions] Use less memory to store the json input.
+        https://bugs.webkit.org/show_bug.cgi?id=144604
+
+        Reviewed by Benjamin Poulain.
+
+        * MiniBrowser/mac/ExtensionManagerWindowController.m:
+        (-[ExtensionManagerWindowController add:]):
+        * TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
+        (TestWebKitAPI::InMemoryCompiledContentExtension::createFromFilter):
+        * WebKitTestRunner/mac/TestControllerMac.mm:
+        (WTR::TestController::platformConfigureViewForTest):
+
 2015-05-05  Yusuke Suzuki  <[email protected]>
 
         Unreviewed. Make myself a WebKit reviewer.

Modified: trunk/Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp (183831 => 183832)


--- trunk/Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp	2015-05-05 22:01:42 UTC (rev 183831)
+++ trunk/Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp	2015-05-05 22:20:34 UTC (rev 183832)
@@ -109,11 +109,11 @@
 
 class InMemoryCompiledContentExtension : public ContentExtensions::CompiledContentExtension {
 public:
-    static RefPtr<InMemoryCompiledContentExtension> createFromFilter(const String& filter)
+    static RefPtr<InMemoryCompiledContentExtension> createFromFilter(String&& filter)
     {
         WebCore::ContentExtensions::CompiledContentExtensionData extensionData;
         InMemoryContentExtensionCompilationClient client(extensionData);
-        auto compilerError = ContentExtensions::compileRuleList(client, filter);
+        auto compilerError = ContentExtensions::compileRuleList(client, WTF::move(filter));
         if (compilerError)
             return nullptr;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to