1 /* |
1 /* |
2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
23 */ |
23 */ |
24 |
24 |
25 #ifndef SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP |
25 #ifndef SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP |
26 #define SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP |
26 #define SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP |
27 |
27 |
|
28 #include "asm/macroAssembler.hpp" |
28 #include "code/stubs.hpp" |
29 #include "code/stubs.hpp" |
29 #include "interpreter/bytecodes.hpp" |
30 #include "interpreter/bytecodes.hpp" |
30 #include "runtime/thread.inline.hpp" |
31 #include "runtime/thread.inline.hpp" |
31 #include "runtime/vmThread.hpp" |
32 #include "runtime/vmThread.hpp" |
32 #include "utilities/top.hpp" |
33 #include "utilities/top.hpp" |
33 #ifdef TARGET_ARCH_x86 |
|
34 # include "interp_masm_x86.hpp" |
|
35 #endif |
|
36 #ifdef TARGET_ARCH_MODEL_sparc |
|
37 # include "interp_masm_sparc.hpp" |
|
38 #endif |
|
39 #ifdef TARGET_ARCH_MODEL_zero |
|
40 # include "interp_masm_zero.hpp" |
|
41 #endif |
|
42 #ifdef TARGET_ARCH_MODEL_arm |
|
43 # include "interp_masm_arm.hpp" |
|
44 #endif |
|
45 #ifdef TARGET_ARCH_MODEL_ppc_32 |
|
46 # include "interp_masm_ppc_32.hpp" |
|
47 #endif |
|
48 #ifdef TARGET_ARCH_MODEL_ppc_64 |
|
49 # include "interp_masm_ppc_64.hpp" |
|
50 #endif |
|
51 |
34 |
52 // This file contains the platform-independent parts |
35 // This file contains the platform-independent parts |
53 // of the abstract interpreter and the abstract interpreter generator. |
36 // of the abstract interpreter and the abstract interpreter generator. |
54 |
37 |
55 // Organization of the interpreter(s). There exists two different interpreters in hotpot |
38 // Organization of the interpreter(s). There exists two different interpreters in hotpot |
72 // interpreter*: generic frame creation and handling. |
55 // interpreter*: generic frame creation and handling. |
73 // |
56 // |
74 |
57 |
75 //------------------------------------------------------------------------------------------------------------------------ |
58 //------------------------------------------------------------------------------------------------------------------------ |
76 // The C++ interface to the bytecode interpreter(s). |
59 // The C++ interface to the bytecode interpreter(s). |
|
60 |
|
61 class InterpreterMacroAssembler; |
77 |
62 |
78 class AbstractInterpreter: AllStatic { |
63 class AbstractInterpreter: AllStatic { |
79 friend class VMStructs; |
64 friend class VMStructs; |
80 friend class Interpreter; |
65 friend class Interpreter; |
81 friend class CppInterpreterGenerator; |
66 friend class CppInterpreterGenerator; |