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 jump_to_entry(address entry);
62
63 virtual void check_and_handle_popframe(Register java_thread);
64 virtual void check_and_handle_earlyret(Register java_thread);
65
66 // Interpreter-specific registers
67 void save_bcp() {
68 str(rbcp, Address(rfp, frame::interpreter_frame_bcp_offset * wordSize));
69 }
70
71 void restore_bcp() {
72 ldr(rbcp, Address(rfp, frame::interpreter_frame_bcp_offset * wordSize));
73 }
74
75 void restore_locals() {
76 ldr(rlocals, Address(rfp, frame::interpreter_frame_locals_offset * wordSize));
77 lea(rlocals, Address(rfp, rlocals, Address::lsl(3)));
78 }
79
80 void restore_constant_pool_cache() {
|
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 }
84
85 void restore_constant_pool_cache() {
|