261 void profile_virtual_call(Register receiver, Register mdp,
262 Register scratch2,
263 bool receiver_can_be_null = false);
264 void profile_ret(Register return_bci, Register mdp);
265 void profile_null_seen(Register mdp);
266 void profile_typecheck(Register mdp, Register klass, Register scratch);
267
268 void profile_switch_default(Register mdp);
269 void profile_switch_case(Register index_in_scratch, Register mdp,
270 Register scratch2);
271
272 // Debugging
273 // only if +VerifyOops && state == atos
274 #define interp_verify_oop(reg, state) _interp_verify_oop(reg, state, __FILE__, __LINE__);
275 void _interp_verify_oop(Register reg, TosState state, const char* file, int line);
276 // only if +VerifyFPU && (state == ftos || state == dtos)
277 void verify_FPU(int stack_depth, TosState state = ftos);
278
279 typedef enum { NotifyJVMTI, SkipNotifyJVMTI } NotifyMethodExitMode;
280
281 // support for jvmti/dtrace
282 void notify_method_entry();
283 void notify_method_exit(TosState state, NotifyMethodExitMode mode);
284
285 private:
286
287 Register _locals_register; // register that contains the pointer to the locals
288 Register _bcp_register; // register that contains the bcp
289
290 public:
291 void profile_obj_type(Register obj, const Address& mdo_addr);
292 void profile_arguments_type(Register mdp, Register callee, Register tmp, bool is_virtual);
293 void profile_return_type(Register mdp, Register ret, Register tmp);
294 void profile_parameters_type(Register mdp, Register tmp1, Register tmp2);
295
296 void load_resolved_indy_entry(Register cache, Register index);
297 void load_field_entry(Register cache, Register index, int bcp_offset = 1);
298 void load_method_entry(Register cache, Register index, int bcp_offset = 1);
299 };
300
|
261 void profile_virtual_call(Register receiver, Register mdp,
262 Register scratch2,
263 bool receiver_can_be_null = false);
264 void profile_ret(Register return_bci, Register mdp);
265 void profile_null_seen(Register mdp);
266 void profile_typecheck(Register mdp, Register klass, Register scratch);
267
268 void profile_switch_default(Register mdp);
269 void profile_switch_case(Register index_in_scratch, Register mdp,
270 Register scratch2);
271
272 // Debugging
273 // only if +VerifyOops && state == atos
274 #define interp_verify_oop(reg, state) _interp_verify_oop(reg, state, __FILE__, __LINE__);
275 void _interp_verify_oop(Register reg, TosState state, const char* file, int line);
276 // only if +VerifyFPU && (state == ftos || state == dtos)
277 void verify_FPU(int stack_depth, TosState state = ftos);
278
279 typedef enum { NotifyJVMTI, SkipNotifyJVMTI } NotifyMethodExitMode;
280
281 // support for runtime upcalls
282 void generate_runtime_upcalls_on_method_entry();
283
284 // support for jvmti/dtrace
285 void notify_method_entry();
286 void notify_method_exit(TosState state, NotifyMethodExitMode mode);
287
288 private:
289
290 Register _locals_register; // register that contains the pointer to the locals
291 Register _bcp_register; // register that contains the bcp
292
293 public:
294 void profile_obj_type(Register obj, const Address& mdo_addr);
295 void profile_arguments_type(Register mdp, Register callee, Register tmp, bool is_virtual);
296 void profile_return_type(Register mdp, Register ret, Register tmp);
297 void profile_parameters_type(Register mdp, Register tmp1, Register tmp2);
298
299 void load_resolved_indy_entry(Register cache, Register index);
300 void load_field_entry(Register cache, Register index, int bcp_offset = 1);
301 void load_method_entry(Register cache, Register index, int bcp_offset = 1);
302 };
303
|