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;