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.
This commit is contained in:
parent
f26051eb1a
commit
7e42b753e7
|
@ -122,18 +122,14 @@ operator<<(std::ostream& out, const Debug& obj)
|
||||||
const bool ERROR_MESSAGE_FLAG = true;
|
const bool ERROR_MESSAGE_FLAG = true;
|
||||||
const bool WARNING_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
|
#undef assert
|
||||||
#define assert(EXPR) ASSERT(EXPR)
|
#define assert(EXPR) ASSERT(EXPR)
|
||||||
#undef ASSERT
|
#undef ASSERT
|
||||||
|
|
||||||
|
#ifndef NDEBUG
|
||||||
|
|
||||||
#define ASSERT(EXPR) do { \
|
#define ASSERT(EXPR) do { \
|
||||||
using namespace std; \
|
using namespace std; \
|
||||||
if (ASSERT_FLAG) { \
|
|
||||||
if (!(EXPR)) { \
|
if (!(EXPR)) { \
|
||||||
cerr << "failed assertion '" \
|
cerr << "failed assertion '" \
|
||||||
<< #EXPR << "' at fn " \
|
<< #EXPR << "' at fn " \
|
||||||
|
@ -157,24 +153,13 @@ const bool ASSERT_FLAG = true;
|
||||||
} \
|
} \
|
||||||
abort(); \
|
abort(); \
|
||||||
} \
|
} \
|
||||||
} \
|
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define BREAK(X) do { \
|
#else
|
||||||
using namespace std; \
|
|
||||||
cerr << "breakpoint '" \
|
#define ASSERT(EXPR) do {} while (0)
|
||||||
<< #X << "' reached at fn " \
|
|
||||||
<< __PRETTY_FUNCTION__ << " in " \
|
#endif // NDEBUG
|
||||||
<< __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); \
|
|
||||||
} \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define ERROR_MSG(MESSAGE) do { \
|
#define ERROR_MSG(MESSAGE) do { \
|
||||||
using namespace std; \
|
using namespace std; \
|
||||||
|
|
|
@ -165,9 +165,11 @@ class FuncCallExprAST(ExprAST):
|
||||||
elif self.proc_name == "assert":
|
elif self.proc_name == "assert":
|
||||||
error = self.exprs[0].embedError('"assert failure"')
|
error = self.exprs[0].embedError('"assert failure"')
|
||||||
code('''
|
code('''
|
||||||
if (ASSERT_FLAG && !(${{cvec[0]}})) {
|
#ifndef NDEBUG
|
||||||
|
if (!(${{cvec[0]}})) {
|
||||||
$error
|
$error
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
''')
|
''')
|
||||||
|
|
||||||
elif self.proc_name == "continueProcessing":
|
elif self.proc_name == "continueProcessing":
|
||||||
|
|
Loading…
Reference in a new issue