82 Klass* find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const;
83
84 // Lookup operations
85 Method* uncached_lookup_method(const Symbol* name,
86 const Symbol* signature,
87 OverpassLookupMode overpass_mode) const;
88
89 static ArrayKlass* cast(Klass* k) {
90 return const_cast<ArrayKlass*>(cast(const_cast<const Klass*>(k)));
91 }
92
93 static const ArrayKlass* cast(const Klass* k) {
94 assert(k->is_array_klass(), "cast to ArrayKlass");
95 return static_cast<const ArrayKlass*>(k);
96 }
97
98 GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots);
99 bool compute_is_subtype_of(Klass* k);
100
101 // Sizing
102 static int header_size() { return sizeof(ArrayKlass)/HeapWordSize; }
103 static int static_size(int header_size);
104
105 #if INCLUDE_SERVICES
106 virtual void collect_statistics(KlassSizeStats *sz) const {
107 Klass::collect_statistics(sz);
108 // Do nothing for now, but remember to modify if you add new
109 // stuff to ArrayKlass.
110 }
111 #endif
112
113 // Java vtable
114 klassVtable* vtable() const; // return new klassVtable
115 int vtable_length() const { return _vtable_len; }
116 static int base_vtable_length() { return Universe::base_vtable_size(); }
117 void set_vtable_length(int len) { assert(len == base_vtable_length(), "bad length"); _vtable_len = len; }
118 protected:
119 inline intptr_t* start_of_vtable() const;
120
121 public:
122 // Iterators
|
82 Klass* find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const;
83
84 // Lookup operations
85 Method* uncached_lookup_method(const Symbol* name,
86 const Symbol* signature,
87 OverpassLookupMode overpass_mode) const;
88
89 static ArrayKlass* cast(Klass* k) {
90 return const_cast<ArrayKlass*>(cast(const_cast<const Klass*>(k)));
91 }
92
93 static const ArrayKlass* cast(const Klass* k) {
94 assert(k->is_array_klass(), "cast to ArrayKlass");
95 return static_cast<const ArrayKlass*>(k);
96 }
97
98 GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots);
99 bool compute_is_subtype_of(Klass* k);
100
101 // Sizing
102 static int header_size() { return sizeof(ArrayKlass)/wordSize; }
103 static int static_size(int header_size);
104
105 #if INCLUDE_SERVICES
106 virtual void collect_statistics(KlassSizeStats *sz) const {
107 Klass::collect_statistics(sz);
108 // Do nothing for now, but remember to modify if you add new
109 // stuff to ArrayKlass.
110 }
111 #endif
112
113 // Java vtable
114 klassVtable* vtable() const; // return new klassVtable
115 int vtable_length() const { return _vtable_len; }
116 static int base_vtable_length() { return Universe::base_vtable_size(); }
117 void set_vtable_length(int len) { assert(len == base_vtable_length(), "bad length"); _vtable_len = len; }
118 protected:
119 inline intptr_t* start_of_vtable() const;
120
121 public:
122 // Iterators
|