From 1693a1f9c83a0bf5a29fa18ddc2d87e04e049233 Mon Sep 17 00:00:00 2001 From: Roland Levillain Date: Tue, 15 Mar 2016 14:57:31 +0000 Subject: Make art::HCompare side effect free. All our back ends implement all comparisons without making a runtime call, so we can mark art::HCompare as a side effect free instruction unconditionally. Change-Id: I9a9e7c09156c642edb6af1fe84408f887e762f2e --- compiler/optimizing/code_generator.cc | 4 ++-- compiler/optimizing/nodes.h | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'compiler/optimizing') diff --git a/compiler/optimizing/code_generator.cc b/compiler/optimizing/code_generator.cc index af50363e31..039c3c562b 100644 --- a/compiler/optimizing/code_generator.cc +++ b/compiler/optimizing/code_generator.cc @@ -706,7 +706,7 @@ void CodeGenerator::RecordPcInfo(HInstruction* instruction, uint32_t dex_pc, SlowPathCode* slow_path) { if (instruction != nullptr) { - // The code generated for some type conversions and comparisons + // The code generated for some type conversions // may call the runtime, thus normally requiring a subsequent // call to this method. However, the method verifier does not // produce PC information for certain instructions, which are @@ -717,7 +717,7 @@ void CodeGenerator::RecordPcInfo(HInstruction* instruction, // CodeGenerator::RecordPcInfo without triggering an error in // CodeGenerator::BuildNativeGCMap ("Missing ref for dex pc 0x") // thereafter. - if (instruction->IsTypeConversion() || instruction->IsCompare()) { + if (instruction->IsTypeConversion()) { return; } if (instruction->IsRem()) { diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index 1bb5f5df51..4ac8f9869f 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -3485,9 +3485,9 @@ class HCompare : public HBinaryOperation { return GetBias() == ComparisonBias::kGtBias; } - static SideEffects SideEffectsForArchRuntimeCalls(Primitive::Type type) { - // MIPS64 uses a runtime call for FP comparisons. - return Primitive::IsFloatingPointType(type) ? SideEffects::CanTriggerGC() : SideEffects::None(); + static SideEffects SideEffectsForArchRuntimeCalls(Primitive::Type type ATTRIBUTE_UNUSED) { + // Comparisons do not require a runtime call in any back end. + return SideEffects::None(); } DECLARE_INSTRUCTION(Compare); -- cgit v1.2.3-59-g8ed1b