333 // Return true is the PC is one would expect if the frame is being deopted.
334 inline bool is_deopt_pc(address pc);
335 bool is_deopt_mh_entry(address pc) { return pc == deopt_mh_handler_begin(); }
336 inline bool is_deopt_entry(address pc);
337
338 virtual bool can_convert_to_zombie() = 0;
339 virtual const char* compile_kind() const = 0;
340 virtual int get_state() const = 0;
341
342 const char* state() const;
343
344 bool is_far_code() const { return _is_far_code; }
345
346 bool inlinecache_check_contains(address addr) const {
347 return (addr >= code_begin() && addr < verified_entry_point());
348 }
349
350 void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f);
351
352 // implicit exceptions support
353 virtual address continuation_for_implicit_exception(address pc) { return NULL; }
354
355 static address get_deopt_original_pc(const frame* fr);
356
357 // Inline cache support for class unloading and nmethod unloading
358 private:
359 bool cleanup_inline_caches_impl(bool unloading_occurred, bool clean_all);
360
361 public:
362 // Serial version used by sweeper and whitebox test
363 void cleanup_inline_caches(bool clean_all);
364
365 virtual void clear_inline_caches();
366 void clear_ic_callsites();
367
368 // Verify and count cached icholder relocations.
369 int verify_icholder_relocations();
370 void verify_oop_relocations();
371
372 bool has_evol_metadata();
373
374 // Fast breakpoint support. Tells if this compiled method is
375 // dependent on the given method. Returns true if this nmethod
376 // corresponds to the given method as well.
377 virtual bool is_dependent_on_method(Method* dependee) = 0;
378
379 virtual NativeCallWrapper* call_wrapper_at(address call) const = 0;
|
333 // Return true is the PC is one would expect if the frame is being deopted.
334 inline bool is_deopt_pc(address pc);
335 bool is_deopt_mh_entry(address pc) { return pc == deopt_mh_handler_begin(); }
336 inline bool is_deopt_entry(address pc);
337
338 virtual bool can_convert_to_zombie() = 0;
339 virtual const char* compile_kind() const = 0;
340 virtual int get_state() const = 0;
341
342 const char* state() const;
343
344 bool is_far_code() const { return _is_far_code; }
345
346 bool inlinecache_check_contains(address addr) const {
347 return (addr >= code_begin() && addr < verified_entry_point());
348 }
349
350 void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f);
351
352 // implicit exceptions support
353 address continuation_for_implicit_div0_exception(address pc) { return continuation_for_implicit_exception(pc, true); }
354 address continuation_for_implicit_null_exception(address pc) { return continuation_for_implicit_exception(pc, false); }
355
356 static address get_deopt_original_pc(const frame* fr);
357
358 // Inline cache support for class unloading and nmethod unloading
359 private:
360 bool cleanup_inline_caches_impl(bool unloading_occurred, bool clean_all);
361
362 address continuation_for_implicit_exception(address pc, bool for_div0_check);
363
364 public:
365 // Serial version used by sweeper and whitebox test
366 void cleanup_inline_caches(bool clean_all);
367
368 virtual void clear_inline_caches();
369 void clear_ic_callsites();
370
371 // Verify and count cached icholder relocations.
372 int verify_icholder_relocations();
373 void verify_oop_relocations();
374
375 bool has_evol_metadata();
376
377 // Fast breakpoint support. Tells if this compiled method is
378 // dependent on the given method. Returns true if this nmethod
379 // corresponds to the given method as well.
380 virtual bool is_dependent_on_method(Method* dependee) = 0;
381
382 virtual NativeCallWrapper* call_wrapper_at(address call) const = 0;
|