From 114a78d11a629f030e5fd0b6e5655ed70ee7ca9b Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Fri, 30 Jan 2015 22:12:26 +0100 Subject: [PATCH] Some cleanups in log.cc --- kernel/log.cc | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/kernel/log.cc b/kernel/log.cc index 401dbeeb0..061c5074c 100644 --- a/kernel/log.cc +++ b/kernel/log.cc @@ -49,10 +49,10 @@ bool log_cmd_error_throw = false; bool log_quiet_warnings = false; int log_verbose_level; -std::vector header_count; -std::set log_id_cache; -std::list string_buf; -int string_buf_size = 0; +vector header_count; +pool log_id_cache; +vector string_buf; +int string_buf_index = -1; static struct timeval initial_tv = { 0, 0 }; static bool next_print_log = false; @@ -249,7 +249,7 @@ void log_pop() header_count.pop_back(); log_id_cache.clear(); string_buf.clear(); - string_buf_size = 0; + string_buf_index = -1; log_flush(); } @@ -352,7 +352,7 @@ void log_reset_stack() header_count.pop_back(); log_id_cache.clear(); string_buf.clear(); - string_buf_size = 0; + string_buf_index = -1; log_flush(); } @@ -374,20 +374,22 @@ const char *log_signal(const RTLIL::SigSpec &sig, bool autoint) std::stringstream buf; ILANG_BACKEND::dump_sigspec(buf, sig, autoint); - if (string_buf_size < 100) - string_buf_size++; - else - string_buf.pop_front(); - string_buf.push_back(buf.str()); - - return string_buf.back().c_str(); + if (string_buf.size() < 100) { + string_buf.push_back(buf.str()); + return string_buf.back().c_str(); + } else { + if (++string_buf_index == 100) + string_buf_index = 0; + string_buf[string_buf_index] = buf.str(); + return string_buf[string_buf_index].c_str(); + } } const char *log_id(RTLIL::IdString str) { log_id_cache.insert(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; }