180 // Generate a subtype check: branch to ok_is_subtype if sub_klass is
181 // a subtype of super_klass.
182 void gen_subtype_check( Register sub_klass, Label &ok_is_subtype );
183
184 // Dispatching
185 void dispatch_prolog(TosState state, int step = 0);
186 void dispatch_epilog(TosState state, int step = 0);
187 // dispatch via rbx (assume rbx is loaded already)
188 void dispatch_only(TosState state, bool generate_poll = false);
189 // dispatch normal table via rbx (assume rbx is loaded already)
190 void dispatch_only_normal(TosState state);
191 void dispatch_only_noverify(TosState state);
192 // load rbx from [_bcp_register + step] and dispatch via rbx
193 void dispatch_next(TosState state, int step = 0, bool generate_poll = false);
194 // load rbx from [_bcp_register] and dispatch via rbx and table
195 void dispatch_via (TosState state, address* table);
196
197 // jump to an invoked target
198 void prepare_to_jump_from_interpreted();
199 void jump_from_interpreted(Register method, Register temp);
200
201 // narrow int return value
202 void narrow(Register result);
203
204 // Returning from interpreted functions
205 //
206 // Removes the current activation (incl. unlocking of monitors)
207 // and sets up the return address. This code is also used for
208 // exception unwindwing. In that case, we do not want to throw
209 // IllegalMonitorStateExceptions, since that might get us into an
210 // infinite rethrow exception loop.
211 // Additionally this code is used for popFrame and earlyReturn.
212 // In popFrame case we want to skip throwing an exception,
213 // installing an exception, and notifying jvmdi.
214 // In earlyReturn case we only want to skip throwing an exception
215 // and installing an exception.
216 void remove_activation(TosState state, Register ret_addr,
217 bool throw_monitor_exception = true,
218 bool install_monitor_exception = true,
219 bool notify_jvmdi = true);
|
180 // Generate a subtype check: branch to ok_is_subtype if sub_klass is
181 // a subtype of super_klass.
182 void gen_subtype_check( Register sub_klass, Label &ok_is_subtype );
183
184 // Dispatching
185 void dispatch_prolog(TosState state, int step = 0);
186 void dispatch_epilog(TosState state, int step = 0);
187 // dispatch via rbx (assume rbx is loaded already)
188 void dispatch_only(TosState state, bool generate_poll = false);
189 // dispatch normal table via rbx (assume rbx is loaded already)
190 void dispatch_only_normal(TosState state);
191 void dispatch_only_noverify(TosState state);
192 // load rbx from [_bcp_register + step] and dispatch via rbx
193 void dispatch_next(TosState state, int step = 0, bool generate_poll = false);
194 // load rbx from [_bcp_register] and dispatch via rbx and table
195 void dispatch_via (TosState state, address* table);
196
197 // jump to an invoked target
198 void prepare_to_jump_from_interpreted();
199 void jump_from_interpreted(Register method, Register temp);
200 // void resolve_special(Register rmethod, LinkInfo link_info);
201 // void get_entry(Register entry, Register method);
202 // void get_entry(Register entry, LinkInfo link_info);
203 // void call_Java_final(LinkInfo link_info);
204 // void jump_Java_final(LinkInfo link_info);
205
206 // narrow int return value
207 void narrow(Register result);
208
209 // Returning from interpreted functions
210 //
211 // Removes the current activation (incl. unlocking of monitors)
212 // and sets up the return address. This code is also used for
213 // exception unwindwing. In that case, we do not want to throw
214 // IllegalMonitorStateExceptions, since that might get us into an
215 // infinite rethrow exception loop.
216 // Additionally this code is used for popFrame and earlyReturn.
217 // In popFrame case we want to skip throwing an exception,
218 // installing an exception, and notifying jvmdi.
219 // In earlyReturn case we only want to skip throwing an exception
220 // and installing an exception.
221 void remove_activation(TosState state, Register ret_addr,
222 bool throw_monitor_exception = true,
223 bool install_monitor_exception = true,
224 bool notify_jvmdi = true);
|