133 Klass* super); 134 static void get_mirandas( 135 GrowableArray<Method*>* new_mirandas, 136 GrowableArray<Method*>* all_mirandas, Klass* super, 137 Array<Method*>* class_methods, Array<Klass*>* local_interfaces); 138 139 void verify_against(outputStream* st, klassVtable* vt, int index); 140 inline InstanceKlass* ik() const; 141 }; 142 143 144 // private helper class for klassVtable 145 // description of entry points: 146 // destination is interpreted: 147 // from_compiled_code_entry_point -> c2iadapter 148 // from_interpreter_entry_point -> interpreter entry point 149 // destination is compiled: 150 // from_compiled_code_entry_point -> nmethod entry point 151 // from_interpreter_entry_point -> i2cadapter 152 class vtableEntry VALUE_OBJ_CLASS_SPEC { 153 public: 154 // size in words 155 static int size() { 156 return sizeof(vtableEntry) / sizeof(HeapWord); 157 } 158 static int method_offset_in_bytes() { return offset_of(vtableEntry, _method); } 159 Method* method() const { return _method; } 160 161 private: 162 Method* _method; 163 void set(Method* method) { assert(method != NULL, "use clear"); _method = method; } 164 void clear() { _method = NULL; } 165 void print() PRODUCT_RETURN; 166 void verify(klassVtable* vt, outputStream* st); 167 168 friend class klassVtable; 169 }; 170 171 172 inline Method* klassVtable::method_at(int i) const { | 133 Klass* super); 134 static void get_mirandas( 135 GrowableArray<Method*>* new_mirandas, 136 GrowableArray<Method*>* all_mirandas, Klass* super, 137 Array<Method*>* class_methods, Array<Klass*>* local_interfaces); 138 139 void verify_against(outputStream* st, klassVtable* vt, int index); 140 inline InstanceKlass* ik() const; 141 }; 142 143 144 // private helper class for klassVtable 145 // description of entry points: 146 // destination is interpreted: 147 // from_compiled_code_entry_point -> c2iadapter 148 // from_interpreter_entry_point -> interpreter entry point 149 // destination is compiled: 150 // from_compiled_code_entry_point -> nmethod entry point 151 // from_interpreter_entry_point -> i2cadapter 152 class vtableEntry VALUE_OBJ_CLASS_SPEC { 153 friend class VMStructs; 154 155 public: 156 // size in words 157 static int size() { 158 return sizeof(vtableEntry) / sizeof(HeapWord); 159 } 160 static int method_offset_in_bytes() { return offset_of(vtableEntry, _method); } 161 Method* method() const { return _method; } 162 163 private: 164 Method* _method; 165 void set(Method* method) { assert(method != NULL, "use clear"); _method = method; } 166 void clear() { _method = NULL; } 167 void print() PRODUCT_RETURN; 168 void verify(klassVtable* vt, outputStream* st); 169 170 friend class klassVtable; 171 }; 172 173 174 inline Method* klassVtable::method_at(int i) const { |