< prev index next >
src/hotspot/share/oops/instanceKlass.hpp
Print this page
*** 277,290 ****
// Method array.
Array<Method*>* _methods;
// Default Method Array, concrete methods inherited from interfaces
Array<Method*>* _default_methods;
! // Interface (Klass*s) this class declares locally to implement.
! Array<Klass*>* _local_interfaces;
! // Interface (Klass*s) this class implements transitively.
! Array<Klass*>* _transitive_interfaces;
// Int array containing the original order of method in the class file (for JVMTI).
Array<int>* _method_ordering;
// Int array containing the vtable_indices for default_methods
// offset matches _default_methods offset
Array<int>* _default_vtable_indices;
--- 277,290 ----
// Method array.
Array<Method*>* _methods;
// Default Method Array, concrete methods inherited from interfaces
Array<Method*>* _default_methods;
! // Interfaces (InstanceKlass*s) this class declares locally to implement.
! Array<InstanceKlass*>* _local_interfaces;
! // Interfaces (InstanceKlass*s) this class implements transitively.
! Array<InstanceKlass*>* _transitive_interfaces;
// Int array containing the original order of method in the class file (for JVMTI).
Array<int>* _method_ordering;
// Int array containing the vtable_indices for default_methods
// offset matches _default_methods offset
Array<int>* _default_vtable_indices;
*** 413,429 ****
Array<int>* default_vtable_indices() const { return _default_vtable_indices; }
void set_default_vtable_indices(Array<int>* v) { _default_vtable_indices = v; }
Array<int>* create_new_default_vtable_indices(int len, TRAPS);
// interfaces
! Array<Klass*>* local_interfaces() const { return _local_interfaces; }
! void set_local_interfaces(Array<Klass*>* a) {
guarantee(_local_interfaces == NULL || a == NULL, "Just checking");
_local_interfaces = a; }
! Array<Klass*>* transitive_interfaces() const { return _transitive_interfaces; }
! void set_transitive_interfaces(Array<Klass*>* a) {
guarantee(_transitive_interfaces == NULL || a == NULL, "Just checking");
_transitive_interfaces = a;
}
private:
--- 413,429 ----
Array<int>* default_vtable_indices() const { return _default_vtable_indices; }
void set_default_vtable_indices(Array<int>* v) { _default_vtable_indices = v; }
Array<int>* create_new_default_vtable_indices(int len, TRAPS);
// interfaces
! Array<InstanceKlass*>* local_interfaces() const { return _local_interfaces; }
! void set_local_interfaces(Array<InstanceKlass*>* a) {
guarantee(_local_interfaces == NULL || a == NULL, "Just checking");
_local_interfaces = a; }
! Array<InstanceKlass*>* transitive_interfaces() const { return _transitive_interfaces; }
! void set_transitive_interfaces(Array<InstanceKlass*>* a) {
guarantee(_transitive_interfaces == NULL || a == NULL, "Just checking");
_transitive_interfaces = a;
}
private:
*** 1050,1060 ****
void process_interfaces(Thread *thread);
// virtual operations from Klass
bool is_leaf_class() const { return _subklass == NULL; }
GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots,
! Array<Klass*>* transitive_interfaces);
bool compute_is_subtype_of(Klass* k);
bool can_be_primary_super_slow() const;
int oop_size(oop obj) const { return size_helper(); }
// slow because it's a virtual call and used for verifying the layout_helper.
// Using the layout_helper bits, we can call is_instance_klass without a virtual call.
--- 1050,1060 ----
void process_interfaces(Thread *thread);
// virtual operations from Klass
bool is_leaf_class() const { return _subklass == NULL; }
GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots,
! Array<InstanceKlass*>* transitive_interfaces);
bool compute_is_subtype_of(Klass* k);
bool can_be_primary_super_slow() const;
int oop_size(oop obj) const { return size_helper(); }
// slow because it's a virtual call and used for verifying the layout_helper.
// Using the layout_helper bits, we can call is_instance_klass without a virtual call.
*** 1078,1088 ****
assert(k != NULL, "k should not be null");
assert(k->is_instance_klass(), "cast to InstanceKlass");
return static_cast<const InstanceKlass*>(k);
}
! InstanceKlass* java_super() const {
return (super() == NULL) ? NULL : cast(super());
}
// Sizing (in words)
static int header_size() { return sizeof(InstanceKlass)/wordSize; }
--- 1078,1088 ----
assert(k != NULL, "k should not be null");
assert(k->is_instance_klass(), "cast to InstanceKlass");
return static_cast<const InstanceKlass*>(k);
}
! virtual InstanceKlass* java_super() const {
return (super() == NULL) ? NULL : cast(super());
}
// Sizing (in words)
static int header_size() { return sizeof(InstanceKlass)/wordSize; }
*** 1199,1210 ****
void deallocate_contents(ClassLoaderData* loader_data);
static void deallocate_methods(ClassLoaderData* loader_data,
Array<Method*>* methods);
void static deallocate_interfaces(ClassLoaderData* loader_data,
const Klass* super_klass,
! Array<Klass*>* local_interfaces,
! Array<Klass*>* transitive_interfaces);
// The constant pool is on stack if any of the methods are executing or
// referenced by handles.
bool on_stack() const { return _constants->on_stack(); }
--- 1199,1210 ----
void deallocate_contents(ClassLoaderData* loader_data);
static void deallocate_methods(ClassLoaderData* loader_data,
Array<Method*>* methods);
void static deallocate_interfaces(ClassLoaderData* loader_data,
const Klass* super_klass,
! Array<InstanceKlass*>* local_interfaces,
! Array<InstanceKlass*>* transitive_interfaces);
// The constant pool is on stack if any of the methods are executing or
// referenced by handles.
bool on_stack() const { return _constants->on_stack(); }
*** 1377,1386 ****
--- 1377,1387 ----
#ifndef PRODUCT
void oop_print_on (oop obj, outputStream* st);
void print_dependent_nmethods(bool verbose = false);
bool is_dependent_nmethod(nmethod* nm);
+ bool verify_itable_index(int index);
#endif
const char* internal_name() const;
// Verification
< prev index next >