Changeset 97583 in webkit


Ignore:
Timestamp:
Oct 16, 2011 9:27:09 PM (12 years ago)
Author:
commit-queue@webkit.org
Message:

Inline CSSPrimitiveValue::isQuirkValue() as non-virtual function
https://bugs.webkit.org/show_bug.cgi?id=64865

Patch by David Barr <davidbarr@chromium.org> on 2011-10-16
Reviewed by Darin Adler.

Based on profiling and patch from:
Tamas Czene <Czene.Tamas@stud.u-szeged.hu>

This is expected to produce a small performance progression.
Additional memory overhead is avoided by using spare bits.
CSSQuirkPrimitiveValue is removed as it becomes just a factory.

  • GNUmakefile.list.am:
  • WebCore.gypi:
  • WebCore.order:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSParser.cpp:

(WebCore::CSSParser::parseValidPrimitive):

  • css/CSSParserValues.cpp:

(WebCore::CSSParserValue::createCSSValue):

  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):

  • css/CSSPrimitiveValue.h:

(WebCore::CSSPrimitiveValue::createAllowingMarginQuirk):
Moved from CSSQuirkPrimitiveValue::create.
(WebCore::CSSPrimitiveValue::isQuirkValue):

  • css/CSSQuirkPrimitiveValue.h: Removed.
  • css/SVGCSSParser.cpp:

(WebCore::CSSParser::parseSVGValue):

