diff --git a/base/message_loop.cc b/base/message_loop.cc
index 593c03c..553efb1 100644
--- a/base/message_loop.cc
+++ b/base/message_loop.cc
@@ -258,7 +258,7 @@
 
 void MessageLoop::PostTask(
     const tracked_objects::Location& from_here, Task* task) {
-  CHECK(task);
+  DCHECK(task);
   PendingTask pending_task(
       base::Bind(
           &base::subtle::TaskClosureAdapter::Run,
@@ -270,7 +270,7 @@
 
 void MessageLoop::PostDelayedTask(
     const tracked_objects::Location& from_here, Task* task, int64 delay_ms) {
-  CHECK(task);
+  DCHECK(task);
   PendingTask pending_task(
       base::Bind(
           &base::subtle::TaskClosureAdapter::Run,
@@ -282,7 +282,7 @@
 
 void MessageLoop::PostNonNestableTask(
     const tracked_objects::Location& from_here, Task* task) {
-  CHECK(task);
+  DCHECK(task);
   PendingTask pending_task(
       base::Bind(
           &base::subtle::TaskClosureAdapter::Run,
@@ -294,7 +294,7 @@
 
 void MessageLoop::PostNonNestableDelayedTask(
     const tracked_objects::Location& from_here, Task* task, int64 delay_ms) {
-  CHECK(task);
+  DCHECK(task);
   PendingTask pending_task(
       base::Bind(
           &base::subtle::TaskClosureAdapter::Run,
@@ -306,7 +306,7 @@
 
 void MessageLoop::PostTask(
     const tracked_objects::Location& from_here, const base::Closure& task) {
-  CHECK(!task.is_null()) << from_here.ToString();
+  DCHECK(!task.is_null()) << from_here.ToString();
   PendingTask pending_task(task, from_here, CalculateDelayedRuntime(0), true);
   AddToIncomingQueue(&pending_task);
 }
@@ -314,7 +314,7 @@
 void MessageLoop::PostDelayedTask(
     const tracked_objects::Location& from_here, const base::Closure& task,
     int64 delay_ms) {
-  CHECK(!task.is_null()) << from_here.ToString();
+  DCHECK(!task.is_null()) << from_here.ToString();
   PendingTask pending_task(task, from_here,
                            CalculateDelayedRuntime(delay_ms), true);
   AddToIncomingQueue(&pending_task);
@@ -322,7 +322,7 @@
 
 void MessageLoop::PostNonNestableTask(
     const tracked_objects::Location& from_here, const base::Closure& task) {
-  CHECK(!task.is_null()) << from_here.ToString();
+  DCHECK(!task.is_null()) << from_here.ToString();
   PendingTask pending_task(task, from_here, CalculateDelayedRuntime(0), false);
   AddToIncomingQueue(&pending_task);
 }
@@ -330,7 +330,7 @@
 void MessageLoop::PostNonNestableDelayedTask(
     const tracked_objects::Location& from_here, const base::Closure& task,
     int64 delay_ms) {
-  CHECK(!task.is_null()) << from_here.ToString();
+  DCHECK(!task.is_null()) << from_here.ToString();
   PendingTask pending_task(task, from_here,
                            CalculateDelayedRuntime(delay_ms), false);
   AddToIncomingQueue(&pending_task);
