Changeset 141482 in webkit


Ignore:
Timestamp:
Jan 31, 2013 2:00:22 PM (11 years ago)
Author:
andersca@apple.com
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):

Location:
trunk/Source/WebKit2
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r141477 r141482  
     12013-01-31  Anders Carlsson  <andersca@apple.com>
     2
     3        Use a Vector for IPC attachments
     4        https://bugs.webkit.org/show_bug.cgi?id=108517
     5
     6        Reviewed by Sam Weinig.
     7
     8        * Platform/CoreIPC/ArgumentDecoder.cpp:
     9        (CoreIPC::ArgumentDecoder::create):
     10        (CoreIPC::ArgumentDecoder::ArgumentDecoder):
     11        (CoreIPC::ArgumentDecoder::removeAttachment):
     12        * Platform/CoreIPC/ArgumentDecoder.h:
     13        (ArgumentDecoder):
     14        * Platform/CoreIPC/Connection.h:
     15        * Platform/CoreIPC/MessageDecoder.cpp:
     16        (CoreIPC::MessageDecoder::create):
     17        (CoreIPC::MessageDecoder::MessageDecoder):
     18        * Platform/CoreIPC/MessageDecoder.h:
     19        (MessageDecoder):
     20        * Platform/CoreIPC/mac/ConnectionMac.cpp:
     21        (CoreIPC::createMessageDecoder):
     22
    1232013-01-31  Joseph Pecoraro  <pecoraro@apple.com>
    224
  • trunk/Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.cpp

    r141209 r141482  
    3434PassOwnPtr<ArgumentDecoder> ArgumentDecoder::create(const uint8_t* buffer, size_t bufferSize)
    3535{
    36     Deque<Attachment> attachments;
     36    Vector<Attachment> attachments;
    3737    return adoptPtr(new ArgumentDecoder(buffer, bufferSize, attachments));
    3838}
    3939
    40 ArgumentDecoder::ArgumentDecoder(const uint8_t* buffer, size_t bufferSize, Deque<Attachment>& attachments)
     40ArgumentDecoder::ArgumentDecoder(const uint8_t* buffer, size_t bufferSize, Vector<Attachment>& attachments)
    4141{
    4242    initialize(buffer, bufferSize);
     
    225225        return false;
    226226
    227     attachment = m_attachments.takeFirst();
    228     return true;
    229 }
    230 
    231 #ifndef NDEBUG
    232 void ArgumentDecoder::debug()
    233 {
    234     printf("ArgumentDecoder::debug()\n");
    235     printf("Number of Attachments: %d\n", (int)m_attachments.size());
    236     printf("Size of buffer: %d\n", (int)(m_bufferEnd - m_buffer));
    237 }
    238 #endif
     227    attachment = m_attachments.last();
     228    m_attachments.removeLast();
     229    return true;
     230}
    239231
    240232} // namespace CoreIPC
  • trunk/Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.h

    r141209 r141482  
    2929#include "ArgumentCoder.h"
    3030#include "Attachment.h"
    31 #include <wtf/Deque.h>
    3231#include <wtf/PassOwnPtr.h>
    3332#include <wtf/TypeTraits.h>
     
    9493    bool removeAttachment(Attachment&);
    9594
    96 #ifndef NDEBUG
    97     void debug();
    98 #endif
    99 
    10095protected:
    101     ArgumentDecoder(const uint8_t* buffer, size_t bufferSize, Deque<Attachment>&);
     96    ArgumentDecoder(const uint8_t* buffer, size_t bufferSize, Vector<Attachment>&);
    10297
    10398    void initialize(const uint8_t* buffer, size_t bufferSize);
     
    116111    uint8_t* m_bufferEnd;
    117112
    118     Deque<Attachment> m_attachments;
     113    Vector<Attachment> m_attachments;
    119114};
    120115
  • trunk/Source/WebKit2/Platform/CoreIPC/Connection.h

    r141472 r141482  
    3434#include "MessageReceiver.h"
    3535#include "WorkQueue.h"
     36#include <wtf/Deque.h>
    3637#include <wtf/PassRefPtr.h>
    3738#include <wtf/OwnPtr.h>
  • trunk/Source/WebKit2/Platform/CoreIPC/MessageDecoder.cpp

    r141209 r141482  
    3636PassOwnPtr<MessageDecoder> MessageDecoder::create(const DataReference& buffer)
    3737{
    38     Deque<Attachment> attachments;
     38    Vector<Attachment> attachments;
    3939    return adoptPtr(new MessageDecoder(buffer, attachments));
    4040}
    4141
    42 PassOwnPtr<MessageDecoder> MessageDecoder::create(const DataReference& buffer, Deque<Attachment>& attachments)
     42PassOwnPtr<MessageDecoder> MessageDecoder::create(const DataReference& buffer, Vector<Attachment>& attachments)
    4343{
    4444    return adoptPtr(new MessageDecoder(buffer, attachments));
     
    4949}
    5050
    51 MessageDecoder::MessageDecoder(const DataReference& buffer, Deque<Attachment>& attachments)
     51MessageDecoder::MessageDecoder(const DataReference& buffer, Vector<Attachment>& attachments)
    5252    : ArgumentDecoder(buffer.data(), buffer.size(), attachments)
    5353{
  • trunk/Source/WebKit2/Platform/CoreIPC/MessageDecoder.h

    r141165 r141482  
    3737public:
    3838    static PassOwnPtr<MessageDecoder> create(const DataReference& buffer);
    39     static PassOwnPtr<MessageDecoder> create(const DataReference& buffer, Deque<Attachment>&);
     39    static PassOwnPtr<MessageDecoder> create(const DataReference& buffer, Vector<Attachment>&);
    4040    virtual ~MessageDecoder();
    4141
     
    4747
    4848private:
    49     MessageDecoder(const DataReference& buffer, Deque<Attachment>&);
     49    MessageDecoder(const DataReference& buffer, Vector<Attachment>&);
    5050
    5151    uint8_t m_messageFlags;
  • trunk/Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp

    r141472 r141482  
    300300    ASSERT(numDescriptors);
    301301
    302     // Build attachment list
    303     Deque<Attachment> attachments;
    304302    uint8_t* descriptorData = reinterpret_cast<uint8_t*>(body + 1);
    305303
     
    309307        --numDescriptors;
    310308
     309    // Build attachment list
     310    Vector<Attachment> attachments(numDescriptors);
     311
    311312    for (mach_msg_size_t i = 0; i < numDescriptors; ++i) {
    312313        mach_msg_descriptor_t* descriptor = reinterpret_cast<mach_msg_descriptor_t*>(descriptorData);
     
    314315        switch (descriptor->type.type) {
    315316        case MACH_MSG_PORT_DESCRIPTOR:
    316             attachments.append(Attachment(descriptor->port.name, descriptor->port.disposition));
     317            attachments[numDescriptors - i - 1] = Attachment(descriptor->port.name, descriptor->port.disposition);
    317318            descriptorData += sizeof(mach_msg_port_descriptor_t);
    318319            break;
    319320        case MACH_MSG_OOL_DESCRIPTOR:
    320             attachments.append(Attachment(descriptor->out_of_line.address, descriptor->out_of_line.size,
    321                                           descriptor->out_of_line.copy, descriptor->out_of_line.deallocate));
     321            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);
    322322            descriptorData += sizeof(mach_msg_ool_descriptor_t);
    323323            break;
Note: See TracChangeset for help on using the changeset viewer.