aboutsummaryrefslogtreecommitdiff
path: root/src/processor
diff options
context:
space:
mode:
authorjimblandy <jimblandy@4c0a9323-5329-0410-9bdc-e9ce6186880e>2010-02-05 17:17:24 +0000
committerjimblandy <jimblandy@4c0a9323-5329-0410-9bdc-e9ce6186880e>2010-02-05 17:17:24 +0000
commit2214cb9bc1872cafae9127778c0cba556c89e43d (patch)
tree9106ebba828abbb1eaf6fc0bed593ec113428a7a /src/processor
parentBreakpad processor: Save Windows unwinding data earlier in x86 walker. (diff)
downloadbreakpad-2214cb9bc1872cafae9127778c0cba556c89e43d.tar.xz
Breakpad processor: Make PostfixEvaluator treat the MemoryRegion as const.
In order to be able to treat any MemoryRegion as const, the accessor functions need to be declared this-const, which means annotations on all the subclasses, etc. etc. Since MinidumpMemoryRegion fills its memory_ member on demand, that member needs to be marked 'mutable', but this is exactly the sort of situation the 'mutable' keyword was intended for, so that seems all right. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@509 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/processor')
-rw-r--r--src/processor/minidump.cc16
-rw-r--r--src/processor/postfix_evaluator.h6
-rw-r--r--src/processor/postfix_evaluator_unittest.cc14
3 files changed, 18 insertions, 18 deletions
diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc
index f82c9a7e..f2b82392 100644
--- a/src/processor/minidump.cc
+++ b/src/processor/minidump.cc
@@ -1106,7 +1106,7 @@ void MinidumpMemoryRegion::SetDescriptor(MDMemoryDescriptor* descriptor) {
}
-const u_int8_t* MinidumpMemoryRegion::GetMemory() {
+const u_int8_t* MinidumpMemoryRegion::GetMemory() const {
if (!valid_) {
BPLOG(ERROR) << "Invalid MinidumpMemoryRegion for GetMemory";
return NULL;
@@ -1145,7 +1145,7 @@ const u_int8_t* MinidumpMemoryRegion::GetMemory() {
}
-u_int64_t MinidumpMemoryRegion::GetBase() {
+u_int64_t MinidumpMemoryRegion::GetBase() const {
if (!valid_) {
BPLOG(ERROR) << "Invalid MinidumpMemoryRegion for GetBase";
return static_cast<u_int64_t>(-1);
@@ -1155,7 +1155,7 @@ u_int64_t MinidumpMemoryRegion::GetBase() {
}
-u_int32_t MinidumpMemoryRegion::GetSize() {
+u_int32_t MinidumpMemoryRegion::GetSize() const {
if (!valid_) {
BPLOG(ERROR) << "Invalid MinidumpMemoryRegion for GetSize";
return 0;
@@ -1173,7 +1173,7 @@ void MinidumpMemoryRegion::FreeMemory() {
template<typename T>
bool MinidumpMemoryRegion::GetMemoryAtAddressInternal(u_int64_t address,
- T* value) {
+ T* value) const {
BPLOG_IF(ERROR, !value) << "MinidumpMemoryRegion::GetMemoryAtAddressInternal "
"requires |value|";
assert(value);
@@ -1215,25 +1215,25 @@ bool MinidumpMemoryRegion::GetMemoryAtAddressInternal(u_int64_t address,
bool MinidumpMemoryRegion::GetMemoryAtAddress(u_int64_t address,
- u_int8_t* value) {
+ u_int8_t* value) const {
return GetMemoryAtAddressInternal(address, value);
}
bool MinidumpMemoryRegion::GetMemoryAtAddress(u_int64_t address,
- u_int16_t* value) {
+ u_int16_t* value) const {
return GetMemoryAtAddressInternal(address, value);
}
bool MinidumpMemoryRegion::GetMemoryAtAddress(u_int64_t address,
- u_int32_t* value) {
+ u_int32_t* value) const {
return GetMemoryAtAddressInternal(address, value);
}
bool MinidumpMemoryRegion::GetMemoryAtAddress(u_int64_t address,
- u_int64_t* value) {
+ u_int64_t* value) const {
return GetMemoryAtAddressInternal(address, value);
}
diff --git a/src/processor/postfix_evaluator.h b/src/processor/postfix_evaluator.h
index 552ed159..d70bcaa0 100644
--- a/src/processor/postfix_evaluator.h
+++ b/src/processor/postfix_evaluator.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2006, Google Inc.
+// Copyright (c) 2010, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
@@ -90,7 +90,7 @@ class PostfixEvaluator {
// (^) will not be supported. |dictionary| may be NULL, but evaluation
// will fail in that case unless set_dictionary is used before calling
// Evaluate.
- PostfixEvaluator(DictionaryType *dictionary, MemoryRegion *memory)
+ PostfixEvaluator(DictionaryType *dictionary, const MemoryRegion *memory)
: dictionary_(dictionary), memory_(memory), stack_() {}
// Evaluate the expression. The results of execution will be stored
@@ -144,7 +144,7 @@ class PostfixEvaluator {
// If non-NULL, the MemoryRegion used for dereference (^) operations.
// If NULL, dereferencing is unsupported and will fail. Weak pointer.
- MemoryRegion *memory_;
+ const MemoryRegion *memory_;
// The stack contains state information as execution progresses. Values
// are pushed on to it as the expression string is read and as operations
diff --git a/src/processor/postfix_evaluator_unittest.cc b/src/processor/postfix_evaluator_unittest.cc
index d687cc83..73aec468 100644
--- a/src/processor/postfix_evaluator_unittest.cc
+++ b/src/processor/postfix_evaluator_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2006, Google Inc.
+// Copyright (c) 2010, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
@@ -56,21 +56,21 @@ using google_breakpad::PostfixEvaluator;
// the value.
class FakeMemoryRegion : public MemoryRegion {
public:
- virtual u_int64_t GetBase() { return 0; }
- virtual u_int32_t GetSize() { return 0; }
- virtual bool GetMemoryAtAddress(u_int64_t address, u_int8_t *value) {
+ virtual u_int64_t GetBase() const { return 0; }
+ virtual u_int32_t GetSize() const { return 0; }
+ virtual bool GetMemoryAtAddress(u_int64_t address, u_int8_t *value) const {
*value = address + 1;
return true;
}
- virtual bool GetMemoryAtAddress(u_int64_t address, u_int16_t *value) {
+ virtual bool GetMemoryAtAddress(u_int64_t address, u_int16_t *value) const {
*value = address + 1;
return true;
}
- virtual bool GetMemoryAtAddress(u_int64_t address, u_int32_t *value) {
+ virtual bool GetMemoryAtAddress(u_int64_t address, u_int32_t *value) const {
*value = address + 1;
return true;
}
- virtual bool GetMemoryAtAddress(u_int64_t address, u_int64_t *value) {
+ virtual bool GetMemoryAtAddress(u_int64_t address, u_int64_t *value) const {
*value = address + 1;
return true;
}