Changeset 77231 in webkit


Ignore:
Timestamp:
Feb 1, 2011 1:32:28 AM (13 years ago)
Author:
rolandsteiner@chromium.org
Message:

2011-02-01 Roland Steiner <rolandsteiner@chromium.org>

Unreviewed, rolling out r77229.
http://trac.webkit.org/changeset/77229
https://bugs.webkit.org/show_bug.cgi?id=53289

revert mysterious build breakage

  • Android.mk:
  • CMakeLists.txt:
  • GNUmakefile.am:
  • WebCore.gypi:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/DOMAllInOne.cpp:
  • dom/Document.cpp: (WebCore::Document::DocumentOrderedMap::clear): (WebCore::Document::DocumentOrderedMap::add): (WebCore::Document::DocumentOrderedMap::remove): (WebCore::Document::DocumentOrderedMap::get): (WebCore::keyMatchesId): (WebCore::Document::getElementById): (WebCore::keyMatchesMapName): (WebCore::keyMatchesLowercasedMapName): (WebCore::Document::getImageMap):
  • dom/Document.h: (WebCore::Document::DocumentOrderedMap::contains): (WebCore::Document::DocumentOrderedMap::containsMultiple):
  • dom/DocumentOrderedMap.cpp: Removed.
  • dom/DocumentOrderedMap.h: Removed.
