198 void jump_from_interpreted(Register method, Register temp);
199
200 // narrow int return value
201 void narrow(Register result);
202
203 // Returning from interpreted functions
204 //
205 // Removes the current activation (incl. unlocking of monitors)
206 // and sets up the return address. This code is also used for
207 // exception unwindwing. In that case, we do not want to throw
208 // IllegalMonitorStateExceptions, since that might get us into an
209 // infinite rethrow exception loop.
210 // Additionally this code is used for popFrame and earlyReturn.
211 // In popFrame case we want to skip throwing an exception,
212 // installing an exception, and notifying jvmdi.
213 // In earlyReturn case we only want to skip throwing an exception
214 // and installing an exception.
215 void remove_activation(TosState state, Register ret_addr,
216 bool throw_monitor_exception = true,
217 bool install_monitor_exception = true,
218 bool notify_jvmdi = true);
219 void get_method_counters(Register method, Register mcs, Label& skip);
220
221 // Object locking
222 void lock_object (Register lock_reg);
223 void unlock_object(Register lock_reg);
224
225 // Interpreter profiling operations
226 void set_method_data_pointer_for_bcp();
227 void test_method_data_pointer(Register mdp, Label& zero_continue);
228 void verify_method_data_pointer();
229
230 void set_mdp_data_at(Register mdp_in, int constant, Register value);
231 void increment_mdp_data_at(Address data, bool decrement = false);
232 void increment_mdp_data_at(Register mdp_in, int constant,
233 bool decrement = false);
234 void increment_mdp_data_at(Register mdp_in, Register reg, int constant,
235 bool decrement = false);
236 void increment_mask_and_jump(Address counter_addr,
237 int increment, Address mask,
238 Register scratch, bool preloaded,
|
198 void jump_from_interpreted(Register method, Register temp);
199
200 // narrow int return value
201 void narrow(Register result);
202
203 // Returning from interpreted functions
204 //
205 // Removes the current activation (incl. unlocking of monitors)
206 // and sets up the return address. This code is also used for
207 // exception unwindwing. In that case, we do not want to throw
208 // IllegalMonitorStateExceptions, since that might get us into an
209 // infinite rethrow exception loop.
210 // Additionally this code is used for popFrame and earlyReturn.
211 // In popFrame case we want to skip throwing an exception,
212 // installing an exception, and notifying jvmdi.
213 // In earlyReturn case we only want to skip throwing an exception
214 // and installing an exception.
215 void remove_activation(TosState state, Register ret_addr,
216 bool throw_monitor_exception = true,
217 bool install_monitor_exception = true,
218 bool notify_jvmdi = true,
219 bool load_values = false);
220 void get_method_counters(Register method, Register mcs, Label& skip);
221
222 // Object locking
223 void lock_object (Register lock_reg);
224 void unlock_object(Register lock_reg);
225
226 // Interpreter profiling operations
227 void set_method_data_pointer_for_bcp();
228 void test_method_data_pointer(Register mdp, Label& zero_continue);
229 void verify_method_data_pointer();
230
231 void set_mdp_data_at(Register mdp_in, int constant, Register value);
232 void increment_mdp_data_at(Address data, bool decrement = false);
233 void increment_mdp_data_at(Register mdp_in, int constant,
234 bool decrement = false);
235 void increment_mdp_data_at(Register mdp_in, Register reg, int constant,
236 bool decrement = false);
237 void increment_mask_and_jump(Address counter_addr,
238 int increment, Address mask,
239 Register scratch, bool preloaded,
|