Mercurial > hg > truffle
comparison src/share/vm/oops/arrayKlass.cpp @ 1339:09ac706c2623
Merge
author | asaha |
---|---|
date | Wed, 24 Mar 2010 17:16:33 -0700 |
parents | 4ce7240d622c |
children | c18cbe5936b8 |
comparison
equal
deleted
inserted
replaced
1338:f5dd08ad65df | 1339:09ac706c2623 |
---|---|
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 |