Title: [141482] trunk/Source/WebKit2
Revision
141482
Author
[email protected]
Date
2013-01-31 14:00:22 -0800 (Thu, 31 Jan 2013)

Log Message

Use a Vector for IPC attachments
https://bugs.webkit.org/show_bug.cgi?id=108517

Reviewed by Sam Weinig.

* Platform/CoreIPC/ArgumentDecoder.cpp:
(CoreIPC::ArgumentDecoder::create):
(CoreIPC::ArgumentDecoder::ArgumentDecoder):
(CoreIPC::ArgumentDecoder::removeAttachment):
* Platform/CoreIPC/ArgumentDecoder.h:
(ArgumentDecoder):
* Platform/CoreIPC/Connection.h:
* Platform/CoreIPC/MessageDecoder.cpp:
(CoreIPC::MessageDecoder::create):
(CoreIPC::MessageDecoder::MessageDecoder):
* Platform/CoreIPC/MessageDecoder.h:
(MessageDecoder):
* Platform/CoreIPC/mac/ConnectionMac.cpp:
(CoreIPC::createMessageDecoder):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (141481 => 141482)


--- trunk/Source/WebKit2/ChangeLog	2013-01-31 21:57:00 UTC (rev 141481)
+++ trunk/Source/WebKit2/ChangeLog	2013-01-31 22:00:22 UTC (rev 141482)
@@ -1,3 +1,25 @@
+2013-01-31  Anders Carlsson  <[email protected]>
+
+        Use a Vector for IPC attachments
+        https://bugs.webkit.org/show_bug.cgi?id=108517
+
+        Reviewed by Sam Weinig.
+
+        * Platform/CoreIPC/ArgumentDecoder.cpp:
+        (CoreIPC::ArgumentDecoder::create):
+        (CoreIPC::ArgumentDecoder::ArgumentDecoder):
+        (CoreIPC::ArgumentDecoder::removeAttachment):
+        * Platform/CoreIPC/ArgumentDecoder.h:
+        (ArgumentDecoder):
+        * Platform/CoreIPC/Connection.h:
+        * Platform/CoreIPC/MessageDecoder.cpp:
+        (CoreIPC::MessageDecoder::create):
+        (CoreIPC::MessageDecoder::MessageDecoder):
+        * Platform/CoreIPC/MessageDecoder.h:
+        (MessageDecoder):
+        * Platform/CoreIPC/mac/ConnectionMac.cpp:
+        (CoreIPC::createMessageDecoder):
+
 2013-01-31  Joseph Pecoraro  <[email protected]>
 
         Disable ENABLE_FULLSCREEN_API on iOS

Modified: trunk/Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.cpp (141481 => 141482)


--- trunk/Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.cpp	2013-01-31 21:57:00 UTC (rev 141481)
+++ trunk/Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.cpp	2013-01-31 22:00:22 UTC (rev 141482)
@@ -33,11 +33,11 @@
 
 PassOwnPtr<ArgumentDecoder> ArgumentDecoder::create(const uint8_t* buffer, size_t bufferSize)
 {
-    Deque<Attachment> attachments;
+    Vector<Attachment> attachments;
     return adoptPtr(new ArgumentDecoder(buffer, bufferSize, attachments));
 }
 
-ArgumentDecoder::ArgumentDecoder(const uint8_t* buffer, size_t bufferSize, Deque<Attachment>& attachments)
+ArgumentDecoder::ArgumentDecoder(const uint8_t* buffer, size_t bufferSize, Vector<Attachment>& attachments)
 {
     initialize(buffer, bufferSize);
 
@@ -224,17 +224,9 @@
     if (m_attachments.isEmpty())
         return false;
 
-    attachment = m_attachments.takeFirst();
+    attachment = m_attachments.last();
+    m_attachments.removeLast();
     return true;
 }
 
-#ifndef NDEBUG
-void ArgumentDecoder::debug()
-{
-    printf("ArgumentDecoder::debug()\n");
-    printf("Number of Attachments: %d\n", (int)m_attachments.size());
-    printf("Size of buffer: %d\n", (int)(m_bufferEnd - m_buffer));
-}
-#endif
-
 } // namespace CoreIPC

Modified: trunk/Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.h (141481 => 141482)


--- trunk/Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.h	2013-01-31 21:57:00 UTC (rev 141481)
+++ trunk/Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.h	2013-01-31 22:00:22 UTC (rev 141482)
@@ -28,7 +28,6 @@
 
 #include "ArgumentCoder.h"
 #include "Attachment.h"
-#include <wtf/Deque.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/TypeTraits.h>
 #include <wtf/Vector.h>
@@ -93,12 +92,8 @@
 
     bool removeAttachment(Attachment&);
 
-#ifndef NDEBUG
-    void debug();
-#endif
-
 protected:
-    ArgumentDecoder(const uint8_t* buffer, size_t bufferSize, Deque<Attachment>&);
+    ArgumentDecoder(const uint8_t* buffer, size_t bufferSize, Vector<Attachment>&);
 
     void initialize(const uint8_t* buffer, size_t bufferSize);
 
@@ -115,7 +110,7 @@
     uint8_t* m_bufferPos;
     uint8_t* m_bufferEnd;
 
-    Deque<Attachment> m_attachments;
+    Vector<Attachment> m_attachments;
 };
 
 } // namespace CoreIPC

