Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Internal: Use Stephen's name, always_assert.
It's better than mandatory_assert.
  • Loading branch information
kohler committed Sep 17, 2013
1 parent 117bdca commit 7daac50
Show file tree
Hide file tree
Showing 17 changed files with 173 additions and 171 deletions.
4 changes: 2 additions & 2 deletions compiler.cc
Expand Up @@ -17,8 +17,8 @@
#include <stdio.h>
#include <stdlib.h>

void fail_mandatory_assert(const char* file, int line,
const char* assertion, const char* message) {
void fail_always_assert(const char* file, int line,
const char* assertion, const char* message) {
if (message)
fprintf(stderr, "assertion \"%s\" [%s] failed: file \"%s\", line %d\n",
message, assertion, file, line);
Expand Down
5 changes: 3 additions & 2 deletions config.h.in
Expand Up @@ -286,8 +286,9 @@
#endif

/** @brief Assert macro that always runs. */
extern void fail_mandatory_assert(const char* file, int line, const char* assertion, const char* message = 0) __attribute__((noreturn));
#define mandatory_assert(x, ...) do { if (!(x)) fail_mandatory_assert(__FILE__, __LINE__, #x, ## __VA_ARGS__); } while (0)
extern void fail_always_assert(const char* file, int line, const char* assertion, const char* message = 0) __attribute__((noreturn));
#define always_assert(x, ...) do { if (!(x)) fail_always_assert(__FILE__, __LINE__, #x, ## __VA_ARGS__); } while (0)
#define mandatory_assert always_assert

/** @brief Assert macro for invariants.

Expand Down
5 changes: 3 additions & 2 deletions configure.ac
Expand Up @@ -393,8 +393,9 @@ AH_BOTTOM([#if !HAVE_ALL_ASSERTIONS_ENABLED && !HAVE_ASSERTIONS_ENABLED
#endif
/** @brief Assert macro that always runs. */
extern void fail_mandatory_assert(const char* file, int line, const char* assertion, const char* message = 0) __attribute__((noreturn));
#define mandatory_assert(x, ...) do { if (!(x)) fail_mandatory_assert(__FILE__, __LINE__, #x, ## __VA_ARGS__); } while (0)
extern void fail_always_assert(const char* file, int line, const char* assertion, const char* message = 0) __attribute__((noreturn));
#define always_assert(x, ...) do { if (!(x)) fail_always_assert(__FILE__, __LINE__, #x, ## __VA_ARGS__); } while (0)
#define mandatory_assert always_assert
/** @brief Assert macro for invariants.
Expand Down
2 changes: 1 addition & 1 deletion file.hh
Expand Up @@ -62,7 +62,7 @@ inline void
checked_write(int fd, const void *buf, size_t count)
{
ssize_t x = safe_write(fd, buf, count);
mandatory_assert(size_t(x) == count);
always_assert(size_t(x) == count);
}

template <typename T> inline void
Expand Down
2 changes: 1 addition & 1 deletion kvio.cc
Expand Up @@ -132,7 +132,7 @@ int kvcheck(kvin* kv, int tryhard) {
return -1;
} else if (tryhard == 1) {
// non-blocking read
mandatory_assert(kv->fd < FD_SETSIZE);
always_assert(kv->fd < FD_SETSIZE);
fd_set rfds;
FD_ZERO(&rfds);
FD_SET(kv->fd, &rfds);
Expand Down
2 changes: 1 addition & 1 deletion kvio.hh
Expand Up @@ -96,7 +96,7 @@ inline int kvread_str_alloc(kvin* kv, lcdf::Str& v) {

inline int kvread_str(kvin* kv, char* buf, int max, int& vlen) {
KVR(kv, vlen);
mandatory_assert(vlen <= max);
always_assert(vlen <= max);
kvread(kv, buf, vlen);
return sizeof(vlen) + vlen;
}
Expand Down
10 changes: 5 additions & 5 deletions kvtest.hh
Expand Up @@ -695,7 +695,7 @@ void kvtest_wd2(C &client)
quick_istr xstr(0);

client.put(Str("n"), client.nthreads());
mandatory_assert(client.nthreads() > 1);
always_assert(client.nthreads() > 1);

// set up status keys
snprintf(sbuf, sizeof(sbuf), "s%03d", client.id());
Expand Down Expand Up @@ -764,7 +764,7 @@ void kvtest_wd2_check(C &client)
int n;
client.get(Str("n"), &n);
client.wait_all();
mandatory_assert(n > 1);
always_assert(n > 1);
Json result;

char buf[32];
Expand Down Expand Up @@ -1076,7 +1076,7 @@ kvtest_ruscale_init(C &client)
const int firstkey = ruscale_partsz * client.ruscale_init_part_no();
// Insert in random order
int *keys = (int *) malloc(sizeof(int) * ruscale_partsz);
mandatory_assert(keys);
always_assert(keys);
for(int i = 0; i < ruscale_partsz; i++)
keys[i] = i + firstkey;
for(int i = 0; i < ruscale_partsz; i++)
Expand Down Expand Up @@ -1213,7 +1213,7 @@ void kvtest_r1_seed(C &client, int seed)
else
n = std::min(client.limit(), (uint64_t) INT_MAX);
long *a = (long *) malloc(sizeof(long) * n);
mandatory_assert(a);
always_assert(a);

client.rand.reset(seed);
for (int i = 0; i < n; i++)
Expand Down Expand Up @@ -1279,7 +1279,7 @@ void kvtest_rcol1(C &client, int seed, long maxkeys)
n = std::min(client.limit(), (uint64_t) INT_MAX);
int col = client.id() % 24;
long *a = (long *) malloc(sizeof(long) * n);
mandatory_assert(a);
always_assert(a);

client.rand.reset(seed);
for (int i = 0; i < n; i++)
Expand Down
20 changes: 10 additions & 10 deletions log.cc
Expand Up @@ -182,7 +182,7 @@ loginfo::loginfo(logset* ls, int logindex) {
len_ = 20 * 1024 * 1024;
pos_ = 0;
buf_ = (char *) malloc(len_);
mandatory_assert(buf_);
always_assert(buf_);
log_epoch_ = 0;
quiescent_epoch_ = 0;
wake_epoch_ = 0;
Expand All @@ -209,7 +209,7 @@ void loginfo::initialize(const String& logfile) {

ti_ = threadinfo::make(threadinfo::TI_LOG, logindex_);
int r = pthread_create(&ti_->ti_threadid, 0, ::logger, this);
mandatory_assert(r == 0);
always_assert(r == 0);
}

// one logger thread per logs[].
Expand Down Expand Up @@ -239,9 +239,9 @@ void loginfo::logger() {

int fd = open(String(f_.filename_).c_str(),
O_WRONLY | O_APPEND | O_CREAT, 0666);
mandatory_assert(fd >= 0);
always_assert(fd >= 0);
char *x_buf = (char *) malloc(len_);
mandatory_assert(x_buf);
always_assert(x_buf);

while (1) {
uint32_t nb = 0;
Expand Down Expand Up @@ -271,7 +271,7 @@ void loginfo::logger() {
kvepoch_t x_epoch = log_epoch_;
release();
ssize_t r = write(fd, x_buf, x_pos);
mandatory_assert(r == ssize_t(x_pos));
always_assert(r == ssize_t(x_pos));
fsync(fd);
flushed_epoch_ = x_epoch;
// printf("log %d %d\n", ti_->ti_index, x_pos);
Expand Down Expand Up @@ -577,7 +577,7 @@ logreplay::replayandclean1(replay_query<row_type> &q,
|| (!min_epoch && !repbegin))
repbegin = pos;
if (lr.epoch >= max_epoch) {
mandatory_assert(repbegin);
always_assert(repbegin);
repend = nextpos;
break;
}
Expand Down Expand Up @@ -626,7 +626,7 @@ logreplay::replayandclean1(replay_query<row_type> &q,

char tmplog[256];
int r = snprintf(tmplog, sizeof(tmplog), "%s.tmp", filename_.c_str());
mandatory_assert(r >= 0 && size_t(r) < sizeof(tmplog));
always_assert(r >= 0 && size_t(r) < sizeof(tmplog));

printf("replay %s: truncate from %" PRIdOFF_T " to %" PRIdSIZE_T " [%" PRIdSIZE_T ",%" PRIdSIZE_T ")\n",
filename_.c_str(), size_, repend - repbegin,
Expand All @@ -640,9 +640,9 @@ logreplay::replayandclean1(replay_query<row_type> &q,
fd = replay_copy(tmplog, repbegin, repend);

r = fsync(fd);
mandatory_assert(r == 0);
always_assert(r == 0);
r = close(fd);
mandatory_assert(r == 0);
always_assert(r == 0);

// replace old log with rewritten log
if (unmap() != 0)
Expand Down Expand Up @@ -703,7 +703,7 @@ logreplay::replay_copy(const char *tmpname, const char *first, const char *last)
}

ssize_t w = safe_write(fd, first, last - first);
mandatory_assert(w >= 0 && w == last - first);
always_assert(w >= 0 && w == last - first);

return fd;
}
Expand Down
28 changes: 14 additions & 14 deletions masstree.cc
Expand Up @@ -368,27 +368,27 @@ void query_table<P>::test(threadinfo& ti) {

scanner = scan_tester(values + 10, values + 11);
int r = t.table_.scan(Str(values[10]), true, scanner, ti);
mandatory_assert(r == 1);
always_assert(r == 1);

scanner = scan_tester(values + 10, values + 11);
r = t.table_.scan(Str(values[10] + 1), true, scanner, ti);
mandatory_assert(r == 1);
always_assert(r == 1);

scanner = scan_tester(values + 11, values + 12);
r = t.table_.scan(Str(values[10]), false, scanner, ti);
mandatory_assert(r == 1);
always_assert(r == 1);

scanner = scan_tester(values + 10, values + 11);
r = t.table_.scan(Str("aaaaaaaaaaaaaaaaaaaaaaaaaZ"), true, scanner, ti);
mandatory_assert(r == 1);
always_assert(r == 1);

scanner = scan_tester(values + 11, values + 12);
r = t.table_.scan(Str(values[11]), true, scanner, ti);
mandatory_assert(r == 1);
always_assert(r == 1);

scanner = scan_tester(values + 12, values + 13);
r = t.table_.scan(Str(values[11]), false, scanner, ti);
mandatory_assert(r == 1);
always_assert(r == 1);


scanner = scan_tester(end_values - 3, end_values, true);
Expand All @@ -399,11 +399,11 @@ void query_table<P>::test(threadinfo& ti) {

scanner = scan_tester(end_values - 2, end_values, true);
r = scanner.rscan(t, ti);
mandatory_assert(r == 2);
always_assert(r == 2);
scanner.vbegin_ = std::max(scanner.vbegin_ - 2, (const char * const *) values);
fprintf(stderr, "-scanbreak-\n");
r = scanner.rscan(t, ti);
mandatory_assert(r == 2);
always_assert(r == 2);

scanner = scan_tester(end_values - 8, end_values, true);
while (scanner.rscan(t, ti)) {
Expand All @@ -413,27 +413,27 @@ void query_table<P>::test(threadinfo& ti) {

scanner = scan_tester(values + 10, values + 11);
r = t.table_.rscan(Str(values[10]), true, scanner, ti);
mandatory_assert(r == 1);
always_assert(r == 1);

scanner = scan_tester(values + 10, values + 11);
r = t.table_.rscan(Str("aaaaaaaaaaaaaaaaaaaaaaaaab"), true, scanner, ti);
mandatory_assert(r == 1);
always_assert(r == 1);

scanner = scan_tester(values + 9, values + 10);
r = t.table_.rscan(Str(values[10]), false, scanner, ti);
mandatory_assert(r == 1);
always_assert(r == 1);

scanner = scan_tester(values + 10, values + 11);
r = t.table_.rscan(Str("aaaaaaaaaaaaaaaaaaaaaaaaab"), true, scanner, ti);
mandatory_assert(r == 1);
always_assert(r == 1);

scanner = scan_tester(values + 11, values + 12);
r = t.table_.rscan(Str(values[11]), true, scanner, ti);
mandatory_assert(r == 1);
always_assert(r == 1);

scanner = scan_tester(values + 10, values + 11);
r = t.table_.rscan(Str(values[11]), false, scanner, ti);
mandatory_assert(r == 1);
always_assert(r == 1);


Str pv[10];
Expand Down
2 changes: 1 addition & 1 deletion misc.cc
Expand Up @@ -98,7 +98,7 @@ struct allocator {
return initialize_page(x, HugePageSize, nl * CACHE_LINE_SIZE);
#else
(void) HugePageSize, (void) nl;
mandatory_assert(0 && "No hugepage support is detected");
always_assert(0 && "No hugepage support is detected");
#endif
}
};
Expand Down

0 comments on commit 7daac50

Please sign in to comment.