summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Beckmann <Brad.Beckmann@amd.com>2010-12-08 11:52:02 -0800
committerBrad Beckmann <Brad.Beckmann@amd.com>2010-12-08 11:52:02 -0800
commit7e42b753e7cc03bf7271dfc98e69aa56973df9ba (patch)
treec35aa84c5bc0754553b8c190265cd5d7593fdeaa
parentf26051eb1a5b8f3522acbb871133de66278fd517 (diff)
downloadgem5-7e42b753e7cc03bf7271dfc98e69aa56973df9ba.tar.xz
ruby: remove Ruby asserts for m5.fast
This diff is for changing the way ASSERT is handled in Ruby. m5.fast compiles out the assert statements by using the macro NDEBUG. Ruby uses the macro RUBY_NO_ASSERT to do so. This macro has been removed and NDEBUG has been put in its place.
-rw-r--r--src/mem/ruby/common/Debug.hh81
-rw-r--r--src/mem/slicc/ast/FuncCallExprAST.py4
2 files changed, 36 insertions, 49 deletions
diff --git a/src/mem/ruby/common/Debug.hh b/src/mem/ruby/common/Debug.hh
index 7005d95f7..8a2b75de3 100644
--- a/src/mem/ruby/common/Debug.hh
+++ b/src/mem/ruby/common/Debug.hh
@@ -122,60 +122,45 @@ operator<<(std::ostream& out, const Debug& obj)
const bool ERROR_MESSAGE_FLAG = true;
const bool WARNING_MESSAGE_FLAG = true;
-#ifdef RUBY_NO_ASSERT
-const bool ASSERT_FLAG = false;
-#else
-const bool ASSERT_FLAG = true;
-#endif
-
#undef assert
#define assert(EXPR) ASSERT(EXPR)
#undef ASSERT
-#define ASSERT(EXPR) do { \
- using namespace std; \
- if (ASSERT_FLAG) { \
- if (!(EXPR)) { \
- cerr << "failed assertion '" \
- << #EXPR << "' at fn " \
- << __PRETTY_FUNCTION__ << " in " \
- << __FILE__ << ":" \
- << __LINE__ << endl << flush; \
- (*debug_cout_ptr) << "failed assertion '" \
- << #EXPR << "' at fn " \
- << __PRETTY_FUNCTION__ << " in " \
- << __FILE__ << ":" \
- << __LINE__ << endl << flush; \
- if (isatty(STDIN_FILENO)) { \
- cerr << "At this point you might want to attach a debug to " \
- << "the running and get to the" << endl \
- << "crash site; otherwise press enter to continue" \
- << endl \
- << "PID: " << getpid() \
- << endl << flush; \
- char c; \
- cin.get(c); \
- } \
- abort(); \
- } \
- } \
-} while (0)
-#define BREAK(X) do { \
- using namespace std; \
- cerr << "breakpoint '" \
- << #X << "' reached at fn " \
- << __PRETTY_FUNCTION__ << " in " \
- << __FILE__ << ":" \
- << __LINE__ << endl << flush; \
- if(isatty(STDIN_FILENO)) { \
- cerr << "press enter to continue" << endl; \
- cerr << "PID: " << getpid(); \
- cerr << endl << flush; \
- char c; \
- cin.get(c); \
- } \
+#ifndef NDEBUG
+
+#define ASSERT(EXPR) do { \
+ using namespace std; \
+ if (!(EXPR)) { \
+ cerr << "failed assertion '" \
+ << #EXPR << "' at fn " \
+ << __PRETTY_FUNCTION__ << " in " \
+ << __FILE__ << ":" \
+ << __LINE__ << endl << flush; \
+ (*debug_cout_ptr) << "failed assertion '" \
+ << #EXPR << "' at fn " \
+ << __PRETTY_FUNCTION__ << " in " \
+ << __FILE__ << ":" \
+ << __LINE__ << endl << flush; \
+ if (isatty(STDIN_FILENO)) { \
+ cerr << "At this point you might want to attach a debug to " \
+ << "the running and get to the" << endl \
+ << "crash site; otherwise press enter to continue" \
+ << endl \
+ << "PID: " << getpid() \
+ << endl << flush; \
+ char c; \
+ cin.get(c); \
+ } \
+ abort(); \
+ } \
} while (0)
+#else
+
+#define ASSERT(EXPR) do {} while (0)
+
+#endif // NDEBUG
+
#define ERROR_MSG(MESSAGE) do { \
using namespace std; \
if (ERROR_MESSAGE_FLAG) { \
diff --git a/src/mem/slicc/ast/FuncCallExprAST.py b/src/mem/slicc/ast/FuncCallExprAST.py
index 830b10c21..829203d53 100644
--- a/src/mem/slicc/ast/FuncCallExprAST.py
+++ b/src/mem/slicc/ast/FuncCallExprAST.py
@@ -165,9 +165,11 @@ class FuncCallExprAST(ExprAST):
elif self.proc_name == "assert":
error = self.exprs[0].embedError('"assert failure"')
code('''
-if (ASSERT_FLAG && !(${{cvec[0]}})) {
+#ifndef NDEBUG
+if (!(${{cvec[0]}})) {
$error
}
+#endif
''')
elif self.proc_name == "continueProcessing":