// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

#ifndef RUNTIME_VM_INSTRUCTIONS_H_
#define RUNTIME_VM_INSTRUCTIONS_H_

#include "vm/globals.h"

#if defined(TARGET_ARCH_IA32)
#include "vm/instructions_ia32.h"
#elif defined(TARGET_ARCH_X64)
#include "vm/instructions_x64.h"
#elif defined(TARGET_ARCH_ARM)
#include "vm/instructions_arm.h"
#elif defined(TARGET_ARCH_ARM64)
#include "vm/instructions_arm64.h"
#elif defined(TARGET_ARCH_DBC)
#include "vm/instructions_dbc.h"
#else
#error Unknown architecture.
#endif

namespace dart {

class Object;
class Code;

bool DecodeLoadObjectFromPoolOrThread(uword pc, const Code& code, Object* obj);

#if !defined(TARGET_ARCH_IA32) && !defined(TARGET_ARCH_DBC)

class TypeTestingStubCallPattern : public ValueObject {
 public:
  explicit TypeTestingStubCallPattern(uword pc) : pc_(pc) {}

  intptr_t GetSubtypeTestCachePoolIndex();

 private:
  const uword pc_;
};

#endif  // !defined(TARGET_ARCH_IA32) && !defined(TARGET_ARCH_DBC)

}  // namespace dart

#endif  // RUNTIME_VM_INSTRUCTIONS_H_
