hotspot/src/share/vm/oops/klassVtable.hpp
changeset 46746 ea379ebb9447
parent 46727 6e4a84748e2c
equal deleted inserted replaced
46745:f7b9bb98bb72 46746:ea379ebb9447
   194   static int size()          { return sizeof(vtableEntry) / wordSize; }
   194   static int size()          { return sizeof(vtableEntry) / wordSize; }
   195   static int size_in_bytes() { return sizeof(vtableEntry); }
   195   static int size_in_bytes() { return sizeof(vtableEntry); }
   196 
   196 
   197   static int method_offset_in_bytes() { return offset_of(vtableEntry, _method); }
   197   static int method_offset_in_bytes() { return offset_of(vtableEntry, _method); }
   198   Method* method() const    { return _method; }
   198   Method* method() const    { return _method; }
       
   199   Method** method_addr()    { return &_method; }
   199 
   200 
   200  private:
   201  private:
   201   Method* _method;
   202   Method* _method;
   202   void set(Method* method)  { assert(method != NULL, "use clear"); _method = method; }
   203   void set(Method* method)  { assert(method != NULL, "use clear"); _method = method; }
   203   void clear()                { _method = NULL; }
   204   void clear()                { _method = NULL; }
   234  private:
   235  private:
   235   Klass* _interface;
   236   Klass* _interface;
   236   int      _offset;
   237   int      _offset;
   237  public:
   238  public:
   238   Klass* interface_klass() const { return _interface; }
   239   Klass* interface_klass() const { return _interface; }
       
   240   Klass**interface_klass_addr()  { return &_interface; }
   239   int      offset() const          { return _offset; }
   241   int      offset() const          { return _offset; }
   240 
   242 
   241   static itableMethodEntry* method_entry(Klass* k, int offset) { return (itableMethodEntry*)(((address)k) + offset); }
   243   static itableMethodEntry* method_entry(Klass* k, int offset) { return (itableMethodEntry*)(((address)k) + offset); }
   242   itableMethodEntry* first_method_entry(Klass* k)              { return method_entry(k, _offset); }
   244   itableMethodEntry* first_method_entry(Klass* k)              { return method_entry(k, _offset); }
   243 
   245 
   256  private:
   258  private:
   257   Method* _method;
   259   Method* _method;
   258 
   260 
   259  public:
   261  public:
   260   Method* method() const { return _method; }
   262   Method* method() const { return _method; }
       
   263   Method**method_addr() { return &_method; }
   261 
   264 
   262   void clear()             { _method = NULL; }
   265   void clear()             { _method = NULL; }
   263 
   266 
   264   void initialize(Method* method);
   267   void initialize(Method* method);
   265 
   268