diff options
author | 2013-07-11 12:27:21 +0000 | |
---|---|---|
committer | 2013-07-11 12:27:21 +0000 | |
commit | a5aaa7998fc18489701660f781d7daa33ffc6f6e (patch) | |
tree | 077fa0caab099734a3942dd159bd8e2568a39e7a /experimental/PdfViewer/pdfparser | |
parent | 76d119279e4f1df5dbcd28299fbc5941faf7f5d0 (diff) |
pdfviewer: measure mem usage, command line flags library.
Review URL: https://codereview.chromium.org/18562010
git-svn-id: http://skia.googlecode.com/svn/trunk@9996 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'experimental/PdfViewer/pdfparser')
4 files changed, 20 insertions, 2 deletions
diff --git a/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp b/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp index 8bd14ccfd1..bd46577322 100644 --- a/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp +++ b/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp @@ -416,3 +416,11 @@ SkPdfObject* SkNativeParsedPDF::resolveReference(const SkPdfObject* ref) { // TODO(edisonn): fix the mess with const, probably we need to remove it pretty much everywhere return (SkPdfObject*)ref; } + +size_t SkNativeParsedPDF::bytesUsed() { + return fAllocator->bytesUsed() + + fContentLength + + fObjects.count() * sizeof(PublicObjectEntry) + + fPages.count() * sizeof(SkPdfPageObjectDictionary*) + + sizeof(*this); +} diff --git a/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.h b/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.h index f61114b9e1..48442fd2cb 100644 --- a/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.h +++ b/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.h @@ -17,8 +17,6 @@ class SkPdfCatalogDictionary; class SkPdfPageObjectDictionary; class SkPdfPageTreeNodeDictionary; - - class SkPdfNativeTokenizer; class SkNativeParsedPDF { @@ -63,6 +61,9 @@ public: SkPdfObject* resolveReference(const SkPdfObject* ref); + // Reports an approximation of all the memory usage. + size_t bytesUsed(); + private: unsigned char* readCrossReferenceSection(unsigned char* xrefStart, unsigned char* trailerEnd); diff --git a/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp b/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp index 6caca8f295..de49e35f11 100644 --- a/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp +++ b/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp @@ -651,6 +651,7 @@ unsigned char* nextObject(unsigned char* start, unsigned char* end, SkPdfObject* } SkPdfObject* SkPdfAllocator::allocBlock() { + fSizeInBytes += BUFFER_SIZE * sizeof(SkPdfObject); return new SkPdfObject[BUFFER_SIZE]; } @@ -675,6 +676,7 @@ SkPdfObject* SkPdfAllocator::allocObject() { fHistory.push(fCurrent); fCurrent = allocBlock(); fCurrentUsed = 0; + fSizeInBytes += sizeof(SkPdfObject*); } fCurrentUsed++; return &fCurrent[fCurrentUsed - 1]; diff --git a/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h b/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h index 333d9dc265..f544ff3bc1 100644 --- a/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h +++ b/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h @@ -83,9 +83,11 @@ class SkPdfAllocator { int fCurrentUsed; SkPdfObject* allocBlock(); + size_t fSizeInBytes; public: SkPdfAllocator() { + fSizeInBytes = sizeof(*this); fCurrent = allocBlock(); fCurrentUsed = 0; } @@ -98,8 +100,13 @@ public: void* alloc(size_t bytes) { void* data = malloc(bytes); fHandles.push(data); + fSizeInBytes += bytes; return data; } + + size_t bytesUsed() { + return fSizeInBytes; + } }; class SkNativeParsedPDF; |