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 static void unlink_code(Method *method, CompiledMethod *compare);
468 static void unlink_code(Method *method);
469
470 private:
471 // Either called with CompiledMethod_lock held or from constructor.
472 void clear_code();
473
474 public:
475 static void set_code(const methodHandle& mh, CompiledMethod* code);
476 void set_adapter_entry(AdapterHandlerEntry* adapter) {
477 constMethod()->set_adapter_entry(adapter);
478 }
479 void update_adapter_trampoline(AdapterHandlerEntry* adapter) {
480 constMethod()->update_adapter_trampoline(adapter);
481 }
482
483 address get_i2c_entry();
484 address get_c2i_entry();
485 address get_c2i_unverified_entry();
486 AdapterHandlerEntry* adapter() const {
487 return constMethod()->adapter();
488 }
|
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 update_adapter_trampoline(AdapterHandlerEntry* adapter) {
482 constMethod()->update_adapter_trampoline(adapter);
483 }
484
485 address get_i2c_entry();
486 address get_c2i_entry();
487 address get_c2i_unverified_entry();
488 AdapterHandlerEntry* adapter() const {
489 return constMethod()->adapter();
490 }
|