446 return (mcs == NULL) ? 0 : mcs->increment_interpreter_invocation_count();
447 }
448 #endif
449
450 #ifndef PRODUCT
451 int compiled_invocation_count() const { return _compiled_invocation_count; }
452 void set_compiled_invocation_count(int count) { _compiled_invocation_count = count; }
453 #else
454 // for PrintMethodData in a product build
455 int compiled_invocation_count() const { return 0; }
456 #endif // not PRODUCT
457
458 // Clear (non-shared space) pointers which could not be relevant
459 // if this (shared) method were mapped into another JVM.
460 void remove_unshareable_info();
461
462 // nmethod/verified compiler entry
463 address verified_code_entry();
464 bool check_code() const; // Not inline to avoid circular ref
465 CompiledMethod* volatile code() const;
466 void clear_code(bool acquire_lock = true); // Clear out any compiled code
467 static void set_code(const methodHandle& mh, CompiledMethod* code);
468 void set_adapter_entry(AdapterHandlerEntry* adapter) {
469 constMethod()->set_adapter_entry(adapter);
470 }
471 void set_adapter_trampoline(AdapterHandlerEntry** trampoline) {
472 constMethod()->set_adapter_trampoline(trampoline);
473 }
474 void update_adapter_trampoline(AdapterHandlerEntry* adapter) {
475 constMethod()->update_adapter_trampoline(adapter);
476 }
477 void set_from_compiled_entry(address entry) {
478 _from_compiled_entry = entry;
479 }
480
481 address get_i2c_entry();
482 address get_c2i_entry();
483 address get_c2i_unverified_entry();
484 address get_c2i_no_clinit_check_entry();
485 AdapterHandlerEntry* adapter() const {
486 return constMethod()->adapter();
|
446 return (mcs == NULL) ? 0 : mcs->increment_interpreter_invocation_count();
447 }
448 #endif
449
450 #ifndef PRODUCT
451 int compiled_invocation_count() const { return _compiled_invocation_count; }
452 void set_compiled_invocation_count(int count) { _compiled_invocation_count = count; }
453 #else
454 // for PrintMethodData in a product build
455 int compiled_invocation_count() const { return 0; }
456 #endif // not PRODUCT
457
458 // Clear (non-shared space) pointers which could not be relevant
459 // if this (shared) method were mapped into another JVM.
460 void remove_unshareable_info();
461
462 // nmethod/verified compiler entry
463 address verified_code_entry();
464 bool check_code() const; // Not inline to avoid circular ref
465 CompiledMethod* volatile code() const;
466
467 // Locks CompiledMethod_lock if not held.
468 void unlink_code(CompiledMethod *compare);
469 // Locks CompiledMethod_lock if not held.
470 void unlink_code();
471
472 private:
473 // Either called with CompiledMethod_lock held or from constructor.
474 void clear_code();
475
476 public:
477 static void set_code(const methodHandle& mh, CompiledMethod* code);
478 void set_adapter_entry(AdapterHandlerEntry* adapter) {
479 constMethod()->set_adapter_entry(adapter);
480 }
481 void set_adapter_trampoline(AdapterHandlerEntry** trampoline) {
482 constMethod()->set_adapter_trampoline(trampoline);
483 }
484 void update_adapter_trampoline(AdapterHandlerEntry* adapter) {
485 constMethod()->update_adapter_trampoline(adapter);
486 }
487 void set_from_compiled_entry(address entry) {
488 _from_compiled_entry = entry;
489 }
490
491 address get_i2c_entry();
492 address get_c2i_entry();
493 address get_c2i_unverified_entry();
494 address get_c2i_no_clinit_check_entry();
495 AdapterHandlerEntry* adapter() const {
496 return constMethod()->adapter();
|