Changeset 104263 in webkit


Ignore:
Timestamp:
Jan 5, 2012 7:14:05 PM (12 years ago)
Author:
rniwa@webkit.org
Message:

REGRESSION(r104210): Dromaeo DOM test score is lower
https://bugs.webkit.org/show_bug.cgi?id=75679

Reviewed by Andreas Kling.

The regression was caused by isDomVersionConsistent not being able to obtain the tree version
inside isLengthCacheValid when m_cachedItem is null. Fix the regression by always setting
m_cachedItem to some node when caching the length so that we can obtain the tree version later.

Also address Antti's review comment to fit m_cachedLength, m_isLengthCacheValid, and
m_isItemCacheValid all in 32-bit.

  • dom/DynamicNodeList.cpp:

(WebCore::DynamicSubtreeNodeList::SubtreeCaches::setLengthCache):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r104261 r104263  
     12012-01-05  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        REGRESSION(r104210): Dromaeo DOM test score is lower
     4        https://bugs.webkit.org/show_bug.cgi?id=75679
     5
     6        Reviewed by Andreas Kling.
     7
     8        The regression was caused by isDomVersionConsistent not being able to obtain the tree version
     9        inside isLengthCacheValid when m_cachedItem is null. Fix the regression by always setting
     10        m_cachedItem to some node when caching the length so that we can obtain the tree version later.
     11
     12        Also address Antti's review comment to fit m_cachedLength, m_isLengthCacheValid, and
     13        m_isItemCacheValid all in 32-bit.
     14
     15        * dom/DynamicNodeList.cpp:
     16        (WebCore::DynamicSubtreeNodeList::SubtreeCaches::setLengthCache):
     17
    1182012-01-05  Hajime Morrita  <morrita@chromium.org>
    219
  • trunk/Source/WebCore/dom/DynamicNodeList.cpp

    r104210 r104263  
    4242        m_cachedItem = node;
    4343        m_isItemCacheValid = false;
    44     }
     44    } else if (!m_isItemCacheValid)
     45        m_cachedItem = node; // Used in domVersionIsConsistent.
    4546    m_cachedLength = length;
    4647    m_isLengthCacheValid = true;
  • trunk/Source/WebCore/dom/DynamicNodeList.h

    r104210 r104263  
    101101        Node* m_cachedItem;
    102102        unsigned m_cachedItemOffset;
    103         unsigned m_cachedLength;
    104         bool m_isLengthCacheValid : 1;
    105         bool m_isItemCacheValid : 1;
     103        unsigned m_cachedLength : 30;
     104        unsigned m_isLengthCacheValid : 1;
     105        unsigned m_isItemCacheValid : 1;
    106106
    107107        bool domVersionIsConsistent() const
Note: See TracChangeset for help on using the changeset viewer.