Changeset 141300 in webkit
- Timestamp:
- Jan 30, 2013 12:51:07 PM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r141299 r141300 1 2013-01-30 Benjamin Poulain <benjamin@webkit.org> 2 3 Do not convert to String->AtomicString for NamedNodeMap 4 https://bugs.webkit.org/show_bug.cgi?id=108289 5 6 Reviewed by Kentaro Hara. 7 8 NamedNodeMap's API was taking a WTF::String. Internally, attribute 9 names are AtomicString. 10 11 The conversions String->AtomicString was causing an additional ref-deref 12 for the JS/V8 bindings. And could cause an additional memory allocation for the Objective-C 13 bindings. 14 15 This patch changes the API to use AtomicString, and update the custom bindings accordingly. 16 17 * bindings/js/JSNamedNodeMapCustom.cpp: 18 (WebCore::JSNamedNodeMap::canGetItemsForName): 19 (WebCore::JSNamedNodeMap::nameGetter): 20 * bindings/v8/custom/V8NamedNodeMapCustom.cpp: 21 (WebCore::V8NamedNodeMap::namedPropertyGetter): 22 * dom/NamedNodeMap.cpp: 23 (WebCore::NamedNodeMap::getNamedItem): 24 (WebCore::NamedNodeMap::getNamedItemNS): 25 (WebCore::NamedNodeMap::removeNamedItem): 26 (WebCore::NamedNodeMap::removeNamedItemNS): 27 * dom/NamedNodeMap.h: 28 (NamedNodeMap): 29 1 30 2013-01-30 Zan Dobersek <zdobersek@igalia.com> 2 31 -
trunk/Source/WebCore/bindings/js/JSNamedNodeMapCustom.cpp
r116828 r141300 1 1 /* 2 * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.2 * Copyright (C) 2007, 2008, 2009, 2013 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 bool JSNamedNodeMap::canGetItemsForName(ExecState*, NamedNodeMap* impl, PropertyName propertyName) 39 39 { 40 return impl->getNamedItem(propertyNameTo String(propertyName));40 return impl->getNamedItem(propertyNameToAtomicString(propertyName)); 41 41 } 42 42 … … 44 44 { 45 45 JSNamedNodeMap* thisObj = jsCast<JSNamedNodeMap*>(asObject(slotBase)); 46 return toJS(exec, thisObj->globalObject(), thisObj->impl()->getNamedItem(propertyNameTo String(propertyName)));46 return toJS(exec, thisObj->globalObject(), thisObj->impl()->getNamedItem(propertyNameToAtomicString(propertyName))); 47 47 } 48 48 -
trunk/Source/WebCore/bindings/v8/custom/V8NamedNodeMapCustom.cpp
r138677 r141300 61 61 62 62 NamedNodeMap* imp = V8NamedNodeMap::toNative(info.Holder()); 63 RefPtr<Node> result = imp->getNamedItem(toWebCore String(name));63 RefPtr<Node> result = imp->getNamedItem(toWebCoreAtomicString(name)); 64 64 if (!result) 65 65 return v8Undefined(); -
trunk/Source/WebCore/dom/NamedNodeMap.cpp
r118174 r141300 4 4 * (C) 2001 Peter Kelly (pmk@post.com) 5 5 * (C) 2001 Dirk Mueller (mueller@kde.org) 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2013 Apple Inc. All rights reserved. 7 7 * (C) 2007 Eric Seidel (eric@webkit.org) 8 8 * … … 51 51 } 52 52 53 PassRefPtr<Node> NamedNodeMap::getNamedItem(const String& name) const53 PassRefPtr<Node> NamedNodeMap::getNamedItem(const AtomicString& name) const 54 54 { 55 55 return m_element->getAttributeNode(name); 56 56 } 57 57 58 PassRefPtr<Node> NamedNodeMap::getNamedItemNS(const String& namespaceURI, constString& localName) const58 PassRefPtr<Node> NamedNodeMap::getNamedItemNS(const AtomicString& namespaceURI, const AtomicString& localName) const 59 59 { 60 60 return m_element->getAttributeNodeNS(namespaceURI, localName); 61 61 } 62 62 63 PassRefPtr<Node> NamedNodeMap::removeNamedItem(const String& name, ExceptionCode& ec)63 PassRefPtr<Node> NamedNodeMap::removeNamedItem(const AtomicString& name, ExceptionCode& ec) 64 64 { 65 65 size_t index = m_element->getAttributeItemIndex(name, shouldIgnoreAttributeCase(m_element)); … … 71 71 } 72 72 73 PassRefPtr<Node> NamedNodeMap::removeNamedItemNS(const String& namespaceURI, constString& localName, ExceptionCode& ec)73 PassRefPtr<Node> NamedNodeMap::removeNamedItemNS(const AtomicString& namespaceURI, const AtomicString& localName, ExceptionCode& ec) 74 74 { 75 75 size_t index = m_element->getAttributeItemIndex(QualifiedName(nullAtom, localName, namespaceURI)); -
trunk/Source/WebCore/dom/NamedNodeMap.h
r135058 r141300 4 4 * (C) 2001 Peter Kelly (pmk@post.com) 5 5 * (C) 2001 Dirk Mueller (mueller@kde.org) 6 * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2010 Apple Inc. All rights reserved.6 * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2010, 2013 Apple Inc. All rights reserved. 7 7 * 8 8 * This library is free software; you can redistribute it and/or … … 29 29 #include <wtf/PassOwnPtr.h> 30 30 #include <wtf/PassRefPtr.h> 31 #include <wtf/text/ WTFString.h>31 #include <wtf/text/AtomicString.h> 32 32 33 33 namespace WebCore { … … 52 52 // Public DOM interface. 53 53 54 PassRefPtr<Node> getNamedItem(const String& name) const;55 PassRefPtr<Node> removeNamedItem(const String& name, ExceptionCode&);54 PassRefPtr<Node> getNamedItem(const AtomicString&) const; 55 PassRefPtr<Node> removeNamedItem(const AtomicString& name, ExceptionCode&); 56 56 57 PassRefPtr<Node> getNamedItemNS(const String& namespaceURI, constString& localName) const;58 PassRefPtr<Node> removeNamedItemNS(const String& namespaceURI, constString& localName, ExceptionCode&);57 PassRefPtr<Node> getNamedItemNS(const AtomicString& namespaceURI, const AtomicString& localName) const; 58 PassRefPtr<Node> removeNamedItemNS(const AtomicString& namespaceURI, const AtomicString& localName, ExceptionCode&); 59 59 60 60 PassRefPtr<Node> setNamedItem(Node*, ExceptionCode&);
Note: See TracChangeset
for help on using the changeset viewer.