Location:
trunk/Source/WebCore
Files:
1 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r97581 r97583  
     12011-10-16  David Barr  <davidbarr@chromium.org>
     2
     3        Inline CSSPrimitiveValue::isQuirkValue() as non-virtual function
     4        https://bugs.webkit.org/show_bug.cgi?id=64865
     5
     6        Reviewed by Darin Adler.
     7
     8        Based on profiling and patch from:
     9        Tamas Czene <Czene.Tamas@stud.u-szeged.hu>
     10
     11        This is expected to produce a small performance progression.
     12        Additional memory overhead is avoided by using spare bits.
     13        CSSQuirkPrimitiveValue is removed as it becomes just a factory.
     14
     15        * GNUmakefile.list.am:
     16        * WebCore.gypi:
     17        * WebCore.order:
     18        * WebCore.vcproj/WebCore.vcproj:
     19        * WebCore.xcodeproj/project.pbxproj:
     20        * css/CSSParser.cpp:
     21        (WebCore::CSSParser::parseValidPrimitive):
     22        * css/CSSParserValues.cpp:
     23        (WebCore::CSSParserValue::createCSSValue):
     24        * css/CSSPrimitiveValue.cpp:
     25        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
     26        * css/CSSPrimitiveValue.h:
     27        (WebCore::CSSPrimitiveValue::createAllowingMarginQuirk):
     28        Moved from CSSQuirkPrimitiveValue::create.
     29        (WebCore::CSSPrimitiveValue::isQuirkValue):
     30        * css/CSSQuirkPrimitiveValue.h: Removed.
     31        * css/SVGCSSParser.cpp:
     32        (WebCore::CSSParser::parseSVGValue):
     33
    1342011-10-16  Kentaro Hara  <haraken@chromium.org>
    235
  • trunk/Source/WebCore/GNUmakefile.list.am

    r97574 r97583  
    994994        Source/WebCore/css/CSSPropertySourceData.cpp \
    995995        Source/WebCore/css/CSSPropertySourceData.h \
    996         Source/WebCore/css/CSSQuirkPrimitiveValue.h \
    997996        Source/WebCore/css/CSSReflectionDirection.h \
    998997        Source/WebCore/css/CSSReflectValue.cpp \
  • trunk/Source/WebCore/WebCore.gypi

    r97557 r97583  
    23812381            'css/CSSPropertyLonghand.h',
    23822382            'css/CSSPropertySourceData.cpp',
    2383             'css/CSSQuirkPrimitiveValue.h',
    23842383            'css/CSSReflectValue.cpp',
    23852384            'css/CSSRule.cpp',
  • trunk/Source/WebCore/WebCore.order

    r95331 r97583  
    32443244__ZN7WebCore16CSSStyleSelector27checkForGenericFamilyChangeEPNS_11RenderStyleES2_
    32453245__ZN7WebCore16CSSStyleSelector18checkForZoomChangeEPNS_11RenderStyleES2_
    3246 __ZN7WebCore22CSSQuirkPrimitiveValue12isQuirkValueEv
    32473246__ZN7WebCore11RenderStyle16setLetterSpacingEi
    32483247__ZN7WebCore11RenderStyle14setWordSpacingEi
     
    2636426363__ZN3WTF13tryMakeStringIPKccNS_6StringEEENS_10PassRefPtrINS_10StringImplEEET_T0_T1_
    2636526364__ZNK7WebCore15GraphicsContext25imageInterpolationQualityEv
    26366 __ZN7WebCore22CSSQuirkPrimitiveValueD0Ev
    2636726365__ZN7WebCore20jsSVGSVGElementStyleEPN3JSC9ExecStateENS0_7JSValueERKNS0_10IdentifierE
    2636826366__ZN7WebCore16JSSVGPathElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
  • trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj

    r97471 r97583  
    3327533275                        </File>
    3327633276                        <File
    33277                                 RelativePath="..\css\CSSQuirkPrimitiveValue.h"
    33278                                 >
    33279                         </File>
    33280                         <File
    3328133277                                RelativePath="..\css\CSSReflectionDirection.h"
    3328233278                                >
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r97471 r97583  
    34603460                A80E6CE80A1989CA007FB8C5 /* ShadowValue.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CBE0A1989CA007FB8C5 /* ShadowValue.h */; };
    34613461                A80E6CE90A1989CA007FB8C5 /* CSSValueList.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CBF0A1989CA007FB8C5 /* CSSValueList.h */; settings = {ATTRIBUTES = (Private, ); }; };
    3462                 A80E6CEA0A1989CA007FB8C5 /* CSSQuirkPrimitiveValue.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CC00A1989CA007FB8C5 /* CSSQuirkPrimitiveValue.h */; };
    34633462                A80E6CEB0A1989CA007FB8C5 /* CSSImportRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CC10A1989CA007FB8C5 /* CSSImportRule.cpp */; };
    34643463                A80E6CEC0A1989CA007FB8C5 /* FontFamilyValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CC20A1989CA007FB8C5 /* FontFamilyValue.cpp */; };
     
    1063610635                A80E6CBE0A1989CA007FB8C5 /* ShadowValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ShadowValue.h; sourceTree = "<group>"; };
    1063710636                A80E6CBF0A1989CA007FB8C5 /* CSSValueList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSValueList.h; sourceTree = "<group>"; };
    10638                 A80E6CC00A1989CA007FB8C5 /* CSSQuirkPrimitiveValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSQuirkPrimitiveValue.h; sourceTree = "<group>"; };
    1063910637                A80E6CC10A1989CA007FB8C5 /* CSSImportRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSImportRule.cpp; sourceTree = "<group>"; };
    1064010638                A80E6CC20A1989CA007FB8C5 /* FontFamilyValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FontFamilyValue.cpp; sourceTree = "<group>"; };
     
    2058020578                                82E3D8DC122EA0D1003AE5BC /* CSSPropertySourceData.cpp */,
    2058120579                                82E3D8DD122EA0D1003AE5BC /* CSSPropertySourceData.h */,
    20582                                 A80E6CC00A1989CA007FB8C5 /* CSSQuirkPrimitiveValue.h */,
    2058320580                                9362640A0DE1137D009D5A00 /* CSSReflectionDirection.h */,
    2058420581                                BC5A12DD0DC0414800C9AFAD /* CSSReflectValue.cpp */,
     
    2185721854                                656580F409D12B20000E61D7 /* CSSPropertyNames.h in Headers */,
    2185821855                                82E3D8DF122EA0D1003AE5BC /* CSSPropertySourceData.h in Headers */,
    21859                                 A80E6CEA0A1989CA007FB8C5 /* CSSQuirkPrimitiveValue.h in Headers */,
    2186021856                                9362640B0DE1137D009D5A00 /* CSSReflectionDirection.h in Headers */,
    2186121857                                BC5A12E00DC0414800C9AFAD /* CSSReflectValue.h in Headers */,
  • trunk/Source/WebCore/css/CSSParser.cpp

    r97511 r97583  
    4848#include "CSSPropertyNames.h"
    4949#include "CSSPropertySourceData.h"
    50 #include "CSSQuirkPrimitiveValue.h"
    5150#include "CSSReflectValue.h"
    5251#include "CSSRuleList.h"
     
    810809        return createPrimitiveNumericValue(value);
    811810    if (value->unit >= CSSParserValue::Q_EMS)
    812         return CSSQuirkPrimitiveValue::create(value->fValue, CSSPrimitiveValue::CSS_EMS);
     811        return CSSPrimitiveValue::createAllowingMarginQuirk(value->fValue, CSSPrimitiveValue::CSS_EMS);
    813812    return 0;
    814813}
  • trunk/Source/WebCore/css/CSSParserValues.cpp

    r95901 r97583  
    2424#include "CSSPrimitiveValue.h"
    2525#include "CSSFunctionValue.h"
    26 #include "CSSQuirkPrimitiveValue.h"
    2726#include "CSSSelector.h"
    2827#include "CSSSelectorList.h"
     
    8483        parsedValue = CSSPrimitiveValue::create(fValue, (CSSPrimitiveValue::UnitTypes)unit);
    8584    else if (unit >= CSSParserValue::Q_EMS)
    86         parsedValue = CSSQuirkPrimitiveValue::create(fValue, CSSPrimitiveValue::CSS_EMS);
     85        parsedValue = CSSPrimitiveValue::createAllowingMarginQuirk(fValue, CSSPrimitiveValue::CSS_EMS);
    8786    return parsedValue;
    8887}
  • trunk/Source/WebCore/css/CSSPrimitiveValue.cpp

    r96547 r97583  
    168168    : m_type(0)
    169169    , m_hasCachedCSSText(false)
     170    , m_isQuirkValue(false)
    170171{
    171172}
     
    174175    : m_type(CSS_IDENT)
    175176    , m_hasCachedCSSText(false)
     177    , m_isQuirkValue(false)
    176178{
    177179    m_value.ident = ident;
     
    181183    : m_type(type)
    182184    , m_hasCachedCSSText(false)
     185    , m_isQuirkValue(false)
    183186{
    184187    ASSERT(isfinite(num));
     
    189192    : m_type(type)
    190193    , m_hasCachedCSSText(false)
     194    , m_isQuirkValue(false)
    191195{
    192196    if ((m_value.string = str.impl()))
     
    197201    : m_type(CSS_RGBCOLOR)
    198202    , m_hasCachedCSSText(false)
     203    , m_isQuirkValue(false)
    199204{
    200205    m_value.rgbcolor = color;
     
    203208CSSPrimitiveValue::CSSPrimitiveValue(const Length& length)
    204209    : m_hasCachedCSSText(false)
     210    , m_isQuirkValue(false)
    205211{
    206212    switch (length.type()) {
  • trunk/Source/WebCore/css/CSSPrimitiveValue.h

    r94593 r97583  
    5353class CSSPrimitiveValue : public CSSValue {
    5454public:
     55    static const int UnitTypesBits = 8;
    5556    enum UnitTypes {
    5657        CSS_UNKNOWN = 0,
     
    133134    }
    134135
     136    // This value is used to handle quirky margins in reflow roots (body, td, and th) like WinIE.
     137    // The basic idea is that a stylesheet can use the value __qem (for quirky em) instead of em.
     138    // When the quirky value is used, if you're in quirks mode, the margin will collapse away
     139    // inside a table cell.
     140    static PassRefPtr<CSSPrimitiveValue> createAllowingMarginQuirk(double value, UnitTypes type)
     141    {
     142        CSSPrimitiveValue* quirkValue = new CSSPrimitiveValue(value, type);
     143        quirkValue->m_isQuirkValue = true;
     144        return adoptRef(quirkValue);
     145    }
     146
    135147    virtual ~CSSPrimitiveValue();
    136148
     
    200212    virtual String cssText() const;
    201213
    202     virtual bool isQuirkValue() { return false; }
     214    bool isQuirkValue() { return m_isQuirkValue; }
    203215
    204216    virtual void addSubresourceStyleURLs(ListHashSet<KURL>&, const CSSStyleSheet*);
     
    244256    virtual unsigned short cssValueType() const;
    245257
    246     signed m_type : 31;
     258    signed m_type : UnitTypesBits;
    247259    mutable unsigned m_hasCachedCSSText : 1;
     260    unsigned m_isQuirkValue : 1;
    248261    union {
    249262        int ident;
  • trunk/Source/WebCore/css/SVGCSSParser.cpp

    r89490 r97583  
    2929#include "CSSProperty.h"
    3030#include "CSSPropertyNames.h"
    31 #include "CSSQuirkPrimitiveValue.h"
    3231#include "CSSValueKeywords.h"
    3332#include "CSSValueList.h"
     
    308307            parsedValue = CSSPrimitiveValue::create(value->fValue, (CSSPrimitiveValue::UnitTypes) value->unit);
    309308        else if (value->unit >= CSSParserValue::Q_EMS)
    310             parsedValue = CSSQuirkPrimitiveValue::create(value->fValue, CSSPrimitiveValue::CSS_EMS);
     309            parsedValue = CSSPrimitiveValue::createAllowingMarginQuirk(value->fValue, CSSPrimitiveValue::CSS_EMS);
    311310        m_valueList->next();
    312311    }
Note: See TracChangeset for help on using the changeset viewer.