Chromium Code Reviews| Index: base/tracked.h |
| diff --git a/base/tracked.h b/base/tracked.h |
| index 3c73519c6c650d051423918a59892763bcdf7fba..6745f51cc989326f0b18263e60e2b6485d98c75d 100644 |
| --- a/base/tracked.h |
| +++ b/base/tracked.h |
| @@ -22,6 +22,8 @@ |
| #include <string> |
| #include "base/base_export.h" |
| +#include "base/string_piece.h" |
| +#include "base/stringize_macros.h" |
| #include "base/time.h" |
| #ifndef NDEBUG |
| @@ -38,15 +40,15 @@ namespace tracked_objects { |
| class BASE_EXPORT Location { |
| public: |
| - // Constructor should be called with a long-lived char*, such as __FILE__. |
| - // It assumes the provided value will persist as a global constant, and it |
| - // will not make a copy of it. |
| - Location(const char* function_name, |
| - const char* file_name, |
| - int line_number, |
| + // Constructor should be called with a long-lived char*. It assumes the |
| + // provided value will persist as a global constant, and it will not make a |
| + // copy of it. |
| + // |file_line| is formatted as "FILE:LINE". |
| + Location(const char* file_line, |
| + const char* function_name, |
|
jbates
2011/08/31 00:40:48
I really wanted this to be "FILE:LINE:FUNCTION" to
jar (doing other things)
2011/09/01 18:17:51
There is a memory cost of having FILE:LINE, as it
jbates
2011/09/01 23:01:52
The only purpose I had in mind of merging these is
|
| const void* program_counter); |
| - // Provide a default constructor for easy of debugging. |
| + // Default constructor initializes to "Unknown:-1", "Unknown", NULL. |
| Location(); |
| // Comparison operator for insertion into a std::map<> hash tables. |
| @@ -56,16 +58,14 @@ class BASE_EXPORT Location { |
| // a difference), and then pointers as secondary keys (just to get some |
| // distinctions). |
| bool operator < (const Location& other) const { |
| - if (line_number_ != other.line_number_) |
| - return line_number_ < other.line_number_; |
| - if (file_name_ != other.file_name_) |
| - return file_name_ < other.file_name_; |
| - return function_name_ < other.function_name_; |
| + return file_line_ < other.file_line_; |
|
jbates
2011/08/31 00:40:48
If file_line is the same, function is the same, so
jar (doing other things)
2011/09/01 18:17:51
I think this is not true when templates are invole
jbates
2011/09/01 23:01:52
OK, I'll add it back in. In linux/gcc, what I see
|
| } |
| - const char* function_name() const { return function_name_; } |
| - const char* file_name() const { return file_name_; } |
| - int line_number() const { return line_number_; } |
| + // Get long-lived file_line string "FILE:LINE". |
| + const char* file_line() const { return file_line_; } |
| + const base::StringPiece file_name() const; |
| + int line_number() const; |
| + const base::StringPiece function_name() const; |
| const void* program_counter() const { return program_counter_; } |
| void Write(bool display_filename, bool display_function_name, |
| @@ -75,10 +75,9 @@ class BASE_EXPORT Location { |
| void WriteFunctionName(std::string* output) const; |
| private: |
| - const char* const function_name_; |
| - const char* const file_name_; |
| - const int line_number_; |
| - const void* const program_counter_; |
| + const char* file_line_; |
| + const char* function_name_; |
| + const void* program_counter_; |
|
jar (doing other things)
2011/09/01 18:17:51
Why did you decide these didn't need to be constan
jbates
2011/09/01 23:01:52
operator= doesn't work if these pointers can't be
jar (doing other things)
2011/09/03 00:26:33
I think it made it clear that the object was not g
jbates
2011/09/03 01:11:41
I see. I find it useful to be able to copy Locatio
|
| }; |
| BASE_EXPORT const void* GetProgramCounter(); |
| @@ -86,11 +85,9 @@ BASE_EXPORT const void* GetProgramCounter(); |
| //------------------------------------------------------------------------------ |
| // Define a macro to record the current source location. |
| -#define FROM_HERE tracked_objects::Location( \ |
| - __FUNCTION__, \ |
| - __FILE__, \ |
| - __LINE__, \ |
| - tracked_objects::GetProgramCounter()) \ |
| +#define FROM_HERE tracked_objects::Location( \ |
|
jar (doing other things)
2011/09/03 00:26:33
I'm not sure how this happened... but the goal is
jbates
2011/09/03 01:11:41
I don't know the history of this code. The use cas
jar (doing other things)
2011/09/15 16:26:39
Can you clarify how this is used? Is it sent up as
jbates
2011/09/15 16:48:33
Now that we have about:tracing in the official bui
|
| + __FILE__ ":" STRINGIZE(__LINE__), __FUNCTION__, \ |
|
jar (doing other things)
2011/09/01 18:17:51
As mentioned, this will notably increase memory ut
jbates
2011/09/01 23:01:52
I compared release builds with and without this CL
jar (doing other things)
2011/09/03 00:26:33
hmmm... the "cost" will appear in each file where
jbates
2011/09/03 01:11:41
code/text size is separate, and it does go up by 8
|
| + tracked_objects::GetProgramCounter()) |
| //------------------------------------------------------------------------------ |