[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
weinig at apple.com
weinig at apple.com
Wed Dec 22 12:55:11 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit ab000789f5e5ce83d90cc313927bfd6591d7a7f1
Author: weinig at apple.com <weinig at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Sep 1 22:35:34 2010 +0000
Change ImmutableArray to be backed by a Vector
https://bugs.webkit.org/show_bug.cgi?id=45064
Reviewed by John Sullivan.
Change ImmutableArray to be backed by a Vector to work toward having
a mutable subclass and to improve the API when working with it in WebKit2
itself.
- Also remove WKArrayCreateAdoptingValues which was confusing and unused.
* Shared/ImmutableArray.cpp:
(WebKit::ImmutableArray::ImmutableArray):
(WebKit::ImmutableArray::~ImmutableArray):
* Shared/ImmutableArray.h:
(WebKit::ImmutableArray::adopt):
(WebKit::ImmutableArray::at):
(WebKit::ImmutableArray::size):
* Shared/ImmutableDictionary.cpp:
(WebKit::ImmutableDictionary::keys):
* UIProcess/API/C/WKArray.cpp:
* UIProcess/API/C/WKArray.h:
* UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::backListAsImmutableArrayWithLimit):
(WebKit::WebBackForwardList::forwardListAsImmutableArrayWithLimit):
* UIProcess/WebContext.cpp:
(WebKit::PostMessageEncoder::PostMessageDecoder::decode):
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::PostMessageEncoder::PostMessageDecoder::decode):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::childFrames):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@66621 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 7b7ca9c..5c8b62e 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,5 +1,39 @@
2010-09-01 Sam Weinig <sam at webkit.org>
+ Reviewed by John Sullivan.
+
+ Change ImmutableArray to be backed by a Vector
+ https://bugs.webkit.org/show_bug.cgi?id=45064
+
+ Change ImmutableArray to be backed by a Vector to work toward having
+ a mutable subclass and to improve the API when working with it in WebKit2
+ itself.
+
+ - Also remove WKArrayCreateAdoptingValues which was confusing and unused.
+
+ * Shared/ImmutableArray.cpp:
+ (WebKit::ImmutableArray::ImmutableArray):
+ (WebKit::ImmutableArray::~ImmutableArray):
+ * Shared/ImmutableArray.h:
+ (WebKit::ImmutableArray::adopt):
+ (WebKit::ImmutableArray::at):
+ (WebKit::ImmutableArray::size):
+ * Shared/ImmutableDictionary.cpp:
+ (WebKit::ImmutableDictionary::keys):
+ * UIProcess/API/C/WKArray.cpp:
+ * UIProcess/API/C/WKArray.h:
+ * UIProcess/WebBackForwardList.cpp:
+ (WebKit::WebBackForwardList::backListAsImmutableArrayWithLimit):
+ (WebKit::WebBackForwardList::forwardListAsImmutableArrayWithLimit):
+ * UIProcess/WebContext.cpp:
+ (WebKit::PostMessageEncoder::PostMessageDecoder::decode):
+ * WebProcess/InjectedBundle/InjectedBundle.cpp:
+ (WebKit::PostMessageEncoder::PostMessageDecoder::decode):
+ * WebProcess/WebPage/WebFrame.cpp:
+ (WebKit::WebFrame::childFrames):
+
+2010-09-01 Sam Weinig <sam at webkit.org>
+
Reviewed by Anders Carlsson.
Add URLResponse API for WebKit2
diff --git a/WebKit2/Shared/ImmutableArray.cpp b/WebKit2/Shared/ImmutableArray.cpp
index af73f2f..83e0f6e 100644
--- a/WebKit2/Shared/ImmutableArray.cpp
+++ b/WebKit2/Shared/ImmutableArray.cpp
@@ -28,30 +28,23 @@
namespace WebKit {
ImmutableArray::ImmutableArray()
- : m_entries(0)
- , m_size(0)
{
}
ImmutableArray::ImmutableArray(APIObject** entries, size_t size)
- : m_entries(adoptArrayPtr(new APIObject*[size]))
- , m_size(size)
+ : m_entries(size)
{
- memcpy(m_entries.get(), entries, m_size);
+ memcpy(m_entries.data(), entries, size);
}
-ImmutableArray::ImmutableArray(PassOwnArrayPtr<APIObject*> entries, size_t size)
- : m_entries(entries)
- , m_size(size)
+ImmutableArray::ImmutableArray(Vector<APIObject*>& entries)
{
+ m_entries.swap(entries);
}
ImmutableArray::~ImmutableArray()
{
- if (!m_entries)
- return;
-
- for (size_t i = 0; i < m_size; ++i)
+ for (size_t i = 0; i < m_entries.size(); ++i)
m_entries[i]->deref();
}
diff --git a/WebKit2/Shared/ImmutableArray.h b/WebKit2/Shared/ImmutableArray.h
index fa3a357..5841ca7 100644
--- a/WebKit2/Shared/ImmutableArray.h
+++ b/WebKit2/Shared/ImmutableArray.h
@@ -27,9 +27,9 @@
#define ImmutableArray_h
#include "APIObject.h"
-#include <wtf/OwnArrayPtr.h>
#include <wtf/PassOwnArrayPtr.h>
#include <wtf/PassRefPtr.h>
+#include <wtf/Vector.h>
namespace WebKit {
@@ -47,28 +47,27 @@ public:
{
return adoptRef(new ImmutableArray(entries, size));
}
- static PassRefPtr<ImmutableArray> adopt(PassOwnArrayPtr<APIObject*> entries, size_t size)
+ static PassRefPtr<ImmutableArray> adopt(Vector<APIObject*>& entries)
{
- return adoptRef(new ImmutableArray(entries, size));
+ return adoptRef(new ImmutableArray(entries));
}
~ImmutableArray();
template<typename T>
- T* at(size_t i) { ASSERT(i < m_size); if (m_entries[i]->type() != T::APIType) return 0; return static_cast<T*>(m_entries[i]); }
+ T* at(size_t i) { if (m_entries[i]->type() != T::APIType) return 0; return static_cast<T*>(m_entries[i]); }
- APIObject* at(size_t i) { ASSERT(i < m_size); return m_entries[i]; }
- size_t size() { return m_size; }
+ APIObject* at(size_t i) { return m_entries[i]; }
+ size_t size() { return m_entries.size(); }
-private:
+protected:
ImmutableArray();
ImmutableArray(APIObject** entries, size_t size);
- ImmutableArray(PassOwnArrayPtr<APIObject*> entries, size_t size);
+ ImmutableArray(Vector<APIObject*>& entries);
virtual Type type() const { return APIType; }
- OwnArrayPtr<APIObject*> m_entries;
- size_t m_size;
+ Vector<APIObject*> m_entries;
};
} // namespace WebKit
diff --git a/WebKit2/Shared/ImmutableDictionary.cpp b/WebKit2/Shared/ImmutableDictionary.cpp
index 223461b..c76ec96 100644
--- a/WebKit2/Shared/ImmutableDictionary.cpp
+++ b/WebKit2/Shared/ImmutableDictionary.cpp
@@ -48,15 +48,15 @@ PassRefPtr<ImmutableArray> ImmutableDictionary::keys() const
if (m_map.isEmpty())
return ImmutableArray::create();
- size_t size = m_map.size();
- OwnArrayPtr<APIObject*> array = adoptArrayPtr(new APIObject*[size]);
+ Vector<APIObject*> vector;
+ vector.reserveInitialCapacity(m_map.size());
MapType::const_iterator::Keys it = m_map.begin().keys();
MapType::const_iterator::Keys end = m_map.end().keys();
- for (unsigned i = 0; it != end; ++it, ++i)
- array[i] = WebString::create(*it).releaseRef();
+ for (; it != end; ++it)
+ vector.uncheckedAppend(WebString::create(*it).releaseRef());
- return ImmutableArray::adopt(array.release(), size);
+ return ImmutableArray::adopt(vector);
}
} // namespace WebKit
diff --git a/WebKit2/UIProcess/API/C/WKArray.cpp b/WebKit2/UIProcess/API/C/WKArray.cpp
index c0900ad..c11dd85 100644
--- a/WebKit2/UIProcess/API/C/WKArray.cpp
+++ b/WebKit2/UIProcess/API/C/WKArray.cpp
@@ -41,12 +41,6 @@ WKArrayRef WKArrayCreate(WKTypeRef* values, size_t numberOfValues)
return toRef(array.release().releaseRef());
}
-WKArrayRef WKArrayCreateAdoptingValues(WKTypeRef* values, size_t numberOfValues)
-{
- RefPtr<ImmutableArray> array = ImmutableArray::adopt(reinterpret_cast<APIObject**>(values), numberOfValues);
- return toRef(array.release().releaseRef());
-}
-
WKTypeRef WKArrayGetItemAtIndex(WKArrayRef arrayRef, size_t index)
{
return toWK(arrayRef)->at(index);
diff --git a/WebKit2/UIProcess/API/C/WKArray.h b/WebKit2/UIProcess/API/C/WKArray.h
index 25900f3..da4560a 100644
--- a/WebKit2/UIProcess/API/C/WKArray.h
+++ b/WebKit2/UIProcess/API/C/WKArray.h
@@ -37,7 +37,6 @@ extern "C" {
WK_EXPORT WKTypeID WKArrayGetTypeID();
WK_EXPORT WKArrayRef WKArrayCreate(WKTypeRef* values, size_t numberOfValues);
-WK_EXPORT WKArrayRef WKArrayCreateAdoptingValues(WKTypeRef* values, size_t numberOfValues);
WK_EXPORT WKTypeRef WKArrayGetItemAtIndex(WKArrayRef array, size_t index);
WK_EXPORT size_t WKArrayGetSize(WKArrayRef array);
diff --git a/WebKit2/UIProcess/WebBackForwardList.cpp b/WebKit2/UIProcess/WebBackForwardList.cpp
index 7e71c03..3fc40f1 100644
--- a/WebKit2/UIProcess/WebBackForwardList.cpp
+++ b/WebKit2/UIProcess/WebBackForwardList.cpp
@@ -173,15 +173,17 @@ PassRefPtr<ImmutableArray> WebBackForwardList::backListAsImmutableArrayWithLimit
if (!size)
return ImmutableArray::create();
- OwnArrayPtr<APIObject*> array = adoptArrayPtr(new APIObject*[size]);
+ Vector<APIObject*> vector;
+ vector.reserveInitialCapacity(size);
+
ASSERT(backListSize >= size);
- for (unsigned i = backListSize - size, j = 0; i < backListSize; ++i, ++j) {
+ for (unsigned i = backListSize - size; i < backListSize; ++i) {
APIObject* item = m_entries[i].get();
item->ref();
- array[j] = item;
+ vector.uncheckedAppend(item);
}
- return ImmutableArray::adopt(array.release(), size);
+ return ImmutableArray::adopt(vector);
}
PassRefPtr<ImmutableArray> WebBackForwardList::forwardListAsImmutableArrayWithLimit(unsigned limit)
@@ -190,16 +192,18 @@ PassRefPtr<ImmutableArray> WebBackForwardList::forwardListAsImmutableArrayWithLi
if (!size)
return ImmutableArray::create();
- OwnArrayPtr<APIObject*> array = adoptArrayPtr(new APIObject*[size]);
+ Vector<APIObject*> vector;
+ vector.reserveInitialCapacity(size);
+
unsigned last = m_current + size;
ASSERT(last < m_entries.size());
- for (unsigned i = m_current + 1, j = 0; i <= last; ++i, ++j) {
+ for (unsigned i = m_current + 1; i <= last; ++i) {
APIObject* item = m_entries[i].get();
item->ref();
- array[j] = item;
+ vector.uncheckedAppend(item);
}
- return ImmutableArray::adopt(array.release(), size);
+ return ImmutableArray::adopt(vector);
}
} // namespace WebKit
diff --git a/WebKit2/UIProcess/WebContext.cpp b/WebKit2/UIProcess/WebContext.cpp
index e14bcc4..e944d39 100644
--- a/WebKit2/UIProcess/WebContext.cpp
+++ b/WebKit2/UIProcess/WebContext.cpp
@@ -127,16 +127,16 @@ public:
if (!decoder->decode(size))
return false;
- OwnArrayPtr<APIObject*> array = adoptArrayPtr(new APIObject*[size]);
+ Vector<APIObject*> array;
for (size_t i = 0; i < size; ++i) {
APIObject* element;
PostMessageDecoder messageCoder(&element, coder.m_context);
if (!decoder->decode(messageCoder))
return false;
- array[i] = element;
+ array.append(element);
}
- *(coder.m_root) = ImmutableArray::adopt(array.release(), size).leakRef();
+ *(coder.m_root) = ImmutableArray::adopt(array).leakRef();
break;
}
case APIObject::TypeString: {
diff --git a/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp b/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp
index 07d5fb7..071147e 100644
--- a/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp
+++ b/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp
@@ -127,16 +127,16 @@ public:
if (!decoder->decode(size))
return false;
- OwnArrayPtr<APIObject*> array = adoptArrayPtr(new APIObject*[size]);
+ Vector<APIObject*> vector;
for (size_t i = 0; i < size; ++i) {
APIObject* element;
PostMessageDecoder messageCoder(&element);
if (!decoder->decode(messageCoder))
return false;
- array[i] = element;
+ vector.append(element);
}
- *(coder.m_root) = ImmutableArray::adopt(array.release(), size).leakRef();
+ *(coder.m_root) = ImmutableArray::adopt(vector).leakRef();
break;
}
case APIObject::TypeString: {
diff --git a/WebKit2/WebProcess/WebPage/WebFrame.cpp b/WebKit2/WebProcess/WebPage/WebFrame.cpp
index a1b8cae..ff4c714 100644
--- a/WebKit2/WebProcess/WebPage/WebFrame.cpp
+++ b/WebKit2/WebProcess/WebPage/WebFrame.cpp
@@ -224,15 +224,16 @@ PassRefPtr<ImmutableArray> WebFrame::childFrames()
if (!size)
return ImmutableArray::create();
- OwnArrayPtr<APIObject*> array = adoptArrayPtr(new APIObject*[size]);
- unsigned i = 0;
- for (Frame* child = m_coreFrame->tree()->firstChild(); child; child = child->tree()->nextSibling(), ++i) {
+ Vector<APIObject*> vector;
+ vector.reserveInitialCapacity(size);
+
+ for (Frame* child = m_coreFrame->tree()->firstChild(); child; child = child->tree()->nextSibling()) {
WebFrame* webFrame = static_cast<WebFrameLoaderClient*>(child->loader()->client())->webFrame();
webFrame->ref();
- array[i] = webFrame;
+ vector.uncheckedAppend(webFrame);
}
- return ImmutableArray::adopt(array.release(), size);
+ return ImmutableArray::adopt(vector);
}
unsigned WebFrame::numberOfActiveAnimations()
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list