summaryrefslogtreecommitdiff
path: root/compiler/optimizing/code_generator.h
diff options
context:
space:
mode:
author David Brazdil <dbrazdil@google.com> 2015-03-17 18:48:28 +0000
committer David Brazdil <dbrazdil@google.com> 2015-03-17 18:57:24 +0000
commit522e2241f5b5f331d0aa2f8508f4c97973f7f012 (patch)
tree7b438281eb239aee475b1d7d4c87c13621626055 /compiler/optimizing/code_generator.h
parent94e480778b0946d1ab405ecf901e5d41ed54cc17 (diff)
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
Diffstat (limited to 'compiler/optimizing/code_generator.h')
-rw-r--r--compiler/optimizing/code_generator.h9
1 files changed, 3 insertions, 6 deletions
diff --git a/compiler/optimizing/code_generator.h b/compiler/optimizing/code_generator.h
index 667f686059..ecaa6f0123 100644
--- a/compiler/optimizing/code_generator.h
+++ b/compiler/optimizing/code_generator.h
@@ -246,12 +246,9 @@ class CodeGenerator {
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) {