59 address generate_cont_resume_interpreter_adapter();
60 void generate_throw_exception();
61
62 void lock_method();
63
64 void bang_stack_shadow_pages(bool native_call);
65
66 // Instruction generation
67 void generate_and_dispatch (Template* t, TosState tos_out = ilgl);
68 void set_vtos_entry_points (Template* t, address& bep, address& cep, address& sep, address& aep, address& iep, address& lep, address& fep, address& dep, address& vep);
69 void set_short_entry_points(Template* t, address& bep, address& cep, address& sep, address& aep, address& iep, address& lep, address& fep, address& dep, address& vep);
70 void set_wide_entry_point (Template* t, address& wep);
71
72 void set_entry_points(Bytecodes::Code code);
73 void set_unimplemented(int i);
74 void set_entry_points_for_all_bytes();
75 void set_safepoints_for_all_bytes();
76
77 // Helpers for generate_and_dispatch
78 address generate_trace_code(TosState state) PRODUCT_RETURN_NULL;
79 void count_bytecode() PRODUCT_RETURN;
80 void histogram_bytecode(Template* t) PRODUCT_RETURN;
81 void histogram_bytecode_pair(Template* t) PRODUCT_RETURN;
82 void trace_bytecode(Template* t) PRODUCT_RETURN;
83 void stop_interpreter_at() PRODUCT_RETURN;
84
85 void generate_all();
86
87 // entry point generator
88 address generate_method_entry(AbstractInterpreter::MethodKind kind, bool native);
89
90 // generate intrinsic method entries
91 address generate_intrinsic_entry(AbstractInterpreter::MethodKind kind);
92
93 address generate_normal_entry(bool synchronized);
94 address generate_native_entry(bool synchronized);
95 address generate_abstract_entry(void);
96 address generate_math_entry(AbstractInterpreter::MethodKind kind);
97 address generate_Reference_get_entry();
98 address generate_CRC32_update_entry();
99 address generate_CRC32_updateBytes_entry(AbstractInterpreter::MethodKind kind);
100 address generate_CRC32C_updateBytes_entry(AbstractInterpreter::MethodKind kind);
101 address generate_currentThread();
102 address generate_Float_intBitsToFloat_entry();
103 address generate_Float_floatToRawIntBits_entry();
104 address generate_Double_longBitsToDouble_entry();
105 address generate_Double_doubleToRawLongBits_entry();
106 address generate_Float_float16ToFloat_entry();
107 address generate_Float_floatToFloat16_entry();
108
109 // Some platforms don't need registers, other need two. Unused function is
110 // left unimplemented.
111 void generate_stack_overflow_check(void);
112 void generate_stack_overflow_check(Register Rframe_size, Register Rscratch);
113
114 void generate_counter_incr(Label* overflow);
|
59 address generate_cont_resume_interpreter_adapter();
60 void generate_throw_exception();
61
62 void lock_method();
63
64 void bang_stack_shadow_pages(bool native_call);
65
66 // Instruction generation
67 void generate_and_dispatch (Template* t, TosState tos_out = ilgl);
68 void set_vtos_entry_points (Template* t, address& bep, address& cep, address& sep, address& aep, address& iep, address& lep, address& fep, address& dep, address& vep);
69 void set_short_entry_points(Template* t, address& bep, address& cep, address& sep, address& aep, address& iep, address& lep, address& fep, address& dep, address& vep);
70 void set_wide_entry_point (Template* t, address& wep);
71
72 void set_entry_points(Bytecodes::Code code);
73 void set_unimplemented(int i);
74 void set_entry_points_for_all_bytes();
75 void set_safepoints_for_all_bytes();
76
77 // Helpers for generate_and_dispatch
78 address generate_trace_code(TosState state) PRODUCT_RETURN_NULL;
79 void count_bytecode();
80 void histogram_bytecode(Template* t);
81 void histogram_bytecode_pair(Template* t) PRODUCT_RETURN;
82 void trace_bytecode(Template* t) PRODUCT_RETURN;
83 void stop_interpreter_at() PRODUCT_RETURN;
84
85 void generate_all();
86
87 // helpers for method entry generation
88 bool is_synchronized_method(AbstractInterpreter::MethodKind kind);
89 bool is_runtime_upcalls_method(AbstractInterpreter::MethodKind kind);
90 bool is_intrinsic_method(AbstractInterpreter::MethodKind kind);
91 bool is_abstract_method(AbstractInterpreter::MethodKind kind);
92
93 // entry point generator
94 address generate_method_entry(AbstractInterpreter::MethodKind kind, bool native);
95
96 // generate intrinsic method entries
97 address generate_intrinsic_entry(AbstractInterpreter::MethodKind kind);
98
99 address generate_normal_entry(bool synchronized, bool runtime_upcalls);
100 address generate_native_entry(bool synchronized, bool runtime_upcalls);
101 address generate_abstract_entry(void);
102 address generate_math_entry(AbstractInterpreter::MethodKind kind);
103 address generate_Reference_get_entry();
104 address generate_CRC32_update_entry();
105 address generate_CRC32_updateBytes_entry(AbstractInterpreter::MethodKind kind);
106 address generate_CRC32C_updateBytes_entry(AbstractInterpreter::MethodKind kind);
107 address generate_currentThread();
108 address generate_Float_intBitsToFloat_entry();
109 address generate_Float_floatToRawIntBits_entry();
110 address generate_Double_longBitsToDouble_entry();
111 address generate_Double_doubleToRawLongBits_entry();
112 address generate_Float_float16ToFloat_entry();
113 address generate_Float_floatToFloat16_entry();
114
115 // Some platforms don't need registers, other need two. Unused function is
116 // left unimplemented.
117 void generate_stack_overflow_check(void);
118 void generate_stack_overflow_check(Register Rframe_size, Register Rscratch);
119
120 void generate_counter_incr(Label* overflow);
|