diff options
author | 2017-04-20 20:07:21 -0700 | |
---|---|---|
committer | 2017-04-21 09:41:07 -0700 | |
commit | 6b040570b5f71bdb6a0aacf51a7613edf35785b7 (patch) | |
tree | 4c7a90ac29426931e6f19550be76e2afa1751801 | |
parent | b95c74b9788886b24b04db782ce64867cb4960d5 (diff) |
ART: Clean up InlineMethodAnalyzer
Remove dead code.
Test: m test-art-host
Change-Id: If86503fde2a77279a3169144bcae700101d81784
-rw-r--r-- | compiler/dex/inline_method_analyser.cc | 26 | ||||
-rw-r--r-- | compiler/dex/inline_method_analyser.h | 121 |
2 files changed, 0 insertions, 147 deletions
diff --git a/compiler/dex/inline_method_analyser.cc b/compiler/dex/inline_method_analyser.cc index 3347070468..e691a67dc0 100644 --- a/compiler/dex/inline_method_analyser.cc +++ b/compiler/dex/inline_method_analyser.cc @@ -26,7 +26,6 @@ #include "dex_instruction_utils.h" #include "mirror/class-inl.h" #include "mirror/dex_cache-inl.h" -#include "verifier/method_verifier-inl.h" /* * NOTE: This code is part of the quick compiler. It lives in the runtime @@ -391,7 +390,6 @@ bool AnalyseConstructor(const DexFile::CodeItem* code_item, #undef STORE_IPUT result->opcode = kInlineOpConstructor; - result->flags = kInlineSpecial; result->d.constructor_data.reserved = 0u; return true; } @@ -429,25 +427,6 @@ static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_CHAR) == static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_SHORT) == InlineMethodAnalyser::IPutVariant(Instruction::IPUT_SHORT), "iget/iput_short variant"); -// This is used by compiler and debugger. We look into the dex cache for resolved methods and -// fields. However, in the context of the debugger, not all methods and fields are resolved. Since -// we need to be able to detect possibly inlined method, we pass a null inline method to indicate -// we don't want to take unresolved methods and fields into account during analysis. -bool InlineMethodAnalyser::AnalyseMethodCode(verifier::MethodVerifier* verifier, - InlineMethod* result) { - DCHECK(verifier != nullptr); - if (!Runtime::Current()->UseJitCompilation()) { - DCHECK_EQ(verifier->CanLoadClasses(), result != nullptr); - } - - // Note: verifier->GetMethod() may be null. - return AnalyseMethodCode(verifier->CodeItem(), - verifier->GetMethodReference(), - (verifier->GetAccessFlags() & kAccStatic) != 0u, - verifier->GetMethod(), - result); -} - bool InlineMethodAnalyser::AnalyseMethodCode(ArtMethod* method, InlineMethod* result) { const DexFile::CodeItem* code_item = method->GetCodeItem(); if (code_item == nullptr) { @@ -473,7 +452,6 @@ bool InlineMethodAnalyser::AnalyseMethodCode(const DexFile::CodeItem* code_item, case Instruction::RETURN_VOID: if (result != nullptr) { result->opcode = kInlineOpNop; - result->flags = kInlineSpecial; result->d.data = 0u; } return true; @@ -549,7 +527,6 @@ bool InlineMethodAnalyser::AnalyseReturnMethod(const DexFile::CodeItem* code_ite if (result != nullptr) { result->opcode = kInlineOpReturnArg; - result->flags = kInlineSpecial; InlineReturnArgData* data = &result->d.return_data; data->arg = reg - arg_start; data->is_wide = (return_opcode == Instruction::RETURN_WIDE) ? 1u : 0u; @@ -586,7 +563,6 @@ bool InlineMethodAnalyser::AnalyseConstMethod(const DexFile::CodeItem* code_item } if (result != nullptr) { result->opcode = kInlineOpNonWideConst; - result->flags = kInlineSpecial; result->d.data = static_cast<uint64_t>(const_value); } return true; @@ -647,7 +623,6 @@ bool InlineMethodAnalyser::AnalyseIGetMethod(const DexFile::CodeItem* code_item, return false; } result->opcode = kInlineOpIGet; - result->flags = kInlineSpecial; data->op_variant = IGetVariant(opcode); data->method_is_static = is_static ? 1u : 0u; data->object_arg = object_arg; // Allow IGET on any register, not just "this". @@ -716,7 +691,6 @@ bool InlineMethodAnalyser::AnalyseIPutMethod(const DexFile::CodeItem* code_item, return false; } result->opcode = kInlineOpIPut; - result->flags = kInlineSpecial; data->op_variant = IPutVariant(opcode); data->method_is_static = is_static ? 1u : 0u; data->object_arg = object_arg; // Allow IPUT on any register, not just "this". diff --git a/compiler/dex/inline_method_analyser.h b/compiler/dex/inline_method_analyser.h index ab643abf21..a35e97fa11 100644 --- a/compiler/dex/inline_method_analyser.h +++ b/compiler/dex/inline_method_analyser.h @@ -36,128 +36,12 @@ class MethodVerifier; class ArtMethod; enum InlineMethodOpcode : uint16_t { - kIntrinsicDoubleCvt, - kIntrinsicFloatCvt, - kIntrinsicFloat2Int, - kIntrinsicDouble2Long, - kIntrinsicFloatIsInfinite, - kIntrinsicDoubleIsInfinite, - kIntrinsicFloatIsNaN, - kIntrinsicDoubleIsNaN, - kIntrinsicReverseBits, - kIntrinsicReverseBytes, - kIntrinsicBitCount, - kIntrinsicCompare, - kIntrinsicHighestOneBit, - kIntrinsicLowestOneBit, - kIntrinsicNumberOfLeadingZeros, - kIntrinsicNumberOfTrailingZeros, - kIntrinsicRotateRight, - kIntrinsicRotateLeft, - kIntrinsicSignum, - kIntrinsicAbsInt, - kIntrinsicAbsLong, - kIntrinsicAbsFloat, - kIntrinsicAbsDouble, - kIntrinsicMinMaxInt, - kIntrinsicMinMaxLong, - kIntrinsicMinMaxFloat, - kIntrinsicMinMaxDouble, - kIntrinsicCos, - kIntrinsicSin, - kIntrinsicAcos, - kIntrinsicAsin, - kIntrinsicAtan, - kIntrinsicAtan2, - kIntrinsicCbrt, - kIntrinsicCosh, - kIntrinsicExp, - kIntrinsicExpm1, - kIntrinsicHypot, - kIntrinsicLog, - kIntrinsicLog10, - kIntrinsicNextAfter, - kIntrinsicSinh, - kIntrinsicTan, - kIntrinsicTanh, - kIntrinsicSqrt, - kIntrinsicCeil, - kIntrinsicFloor, - kIntrinsicRint, - kIntrinsicRoundFloat, - kIntrinsicRoundDouble, - kIntrinsicReferenceGetReferent, - kIntrinsicCharAt, - kIntrinsicCompareTo, - kIntrinsicEquals, - kIntrinsicGetCharsNoCheck, - kIntrinsicIsEmptyOrLength, - kIntrinsicIndexOf, - kIntrinsicNewStringFromBytes, - kIntrinsicNewStringFromChars, - kIntrinsicNewStringFromString, - kIntrinsicCurrentThread, - kIntrinsicPeek, - kIntrinsicPoke, - kIntrinsicCas, - kIntrinsicUnsafeGet, - kIntrinsicUnsafePut, - - // 1.8. - kIntrinsicUnsafeGetAndAddInt, - kIntrinsicUnsafeGetAndAddLong, - kIntrinsicUnsafeGetAndSetInt, - kIntrinsicUnsafeGetAndSetLong, - kIntrinsicUnsafeGetAndSetObject, - kIntrinsicUnsafeLoadFence, - kIntrinsicUnsafeStoreFence, - kIntrinsicUnsafeFullFence, - - kIntrinsicSystemArrayCopyCharArray, - kIntrinsicSystemArrayCopy, - kInlineOpNop, kInlineOpReturnArg, kInlineOpNonWideConst, kInlineOpIGet, kInlineOpIPut, kInlineOpConstructor, - kInlineStringInit, -}; -std::ostream& operator<<(std::ostream& os, const InlineMethodOpcode& rhs); - -enum InlineMethodFlags : uint16_t { - kNoInlineMethodFlags = 0x0000, - kInlineIntrinsic = 0x0001, - kInlineSpecial = 0x0002, -}; - -// IntrinsicFlags are stored in InlineMethod::d::raw_data -enum IntrinsicFlags { - kIntrinsicFlagNone = 0, - - // kIntrinsicMinMaxInt - kIntrinsicFlagMax = kIntrinsicFlagNone, - kIntrinsicFlagMin = 1, - - // kIntrinsicIsEmptyOrLength - kIntrinsicFlagLength = kIntrinsicFlagNone, - kIntrinsicFlagIsEmpty = kIntrinsicFlagMin, - - // kIntrinsicIndexOf - kIntrinsicFlagBase0 = kIntrinsicFlagMin, - - // kIntrinsicUnsafeGet, kIntrinsicUnsafePut, kIntrinsicUnsafeCas - kIntrinsicFlagIsLong = kIntrinsicFlagMin, - // kIntrinsicUnsafeGet, kIntrinsicUnsafePut - kIntrinsicFlagIsVolatile = 2, - // kIntrinsicUnsafePut, kIntrinsicUnsafeCas - kIntrinsicFlagIsObject = 4, - // kIntrinsicUnsafePut - kIntrinsicFlagIsOrdered = 8, - - // kIntrinsicDoubleCvt, kIntrinsicFloatCvt. - kIntrinsicFlagToFloatingPoint = kIntrinsicFlagMin, }; struct InlineIGetIPutData { @@ -198,7 +82,6 @@ static_assert(sizeof(InlineConstructorData) == sizeof(uint64_t), struct InlineMethod { InlineMethodOpcode opcode; - InlineMethodFlags flags; union { uint64_t data; InlineIGetIPutData ifield_data; @@ -213,12 +96,8 @@ class InlineMethodAnalyser { * Analyse method code to determine if the method is a candidate for inlining. * If it is, record the inlining data. * - * @param verifier the method verifier holding data about the method to analyse. - * @param method placeholder for the inline method data. * @return true if the method is a candidate for inlining, false otherwise. */ - static bool AnalyseMethodCode(verifier::MethodVerifier* verifier, InlineMethod* result) - REQUIRES_SHARED(Locks::mutator_lock_); static bool AnalyseMethodCode(ArtMethod* method, InlineMethod* result) REQUIRES_SHARED(Locks::mutator_lock_); |