Ignore:
Timestamp:
Aug 6, 2012, 7:09:59 AM (13 years ago)
Author:
[email protected]
Message:

Web Inspector: add memory instrumentation for CSSValue and its descendants
https://bugs.webkit.org/show_bug.cgi?id=93130

Reviewed by Pavel Feldman.

Added memory footprint reporting routine to CSSValue and its descendants.

Memory reporing for CSSValue is organized in a following way:

  • CSSValue implements reportMemoryUsage method that switches by the value type and calls reportDescendantMemoryUsage on the concrete type
  • There may be some intermediate classes in the inheritance chain between CSSValue and the leaf class implementing reportDescendantMemoryUsage. Those intermediate classes implement reportBaseClassMemoryUsage method that can be called from a descendant to collect memory information for the base class members. Having reportDescendantMemoryUsage only on the leaf classes prevents us from accidentally adding the intermediate classes to the switch block in the CSSValue::reportMemoryUsage.
  • css/CSSAspectRatioValue.cpp:

(WebCore::CSSAspectRatioValue::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSAspectRatioValue.h:

(CSSAspectRatioValue):

  • css/CSSBorderImageSliceValue.cpp:

(WebCore::CSSBorderImageSliceValue::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSBorderImageSliceValue.h:

(CSSBorderImageSliceValue):

  • css/CSSCalculationValue.cpp:

(WebCore):
(WebCore::CSSCalcValue::reportDescendantMemoryUsage):
(CSSCalcPrimitiveValue):

  • css/CSSCalculationValue.h:

(CSSCalcExpressionNode):
(CSSCalcValue):

  • css/CSSCanvasValue.cpp:

(WebCore::CSSCanvasValue::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSCanvasValue.h:

(CSSCanvasValue):

  • css/CSSCrossfadeValue.cpp:

(WebCore::CSSCrossfadeValue::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSCrossfadeValue.h:

(CSSCrossfadeValue):

  • css/CSSCursorImageValue.cpp:

(WebCore::CSSCursorImageValue::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSCursorImageValue.h:

(CSSCursorImageValue):

  • css/CSSFontFaceSrcValue.cpp:

(WebCore::CSSFontFaceSrcValue::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSFontFaceSrcValue.h:

(CSSFontFaceSrcValue):

  • css/CSSFunctionValue.cpp:

(WebCore::CSSFunctionValue::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSFunctionValue.h:

(CSSFunctionValue):

  • css/CSSGradientValue.cpp:

(WebCore::CSSGradientColorStop::reportMemoryUsage):
(WebCore):
(WebCore::CSSGradientValue::reportBaseClassMemoryUsage):
(WebCore::CSSLinearGradientValue::reportDescendantMemoryUsage):
(WebCore::CSSRadialGradientValue::reportDescendantMemoryUsage):

  • css/CSSGradientValue.h:

(CSSGradientColorStop):
(CSSGradientValue):
(CSSLinearGradientValue):
(CSSRadialGradientValue):

  • css/CSSImageGeneratorValue.cpp:

(WebCore::CSSImageGeneratorValue::reportBaseClassMemoryUsage):
(WebCore):

  • css/CSSImageGeneratorValue.h:

(CSSImageGeneratorValue):

  • css/CSSImageSetValue.cpp:

(WebCore::CSSImageSetValue::reportDescendantMemoryUsage):
(WebCore):
(WebCore::CSSImageSetValue::ImageWithScale::reportMemoryUsage):

  • css/CSSImageSetValue.h:

(ImageWithScale):
(CSSImageSetValue):

  • css/CSSImageValue.cpp:

(WebCore::CSSImageValue::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSImageValue.h:

(CSSImageValue):

  • css/CSSInheritedValue.cpp:

(WebCore::CSSInheritedValue::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSInheritedValue.h:

(CSSInheritedValue):

  • css/CSSInitialValue.cpp:

(WebCore::CSSInitialValue::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSInitialValue.h:

(CSSInitialValue):

  • css/CSSLineBoxContainValue.cpp:

(WebCore::CSSLineBoxContainValue::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSLineBoxContainValue.h:

(CSSLineBoxContainValue):

  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSPrimitiveValue.h:

(CSSPrimitiveValue):

  • css/CSSReflectValue.cpp:

(WebCore::CSSReflectValue::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSReflectValue.h:

(CSSReflectValue):

  • css/CSSTimingFunctionValue.cpp:

(WebCore::CSSLinearTimingFunctionValue::reportDescendantMemoryUsage):
(WebCore):
(WebCore::CSSCubicBezierTimingFunctionValue::reportDescendantMemoryUsage):
(WebCore::CSSStepsTimingFunctionValue::reportDescendantMemoryUsage):

  • css/CSSTimingFunctionValue.h:

(CSSLinearTimingFunctionValue):
(CSSCubicBezierTimingFunctionValue):
(CSSStepsTimingFunctionValue):

  • css/CSSUnicodeRangeValue.cpp:

(WebCore::CSSUnicodeRangeValue::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSUnicodeRangeValue.h:

(CSSUnicodeRangeValue):

  • css/CSSValue.cpp:

(WebCore::TextCloneCSSValue::reportDescendantMemoryUsage):
(TextCloneCSSValue):
(WebCore::CSSValue::reportMemoryUsage):
(WebCore):

  • css/CSSValue.h:

(WebCore):
(CSSValue):

  • css/CSSValueList.cpp:

(WebCore::CSSValueList::reportDescendantMemoryUsage):
(WebCore):

  • css/CSSValueList.h:

(CSSValueList):

  • css/CSSVariableValue.h:

(WebCore::CSSVariableValue::reportDescendantMemoryUsage):
(CSSVariableValue):

  • css/FontFeatureValue.cpp:

(WebCore::FontFeatureValue::reportDescendantMemoryUsage):
(WebCore):

  • css/FontFeatureValue.h:

(FontFeatureValue):

  • css/FontValue.cpp:

(WebCore::FontValue::reportDescendantMemoryUsage):
(WebCore):

  • css/FontValue.h:

(FontValue):

  • css/MediaQueryExp.cpp:

(WebCore::MediaQueryExp::reportMemoryUsage):

  • css/ShadowValue.cpp:

(WebCore::ShadowValue::reportDescendantMemoryUsage):
(WebCore):

  • css/ShadowValue.h:

(ShadowValue):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::collectMatchingRulesForList):

  • css/WebKitCSSFilterValue.cpp:

(WebCore::WebKitCSSFilterValue::reportDescendantMemoryUsage):
(WebCore):

  • css/WebKitCSSFilterValue.h:

(WebKitCSSFilterValue):

  • css/WebKitCSSSVGDocumentValue.cpp:

(WebCore::WebKitCSSSVGDocumentValue::reportDescendantMemoryUsage):
(WebCore):

  • css/WebKitCSSSVGDocumentValue.h:

(WebKitCSSSVGDocumentValue):

  • css/WebKitCSSShaderValue.cpp:

(WebCore::WebKitCSSShaderValue::reportDescendantMemoryUsage):
(WebCore):

  • css/WebKitCSSShaderValue.h:

(WebKitCSSShaderValue):

  • css/WebKitCSSTransformValue.cpp:

(WebCore::WebKitCSSTransformValue::reportDescendantMemoryUsage):
(WebCore):

  • css/WebKitCSSTransformValue.h:

(WebKitCSSTransformValue):

  • dom/MemoryInstrumentation.cpp:

(WebCore::MemoryInstrumentation::addString):
(WebCore):

  • dom/MemoryInstrumentation.h:

(MemoryInstrumentation):
(WebCore::MemoryClassInfo::addHashCountedSet):
(WebCore::MemoryClassInfo::addMember):

  • svg/SVGColor.cpp:

(WebCore::SVGColor::reportDescendantMemoryUsage):
(WebCore):

  • svg/SVGColor.h:

(SVGColor):

  • svg/SVGPaint.cpp:

(WebCore::SVGPaint::reportDescendantMemoryUsage):
(WebCore):

  • svg/SVGPaint.h:

(SVGPaint):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/css/CSSPrimitiveValue.cpp

    r124389 r124768  
    3232#include "Counter.h"
    3333#include "ExceptionCode.h"
     34#include "MemoryInstrumentation.h"
    3435#include "Node.h"
    3536#include "Pair.h"
     
    12591260}
    12601261
     1262void CSSPrimitiveValue::reportDescendantMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
     1263{
     1264    MemoryClassInfo<CSSPrimitiveValue> info(memoryObjectInfo, this, MemoryInstrumentation::CSS);
     1265    switch (m_primitiveUnitType) {
     1266    case CSS_ATTR:
     1267    case CSS_COUNTER_NAME:
     1268    case CSS_PARSER_IDENTIFIER:
     1269    case CSS_PARSER_HEXCOLOR:
     1270    case CSS_STRING:
     1271    case CSS_URI:
     1272#if ENABLE(CSS_VARIABLES)
     1273    case CSS_VARIABLE_NAME:
     1274#endif
     1275        // FIXME: detect other cases when m_value is StringImpl*
     1276        info.addMember(m_value.string);
     1277        break;
     1278    case CSS_COUNTER:
     1279        info.addMember(m_value.counter);
     1280        break;
     1281    case CSS_RECT:
     1282        info.addMember(m_value.rect);
     1283        break;
     1284    case CSS_QUAD:
     1285        info.addMember(m_value.quad);
     1286        break;
     1287    case CSS_PAIR:
     1288        info.addMember(m_value.pair);
     1289        break;
     1290#if ENABLE(DASHBOARD_SUPPORT) || ENABLE(WIDGET_REGION)
     1291    case CSS_DASHBOARD_REGION:
     1292        info.addMember(m_value.region);
     1293        break;
     1294#endif
     1295    case CSS_SHAPE:
     1296        info.addMember(m_value.shape);
     1297        break;
     1298    case CSS_CALC:
     1299        info.addMember(m_value.calc);
     1300        break;
     1301    default:
     1302        break;
     1303    }
     1304}
     1305
    12611306} // namespace WebCore
Note: See TracChangeset for help on using the changeset viewer.