Permalink
Browse files

src: add DCHECK macros

This adds check statements for debugging and refactors the code
accordingly.

PR-URL: #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 MylesBorins committed Nov 14, 2018
1 parent c6bfa66 commit c9f809e36f8b600a0770714a4842e7ccd109f3c8
Showing with 44 additions and 28 deletions.
  1. +4 −4 src/base_object-inl.h
  2. +4 −8 src/env-inl.h
  3. +1 −3 src/env.cc
  4. +4 −3 src/inspector/node_string.h
  5. +2 −3 src/stream_base-inl.h
  6. +6 −7 src/stream_base.cc
  7. +23 −0 src/util.h
@@ -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;
}

@@ -549,20 +549,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;
}

@@ -617,9 +617,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);
}
@@ -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_
@@ -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);
}
@@ -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;

@@ -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.

0 comments on commit c9f809e

Please sign in to comment.