equal
deleted
inserted
replaced
41 |
41 |
42 klassOop arrayKlass::java_super() const { |
42 klassOop arrayKlass::java_super() const { |
43 if (super() == NULL) return NULL; // bootstrap case |
43 if (super() == NULL) return NULL; // bootstrap case |
44 // Array klasses have primary supertypes which are not reported to Java. |
44 // Array klasses have primary supertypes which are not reported to Java. |
45 // Example super chain: String[][] -> Object[][] -> Object[] -> Object |
45 // Example super chain: String[][] -> Object[][] -> Object[] -> Object |
46 return SystemDictionary::object_klass(); |
46 return SystemDictionary::Object_klass(); |
47 } |
47 } |
48 |
48 |
49 |
49 |
50 oop arrayKlass::multi_allocate(int rank, jint* sizes, TRAPS) { |
50 oop arrayKlass::multi_allocate(int rank, jint* sizes, TRAPS) { |
51 ShouldNotReachHere(); |
51 ShouldNotReachHere(); |
80 // target below becomes parsable |
80 // target below becomes parsable |
81 No_Safepoint_Verifier no_safepoint; |
81 No_Safepoint_Verifier no_safepoint; |
82 k = arrayKlassHandle(THREAD, base_klass()); |
82 k = arrayKlassHandle(THREAD, base_klass()); |
83 |
83 |
84 assert(!k()->is_parsable(), "not expecting parsability yet."); |
84 assert(!k()->is_parsable(), "not expecting parsability yet."); |
85 k->set_super(Universe::is_bootstrapping() ? (klassOop)NULL : SystemDictionary::object_klass()); |
85 k->set_super(Universe::is_bootstrapping() ? (klassOop)NULL : SystemDictionary::Object_klass()); |
86 k->set_layout_helper(Klass::_lh_neutral_value); |
86 k->set_layout_helper(Klass::_lh_neutral_value); |
87 k->set_dimension(1); |
87 k->set_dimension(1); |
88 k->set_higher_dimension(NULL); |
88 k->set_higher_dimension(NULL); |
89 k->set_lower_dimension(NULL); |
89 k->set_lower_dimension(NULL); |
90 k->set_component_mirror(NULL); |
90 k->set_component_mirror(NULL); |
115 return Universe::the_array_interfaces_array(); |
115 return Universe::the_array_interfaces_array(); |
116 } |
116 } |
117 |
117 |
118 bool arrayKlass::compute_is_subtype_of(klassOop k) { |
118 bool arrayKlass::compute_is_subtype_of(klassOop k) { |
119 // An array is a subtype of Serializable, Clonable, and Object |
119 // An array is a subtype of Serializable, Clonable, and Object |
120 return k == SystemDictionary::object_klass() |
120 return k == SystemDictionary::Object_klass() |
121 || k == SystemDictionary::cloneable_klass() |
121 || k == SystemDictionary::Cloneable_klass() |
122 || k == SystemDictionary::serializable_klass(); |
122 || k == SystemDictionary::Serializable_klass(); |
123 } |
123 } |
124 |
124 |
125 |
125 |
126 inline intptr_t* arrayKlass::start_of_vtable() const { |
126 inline intptr_t* arrayKlass::start_of_vtable() const { |
127 // all vtables start at the same place, that's why we use instanceKlass::header_size here |
127 // all vtables start at the same place, that's why we use instanceKlass::header_size here |