Test RTC_DCHECK_IS_ON instead of checking DCHECK_ALWAYS_ON everywhere
The former is always defined (by webrtc/base/checks.h) to either 0 or 1, whereas the latter isn't necessarily defined. This is a re-land of https://codereview.webrtc.org/2384693002, which broke Chromium. We re-land without changing this CL at all, because the thing that needed fixing was in Chromium: https://codereview.chromium.org/2384263004. NOTRY=true TBR=ossu@webrtc.org BUG=webrtc:6451 Review-Url: https://codereview.webrtc.org/2389943003 Cr-Commit-Position: refs/heads/master@{#14508}
This commit is contained in:
parent
cd97b2b943
commit
5377bc77cc
@ -398,7 +398,7 @@ void StatsCollector::AddLocalAudioTrack(AudioTrackInterface* audio_track,
|
||||
uint32_t ssrc) {
|
||||
RTC_DCHECK(pc_->session()->signaling_thread()->IsCurrent());
|
||||
RTC_DCHECK(audio_track != NULL);
|
||||
#if (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON))
|
||||
#if RTC_DCHECK_IS_ON
|
||||
for (const auto& track : local_audio_tracks_)
|
||||
RTC_DCHECK(track.first != audio_track || track.second != ssrc);
|
||||
#endif
|
||||
|
||||
@ -276,7 +276,7 @@ bool StatsReport::Value::Equals(const Value& other) const {
|
||||
case kFloat:
|
||||
return value_.float_ == other.value_.float_;
|
||||
case kStaticString: {
|
||||
#if (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON))
|
||||
#if RTC_DCHECK_IS_ON
|
||||
if (value_.static_string_ != other.value_.static_string_) {
|
||||
RTC_DCHECK(strcmp(value_.static_string_, other.value_.static_string_) !=
|
||||
0)
|
||||
@ -306,7 +306,7 @@ bool StatsReport::Value::operator==(const char* value) const {
|
||||
return value_.string_->compare(value) == 0;
|
||||
if (type_ != kStaticString)
|
||||
return false;
|
||||
#if (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON))
|
||||
#if RTC_DCHECK_IS_ON
|
||||
if (value_.static_string_ != value)
|
||||
RTC_DCHECK(strcmp(value_.static_string_, value) != 0)
|
||||
<< "Duplicate global?";
|
||||
|
||||
@ -349,7 +349,7 @@ class BufferT {
|
||||
// Called when *this has been moved from. Conceptually it's a no-op, but we
|
||||
// can mutate the state slightly to help subsequent sanity checks catch bugs.
|
||||
void OnMovedFrom() {
|
||||
#ifdef NDEBUG
|
||||
#if RTC_DCHECK_IS_ON
|
||||
// Make *this consistent and empty. Shouldn't be necessary, but better safe
|
||||
// than sorry.
|
||||
size_ = 0;
|
||||
|
||||
@ -13,7 +13,10 @@
|
||||
|
||||
#include "webrtc/typedefs.h"
|
||||
|
||||
#if (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON))
|
||||
// If you for some reson need to know if DCHECKs are on, test the value of
|
||||
// RTC_DCHECK_IS_ON. (Test its value, not if it's defined; it'll always be
|
||||
// defined, to either a true or a false value.)
|
||||
#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
|
||||
#define RTC_DCHECK_IS_ON 1
|
||||
#else
|
||||
#define RTC_DCHECK_IS_ON 0
|
||||
@ -90,9 +93,9 @@ namespace rtc {
|
||||
? static_cast<void>(0) \
|
||||
: rtc::FatalMessageVoidify() & rtc::FatalMessage("", 0).stream()
|
||||
|
||||
// RTC_CHECK dies with a fatal error if condition is not true. It is *not*
|
||||
// controlled by NDEBUG, so the check will be executed regardless of
|
||||
// compilation mode.
|
||||
// RTC_CHECK dies with a fatal error if condition is not true. It is *not*
|
||||
// controlled by NDEBUG or anything else, so the check will be executed
|
||||
// regardless of compilation mode.
|
||||
//
|
||||
// We make sure RTC_CHECK et al. always evaluates their arguments, as
|
||||
// doing RTC_CHECK(FunctionWithSideEffect()) is a common idiom.
|
||||
|
||||
@ -12,6 +12,7 @@
|
||||
#define WEBRTC_BASE_CRITICALSECTION_H_
|
||||
|
||||
#include "webrtc/base/atomicops.h"
|
||||
#include "webrtc/base/checks.h"
|
||||
#include "webrtc/base/constructormagic.h"
|
||||
#include "webrtc/base/thread_annotations.h"
|
||||
#include "webrtc/base/platform_thread_types.h"
|
||||
@ -37,11 +38,7 @@
|
||||
#include <dispatch/dispatch.h>
|
||||
#endif
|
||||
|
||||
#if (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON))
|
||||
#define CS_DEBUG_CHECKS 1
|
||||
#else
|
||||
#define CS_DEBUG_CHECKS 0
|
||||
#endif
|
||||
#define CS_DEBUG_CHECKS RTC_DCHECK_IS_ON
|
||||
|
||||
#if CS_DEBUG_CHECKS
|
||||
#define CS_DEBUG_CODE(x) x
|
||||
|
||||
@ -12,18 +12,9 @@
|
||||
#define WEBRTC_BASE_SEQUENCED_TASK_CHECKER_H_
|
||||
|
||||
// Apart from debug builds, we also enable the sequence checker in
|
||||
// builds with DCHECK_ALWAYS_ON so that trybots and waterfall bots
|
||||
// builds with RTC_DCHECK_IS_ON so that trybots and waterfall bots
|
||||
// with this define will get the same level of checking as debug bots.
|
||||
//
|
||||
// Note that this does not perfectly match situations where RTC_DCHECK is
|
||||
// enabled. For example a non-official release build may have
|
||||
// DCHECK_ALWAYS_ON undefined (and therefore SequencedTaskChecker would be
|
||||
// disabled) but have RTC_DCHECKs enabled at runtime.
|
||||
#if (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON))
|
||||
#define ENABLE_SEQUENCED_TASK_CHECKER 1
|
||||
#else
|
||||
#define ENABLE_SEQUENCED_TASK_CHECKER 0
|
||||
#endif
|
||||
#define ENABLE_SEQUENCED_TASK_CHECKER RTC_DCHECK_IS_ON
|
||||
|
||||
#include "webrtc/base/checks.h"
|
||||
#include "webrtc/base/constructormagic.h"
|
||||
|
||||
@ -198,7 +198,7 @@ TEST(SequencedTaskCheckerTest, DetachFromTaskQueueAndUseOnThread) {
|
||||
EXPECT_TRUE(done_event.Wait(1000));
|
||||
}
|
||||
|
||||
#if !defined(NDEBUG) || DCHECK_ALWAYS_ON
|
||||
#if RTC_DCHECK_IS_ON
|
||||
TEST(SequencedTaskCheckerTest, MethodNotAllowedOnDifferentThreadInDebug) {
|
||||
RunMethodOnDifferentThread(false);
|
||||
}
|
||||
@ -208,7 +208,7 @@ TEST(SequencedTaskCheckerTest, MethodAllowedOnDifferentThreadInRelease) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(NDEBUG) || DCHECK_ALWAYS_ON
|
||||
#if RTC_DCHECK_IS_ON
|
||||
TEST(SequencedTaskCheckerTest, MethodNotAllowedOnDifferentTaskQueueInDebug) {
|
||||
RunMethodOnDifferentTaskQueue(false);
|
||||
}
|
||||
@ -218,7 +218,7 @@ TEST(SequencedTaskCheckerTest, MethodAllowedOnDifferentTaskQueueInRelease) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(NDEBUG) || DCHECK_ALWAYS_ON
|
||||
#if RTC_DCHECK_IS_ON
|
||||
TEST(SequencedTaskCheckerTest, DetachFromTaskQueueInDebug) {
|
||||
DetachThenCallFromDifferentTaskQueue(false);
|
||||
}
|
||||
|
||||
@ -77,7 +77,7 @@ size_t asccpyn(wchar_t* buffer, size_t buflen,
|
||||
} else if (srclen >= buflen) {
|
||||
srclen = buflen - 1;
|
||||
}
|
||||
#if !defined(NDEBUG)
|
||||
#if RTC_DCHECK_IS_ON
|
||||
// Double check that characters are not UTF-8
|
||||
for (size_t pos = 0; pos < srclen; ++pos)
|
||||
RTC_DCHECK_LT(static_cast<unsigned char>(source[pos]), 128);
|
||||
|
||||
@ -14,19 +14,10 @@
|
||||
#define WEBRTC_BASE_THREAD_CHECKER_H_
|
||||
|
||||
// Apart from debug builds, we also enable the thread checker in
|
||||
// builds with DCHECK_ALWAYS_ON so that trybots and waterfall bots
|
||||
// builds with RTC_DCHECK_IS_ON so that trybots and waterfall bots
|
||||
// with this define will get the same level of thread checking as
|
||||
// debug bots.
|
||||
//
|
||||
// Note that this does not perfectly match situations where RTC_DCHECK is
|
||||
// enabled. For example a non-official release build may have
|
||||
// DCHECK_ALWAYS_ON undefined (and therefore ThreadChecker would be
|
||||
// disabled) but have RTC_DCHECKs enabled at runtime.
|
||||
#if (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON))
|
||||
#define ENABLE_THREAD_CHECKER 1
|
||||
#else
|
||||
#define ENABLE_THREAD_CHECKER 0
|
||||
#endif
|
||||
#define ENABLE_THREAD_CHECKER RTC_DCHECK_IS_ON
|
||||
|
||||
#include "webrtc/base/checks.h"
|
||||
#include "webrtc/base/constructormagic.h"
|
||||
|
||||
@ -21,11 +21,7 @@
|
||||
|
||||
// Duplicated from base/threading/thread_checker.h so that we can be
|
||||
// good citizens there and undef the macro.
|
||||
#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
|
||||
#define ENABLE_THREAD_CHECKER 1
|
||||
#else
|
||||
#define ENABLE_THREAD_CHECKER 0
|
||||
#endif
|
||||
#define ENABLE_THREAD_CHECKER RTC_DCHECK_IS_ON
|
||||
|
||||
namespace rtc {
|
||||
|
||||
|
||||
@ -29,7 +29,7 @@ void CheckValidInitParams(int src_sample_rate_hz, int dst_sample_rate_hz,
|
||||
size_t num_channels) {
|
||||
// The below checks are temporarily disabled on WEBRTC_WIN due to problems
|
||||
// with clang debug builds.
|
||||
#if !defined(WEBRTC_WIN) && defined(__clang__) && !defined(NDEBUG)
|
||||
#if !defined(WEBRTC_WIN) && defined(__clang__)
|
||||
RTC_DCHECK_GT(src_sample_rate_hz, 0);
|
||||
RTC_DCHECK_GT(dst_sample_rate_hz, 0);
|
||||
RTC_DCHECK_GT(num_channels, 0u);
|
||||
@ -46,11 +46,11 @@ void CheckExpectedBufferSizes(size_t src_length,
|
||||
// with clang debug builds.
|
||||
// TODO(tommi): Re-enable when we've figured out what the problem is.
|
||||
// http://crbug.com/615050
|
||||
#if !defined(WEBRTC_WIN) && defined(__clang__) && !defined(NDEBUG)
|
||||
#if !defined(WEBRTC_WIN) && defined(__clang__)
|
||||
const size_t src_size_10ms = src_sample_rate * num_channels / 100;
|
||||
const size_t dst_size_10ms = dst_sample_rate * num_channels / 100;
|
||||
RTC_CHECK_EQ(src_length, src_size_10ms);
|
||||
RTC_CHECK_GE(dst_capacity, dst_size_10ms);
|
||||
RTC_DCHECK_EQ(src_length, src_size_10ms);
|
||||
RTC_DCHECK_GE(dst_capacity, dst_size_10ms);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -118,7 +118,7 @@ enum {
|
||||
|
||||
// Helper for logging SCTP messages.
|
||||
void DebugSctpPrintf(const char* format, ...) {
|
||||
#if (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON))
|
||||
#if RTC_DCHECK_IS_ON
|
||||
char s[255];
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
|
||||
@ -325,8 +325,8 @@ TEST_F(AudioCodingModuleTestOldApi, VerifyOutputFrame) {
|
||||
// with clang debug builds.
|
||||
// TODO(tommi): Re-enable when we've figured out what the problem is.
|
||||
// http://crbug.com/615050
|
||||
#if !defined(WEBRTC_WIN) && defined(__clang__) && !defined(NDEBUG)
|
||||
#if RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
|
||||
#if !defined(WEBRTC_WIN) && defined(__clang__) && RTC_DCHECK_IS_ON && \
|
||||
GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
|
||||
TEST_F(AudioCodingModuleTestOldApi, FailOnZeroDesiredFrequency) {
|
||||
AudioFrame audio_frame;
|
||||
bool muted;
|
||||
@ -334,7 +334,6 @@ TEST_F(AudioCodingModuleTestOldApi, FailOnZeroDesiredFrequency) {
|
||||
"dst_sample_rate_hz");
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Checks that the transport callback is invoked once for each speech packet.
|
||||
// Also checks that the frame type is kAudioFrameSpeech.
|
||||
|
||||
@ -141,7 +141,7 @@ int OpenSLESPlayer::StopPlayout() {
|
||||
RETURN_ON_ERROR((*player_)->SetPlayState(player_, SL_PLAYSTATE_STOPPED), -1);
|
||||
// Clear the buffer queue to flush out any remaining data.
|
||||
RETURN_ON_ERROR((*simple_buffer_queue_)->Clear(simple_buffer_queue_), -1);
|
||||
#ifndef NDEBUG
|
||||
#if RTC_DCHECK_IS_ON
|
||||
// Verify that the buffer queue is in fact cleared as it should.
|
||||
SLAndroidSimpleBufferQueueState buffer_queue_state;
|
||||
(*simple_buffer_queue_)->GetState(simple_buffer_queue_, &buffer_queue_state);
|
||||
|
||||
@ -133,7 +133,7 @@ void ProcessThreadImpl::RegisterModule(Module* module) {
|
||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||
RTC_DCHECK(module);
|
||||
|
||||
#if (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON))
|
||||
#if RTC_DCHECK_IS_ON
|
||||
{
|
||||
// Catch programmer error.
|
||||
rtc::CritScope lock(&lock_);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user