equal
deleted
inserted
replaced
115 return k == SystemDictionary::Object_klass() |
115 return k == SystemDictionary::Object_klass() |
116 || k == SystemDictionary::Cloneable_klass() |
116 || k == SystemDictionary::Cloneable_klass() |
117 || k == SystemDictionary::Serializable_klass(); |
117 || k == SystemDictionary::Serializable_klass(); |
118 } |
118 } |
119 |
119 |
120 |
|
121 inline intptr_t* ArrayKlass::start_of_vtable() const { |
|
122 // all vtables start at the same place, that's why we use InstanceKlass::header_size here |
|
123 return ((intptr_t*)this) + InstanceKlass::header_size(); |
|
124 } |
|
125 |
|
126 |
|
127 klassVtable* ArrayKlass::vtable() const { |
|
128 KlassHandle kh(Thread::current(), this); |
|
129 return new klassVtable(kh, start_of_vtable(), vtable_length() / vtableEntry::size()); |
|
130 } |
|
131 |
|
132 |
|
133 objArrayOop ArrayKlass::allocate_arrayArray(int n, int length, TRAPS) { |
120 objArrayOop ArrayKlass::allocate_arrayArray(int n, int length, TRAPS) { |
134 if (length < 0) { |
121 if (length < 0) { |
135 THROW_0(vmSymbols::java_lang_NegativeArraySizeException()); |
122 THROW_0(vmSymbols::java_lang_NegativeArraySizeException()); |
136 } |
123 } |
137 if (length > arrayOopDesc::max_array_length(T_ARRAY)) { |
124 if (length > arrayOopDesc::max_array_length(T_ARRAY)) { |