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
diff --git a/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp b/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp
index 8bd14cc..bd46577 100644
--- a/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp
+++ b/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp
@@ -416,3 +416,11 @@
// 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 f61114b..48442fd 100644
--- a/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.h
+++ b/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.h
@@ -17,8 +17,6 @@
class SkPdfPageObjectDictionary;
class SkPdfPageTreeNodeDictionary;
-
-
class SkPdfNativeTokenizer;
class SkNativeParsedPDF {
@@ -63,6 +61,9 @@
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 6caca8f..de49e35 100644
--- a/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp
+++ b/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp
@@ -651,6 +651,7 @@
}
SkPdfObject* SkPdfAllocator::allocBlock() {
+ fSizeInBytes += BUFFER_SIZE * sizeof(SkPdfObject);
return new SkPdfObject[BUFFER_SIZE];
}
@@ -675,6 +676,7 @@
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 333d9dc..f544ff3 100644
--- a/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h
+++ b/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h
@@ -83,9 +83,11 @@
int fCurrentUsed;
SkPdfObject* allocBlock();
+ size_t fSizeInBytes;
public:
SkPdfAllocator() {
+ fSizeInBytes = sizeof(*this);
fCurrent = allocBlock();
fCurrentUsed = 0;
}
@@ -98,8 +100,13 @@
void* alloc(size_t bytes) {
void* data = malloc(bytes);
fHandles.push(data);
+ fSizeInBytes += bytes;
return data;
}
+
+ size_t bytesUsed() {
+ return fSizeInBytes;
+ }
};
class SkNativeParsedPDF;