Diff
Modified: trunk/Source/WebKit/ChangeLog (283226 => 283227)
--- trunk/Source/WebKit/ChangeLog 2021-09-29 16:26:43 UTC (rev 283226)
+++ trunk/Source/WebKit/ChangeLog 2021-09-29 16:28:47 UTC (rev 283227)
@@ -1,3 +1,22 @@
+2021-09-29 Alex Christensen <[email protected]>
+
+ Reduce allocations in DatabaseUtilities::sortedTables
+ https://bugs.webkit.org/show_bug.cgi?id=230933
+
+ Reviewed by Chris Dumez.
+
+ No change in behavior except no more memory allocations. What a wonderful thing.
+
+ * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
+ (WebKit::ResourceLoadStatisticsDatabaseStore::sortedTables):
+ * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
+ * NetworkProcess/DatabaseUtilities.cpp:
+ (WebKit::DatabaseUtilities::migrateDataToNewTablesIfNecessary):
+ * NetworkProcess/DatabaseUtilities.h:
+ * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:
+ (WebKit::PCM::Database::sortedTables):
+ * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h:
+
2021-09-29 Devin Rousso <[email protected]>
Add support for sending Expected<void, E> in IPC messages
Modified: trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp (283226 => 283227)
--- trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp 2021-09-29 16:26:43 UTC (rev 283226)
+++ trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp 2021-09-29 16:28:47 UTC (rev 283227)
@@ -273,9 +273,9 @@
return expectedTableAndIndexQueries;
}
-const Vector<String>& ResourceLoadStatisticsDatabaseStore::sortedTables()
+Span<const ASCIILiteral> ResourceLoadStatisticsDatabaseStore::sortedTables()
{
- static auto sortedTables = makeNeverDestroyed(Vector<String> {
+ static constexpr std::array sortedTables {
"ObservedDomains"_s,
"TopLevelDomains"_s,
"StorageAccessUnderTopFrameDomains"_s,
@@ -289,9 +289,9 @@
"SubresourceUniqueRedirectsTo"_s,
"SubresourceUniqueRedirectsFrom"_s,
"OperatingDates"_s
- });
+ };
- return sortedTables;
+ return { sortedTables.data(), sortedTables.size() };
}
template <typename ContainerType>
Modified: trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h (283226 => 283227)
--- trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h 2021-09-29 16:26:43 UTC (rev 283226)
+++ trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h 2021-09-29 16:28:47 UTC (rev 283227)
@@ -117,7 +117,7 @@
private:
const MemoryCompactLookupOnlyRobinHoodHashMap<String, TableAndIndexPair>& expectedTableAndIndexQueries() final;
- const Vector<String>& sortedTables() final;
+ Span<const ASCIILiteral> sortedTables() final;
void includeTodayAsOperatingDateIfNecessary() override;
void clearOperatingDates() override { }
bool hasStatisticsExpired(WallTime mostRecentUserInteractionTime, OperatingDatesWindow) const override;
Modified: trunk/Source/WebKit/NetworkProcess/DatabaseUtilities.cpp (283226 => 283227)
--- trunk/Source/WebKit/NetworkProcess/DatabaseUtilities.cpp 2021-09-29 16:26:43 UTC (rev 283226)
+++ trunk/Source/WebKit/NetworkProcess/DatabaseUtilities.cpp 2021-09-29 16:28:47 UTC (rev 283227)
@@ -280,7 +280,7 @@
for (auto& table : sortedTables()) {
auto migrateTableData = insertDistinctValuesInTableStatement(m_database, table);
if (!migrateTableData || migrateTableData->step() != SQLITE_DONE) {
- RELEASE_LOG_ERROR(PrivateClickMeasurement, "%p - DatabaseUtilities::migrateDataToNewTablesIfNecessary (table %s) failed to migrate schema, error message: %s", this, table.utf8().data(), m_database.lastErrorMsg());
+ RELEASE_LOG_ERROR(PrivateClickMeasurement, "%p - DatabaseUtilities::migrateDataToNewTablesIfNecessary (table %s) failed to migrate schema, error message: %s", this, table.characters(), m_database.lastErrorMsg());
ASSERT_NOT_REACHED();
return;
}
Modified: trunk/Source/WebKit/NetworkProcess/DatabaseUtilities.h (283226 => 283227)
--- trunk/Source/WebKit/NetworkProcess/DatabaseUtilities.h 2021-09-29 16:26:43 UTC (rev 283226)
+++ trunk/Source/WebKit/NetworkProcess/DatabaseUtilities.h 2021-09-29 16:28:47 UTC (rev 283227)
@@ -60,7 +60,7 @@
virtual String getDomainStringFromDomainID(unsigned) const = 0;
virtual bool needsUpdatedSchema() = 0;
virtual const MemoryCompactLookupOnlyRobinHoodHashMap<String, TableAndIndexPair>& expectedTableAndIndexQueries() = 0;
- virtual const Vector<String>& sortedTables() = 0;
+ virtual Span<const ASCIILiteral> sortedTables() = 0;
TableAndIndexPair currentTableAndIndexQueries(const String&);
String stripIndexQueryToMatchStoredValue(const char* originalQuery);
void migrateDataToNewTablesIfNecessary();
Modified: trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp (283226 => 283227)
--- trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp 2021-09-29 16:26:43 UTC (rev 283226)
+++ trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp 2021-09-29 16:28:47 UTC (rev 283227)
@@ -111,15 +111,15 @@
return expectedTableAndIndexQueries;
}
-const Vector<String>& Database::sortedTables()
+Span<const ASCIILiteral> Database::sortedTables()
{
- static auto sortedTables = makeNeverDestroyed(Vector<String> {
+ static std::array sortedTables {
"PCMObservedDomains"_s,
"UnattributedPrivateClickMeasurement"_s,
"AttributedPrivateClickMeasurement"_s
- });
+ };
- return sortedTables;
+ return { sortedTables.data(), sortedTables.size() };
}
void Database::interruptAllDatabases()
Modified: trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h (283226 => 283227)
--- trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h 2021-09-29 16:26:43 UTC (rev 283226)
+++ trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h 2021-09-29 16:28:47 UTC (rev 283227)
@@ -80,7 +80,7 @@
bool needsUpdatedSchema() final;
bool createUniqueIndices() final;
const MemoryCompactLookupOnlyRobinHoodHashMap<String, TableAndIndexPair>& expectedTableAndIndexQueries() final;
- const Vector<String>& sortedTables() final;
+ Span<const ASCIILiteral> sortedTables() final;
Vector<String> columnsForTable(const String& tableName);
void addMissingColumnToTable(const String& tableName, const String& columnName);