diff options
author | Gabe Black <gabeblack@google.com> | 2018-11-06 17:48:58 -0800 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2018-11-09 01:25:15 +0000 |
commit | 1c110fafffdf82034e34146f90729ad92865238d (patch) | |
tree | 111b229ec0ee422f73b3a1495648c1506e8ec348 /src/systemc/utils/sc_report.cc | |
parent | 121160d97f3d41220a26d3371a277434c3defea3 (diff) | |
download | gem5-1c110fafffdf82034e34146f90729ad92865238d.tar.xz |
systemc: Wrap some report maps in functions.
By declaring the map as a static variable in that function and then
returning it, we can guarantee that it's initialized relative to other
static initializers so that we don't try to use a data structure that
isn't constructed yet. This will let us get rid of the dependence on
python for setting up that mapping.
Change-Id: I031ce2039de8f5f79fbb9d76cf1363f15207b64b
Reviewed-on: https://gem5-review.googlesource.com/c/13975
Maintainer: Gabe Black <gabeblack@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'src/systemc/utils/sc_report.cc')
-rw-r--r-- | src/systemc/utils/sc_report.cc | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/systemc/utils/sc_report.cc b/src/systemc/utils/sc_report.cc index 122facc24..a0491d3d5 100644 --- a/src/systemc/utils/sc_report.cc +++ b/src/systemc/utils/sc_report.cc @@ -89,8 +89,8 @@ sc_report::what() const throw() const char * sc_report::get_message(int id) { - auto it = sc_gem5::reportIdToMsgMap.find(id); - if (it == sc_gem5::reportIdToMsgMap.end()) + auto it = sc_gem5::reportIdToMsgMap().find(id); + if (it == sc_gem5::reportIdToMsgMap().end()) return "unknown id"; else return it->second.c_str(); @@ -99,11 +99,11 @@ sc_report::get_message(int id) bool sc_report::is_suppressed(int id) { - auto it = sc_gem5::reportIdToMsgMap.find(id); - if (it == sc_gem5::reportIdToMsgMap.end()) + auto it = sc_gem5::reportIdToMsgMap().find(id); + if (it == sc_gem5::reportIdToMsgMap().end()) return false; - auto &msgInfo = sc_gem5::reportMsgInfoMap[it->second]; + auto &msgInfo = sc_gem5::reportMsgInfoMap()[it->second]; return (msgInfo.actions == SC_DO_NOTHING || (msgInfo.sevActions[SC_INFO] == SC_DO_NOTHING && @@ -127,31 +127,31 @@ sc_report::register_id(int id, const char *msg) SC_REPORT_ERROR(SC_ID_REGISTER_ID_FAILED_, "invalid report message"); return; } - auto p = sc_gem5::reportIdToMsgMap.insert( + auto p = sc_gem5::reportIdToMsgMap().insert( std::pair<int, std::string>(id, msg)); if (!p.second) { SC_REPORT_ERROR(SC_ID_REGISTER_ID_FAILED_, "report id already exists"); } else { - sc_gem5::reportMsgInfoMap[msg].id = id; + sc_gem5::reportMsgInfoMap()[msg].id = id; } } void sc_report::suppress_id(int id, bool suppress) { - auto it = sc_gem5::reportIdToMsgMap.find(id); - if (it == sc_gem5::reportIdToMsgMap.end()) + auto it = sc_gem5::reportIdToMsgMap().find(id); + if (it == sc_gem5::reportIdToMsgMap().end()) return; if (suppress) { - sc_gem5::reportMsgInfoMap[it->second]. + sc_gem5::reportMsgInfoMap()[it->second]. sevActions[SC_INFO] = SC_DO_NOTHING; - sc_gem5::reportMsgInfoMap[it->second]. + sc_gem5::reportMsgInfoMap()[it->second]. sevActions[SC_WARNING] = SC_DO_NOTHING; } else { - sc_gem5::reportMsgInfoMap[it->second]. + sc_gem5::reportMsgInfoMap()[it->second]. sevActions[SC_INFO] = SC_UNSPECIFIED; - sc_gem5::reportMsgInfoMap[it->second]. + sc_gem5::reportMsgInfoMap()[it->second]. sevActions[SC_WARNING] = SC_UNSPECIFIED; } } |