1// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2// for details. All rights reserved. Use of this source code is governed by a
3// BSD-style license that can be found in the LICENSE file.
4
5#ifndef RUNTIME_VM_INSTRUCTIONS_H_
6#define RUNTIME_VM_INSTRUCTIONS_H_
7
8#include "vm/globals.h"
9
10#if defined(TARGET_ARCH_IA32)
11#include "vm/instructions_ia32.h"
12#elif defined(TARGET_ARCH_X64)
13#include "vm/instructions_x64.h"
14#elif defined(TARGET_ARCH_ARM)
15#include "vm/instructions_arm.h"
16#elif defined(TARGET_ARCH_ARM64)
17#include "vm/instructions_arm64.h"
18#else
19#error Unknown architecture.
20#endif
21
22namespace dart {
23
24class Object;
25class Code;
26
27bool DecodeLoadObjectFromPoolOrThread(uword pc, const Code& code, Object* obj);
28
29#if !defined(TARGET_ARCH_IA32)
30
31class TypeTestingStubCallPattern : public ValueObject {
32 public:
33 explicit TypeTestingStubCallPattern(uword pc) : pc_(pc) {}
34
35 intptr_t GetSubtypeTestCachePoolIndex();
36
37 private:
38 const uword pc_;
39};
40
41#endif // !defined(TARGET_ARCH_IA32)
42
43} // namespace dart
44
45#endif // RUNTIME_VM_INSTRUCTIONS_H_
46