From: Pavle Batuta Date: Tue, 3 Nov 2015 12:23:54 +0000 (+0100) Subject: Fix mips32oc ArraySet null constant assignment X-Git-Tag: android-x86-7.1-r1~852^2~110^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=934808feba1a56114cb48ee71c4ad1b9a63a3f84;p=android-x86%2Fart.git Fix mips32oc ArraySet null constant assignment Fix assigning a null constant to an array index. Previously this would unnecessarily invoke pAputObject. This commit fixes previous test failure: 521-checker-array-set-null. Change-Id: I02ff5296fa3a48b021c0dfd9bb10628ba6e5d5e5 --- diff --git a/compiler/optimizing/code_generator_mips.cc b/compiler/optimizing/code_generator_mips.cc index 29d08beb9..8106499c0 100644 --- a/compiler/optimizing/code_generator_mips.cc +++ b/compiler/optimizing/code_generator_mips.cc @@ -1732,12 +1732,11 @@ void InstructionCodeGeneratorMIPS::VisitArrayLength(HArrayLength* instruction) { } void LocationsBuilderMIPS::VisitArraySet(HArraySet* instruction) { - Primitive::Type value_type = instruction->GetComponentType(); - bool is_object = value_type == Primitive::kPrimNot; + bool needs_runtime_call = instruction->NeedsTypeCheck(); LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary( instruction, - is_object ? LocationSummary::kCall : LocationSummary::kNoCall); - if (is_object) { + needs_runtime_call ? LocationSummary::kCall : LocationSummary::kNoCall); + if (needs_runtime_call) { InvokeRuntimeCallingConvention calling_convention; locations->SetInAt(0, Location::RegisterLocation(calling_convention.GetRegisterAt(0))); locations->SetInAt(1, Location::RegisterLocation(calling_convention.GetRegisterAt(1))); diff --git a/test/Android.run-test.mk b/test/Android.run-test.mk index 9ff620b47..8744674a3 100644 --- a/test/Android.run-test.mk +++ b/test/Android.run-test.mk @@ -445,7 +445,6 @@ TEST_ART_BROKEN_DEFAULT_RUN_TESTS := TEST_ART_BROKEN_OPTIMIZING_MIPS_RUN_TESTS := \ 441-checker-inliner \ 510-checker-try-catch \ - 521-checker-array-set-null \ 536-checker-intrinsic-optimization \ ifeq (mips,$(TARGET_ARCH))