ART: Fix condition for StoreNeedsWriteBarrier

Codegen's StoreNeedsWriteBarrier assumed nulls are represented as
integer constants and generated a barrier when not needed. This patch
fixes the bug.

Change-Id: I79247f1009b1fe6f24dba0d57e846ecc55806d4d
diff --git a/compiler/optimizing/code_generator.h b/compiler/optimizing/code_generator.h
index 667f686..ecaa6f0 100644
--- a/compiler/optimizing/code_generator.h
+++ b/compiler/optimizing/code_generator.h
@@ -246,12 +246,9 @@
   void EmitParallelMoves(Location from1, Location to1, Location from2, Location to2);
 
   static bool StoreNeedsWriteBarrier(Primitive::Type type, HInstruction* value) {
-    if (kIsDebugBuild) {
-      if (type == Primitive::kPrimNot && value->IsIntConstant()) {
-        CHECK_EQ(value->AsIntConstant()->GetValue(), 0);
-      }
-    }
-    return type == Primitive::kPrimNot && !value->IsIntConstant();
+    // Check that null value is not represented as an integer constant.
+    DCHECK(type != Primitive::kPrimNot || !value->IsIntConstant());
+    return type == Primitive::kPrimNot && !value->IsNullConstant();
   }
 
   void AddAllocatedRegister(Location location) {