Modified: trunk/Source/WebKit2/Platform/CoreIPC/Connection.h (141481 => 141482)


--- trunk/Source/WebKit2/Platform/CoreIPC/Connection.h	2013-01-31 21:57:00 UTC (rev 141481)
+++ trunk/Source/WebKit2/Platform/CoreIPC/Connection.h	2013-01-31 22:00:22 UTC (rev 141482)
@@ -33,6 +33,7 @@
 #include "MessageEncoder.h"
 #include "MessageReceiver.h"
 #include "WorkQueue.h"
+#include <wtf/Deque.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/Threading.h>

Modified: trunk/Source/WebKit2/Platform/CoreIPC/MessageDecoder.cpp (141481 => 141482)


--- trunk/Source/WebKit2/Platform/CoreIPC/MessageDecoder.cpp	2013-01-31 21:57:00 UTC (rev 141481)
+++ trunk/Source/WebKit2/Platform/CoreIPC/MessageDecoder.cpp	2013-01-31 22:00:22 UTC (rev 141482)
@@ -35,11 +35,11 @@
 
 PassOwnPtr<MessageDecoder> MessageDecoder::create(const DataReference& buffer)
 {
-    Deque<Attachment> attachments;
+    Vector<Attachment> attachments;
     return adoptPtr(new MessageDecoder(buffer, attachments));
 }
 
-PassOwnPtr<MessageDecoder> MessageDecoder::create(const DataReference& buffer, Deque<Attachment>& attachments)
+PassOwnPtr<MessageDecoder> MessageDecoder::create(const DataReference& buffer, Vector<Attachment>& attachments)
 {
     return adoptPtr(new MessageDecoder(buffer, attachments));
 }
@@ -48,7 +48,7 @@
 {
 }
 
-MessageDecoder::MessageDecoder(const DataReference& buffer, Deque<Attachment>& attachments)
+MessageDecoder::MessageDecoder(const DataReference& buffer, Vector<Attachment>& attachments)
     : ArgumentDecoder(buffer.data(), buffer.size(), attachments)
 {
     if (!decode(m_messageFlags))

Modified: trunk/Source/WebKit2/Platform/CoreIPC/MessageDecoder.h (141481 => 141482)


--- trunk/Source/WebKit2/Platform/CoreIPC/MessageDecoder.h	2013-01-31 21:57:00 UTC (rev 141481)
+++ trunk/Source/WebKit2/Platform/CoreIPC/MessageDecoder.h	2013-01-31 22:00:22 UTC (rev 141482)
@@ -36,7 +36,7 @@
 class MessageDecoder : public ArgumentDecoder {
 public:
     static PassOwnPtr<MessageDecoder> create(const DataReference& buffer);
-    static PassOwnPtr<MessageDecoder> create(const DataReference& buffer, Deque<Attachment>&);
+    static PassOwnPtr<MessageDecoder> create(const DataReference& buffer, Vector<Attachment>&);
     virtual ~MessageDecoder();
 
     StringReference messageReceiverName() const { return m_messageReceiverName; }
@@ -46,7 +46,7 @@
     bool shouldDispatchMessageWhenWaitingForSyncReply() const;
 
 private:
-    MessageDecoder(const DataReference& buffer, Deque<Attachment>&);
+    MessageDecoder(const DataReference& buffer, Vector<Attachment>&);
 
     uint8_t m_messageFlags;
     StringReference m_messageReceiverName;

Modified: trunk/Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp (141481 => 141482)


--- trunk/Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp	2013-01-31 21:57:00 UTC (rev 141481)
+++ trunk/Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp	2013-01-31 22:00:22 UTC (rev 141482)
@@ -299,8 +299,6 @@
     mach_msg_size_t numDescriptors = body->msgh_descriptor_count;
     ASSERT(numDescriptors);
 
-    // Build attachment list
-    Deque<Attachment> attachments;
     uint8_t* descriptorData = reinterpret_cast<uint8_t*>(body + 1);
 
     // If the message body was sent out-of-line, don't treat the last descriptor
@@ -308,17 +306,19 @@
     if (messageBodyIsOOL)
         --numDescriptors;
 
+    // Build attachment list
+    Vector<Attachment> attachments(numDescriptors);
+
     for (mach_msg_size_t i = 0; i < numDescriptors; ++i) {
         mach_msg_descriptor_t* descriptor = reinterpret_cast<mach_msg_descriptor_t*>(descriptorData);
 
         switch (descriptor->type.type) {
         case MACH_MSG_PORT_DESCRIPTOR:
-            attachments.append(Attachment(descriptor->port.name, descriptor->port.disposition));
+            attachments[numDescriptors - i - 1] = Attachment(descriptor->port.name, descriptor->port.disposition);
             descriptorData += sizeof(mach_msg_port_descriptor_t);
             break;
         case MACH_MSG_OOL_DESCRIPTOR:
-            attachments.append(Attachment(descriptor->out_of_line.address, descriptor->out_of_line.size,
-                                          descriptor->out_of_line.copy, descriptor->out_of_line.deallocate));
+            attachments[numDescriptors - i - 1] = Attachment(descriptor->out_of_line.address, descriptor->out_of_line.size, descriptor->out_of_line.copy, descriptor->out_of_line.deallocate);
             descriptorData += sizeof(mach_msg_ool_descriptor_t);
             break;
         default:
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to