Skip to content

Commit

Permalink
Merge r180216 - Use HashMap::add instead of get/contains + set in DOM…
Browse files Browse the repository at this point in the history
…ObjectCache

https://bugs.webkit.org/show_bug.cgi?id=141558

Rubber-stamped by Žan Doberšek.

* bindings/gobject/DOMObjectCache.cpp:
(WebKit::getOrCreateDOMObjectCacheFrameObserver):
(WebKit::DOMObjectCache::put):
  • Loading branch information
carlosgcampos committed Apr 8, 2015
1 parent 71a34b2 commit 418449b
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 17 deletions.
11 changes: 11 additions & 0 deletions Source/WebCore/ChangeLog
@@ -1,3 +1,14 @@
2015-02-17 Carlos Garcia Campos <cgarcia@igalia.com>

Use HashMap::add instead of get/contains + set in DOMObjectCache
https://bugs.webkit.org/show_bug.cgi?id=141558

Rubber-stamped by Žan Doberšek.

* bindings/gobject/DOMObjectCache.cpp:
(WebKit::getOrCreateDOMObjectCacheFrameObserver):
(WebKit::DOMObjectCache::put):

2014-10-22 Milan Crha <mcrha@redhat.com>

Do not include GraphicsContext3D.h when 3D_GRAPHICS is not used.
Expand Down
28 changes: 11 additions & 17 deletions Source/WebCore/bindings/gobject/DOMObjectCache.cpp
Expand Up @@ -74,14 +74,10 @@ static DOMObjectCacheFrameObserverMap& domObjectCacheFrameObservers()

static DOMObjectCacheFrameObserver& getOrCreateDOMObjectCacheFrameObserver(WebCore::Frame& frame)
{
auto observerPtr = domObjectCacheFrameObservers().get(&frame);
if (observerPtr)
return *observerPtr;

std::unique_ptr<DOMObjectCacheFrameObserver> observer = std::make_unique<DOMObjectCacheFrameObserver>(frame);
observerPtr = observer.get();
domObjectCacheFrameObservers().set(&frame, std::move(observer));
return *observerPtr;
DOMObjectCacheFrameObserverMap::AddResult result = domObjectCacheFrameObservers().add(&frame, nullptr);
if (result.isNewEntry)
result.iterator->value = std::make_unique<DOMObjectCacheFrameObserver>(frame);
return *result.iterator->value;
}

class DOMObjectCacheFrameObserver final: public WebCore::FrameDestructionObserver {
Expand Down Expand Up @@ -200,22 +196,20 @@ void* DOMObjectCache::get(void* objectHandle)

void DOMObjectCache::put(void* objectHandle, void* wrapper)
{
if (domObjects().contains(objectHandle))
return;
domObjects().set(objectHandle, std::make_unique<DOMObjectCacheData>(G_OBJECT(wrapper)));
DOMObjectMap::AddResult result = domObjects().add(objectHandle, nullptr);
if (result.isNewEntry)
result.iterator->value = std::make_unique<DOMObjectCacheData>(G_OBJECT(wrapper));
}

void DOMObjectCache::put(WebCore::Node* objectHandle, void* wrapper)
{
if (domObjects().contains(objectHandle))
DOMObjectMap::AddResult result = domObjects().add(objectHandle, nullptr);
if (!result.isNewEntry)
return;

std::unique_ptr<DOMObjectCacheData> data = std::make_unique<DOMObjectCacheData>(G_OBJECT(wrapper));
auto dataPtr = data.get();
domObjects().set(objectHandle, std::move(data));

result.iterator->value = std::make_unique<DOMObjectCacheData>(G_OBJECT(wrapper));
if (WebCore::Frame* frame = objectHandle->document().frame())
getOrCreateDOMObjectCacheFrameObserver(*frame).addObjectCacheData(*dataPtr);
getOrCreateDOMObjectCacheFrameObserver(*frame).addObjectCacheData(*result.iterator->value);
}

}

0 comments on commit 418449b

Please sign in to comment.