51 protected: |
51 protected: |
52 |
52 |
53 // Template interpreter specific version of call_VM_helper |
53 // Template interpreter specific version of call_VM_helper |
54 virtual void call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions); |
54 virtual void call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions); |
55 |
55 |
56 virtual void check_and_handle_popframe(); |
|
57 virtual void check_and_handle_earlyret(); |
|
58 |
|
59 // base routine for all dispatches |
56 // base routine for all dispatches |
60 typedef enum { DispatchDefault, DispatchNormal } DispatchTableMode; |
57 typedef enum { DispatchDefault, DispatchNormal } DispatchTableMode; |
61 void dispatch_base(TosState state, DispatchTableMode table_mode, bool verifyoop = true); |
58 void dispatch_base(TosState state, DispatchTableMode table_mode, bool verifyoop = true); |
62 |
59 |
63 public: |
60 public: |
64 InterpreterMacroAssembler(CodeBuffer* code); |
61 InterpreterMacroAssembler(CodeBuffer* code); |
|
62 |
|
63 virtual void check_and_handle_popframe(); |
|
64 virtual void check_and_handle_earlyret(); |
65 |
65 |
66 // Interpreter-specific registers |
66 // Interpreter-specific registers |
67 #if defined(AARCH64) && defined(ASSERT) |
67 #if defined(AARCH64) && defined(ASSERT) |
68 |
68 |
69 #define check_stack_top() _check_stack_top("invalid Rstack_top at " __FILE__ ":" XSTR(__LINE__)) |
69 #define check_stack_top() _check_stack_top("invalid Rstack_top at " __FILE__ ":" XSTR(__LINE__)) |
326 void notify_method_exit(TosState state, NotifyMethodExitMode mode, |
326 void notify_method_exit(TosState state, NotifyMethodExitMode mode, |
327 bool native = false, Register result_lo = noreg, Register result_hi = noreg, FloatRegister result_fp = fnoreg); |
327 bool native = false, Register result_lo = noreg, Register result_hi = noreg, FloatRegister result_fp = fnoreg); |
328 |
328 |
329 void trace_state(const char* msg) PRODUCT_RETURN; |
329 void trace_state(const char* msg) PRODUCT_RETURN; |
330 |
330 |
331 void get_method_counters(Register method, Register Rcounters, Label& skip); |
331 void get_method_counters(Register method, |
|
332 Register Rcounters, |
|
333 Label& skip, |
|
334 bool saveRegs = false, |
|
335 Register reg1 = noreg, |
|
336 Register reg2 = noreg, |
|
337 Register reg3 = noreg); |
332 }; |
338 }; |
333 |
339 |
334 #endif // CPU_ARM_VM_INTERP_MASM_ARM_HPP |
340 #endif // CPU_ARM_VM_INTERP_MASM_ARM_HPP |