18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef CPU_X86_VM_INTERP_MASM_X86_HPP
26 #define CPU_X86_VM_INTERP_MASM_X86_HPP
27
28 #include "asm/macroAssembler.hpp"
29 #include "asm/macroAssembler.inline.hpp"
30 #include "interpreter/invocationCounter.hpp"
31 #include "runtime/frame.hpp"
32
33 // This file specializes the assember with interpreter-specific macros
34
35 typedef ByteSize (*OffsetFunction)(uint);
36
37 class InterpreterMacroAssembler: public MacroAssembler {
38
39 protected:
40 // Interpreter specific version of call_VM_base
41 virtual void call_VM_leaf_base(address entry_point,
42 int number_of_arguments);
43
44 virtual void call_VM_base(Register oop_result,
45 Register java_thread,
46 Register last_java_sp,
47 address entry_point,
48 int number_of_arguments,
49 bool check_exceptions);
50
51 // base routine for all dispatches
52 void dispatch_base(TosState state, address* table, bool verifyoop = true);
53
54 public:
55 InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code),
56 _locals_register(LP64_ONLY(r14) NOT_LP64(rdi)),
57 _bcp_register(LP64_ONLY(r13) NOT_LP64(rsi)) {}
58
59 void jump_to_entry(address entry);
60
61 virtual void check_and_handle_popframe(Register java_thread);
62 virtual void check_and_handle_earlyret(Register java_thread);
|
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef CPU_X86_VM_INTERP_MASM_X86_HPP
26 #define CPU_X86_VM_INTERP_MASM_X86_HPP
27
28 #include "asm/macroAssembler.hpp"
29 #include "asm/macroAssembler.inline.hpp"
30 #include "interpreter/invocationCounter.hpp"
31 #include "runtime/frame.hpp"
32
33 // This file specializes the assember with interpreter-specific macros
34
35 typedef ByteSize (*OffsetFunction)(uint);
36
37 class InterpreterMacroAssembler: public MacroAssembler {
38 public:
39 // Interpreter specific version of call_VM_base
40 virtual void call_VM_leaf_base(address entry_point,
41 int number_of_arguments);
42
43 protected:
44
45 virtual void call_VM_base(Register oop_result,
46 Register java_thread,
47 Register last_java_sp,
48 address entry_point,
49 int number_of_arguments,
50 bool check_exceptions);
51
52 // base routine for all dispatches
53 void dispatch_base(TosState state, address* table, bool verifyoop = true);
54
55 public:
56 InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code),
57 _locals_register(LP64_ONLY(r14) NOT_LP64(rdi)),
58 _bcp_register(LP64_ONLY(r13) NOT_LP64(rsi)) {}
59
60 void jump_to_entry(address entry);
61
62 virtual void check_and_handle_popframe(Register java_thread);
63 virtual void check_and_handle_earlyret(Register java_thread);
|