467
468 // nmethod/verified compiler entry
469 address verified_code_entry();
470 address verified_value_code_entry();
471 address verified_value_ro_code_entry();
472 bool check_code() const; // Not inline to avoid circular ref
473 CompiledMethod* volatile code() const;
474 void clear_code(bool acquire_lock = true); // Clear out any compiled code
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_value_entry();
486 address get_c2i_unverified_entry();
487 AdapterHandlerEntry* adapter() const {
488 return constMethod()->adapter();
489 }
490 // setup entry points
491 void link_method(const methodHandle& method, TRAPS);
492 // clear entry points. Used by sharing code during dump time
493 void unlink_method() NOT_CDS_RETURN;
494
495 virtual void metaspace_pointers_do(MetaspaceClosure* iter);
496 virtual MetaspaceObj::Type type() const { return MethodType; }
497
498 // vtable index
499 enum VtableIndexFlag {
500 // Valid vtable indexes are non-negative (>= 0).
501 // These few negative values are used as sentinels.
502 itable_index_max = -10, // first itable index, growing downward
503 pending_itable_index = -9, // itable index will be assigned
504 invalid_vtable_index = -4, // distinct from any valid vtable index
505 garbage_vtable_index = -3, // not yet linked; no vtable layout yet
506 nonvirtual_vtable_index = -2 // there is no need for vtable dispatch
|
467
468 // nmethod/verified compiler entry
469 address verified_code_entry();
470 address verified_value_code_entry();
471 address verified_value_ro_code_entry();
472 bool check_code() const; // Not inline to avoid circular ref
473 CompiledMethod* volatile code() const;
474 void clear_code(bool acquire_lock = true); // Clear out any compiled code
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_value_entry();
486 address get_c2i_unverified_entry();
487 address get_c2i_unverified_value_entry();
488 AdapterHandlerEntry* adapter() const {
489 return constMethod()->adapter();
490 }
491 // setup entry points
492 void link_method(const methodHandle& method, TRAPS);
493 // clear entry points. Used by sharing code during dump time
494 void unlink_method() NOT_CDS_RETURN;
495
496 virtual void metaspace_pointers_do(MetaspaceClosure* iter);
497 virtual MetaspaceObj::Type type() const { return MethodType; }
498
499 // vtable index
500 enum VtableIndexFlag {
501 // Valid vtable indexes are non-negative (>= 0).
502 // These few negative values are used as sentinels.
503 itable_index_max = -10, // first itable index, growing downward
504 pending_itable_index = -9, // itable index will be assigned
505 invalid_vtable_index = -4, // distinct from any valid vtable index
506 garbage_vtable_index = -3, // not yet linked; no vtable layout yet
507 nonvirtual_vtable_index = -2 // there is no need for vtable dispatch
|