summaryrefslogtreecommitdiff
path: root/src/systemc/utils/sc_report.cc
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2018-11-06 17:48:58 -0800
committerGabe Black <gabeblack@google.com>2018-11-09 01:25:15 +0000
commit1c110fafffdf82034e34146f90729ad92865238d (patch)
tree111b229ec0ee422f73b3a1495648c1506e8ec348 /src/systemc/utils/sc_report.cc
parent121160d97f3d41220a26d3371a277434c3defea3 (diff)
downloadgem5-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.cc26
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;
}
}