Diff
Modified: trunk/Source/WebCore/ChangeLog (188065 => 188066)
--- trunk/Source/WebCore/ChangeLog 2015-08-06 22:23:31 UTC (rev 188065)
+++ trunk/Source/WebCore/ChangeLog 2015-08-06 22:32:06 UTC (rev 188066)
@@ -1,3 +1,20 @@
+2015-08-06 Anders Carlsson <ander...@apple.com>
+
+ SQLStatementBackend doesn't need to be refcounted
+ https://bugs.webkit.org/show_bug.cgi?id=147748
+
+ Reviewed by Geoffrey Garen.
+
+ There's no shared ownership of SQLStatementBackend so we can just use std::unique_ptr.
+
+ * Modules/webdatabase/SQLStatementBackend.cpp:
+ (WebCore::SQLStatementBackend::create): Deleted.
+ * Modules/webdatabase/SQLStatementBackend.h:
+ * Modules/webdatabase/SQLTransactionBackend.cpp:
+ (WebCore::SQLTransactionBackend::enqueueStatementBackend):
+ (WebCore::SQLTransactionBackend::executeSQL):
+ * Modules/webdatabase/SQLTransactionBackend.h:
+
2015-08-06 Eric Carlson <eric.carl...@apple.com>
Do not enforce "content-disposition: attachment" sandbox restrictions on a MediaDocument
Modified: trunk/Source/WebCore/Modules/webdatabase/SQLStatementBackend.cpp (188065 => 188066)
--- trunk/Source/WebCore/Modules/webdatabase/SQLStatementBackend.cpp 2015-08-06 22:23:31 UTC (rev 188065)
+++ trunk/Source/WebCore/Modules/webdatabase/SQLStatementBackend.cpp 2015-08-06 22:32:06 UTC (rev 188066)
@@ -75,12 +75,6 @@
namespace WebCore {
-Ref<SQLStatementBackend> SQLStatementBackend::create(std::unique_ptr<SQLStatement> frontend,
- const String& statement, const Vector<SQLValue>& arguments, int permissions)
-{
- return adoptRef(*new SQLStatementBackend(WTF::move(frontend), statement, arguments, permissions));
-}
-
SQLStatementBackend::SQLStatementBackend(std::unique_ptr<SQLStatement> frontend,
const String& statement, const Vector<SQLValue>& arguments, int permissions)
: m_frontend(WTF::move(frontend))
Modified: trunk/Source/WebCore/Modules/webdatabase/SQLStatementBackend.h (188065 => 188066)
--- trunk/Source/WebCore/Modules/webdatabase/SQLStatementBackend.h 2015-08-06 22:23:31 UTC (rev 188065)
+++ trunk/Source/WebCore/Modules/webdatabase/SQLStatementBackend.h 2015-08-06 22:32:06 UTC (rev 188066)
@@ -41,11 +41,10 @@
class SQLStatement;
class SQLTransactionBackend;
-class SQLStatementBackend : public ThreadSafeRefCounted<SQLStatementBackend> {
+class SQLStatementBackend {
public:
- static Ref<SQLStatementBackend> create(std::unique_ptr<SQLStatement>,
- const String& sqlStatement, const Vector<SQLValue>& arguments, int permissions);
- virtual ~SQLStatementBackend();
+ SQLStatementBackend(std::unique_ptr<SQLStatement>, const String& statement, const Vector<SQLValue>& arguments, int permissions);
+ ~SQLStatementBackend();
bool execute(Database&);
bool lastExecutionFailedDueToQuota() const;
@@ -61,9 +60,6 @@
PassRefPtr<SQLResultSet> sqlResultSet() const;
private:
- SQLStatementBackend(std::unique_ptr<SQLStatement>, const String& statement,
- const Vector<SQLValue>& arguments, int permissions);
-
void setFailureDueToQuota();
void clearFailureDueToQuota();
Modified: trunk/Source/WebCore/Modules/webdatabase/SQLTransactionBackend.cpp (188065 => 188066)
--- trunk/Source/WebCore/Modules/webdatabase/SQLTransactionBackend.cpp 2015-08-06 22:23:31 UTC (rev 188065)
+++ trunk/Source/WebCore/Modules/webdatabase/SQLTransactionBackend.cpp 2015-08-06 22:32:06 UTC (rev 188066)
@@ -463,10 +463,10 @@
return stateFunctions[static_cast<int>(state)];
}
-void SQLTransactionBackend::enqueueStatementBackend(PassRefPtr<SQLStatementBackend> statementBackend)
+void SQLTransactionBackend::enqueueStatementBackend(std::unique_ptr<SQLStatementBackend> statementBackend)
{
MutexLocker locker(m_statementMutex);
- m_statementQueue.append(statementBackend);
+ m_statementQueue.append(WTF::move(statementBackend));
}
void SQLTransactionBackend::computeNextStateAndCleanupIfNeeded()
@@ -525,13 +525,12 @@
void SQLTransactionBackend::executeSQL(std::unique_ptr<SQLStatement> statement, const String& sqlStatement, const Vector<SQLValue>& arguments, int permissions)
{
- RefPtr<SQLStatementBackend> statementBackend;
- statementBackend = SQLStatementBackend::create(WTF::move(statement), sqlStatement, arguments, permissions);
+ auto statementBackend = std::make_unique<SQLStatementBackend>(WTF::move(statement), sqlStatement, arguments, permissions);
if (m_database->deleted())
statementBackend->setDatabaseDeletedError();
- enqueueStatementBackend(statementBackend);
+ enqueueStatementBackend(WTF::move(statementBackend));
}
void SQLTransactionBackend::notifyDatabaseThreadIsShuttingDown()
Modified: trunk/Source/WebCore/Modules/webdatabase/SQLTransactionBackend.h (188065 => 188066)
--- trunk/Source/WebCore/Modules/webdatabase/SQLTransactionBackend.h 2015-08-06 22:23:31 UTC (rev 188065)
+++ trunk/Source/WebCore/Modules/webdatabase/SQLTransactionBackend.h 2015-08-06 22:32:06 UTC (rev 188066)
@@ -86,7 +86,7 @@
void doCleanup();
- void enqueueStatementBackend(PassRefPtr<SQLStatementBackend>);
+ void enqueueStatementBackend(std::unique_ptr<SQLStatementBackend>);
// State Machine functions:
virtual StateFunction stateFunctionFor(SQLTransactionState) override;
@@ -113,7 +113,7 @@
void releaseOriginLockIfNeeded();
RefPtr<SQLTransaction> m_frontend; // Has a reference cycle, and will break in doCleanup().
- RefPtr<SQLStatementBackend> m_currentStatementBackend;
+ std::unique_ptr<SQLStatementBackend> m_currentStatementBackend;
RefPtr<Database> m_database;
RefPtr<SQLTransactionWrapper> m_wrapper;
@@ -129,7 +129,7 @@
bool m_hasVersionMismatch;
Mutex m_statementMutex;
- Deque<RefPtr<SQLStatementBackend>> m_statementQueue;
+ Deque<std::unique_ptr<SQLStatementBackend>> m_statementQueue;
std::unique_ptr<SQLiteTransaction> m_sqliteTransaction;
RefPtr<OriginLock> m_originLock;