// Copyright 2011 Google Inc. All Rights Reserved.

#ifndef ART_SRC_DEX_VERIFY_H_
#define ART_SRC_DEX_VERIFY_H_

#include "dex_file.h"
#include "dex_instruction.h"
#include "macros.h"
#include "object.h"

namespace art {

class DexVerify {
 public:
  enum {
    kInsnFlagWidthMask = 0x0000ffff,
    kInsnFlagInTry = (1 << 16),
    kInsnFlagBranchTarget = (1 << 17),
    kInsnFlagGcPoint = (1 << 18),
    kInsnFlagVisited = (1 << 30),
    kInsnFlagChanged = (1 << 31),
  };

  static bool VerifyClass(Class* klass);

 private:
  static bool VerifyMethod(Method* method);
  static bool VerifyInstructions(const DexFile* dex_file,
                                 const DexFile::CodeItem* code_item,
                                 uint32_t insn_flags[]);
  static bool VerifyInstruction(const DexFile* dex_file,
                                const Instruction* inst,
                                uint32_t code_offset,
                                const DexFile::CodeItem* code_item,
                                uint32_t insn_flags[]);

  DISALLOW_COPY_AND_ASSIGN(DexVerify);
};

}  // namespace art

#endif  // ART_SRC_DEX_VERIFY_H_
