Some cleanups in log.cc

This commit is contained in:
Clifford Wolf 2015-01-30 22:12:26 +01:00
parent 9ebf803cbe
commit 114a78d11a
1 changed files with 16 additions and 14 deletions

View File

@ -49,10 +49,10 @@ bool log_cmd_error_throw = false;
bool log_quiet_warnings = false; bool log_quiet_warnings = false;
int log_verbose_level; int log_verbose_level;
std::vector<int> header_count; vector<int> header_count;
std::set<RTLIL::IdString> log_id_cache; pool<RTLIL::IdString> log_id_cache;
std::list<std::string> string_buf; vector<string> string_buf;
int string_buf_size = 0; int string_buf_index = -1;
static struct timeval initial_tv = { 0, 0 }; static struct timeval initial_tv = { 0, 0 };
static bool next_print_log = false; static bool next_print_log = false;
@ -249,7 +249,7 @@ void log_pop()
header_count.pop_back(); header_count.pop_back();
log_id_cache.clear(); log_id_cache.clear();
string_buf.clear(); string_buf.clear();
string_buf_size = 0; string_buf_index = -1;
log_flush(); log_flush();
} }
@ -352,7 +352,7 @@ void log_reset_stack()
header_count.pop_back(); header_count.pop_back();
log_id_cache.clear(); log_id_cache.clear();
string_buf.clear(); string_buf.clear();
string_buf_size = 0; string_buf_index = -1;
log_flush(); log_flush();
} }
@ -374,20 +374,22 @@ const char *log_signal(const RTLIL::SigSpec &sig, bool autoint)
std::stringstream buf; std::stringstream buf;
ILANG_BACKEND::dump_sigspec(buf, sig, autoint); ILANG_BACKEND::dump_sigspec(buf, sig, autoint);
if (string_buf_size < 100) if (string_buf.size() < 100) {
string_buf_size++; string_buf.push_back(buf.str());
else return string_buf.back().c_str();
string_buf.pop_front(); } else {
string_buf.push_back(buf.str()); if (++string_buf_index == 100)
string_buf_index = 0;
return string_buf.back().c_str(); string_buf[string_buf_index] = buf.str();
return string_buf[string_buf_index].c_str();
}
} }
const char *log_id(RTLIL::IdString str) const char *log_id(RTLIL::IdString str)
{ {
log_id_cache.insert(str); log_id_cache.insert(str);
const char *p = str.c_str(); const char *p = str.c_str();
if (p[0] == '\\' && p[1] != '$' && p[1] != 0) if (p[0] == '\\' && p[1] != '$' && p[1] != '\\' && p[1] != 0)
return p+1; return p+1;
return p; return p;
} }