Skip to content

Commit

Permalink
src: add DCHECK macros
Browse files Browse the repository at this point in the history
This adds check statements for debugging and refactors the code
accordingly.

PR-URL: nodejs#24359
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
  • Loading branch information
kiyomizumia authored and BridgeAR committed Dec 24, 2018
1 parent 65d8179 commit 71bc7e1
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 28 deletions.
8 changes: 4 additions & 4 deletions src/base_object-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,10 @@ v8::Local<v8::Object> BaseObject::object() const {

v8::Local<v8::Object> BaseObject::object(v8::Isolate* isolate) const {
v8::Local<v8::Object> handle = object();
#ifdef DEBUG
CHECK_EQ(handle->CreationContext()->GetIsolate(), isolate);
CHECK_EQ(env_->isolate(), isolate);
#endif

DCHECK_EQ(handle->CreationContext()->GetIsolate(), isolate);
DCHECK_EQ(env_->isolate(), isolate);

return handle;
}

Expand Down
12 changes: 4 additions & 8 deletions src/env-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -559,20 +559,16 @@ inline void Environment::set_http2_state(
}

bool Environment::debug_enabled(DebugCategory category) const {
#ifdef DEBUG
CHECK_GE(static_cast<int>(category), 0);
CHECK_LT(static_cast<int>(category),
DCHECK_GE(static_cast<int>(category), 0);
DCHECK_LT(static_cast<int>(category),
static_cast<int>(DebugCategory::CATEGORY_COUNT));
#endif
return debug_enabled_[static_cast<int>(category)];
}

void Environment::set_debug_enabled(DebugCategory category, bool enabled) {
#ifdef DEBUG
CHECK_GE(static_cast<int>(category), 0);
CHECK_LT(static_cast<int>(category),
DCHECK_GE(static_cast<int>(category), 0);
DCHECK_LT(static_cast<int>(category),
static_cast<int>(DebugCategory::CATEGORY_COUNT));
#endif
debug_enabled_[static_cast<int>(category)] = enabled;
}

Expand Down
4 changes: 1 addition & 3 deletions src/env.cc
Original file line number Diff line number Diff line change
Expand Up @@ -622,9 +622,7 @@ void Environment::RunAndClearNativeImmediates() {
};
while (drain_list()) {}

#ifdef DEBUG
CHECK_GE(immediate_info()->count(), count);
#endif
DCHECK_GE(immediate_info()->count(), count);
immediate_info()->count_dec(count);
immediate_info()->ref_count_dec(ref_count);
}
Expand Down
7 changes: 4 additions & 3 deletions src/inspector/node_string.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ extern size_t kNotFound;
} // namespace inspector
} // namespace node

#define DCHECK CHECK
#define DCHECK_LT CHECK_LT

#ifndef DCHECK
#define DCHECK CHECK
#define DCHECK_LT CHECK_LT
#endif // DCHECK
#endif // SRC_INSPECTOR_NODE_STRING_H_
5 changes: 2 additions & 3 deletions src/stream_base-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -448,9 +448,8 @@ inline void StreamReq::Done(int status, const char* error_str) {
}

inline void StreamReq::ResetObject(v8::Local<v8::Object> obj) {
#ifdef DEBUG
CHECK_GT(obj->InternalFieldCount(), StreamReq::kStreamReqField);
#endif
DCHECK_GT(obj->InternalFieldCount(), StreamReq::kStreamReqField);

obj->SetAlignedPointerInInternalField(0, nullptr); // BaseObject field.
obj->SetAlignedPointerInInternalField(StreamReq::kStreamReqField, nullptr);
}
Expand Down
13 changes: 6 additions & 7 deletions src/stream_base.cc
Original file line number Diff line number Diff line change
Expand Up @@ -292,17 +292,16 @@ void StreamBase::CallJSOnreadMethod(ssize_t nread,
size_t offset) {
Environment* env = env_;

#ifdef DEBUG
CHECK_EQ(static_cast<int32_t>(nread), nread);
CHECK_LE(offset, INT32_MAX);
DCHECK_EQ(static_cast<int32_t>(nread), nread);
DCHECK_LE(offset, INT32_MAX);

if (ab.IsEmpty()) {
CHECK_EQ(offset, 0);
CHECK_LE(nread, 0);
DCHECK_EQ(offset, 0);
DCHECK_LE(nread, 0);
} else {
CHECK_GE(nread, 0);
DCHECK_GE(nread, 0);
}
#endif

env->stream_base_state()[kReadBytesOrError] = nread;
env->stream_base_state()[kArrayBufferOffset] = offset;

Expand Down
23 changes: 23 additions & 0 deletions src/util.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,29 @@ void DumpBacktrace(FILE* fp);
#define CHECK_NOT_NULL(val) CHECK((val) != nullptr)
#define CHECK_IMPLIES(a, b) CHECK(!(a) || (b))

#ifdef DEBUG
#define DCHECK_EQ(a, b) CHECK((a) == (b))
#define DCHECK_GE(a, b) CHECK((a) >= (b))
#define DCHECK_GT(a, b) CHECK((a) > (b))
#define DCHECK_LE(a, b) CHECK((a) <= (b))
#define DCHECK_LT(a, b) CHECK((a) < (b))
#define DCHECK_NE(a, b) CHECK((a) != (b))
#define DCHECK_NULL(val) CHECK((val) == nullptr)
#define DCHECK_NOT_NULL(val) CHECK((val) != nullptr)
#define DCHECK_IMPLIES(a, b) CHECK(!(a) || (b))
#else
#define DCHECK_EQ(a, b)
#define DCHECK_GE(a, b)
#define DCHECK_GT(a, b)
#define DCHECK_LE(a, b)
#define DCHECK_LT(a, b)
#define DCHECK_NE(a, b)
#define DCHECK_NULL(val)
#define DCHECK_NOT_NULL(val)
#define DCHECK_IMPLIES(a, b)
#endif


#define UNREACHABLE() ABORT()

// TAILQ-style intrusive list node.
Expand Down

0 comments on commit 71bc7e1

Please sign in to comment.