41
42 virtual void call_VM_leaf_base(address entry_point,
43 int number_of_arguments);
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,
54 bool verifyoop = true, bool generate_poll = false);
55
56 public:
57 InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code) {}
58
59 void load_earlyret_value(TosState state);
60
61 void call_VM_preemptable(Register oop_result,
62 address entry_point,
63 Register arg_1);
64 void restore_after_resume(bool is_native);
65
66 void jump_to_entry(address entry);
67
68 virtual void check_and_handle_popframe(Register java_thread);
69 virtual void check_and_handle_earlyret(Register java_thread);
70
71 // Interpreter-specific registers
72 void save_bcp() {
73 str(rbcp, Address(rfp, frame::interpreter_frame_bcp_offset * wordSize));
74 }
75
76 void restore_bcp() {
77 ldr(rbcp, Address(rfp, frame::interpreter_frame_bcp_offset * wordSize));
78 }
79
80 void restore_locals() {
81 ldr(rlocals, Address(rfp, frame::interpreter_frame_locals_offset * wordSize));
82 lea(rlocals, Address(rfp, rlocals, Address::lsl(3)));
83 }
|
41
42 virtual void call_VM_leaf_base(address entry_point,
43 int number_of_arguments);
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,
54 bool verifyoop = true, bool generate_poll = false);
55
56 public:
57 InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code) {}
58
59 void load_earlyret_value(TosState state);
60
61 // Use for vthread preemption
62 void call_VM_preemptable(Register oop_result,
63 address entry_point,
64 Register arg_1,
65 bool check_exceptions = true);
66 void call_VM_preemptable(Register oop_result,
67 address entry_point,
68 Register arg_1,
69 Register arg_2,
70 bool check_exceptions = true);
71
72 void call_VM_preemptable_helper(Register oop_result,
73 address entry_point,
74 int number_of_arguments,
75 bool check_exceptions);
76 void restore_after_resume(bool is_native);
77
78 void jump_to_entry(address entry);
79
80 virtual void check_and_handle_popframe(Register java_thread);
81 virtual void check_and_handle_earlyret(Register java_thread);
82
83 // Interpreter-specific registers
84 void save_bcp() {
85 str(rbcp, Address(rfp, frame::interpreter_frame_bcp_offset * wordSize));
86 }
87
88 void restore_bcp() {
89 ldr(rbcp, Address(rfp, frame::interpreter_frame_bcp_offset * wordSize));
90 }
91
92 void restore_locals() {
93 ldr(rlocals, Address(rfp, frame::interpreter_frame_locals_offset * wordSize));
94 lea(rlocals, Address(rfp, rlocals, Address::lsl(3)));
95 }
|