Title: [188066] trunk/Source/WebCore
Revision
188066
Author
ander...@apple.com
Date
2015-08-06 15:32:06 -0700 (Thu, 06 Aug 2015)

Log Message

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:

Modified Paths

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;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to