125 // Find LCA in class hierarchy
126 Klass *Klass::LCA( Klass *k2 ) {
127 Klass *k1 = this;
128 while( 1 ) {
129 if( k1->is_subtype_of(k2) ) return k2;
130 if( k2->is_subtype_of(k1) ) return k1;
131 k1 = k1->super();
132 k2 = k2->super();
133 }
134 }
135
136
137 void Klass::check_valid_for_instantiation(bool throwError, TRAPS) {
138 ResourceMark rm(THREAD);
139 THROW_MSG(throwError ? vmSymbols::java_lang_InstantiationError()
140 : vmSymbols::java_lang_InstantiationException(), external_name());
141 }
142
143
144 void Klass::copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS) {
145 THROW(vmSymbols::java_lang_ArrayStoreException());
146 }
147
148
149 void Klass::initialize(TRAPS) {
150 ShouldNotReachHere();
151 }
152
153 bool Klass::compute_is_subtype_of(Klass* k) {
154 assert(k->is_klass(), "argument must be a class");
155 return is_subclass_of(k);
156 }
157
158 Klass* Klass::find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const {
159 #ifdef ASSERT
160 tty->print_cr("Error: find_field called on a klass oop."
161 " Likely error: reflection method does not correctly"
162 " wrap return value in a mirror object.");
163 #endif
164 ShouldNotReachHere();
165 return NULL;
|
125 // Find LCA in class hierarchy
126 Klass *Klass::LCA( Klass *k2 ) {
127 Klass *k1 = this;
128 while( 1 ) {
129 if( k1->is_subtype_of(k2) ) return k2;
130 if( k2->is_subtype_of(k1) ) return k1;
131 k1 = k1->super();
132 k2 = k2->super();
133 }
134 }
135
136
137 void Klass::check_valid_for_instantiation(bool throwError, TRAPS) {
138 ResourceMark rm(THREAD);
139 THROW_MSG(throwError ? vmSymbols::java_lang_InstantiationError()
140 : vmSymbols::java_lang_InstantiationException(), external_name());
141 }
142
143
144 void Klass::copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS) {
145 ResourceMark rm(THREAD);
146 assert(s != NULL, "Throw NPE!");
147 THROW_MSG(vmSymbols::java_lang_ArrayStoreException(),
148 err_msg("arraycopy: source type %s is not an array", s->klass()->external_name()));
149 }
150
151
152 void Klass::initialize(TRAPS) {
153 ShouldNotReachHere();
154 }
155
156 bool Klass::compute_is_subtype_of(Klass* k) {
157 assert(k->is_klass(), "argument must be a class");
158 return is_subclass_of(k);
159 }
160
161 Klass* Klass::find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const {
162 #ifdef ASSERT
163 tty->print_cr("Error: find_field called on a klass oop."
164 " Likely error: reflection method does not correctly"
165 " wrap return value in a mirror object.");
166 #endif
167 ShouldNotReachHere();
168 return NULL;
|