blob: 83ebddc098ebd8e75ab34357192712c27ac13a67 [file] [log] [blame]
Carl Shapiro12eb78e2011-06-24 14:51:06 -07001// Copyright 2011 Google Inc. All Rights Reserved.
2
3#include "libdex/InstrUtils.h"
4#undef LOG
5#undef LOG_FATAL
6
7#include "src/dex_instruction.h"
8
9namespace art {
10
11size_t Instruction::Size() {
12 const uint16_t* insns = reinterpret_cast<const uint16_t*>(this);
13 return dexGetWidthFromInstruction(insns) * sizeof(uint16_t);
14}
15
16Instruction::Code Instruction::Opcode() {
17 const uint16_t* insns = reinterpret_cast<const uint16_t*>(this);
18 return (Instruction::Code)dexOpcodeFromCodeUnit(*insns);
19}
20
21const Instruction* Instruction::Next() {
22 size_t current_size = Size();
23 const uint8_t* ptr = reinterpret_cast<const uint8_t*>(this);
24 return reinterpret_cast<const Instruction*>(ptr + current_size);
25}
26
27} // namespace art