Diff
Modified: trunk/Source/WebCore/ChangeLog (131592 => 131593)
--- trunk/Source/WebCore/ChangeLog 2012-10-17 14:16:40 UTC (rev 131592)
+++ trunk/Source/WebCore/ChangeLog 2012-10-17 14:26:12 UTC (rev 131593)
@@ -1,3 +1,26 @@
+2012-10-16 Ilya Tikhonovsky <[email protected]>
+
+ Web Inspector: NMI instrument ImageDecoder. It owns a buffer that could be quite big.
+ https://bugs.webkit.org/show_bug.cgi?id=99540
+
+ Reviewed by Yury Semikhatsky.
+
+ * platform/graphics/ImageSource.cpp:
+ (WebCore::ImageSource::reportMemoryUsage):
+ (WebCore):
+ * platform/graphics/ImageSource.h:
+ (ImageSource):
+ * platform/image-decoders/ImageDecoder.cpp:
+ (WebCore::ImageFrame::reportMemoryUsage):
+ (WebCore):
+ (WebCore::ImageDecoder::reportMemoryUsage):
+ * platform/image-decoders/ImageDecoder.h:
+ (ImageFrame):
+ (ImageDecoder):
+ * platform/image-decoders/skia/ImageDecoderSkia.cpp:
+ (WebCore::ImageFrame::reportMemoryUsage):
+ (WebCore):
+
2012-10-17 Zeno Albisser <[email protected]>
[Qt] Fix build on Mac OSX 10.6 and earlier.
Modified: trunk/Source/WebCore/platform/graphics/ImageSource.cpp (131592 => 131593)
--- trunk/Source/WebCore/platform/graphics/ImageSource.cpp 2012-10-17 14:16:40 UTC (rev 131592)
+++ trunk/Source/WebCore/platform/graphics/ImageSource.cpp 2012-10-17 14:26:12 UTC (rev 131593)
@@ -33,6 +33,7 @@
#include "ImageOrientation.h"
#include "NotImplemented.h"
+#include "PlatformMemoryInstrumentation.h"
namespace WebCore {
@@ -205,4 +206,10 @@
return m_decoder->frameBytesAtIndex(index);
}
+void ImageSource::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+ MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Image);
+ info.addMember(m_decoder);
}
+
+}
Modified: trunk/Source/WebCore/platform/graphics/ImageSource.h (131592 => 131593)
--- trunk/Source/WebCore/platform/graphics/ImageSource.h 2012-10-17 14:16:40 UTC (rev 131592)
+++ trunk/Source/WebCore/platform/graphics/ImageSource.h 2012-10-17 14:26:12 UTC (rev 131593)
@@ -155,6 +155,8 @@
static void setMaxPixelsPerDecodedImage(unsigned maxPixels) { s_maxPixelsPerDecodedImage = maxPixels; }
#endif
+ void reportMemoryUsage(MemoryObjectInfo*) const;
+
private:
NativeImageSourcePtr m_decoder;
Modified: trunk/Source/WebCore/platform/graphics/cg/ImageSourceCG.cpp (131592 => 131593)
--- trunk/Source/WebCore/platform/graphics/cg/ImageSourceCG.cpp 2012-10-17 14:16:40 UTC (rev 131592)
+++ trunk/Source/WebCore/platform/graphics/cg/ImageSourceCG.cpp 2012-10-17 14:26:12 UTC (rev 131593)
@@ -396,6 +396,12 @@
return frameSize.width() * frameSize.height() * 4;
}
+void ImageSource::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+ MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Image);
+ info.addMember(m_decoder);
}
+}
+
#endif // USE(CG)
Modified: trunk/Source/WebCore/platform/image-decoders/ImageDecoder.cpp (131592 => 131593)
--- trunk/Source/WebCore/platform/image-decoders/ImageDecoder.cpp 2012-10-17 14:16:40 UTC (rev 131592)
+++ trunk/Source/WebCore/platform/image-decoders/ImageDecoder.cpp 2012-10-17 14:26:12 UTC (rev 131593)
@@ -30,6 +30,7 @@
#endif
#include "JPEGImageDecoder.h"
#include "PNGImageDecoder.h"
+#include "PlatformMemoryInstrumentation.h"
#include "SharedBuffer.h"
#if USE(WEBP)
#include "WEBPImageDecoder.h"
@@ -37,6 +38,7 @@
#include <algorithm>
#include <cmath>
+#include <wtf/MemoryInstrumentationVector.h>
using namespace std;
@@ -234,6 +236,12 @@
return m_size.height();
}
+void ImageFrame::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+ MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Image);
+ info.addMember(m_backingStore);
+}
+
#endif
namespace {
@@ -337,4 +345,14 @@
return getScaledValue<Exact>(m_scaledRows, origY, searchStart);
}
+void ImageDecoder::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+ MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Image);
+ info.addMember(m_data);
+ info.addMember(m_frameBufferCache);
+ info.addMember(m_colorProfile);
+ info.addMember(m_scaledColumns);
+ info.addMember(m_scaledRows);
}
+
+}
Modified: trunk/Source/WebCore/platform/image-decoders/ImageDecoder.h (131592 => 131593)
--- trunk/Source/WebCore/platform/image-decoders/ImageDecoder.h 2012-10-17 14:16:40 UTC (rev 131592)
+++ trunk/Source/WebCore/platform/image-decoders/ImageDecoder.h 2012-10-17 14:26:12 UTC (rev 131593)
@@ -145,6 +145,9 @@
return m_bytes + (y * width()) + x;
#endif
}
+
+ void reportMemoryUsage(MemoryObjectInfo*) const;
+
private:
int width() const;
int height() const;
@@ -359,6 +362,8 @@
void setMaxNumPixels(int m) { m_maxNumPixels = m; }
#endif
+ virtual void reportMemoryUsage(MemoryObjectInfo*) const;
+
protected:
void prepareScaleDataIfNecessary();
int upperBoundScaledX(int origX, int searchStart = 0);
Modified: trunk/Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp (131592 => 131593)
--- trunk/Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp 2012-10-17 14:16:40 UTC (rev 131592)
+++ trunk/Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp 2012-10-17 14:26:12 UTC (rev 131593)
@@ -27,6 +27,8 @@
#include "config.h"
#include "ImageDecoder.h"
+#include "PlatformMemoryInstrumentation.h"
+
namespace WebCore {
ImageFrame::ImageFrame()
@@ -145,4 +147,10 @@
return m_bitmap.bitmap().height();
}
+void ImageFrame::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+ MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Image);
+ info.addMember(m_bitmap);
+}
+
} // namespace WebCore