1*795d594fSAndroid Build Coastguard Worker // Copyright (C) 2017 The Android Open Source Project 2*795d594fSAndroid Build Coastguard Worker // 3*795d594fSAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License"); 4*795d594fSAndroid Build Coastguard Worker // you may not use this file except in compliance with the License. 5*795d594fSAndroid Build Coastguard Worker // You may obtain a copy of the License at 6*795d594fSAndroid Build Coastguard Worker // 7*795d594fSAndroid Build Coastguard Worker // http://www.apache.org/licenses/LICENSE-2.0 8*795d594fSAndroid Build Coastguard Worker // 9*795d594fSAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software 10*795d594fSAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS, 11*795d594fSAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*795d594fSAndroid Build Coastguard Worker // See the License for the specific language governing permissions and 13*795d594fSAndroid Build Coastguard Worker // limitations under the License. 14*795d594fSAndroid Build Coastguard Worker // 15*795d594fSAndroid Build Coastguard Worker 16*795d594fSAndroid Build Coastguard Worker 17*795d594fSAndroid Build Coastguard Worker #ifndef ART_TOOLS_JVMTI_AGENTS_TITRACE_INSTRUCTION_DECODER_H_ 18*795d594fSAndroid Build Coastguard Worker #define ART_TOOLS_JVMTI_AGENTS_TITRACE_INSTRUCTION_DECODER_H_ 19*795d594fSAndroid Build Coastguard Worker 20*795d594fSAndroid Build Coastguard Worker #include <stddef.h> 21*795d594fSAndroid Build Coastguard Worker 22*795d594fSAndroid Build Coastguard Worker namespace titrace { 23*795d594fSAndroid Build Coastguard Worker 24*795d594fSAndroid Build Coastguard Worker enum class InstructionFileFormat { 25*795d594fSAndroid Build Coastguard Worker kClass, 26*795d594fSAndroid Build Coastguard Worker kDex 27*795d594fSAndroid Build Coastguard Worker }; 28*795d594fSAndroid Build Coastguard Worker 29*795d594fSAndroid Build Coastguard Worker class InstructionDecoder { 30*795d594fSAndroid Build Coastguard Worker public: 31*795d594fSAndroid Build Coastguard Worker virtual size_t GetMaximumOpcode() = 0; 32*795d594fSAndroid Build Coastguard Worker virtual const char* GetName(size_t opcode) = 0; 33*795d594fSAndroid Build Coastguard Worker virtual size_t LocationToOffset(size_t j_location) = 0; 34*795d594fSAndroid Build Coastguard Worker ~InstructionDecoder()35*795d594fSAndroid Build Coastguard Worker virtual ~InstructionDecoder() {} 36*795d594fSAndroid Build Coastguard Worker 37*795d594fSAndroid Build Coastguard Worker static InstructionDecoder* NewInstance(InstructionFileFormat file_format); 38*795d594fSAndroid Build Coastguard Worker }; 39*795d594fSAndroid Build Coastguard Worker 40*795d594fSAndroid Build Coastguard Worker } // namespace titrace 41*795d594fSAndroid Build Coastguard Worker 42*795d594fSAndroid Build Coastguard Worker #endif // ART_TOOLS_JVMTI_AGENTS_TITRACE_INSTRUCTION_DECODER_H_ 43