Location:
trunk/Source/WebCore
Files:
2 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/Android.mk

    r77229 r77231  
    122122        dom/DocumentMarkerController.cpp \
    123123        dom/DocumentParser.cpp \
    124         dom/DocumentOrderedMap.cpp \
    125124        dom/DocumentType.cpp \
    126125        dom/DynamicNodeList.cpp \
  • trunk/Source/WebCore/CMakeLists.txt

    r77229 r77231  
    839839    dom/DocumentFragment.cpp
    840840    dom/DocumentParser.cpp
    841     dom/DocumentOrderedMap.cpp
    842841    dom/DocumentType.cpp
    843842    dom/DOMImplementation.cpp
  • trunk/Source/WebCore/ChangeLog

    r77230 r77231  
     12011-02-01  Roland Steiner  <rolandsteiner@chromium.org>
     2
     3        Unreviewed, rolling out r77229.
     4        http://trac.webkit.org/changeset/77229
     5        https://bugs.webkit.org/show_bug.cgi?id=53289
     6
     7        revert mysterious build breakage
     8
     9        * Android.mk:
     10        * CMakeLists.txt:
     11        * GNUmakefile.am:
     12        * WebCore.gypi:
     13        * WebCore.pro:
     14        * WebCore.vcproj/WebCore.vcproj:
     15        * WebCore.xcodeproj/project.pbxproj:
     16        * dom/DOMAllInOne.cpp:
     17        * dom/Document.cpp:
     18        (WebCore::Document::DocumentOrderedMap::clear):
     19        (WebCore::Document::DocumentOrderedMap::add):
     20        (WebCore::Document::DocumentOrderedMap::remove):
     21        (WebCore::Document::DocumentOrderedMap::get):
     22        (WebCore::keyMatchesId):
     23        (WebCore::Document::getElementById):
     24        (WebCore::keyMatchesMapName):
     25        (WebCore::keyMatchesLowercasedMapName):
     26        (WebCore::Document::getImageMap):
     27        * dom/Document.h:
     28        (WebCore::Document::DocumentOrderedMap::contains):
     29        (WebCore::Document::DocumentOrderedMap::containsMultiple):
     30        * dom/DocumentOrderedMap.cpp: Removed.
     31        * dom/DocumentOrderedMap.h: Removed.
     32
    1332011-02-01  Mihai Parparita  <mihaip@chromium.org>
    234
  • trunk/Source/WebCore/GNUmakefile.am

    r77229 r77231  
    11681168        Source/WebCore/dom/DocumentMarkerController.h \
    11691169        Source/WebCore/dom/DocumentMarker.h \
    1170         Source/WebCore/dom/DocumentOrderedMap.cpp \
    1171         Source/WebCore/dom/DocumentOrderedMap.h \
    11721170        Source/WebCore/dom/DocumentParser.cpp \
    11731171        Source/WebCore/dom/DocumentParser.h \
  • trunk/Source/WebCore/WebCore.gypi

    r77229 r77231  
    12211221            'dom/DocumentMarkerController.cpp',
    12221222            'dom/DocumentMarkerController.h',
    1223             'dom/DocumentOrderedMap.cpp',
    1224             'dom/DocumentOrderedMap.h',
    12251223            'dom/DocumentParser.cpp',
    12261224            'dom/DocumentParser.h',
  • trunk/Source/WebCore/WebCore.pro

    r77229 r77231  
    731731    dom/DocumentFragment.cpp \
    732732    dom/DocumentMarkerController.cpp \
    733     dom/DocumentOrderedMap.cpp \
    734733    dom/DocumentParser.cpp \
    735734    dom/DocumentType.cpp \
     
    16661665    dom/DocumentMarker.h \
    16671666    dom/DocumentMarkerController.h \
    1668     dom/DocumentOrderedMap.h \
    16691667    dom/DocumentType.h \
    16701668    dom/DOMImplementation.h \
  • trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj

    r77229 r77231  
    4307943079                        </File>
    4308043080                        <File
    43081                                 RelativePath="..\dom\DocumentOrderedMap.cpp"
    43082                                 >
    43083                                 <FileConfiguration
    43084                                         Name="Debug|Win32"
    43085                                         ExcludedFromBuild="true"
    43086                                         >
    43087                                         <Tool
    43088                                                 Name="VCCLCompilerTool"
    43089                                         />
    43090                                 </FileConfiguration>
    43091                                 <FileConfiguration
    43092                                         Name="Release|Win32"
    43093                                         ExcludedFromBuild="true"
    43094                                         >
    43095                                         <Tool
    43096                                                 Name="VCCLCompilerTool"
    43097                                         />
    43098                                 </FileConfiguration>
    43099                                 <FileConfiguration
    43100                                         Name="Debug_Cairo_CFLite|Win32"
    43101                                         ExcludedFromBuild="true"
    43102                                         >
    43103                                         <Tool
    43104                                                 Name="VCCLCompilerTool"
    43105                                         />
    43106                                 </FileConfiguration>
    43107                                 <FileConfiguration
    43108                                         Name="Release_Cairo_CFLite|Win32"
    43109                                         ExcludedFromBuild="true"
    43110                                         >
    43111                                         <Tool
    43112                                                 Name="VCCLCompilerTool"
    43113                                         />
    43114                                 </FileConfiguration>
    43115                                 <FileConfiguration
    43116                                         Name="Debug_All|Win32"
    43117                                         ExcludedFromBuild="true"
    43118                                         >
    43119                                         <Tool
    43120                                                 Name="VCCLCompilerTool"
    43121                                         />
    43122                                 </FileConfiguration>
    43123                                 <FileConfiguration
    43124                                         Name="Release_LTCG|Win32"
    43125                                         ExcludedFromBuild="true"
    43126                                         >
    43127                                         <Tool
    43128                                                 Name="VCCLCompilerTool"
    43129                                         />
    43130                                 </FileConfiguration>
    43131                         </File>
    43132                         <File
    43133                                 RelativePath="..\dom\DocumentOrderedMap.h"
    43134                                 >
    43135                         </File>
    43136                         <File
    4313743081                                RelativePath="..\dom\DocumentParser.cpp"
    4313843082                                >
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r77229 r77231  
    303303                1432E8470C51493800B1500F /* GCController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1432E8460C51493800B1500F /* GCController.h */; settings = {ATTRIBUTES = (Private, ); }; };
    304304                1432E8490C51493F00B1500F /* GCController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1432E8480C51493F00B1500F /* GCController.cpp */; };
    305                 143C890812F7C15E0052FFD0 /* DocumentOrderedMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 143C890612F7C15E0052FFD0 /* DocumentOrderedMap.cpp */; };
    306                 143C890912F7C15E0052FFD0 /* DocumentOrderedMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 143C890712F7C15E0052FFD0 /* DocumentOrderedMap.h */; settings = {ATTRIBUTES = (Private, ); }; };
    307305                1449E24C107D4A8400B5793F /* JSCallbackData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1449E24A107D4A8400B5793F /* JSCallbackData.h */; };
    308306                1449E287107D4DB400B5793F /* JSCallbackData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1449E286107D4DB400B5793F /* JSCallbackData.cpp */; };
     
    52095207                BCE3BEC20D222B1D007E06E4 /* TagNodeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE3BEC00D222B1D007E06E4 /* TagNodeList.cpp */; };
    52105208                BCE3BEC30D222B1D007E06E4 /* TagNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE3BEC10D222B1D007E06E4 /* TagNodeList.h */; };
     5209                BCE4413312F748E2009B84B8 /* RenderCombineText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE4413112F748E2009B84B8 /* RenderCombineText.cpp */; };
     5210                BCE4413412F748E2009B84B8 /* RenderCombineText.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE4413212F748E2009B84B8 /* RenderCombineText.h */; };
     5211                BCE4413612F7490B009B84B8 /* FontWidthVariant.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE4413512F7490B009B84B8 /* FontWidthVariant.h */; settings = {ATTRIBUTES = (Private, ); }; };
    52115212                BCE658FF0EA9248A007E4533 /* Theme.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE658FE0EA9248A007E4533 /* Theme.h */; settings = {ATTRIBUTES = (Private, ); }; };
    52125213                BCE659A90EA927B9007E4533 /* ThemeTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE659A80EA927B9007E4533 /* ThemeTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    66276628                1432E8460C51493800B1500F /* GCController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = GCController.h; sourceTree = "<group>"; };
    66286629                1432E8480C51493F00B1500F /* GCController.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = GCController.cpp; sourceTree = "<group>"; };
    6629                 143C890612F7C15E0052FFD0 /* DocumentOrderedMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentOrderedMap.cpp; sourceTree = "<group>"; };
    6630                 143C890712F7C15E0052FFD0 /* DocumentOrderedMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentOrderedMap.h; sourceTree = "<group>"; };
    66316630                1449E24A107D4A8400B5793F /* JSCallbackData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCallbackData.h; sourceTree = "<group>"; };
    66326631                1449E286107D4DB400B5793F /* JSCallbackData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCallbackData.cpp; sourceTree = "<group>"; };
     
    1154211541                BCE3BEC00D222B1D007E06E4 /* TagNodeList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TagNodeList.cpp; sourceTree = "<group>"; };
    1154311542                BCE3BEC10D222B1D007E06E4 /* TagNodeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TagNodeList.h; sourceTree = "<group>"; };
     11543                BCE4413112F748E2009B84B8 /* RenderCombineText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderCombineText.cpp; sourceTree = "<group>"; };
     11544                BCE4413212F748E2009B84B8 /* RenderCombineText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderCombineText.h; sourceTree = "<group>"; };
     11545                BCE4413512F7490B009B84B8 /* FontWidthVariant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontWidthVariant.h; sourceTree = "<group>"; };
    1154411546                BCE658FE0EA9248A007E4533 /* Theme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Theme.h; sourceTree = "<group>"; };
    1154511547                BCE659A80EA927B9007E4533 /* ThemeTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThemeTypes.h; sourceTree = "<group>"; };
     
    1750217504                                37202198106213C600F25C4B /* FontSmoothingMode.h */,
    1750317505                                3784C34A0E11AA34007D8D48 /* FontTraitsMask.h */,
     17506                                BCE4413512F7490B009B84B8 /* FontWidthVariant.h */,
    1750417507                                BCE04C930DAFF902007A0F41 /* GeneratedImage.cpp */,
    1750517508                                BC23F0DA0DAFF4A4009FDC91 /* GeneratedImage.h */,
     
    1875718760                                BCEA4826097D93020094C9E4 /* RenderButton.cpp */,
    1875818761                                BCEA4827097D93020094C9E4 /* RenderButton.h */,
     18762                                BCE4413112F748E2009B84B8 /* RenderCombineText.cpp */,
     18763                                BCE4413212F748E2009B84B8 /* RenderCombineText.h */,
    1875918764                                9392F1430AD185FE00691BD4 /* RenderCounter.cpp */,
    1876018765                                9392F1410AD185F400691BD4 /* RenderCounter.h */,
     
    1899519000                                A8C2280D11D4A59700D5A7D3 /* DocumentParser.cpp */,
    1899619001                                BCCFBAE70B5152ED0001F1D7 /* DocumentParser.h */,
    18997                                 143C890612F7C15E0052FFD0 /* DocumentOrderedMap.cpp */,
    18998                                 143C890712F7C15E0052FFD0 /* DocumentOrderedMap.h */,
    1899919002                                86D982F6125C154000AD9E3D /* DocumentTiming.h */,
    1900019003                                A8185F3209765765005826D9 /* DocumentType.cpp */,
     
    2246522468                                977E2E0F12F0FC9C00C13379 /* XSSFilter.h in Headers */,
    2246622469                                0F3DD45012F5EA1B000D9190 /* ShadowBlur.h in Headers */,
    22467                                 143C890912F7C15E0052FFD0 /* DocumentOrderedMap.h in Headers */,
     22470                                BCE4413412F748E2009B84B8 /* RenderCombineText.h in Headers */,
     22471                                BCE4413612F7490B009B84B8 /* FontWidthVariant.h in Headers */,
    2246822472                        );
    2246922473                        runOnlyForDeploymentPostprocessing = 0;
     
    2516425168                                977E2E0E12F0FC9C00C13379 /* XSSFilter.cpp in Sources */,
    2516525169                                0F3DD44F12F5EA1B000D9190 /* ShadowBlur.cpp in Sources */,
    25166                                 143C890812F7C15E0052FFD0 /* DocumentOrderedMap.cpp in Sources */,
     25170                                BCE4413312F748E2009B84B8 /* RenderCombineText.cpp in Sources */,
    2516725171                        );
    2516825172                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/Source/WebCore/dom/DOMAllInOne.cpp

    r77229 r77231  
    6161#include "DocumentFragment.cpp"
    6262#include "DocumentMarkerController.cpp"
    63 #include "DocumentOrderedMap.cpp"
    6463#include "DocumentParser.cpp"
    6564#include "DocumentType.cpp"
  • trunk/Source/WebCore/dom/Document.cpp

    r77230 r77231  
    227227static const int cLayoutScheduleThreshold = 250;
    228228
     229// These functions can't have internal linkage because they are used as template arguments.
     230bool keyMatchesId(AtomicStringImpl*, Element*);
     231bool keyMatchesMapName(AtomicStringImpl*, Element*);
     232bool keyMatchesLowercasedMapName(AtomicStringImpl*, Element*);
     233
    229234// DOM Level 2 says (letters added):
    230235//
     
    503508}
    504509
     510inline void Document::DocumentOrderedMap::clear()
     511{
     512    m_map.clear();
     513    m_duplicateCounts.clear();
     514}
     515
    505516void Document::removedLastRef()
    506517{
     
    985996}
    986997
     998inline void Document::DocumentOrderedMap::add(AtomicStringImpl* key, Element* element)
     999{
     1000    ASSERT(key);
     1001    ASSERT(element);
     1002
     1003    if (!m_duplicateCounts.contains(key)) {
     1004        // Fast path. The key is not already in m_duplicateCounts, so we assume that it's
     1005        // also not already in m_map and try to add it. If that add succeeds, we're done.
     1006        pair<Map::iterator, bool> addResult = m_map.add(key, element);
     1007        if (addResult.second)
     1008            return;
     1009
     1010        // The add failed, so this key was already cached in m_map.
     1011        // There are multiple elements with this key. Remove the m_map
     1012        // cache for this key so get searches for it next time it is called.
     1013        m_map.remove(addResult.first);
     1014        m_duplicateCounts.add(key);
     1015    } else {
     1016        // There are multiple elements with this key. Remove the m_map
     1017        // cache for this key so get will search for it next time it is called.
     1018        Map::iterator cachedItem = m_map.find(key);
     1019        if (cachedItem != m_map.end()) {
     1020            m_map.remove(cachedItem);
     1021            m_duplicateCounts.add(key);
     1022        }
     1023    }
     1024
     1025    m_duplicateCounts.add(key);
     1026}
     1027
     1028inline void Document::DocumentOrderedMap::remove(AtomicStringImpl* key, Element* element)
     1029{
     1030    ASSERT(key);
     1031    ASSERT(element);
     1032
     1033    m_map.checkConsistency();
     1034    Map::iterator cachedItem = m_map.find(key);
     1035    if (cachedItem != m_map.end() && cachedItem->second == element)
     1036        m_map.remove(cachedItem);
     1037    else
     1038        m_duplicateCounts.remove(key);
     1039}
     1040
     1041template<bool keyMatches(AtomicStringImpl*, Element*)> inline Element* Document::DocumentOrderedMap::get(AtomicStringImpl* key, const Document* document) const
     1042{
     1043    ASSERT(key);
     1044
     1045    m_map.checkConsistency();
     1046
     1047    Element* element = m_map.get(key);
     1048    if (element)
     1049        return element;
     1050
     1051    if (m_duplicateCounts.contains(key)) {
     1052        // We know there's at least one node that matches; iterate to find the first one.
     1053        for (Node* node = document->firstChild(); node; node = node->traverseNextNode()) {
     1054            if (!node->isElementNode())
     1055                continue;
     1056            element = static_cast<Element*>(node);
     1057            if (!keyMatches(key, element))
     1058                continue;
     1059            m_duplicateCounts.remove(key);
     1060            m_map.set(key, element);
     1061            return element;
     1062        }
     1063        ASSERT_NOT_REACHED();
     1064    }
     1065
     1066    return 0;
     1067}
     1068
     1069inline bool keyMatchesId(AtomicStringImpl* key, Element* element)
     1070{
     1071    return element->hasID() && element->getIdAttribute().impl() == key;
     1072}
     1073
    9871074Element* Document::getElementById(const AtomicString& elementId) const
    9881075{
    9891076    if (elementId.isEmpty())
    9901077        return 0;
    991     return m_elementsById.getElementById(elementId.impl(), this);
     1078    return m_elementsById.get<keyMatchesId>(elementId.impl(), this);
    9921079}
    9931080
     
    38143901}
    38153902
     3903inline bool keyMatchesMapName(AtomicStringImpl* key, Element* element)
     3904{
     3905    return element->hasTagName(mapTag) && static_cast<HTMLMapElement*>(element)->getName().impl() == key;
     3906}
     3907
     3908inline bool keyMatchesLowercasedMapName(AtomicStringImpl* key, Element* element)
     3909{
     3910    return element->hasTagName(mapTag) && static_cast<HTMLMapElement*>(element)->getName().lower().impl() == key;
     3911}
     3912
    38163913HTMLMapElement* Document::getImageMap(const String& url) const
    38173914{
     
    38213918    String name = (hashPos == notFound ? url : url.substring(hashPos + 1)).impl();
    38223919    if (isHTMLDocument())
    3823         return static_cast<HTMLMapElement*>(m_imageMapsByName.getElementByLowercasedMapName(AtomicString(name.lower()).impl(), this));
    3824     return static_cast<HTMLMapElement*>(m_imageMapsByName.getElementByMapName(AtomicString(name).impl(), this));
     3920        return static_cast<HTMLMapElement*>(m_imageMapsByName.get<keyMatchesLowercasedMapName>(AtomicString(name.lower()).impl(), this));
     3921    return static_cast<HTMLMapElement*>(m_imageMapsByName.get<keyMatchesMapName>(AtomicString(name).impl(), this));
    38253922}
    38263923
  • trunk/Source/WebCore/dom/Document.h

    r77229 r77231  
    3434#include "ContainerNode.h"
    3535#include "DOMTimeStamp.h"
    36 #include "DocumentOrderedMap.h"
    3736#include "DocumentTiming.h"
    3837#include "QualifiedName.h"
     
    4140#include "ViewportArguments.h"
    4241#include <wtf/FixedArray.h>
     42#include <wtf/HashCountedSet.h>
    4343#include <wtf/OwnPtr.h>
    4444#include <wtf/PassOwnPtr.h>
    45 #include <wtf/PassRefPtr.h>
    4645
    4746#if USE(JSC)
     
    10961095
    10971096private:
     1097    class DocumentOrderedMap {
     1098    public:
     1099        void add(AtomicStringImpl*, Element*);
     1100        void remove(AtomicStringImpl*, Element*);
     1101        void clear();
     1102
     1103        bool contains(AtomicStringImpl*) const;
     1104        bool containsMultiple(AtomicStringImpl*) const;
     1105        template<bool keyMatches(AtomicStringImpl*, Element*)> Element* get(AtomicStringImpl*, const Document*) const;
     1106
     1107        void checkConsistency() const;
     1108
     1109    private:
     1110        typedef HashMap<AtomicStringImpl*, Element*> Map;
     1111
     1112        // We maintain the invariant that m_duplicateCounts is the count of all elements with a given key
     1113        // excluding the one referenced in m_map, if any. This means it one less than the total count
     1114        // when the first node with a given key is cached, otherwise the same as the total count.
     1115        mutable Map m_map;
     1116        mutable HashCountedSet<AtomicStringImpl*> m_duplicateCounts;
     1117    };
     1118
    10981119    friend class IgnoreDestructiveWriteCountIncrementer;
    10991120
     
    13911412};
    13921413
     1414inline bool Document::DocumentOrderedMap::contains(AtomicStringImpl* id) const
     1415{
     1416    return m_map.contains(id) || m_duplicateCounts.contains(id);
     1417}
     1418
     1419inline bool Document::DocumentOrderedMap::containsMultiple(AtomicStringImpl* id) const
     1420{
     1421    return m_duplicateCounts.contains(id);
     1422}
     1423
    13931424inline bool Document::hasElementWithId(AtomicStringImpl* id) const
    13941425{
Note: See TracChangeset for help on using the changeset viewer.