* merge.cc (Output_merge_string::do_add_input_section): Count strings

to reserve space in merged_strings vector. Keep total input size
	for stats.
	(Output_merge_string::do_print_merge_stats): Print total input size.
	* merge.h (Output_merge_string): Add input_size_ field.
	* stringpool.cc (Stringpool_template::string_length): Move
	implementations out of Stringpool_template class and place in
	stringpool.h.
	* stringpool.h (string_length): Move out of Stringpool_template.
This commit is contained in:
Cary Coutant
2010-08-03 20:38:09 +00:00
parent bfea910e97
commit fef830db38
5 changed files with 76 additions and 47 deletions

View File

@@ -32,6 +32,28 @@ namespace gold
class Output_file;
// Return the length of a string in units of Char_type.
template<typename Char_type>
inline size_t
string_length(const Char_type* p)
{
size_t len = 0;
for (; *p != 0; ++p)
++len;
return len;
}
// Specialize string_length for char. Maybe we could just use
// std::char_traits<>::length?
template<>
inline size_t
string_length(const char* p)
{
return strlen(p);
}
// A Stringpool is a pool of unique strings. It provides the
// following features:
@@ -266,10 +288,6 @@ class Stringpool_template
Stringpool_template(const Stringpool_template&);
Stringpool_template& operator=(const Stringpool_template&);
// Return the length of a string in units of Stringpool_char.
static size_t
string_length(const Stringpool_char*);
// Return whether two strings are equal.
static bool
string_equal(const Stringpool_char*, const Stringpool_char*);