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