diff options
Diffstat (limited to 'compiler/driver/compiler_driver.cc')
-rw-r--r-- | compiler/driver/compiler_driver.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc index c858326562..47288b5098 100644 --- a/compiler/driver/compiler_driver.cc +++ b/compiler/driver/compiler_driver.cc @@ -40,6 +40,7 @@ #include "dex/verification_results.h" #include "dex/verified_method.h" #include "dex/quick/dex_file_method_inliner.h" +#include "dex/quick/dex_file_to_method_inliner_map.h" #include "driver/compiler_options.h" #include "elf_writer_quick.h" #include "jni_internal.h" @@ -2485,4 +2486,16 @@ std::string CompilerDriver::GetMemoryUsageString(bool extended) const { return oss.str(); } +bool CompilerDriver::IsStringTypeIndex(uint16_t type_index, const DexFile* dex_file) { + const char* type = dex_file->GetTypeDescriptor(dex_file->GetTypeId(type_index)); + return strcmp(type, "Ljava/lang/String;") == 0; +} + +bool CompilerDriver::IsStringInit(uint32_t method_index, const DexFile* dex_file, int32_t* offset) { + DexFileMethodInliner* inliner = GetMethodInlinerMap()->GetMethodInliner(dex_file); + size_t pointer_size = InstructionSetPointerSize(GetInstructionSet()); + *offset = inliner->GetOffsetForStringInit(method_index, pointer_size); + return inliner->IsStringInitMethodIndex(method_index); +} + } // namespace art |