aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental/PdfViewer/pdfparser
diff options
context:
space:
mode:
authorGravatar edisonn@google.com <edisonn@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-07-11 12:27:21 +0000
committerGravatar edisonn@google.com <edisonn@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-07-11 12:27:21 +0000
commita5aaa7998fc18489701660f781d7daa33ffc6f6e (patch)
tree077fa0caab099734a3942dd159bd8e2568a39e7a /experimental/PdfViewer/pdfparser
parent76d119279e4f1df5dbcd28299fbc5941faf7f5d0 (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')
-rw-r--r--experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp8
-rw-r--r--experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.h5
-rw-r--r--experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp2
-rw-r--r--experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h7
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;