dex_instruction.cc revision 12eb78e651f13f2c1f0c2c922048a5a213253adf
112eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro// Copyright 2011 Google Inc. All Rights Reserved. 212eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro 312eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro#include "libdex/InstrUtils.h" 412eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro#undef LOG 512eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro#undef LOG_FATAL 612eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro 712eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro#include "src/dex_instruction.h" 812eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro 912eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapironamespace art { 1012eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro 1112eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapirosize_t Instruction::Size() { 1212eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro const uint16_t* insns = reinterpret_cast<const uint16_t*>(this); 1312eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro return dexGetWidthFromInstruction(insns) * sizeof(uint16_t); 1412eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro} 1512eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro 1612eb78e651f13f2c1f0c2c922048a5a213253adfCarl ShapiroInstruction::Code Instruction::Opcode() { 1712eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro const uint16_t* insns = reinterpret_cast<const uint16_t*>(this); 1812eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro return (Instruction::Code)dexOpcodeFromCodeUnit(*insns); 1912eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro} 2012eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro 2112eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiroconst Instruction* Instruction::Next() { 2212eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro size_t current_size = Size(); 2312eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro const uint8_t* ptr = reinterpret_cast<const uint8_t*>(this); 2412eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro return reinterpret_cast<const Instruction*>(ptr + current_size); 2512eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro} 2612eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro 2712eb78e651f13f2c1f0c2c922048a5a213253adfCarl Shapiro} // namespace art 28