< prev index next >

hotspot/src/share/vm/oops/method.hpp

Print this page




 464   address get_c2i_unverified_entry();
 465   AdapterHandlerEntry* adapter() const {
 466     return constMethod()->adapter();
 467   }
 468   // setup entry points
 469   void link_method(const methodHandle& method, TRAPS);
 470   // clear entry points. Used by sharing code during dump time
 471   void unlink_method() NOT_CDS_RETURN;
 472 
 473   // vtable index
 474   enum VtableIndexFlag {
 475     // Valid vtable indexes are non-negative (>= 0).
 476     // These few negative values are used as sentinels.
 477     itable_index_max        = -10, // first itable index, growing downward
 478     pending_itable_index    = -9,  // itable index will be assigned
 479     invalid_vtable_index    = -4,  // distinct from any valid vtable index
 480     garbage_vtable_index    = -3,  // not yet linked; no vtable layout yet
 481     nonvirtual_vtable_index = -2   // there is no need for vtable dispatch
 482     // 6330203 Note:  Do not use -1, which was overloaded with many meanings.
 483   };
 484   DEBUG_ONLY(bool valid_vtable_index() const     { return _vtable_index >= nonvirtual_vtable_index; })
 485   bool has_vtable_index() const                  { return _vtable_index >= 0; }
 486   int  vtable_index() const                      { return _vtable_index; }
 487   void set_vtable_index(int index);
 488   DEBUG_ONLY(bool valid_itable_index() const     { return _vtable_index <= pending_itable_index; })
 489   bool has_itable_index() const                  { return _vtable_index <= itable_index_max; }
 490   int  itable_index() const                      { assert(valid_itable_index(), "");
 491                                                    return itable_index_max - _vtable_index; }
 492   void set_itable_index(int index);
 493 
 494   // interpreter entry
 495   address interpreter_entry() const              { return _i2i_entry; }
 496   // Only used when first initialize so we can set _i2i_entry and _from_interpreted_entry
 497   void set_interpreter_entry(address entry) {
 498     assert(!is_shared(), "shared method's interpreter entry should not be changed at run time");
 499     if (_i2i_entry != entry) {
 500       _i2i_entry = entry;
 501     }
 502     if (_from_interpreted_entry != entry) {
 503       _from_interpreted_entry = entry;
 504     }
 505   }
 506 
 507   // native function (used for native methods only)
 508   enum {




 464   address get_c2i_unverified_entry();
 465   AdapterHandlerEntry* adapter() const {
 466     return constMethod()->adapter();
 467   }
 468   // setup entry points
 469   void link_method(const methodHandle& method, TRAPS);
 470   // clear entry points. Used by sharing code during dump time
 471   void unlink_method() NOT_CDS_RETURN;
 472 
 473   // vtable index
 474   enum VtableIndexFlag {
 475     // Valid vtable indexes are non-negative (>= 0).
 476     // These few negative values are used as sentinels.
 477     itable_index_max        = -10, // first itable index, growing downward
 478     pending_itable_index    = -9,  // itable index will be assigned
 479     invalid_vtable_index    = -4,  // distinct from any valid vtable index
 480     garbage_vtable_index    = -3,  // not yet linked; no vtable layout yet
 481     nonvirtual_vtable_index = -2   // there is no need for vtable dispatch
 482     // 6330203 Note:  Do not use -1, which was overloaded with many meanings.
 483   };
 484   NOT_PRODUCT(bool valid_vtable_index() const    { return _vtable_index >= nonvirtual_vtable_index; })
 485   bool has_vtable_index() const                  { return _vtable_index >= 0; }
 486   int  vtable_index() const                      { return _vtable_index; }
 487   void set_vtable_index(int index);
 488   NOT_PRODUCT(bool valid_itable_index() const    { return _vtable_index <= pending_itable_index; })
 489   bool has_itable_index() const                  { return _vtable_index <= itable_index_max; }
 490   int  itable_index() const                      { assert(valid_itable_index(), "");
 491                                                    return itable_index_max - _vtable_index; }
 492   void set_itable_index(int index);
 493 
 494   // interpreter entry
 495   address interpreter_entry() const              { return _i2i_entry; }
 496   // Only used when first initialize so we can set _i2i_entry and _from_interpreted_entry
 497   void set_interpreter_entry(address entry) {
 498     assert(!is_shared(), "shared method's interpreter entry should not be changed at run time");
 499     if (_i2i_entry != entry) {
 500       _i2i_entry = entry;
 501     }
 502     if (_from_interpreted_entry != entry) {
 503       _from_interpreted_entry = entry;
 504     }
 505   }
 506 
 507   // native function (used for native methods only)
 508   enum {


< prev index next >