comparison src/share/vm/runtime/reflection.cpp @ 6831:d8ce2825b193

8000213: NPG: Should have renamed arrayKlass and typeArrayKlass Summary: Capitalize these metadata types (and objArrayKlass) Reviewed-by: stefank, twisti, kvn
author coleenp
date Sat, 29 Sep 2012 06:40:00 -0400
parents da91efe96a93
children 4735d2c84362
comparison
equal deleted inserted replaced
6811:1b582b1bf7cb 6831:d8ce2825b193
210 if (a->is_objArray()) { 210 if (a->is_objArray()) {
211 value->l = (jobject) objArrayOop(a)->obj_at(index); 211 value->l = (jobject) objArrayOop(a)->obj_at(index);
212 return T_OBJECT; 212 return T_OBJECT;
213 } else { 213 } else {
214 assert(a->is_typeArray(), "just checking"); 214 assert(a->is_typeArray(), "just checking");
215 BasicType type = typeArrayKlass::cast(a->klass())->element_type(); 215 BasicType type = TypeArrayKlass::cast(a->klass())->element_type();
216 switch (type) { 216 switch (type) {
217 case T_BOOLEAN: 217 case T_BOOLEAN:
218 value->z = typeArrayOop(a)->bool_at(index); 218 value->z = typeArrayOop(a)->bool_at(index);
219 break; 219 break;
220 case T_CHAR: 220 case T_CHAR:
252 } 252 }
253 if (a->is_objArray()) { 253 if (a->is_objArray()) {
254 if (value_type == T_OBJECT) { 254 if (value_type == T_OBJECT) {
255 oop obj = (oop) value->l; 255 oop obj = (oop) value->l;
256 if (obj != NULL) { 256 if (obj != NULL) {
257 Klass* element_klass = objArrayKlass::cast(a->klass())->element_klass(); 257 Klass* element_klass = ObjArrayKlass::cast(a->klass())->element_klass();
258 if (!obj->is_a(element_klass)) { 258 if (!obj->is_a(element_klass)) {
259 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "array element type mismatch"); 259 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "array element type mismatch");
260 } 260 }
261 } 261 }
262 objArrayOop(a)->obj_at_put(index, obj); 262 objArrayOop(a)->obj_at_put(index, obj);
263 } 263 }
264 } else { 264 } else {
265 assert(a->is_typeArray(), "just checking"); 265 assert(a->is_typeArray(), "just checking");
266 BasicType array_type = typeArrayKlass::cast(a->klass())->element_type(); 266 BasicType array_type = TypeArrayKlass::cast(a->klass())->element_type();
267 if (array_type != value_type) { 267 if (array_type != value_type) {
268 // The widen operation can potentially throw an exception, but cannot block, 268 // The widen operation can potentially throw an exception, but cannot block,
269 // so typeArrayOop a is safe if the call succeeds. 269 // so typeArrayOop a is safe if the call succeeds.
270 widen(value, value_type, array_type, CHECK); 270 widen(value, value_type, array_type, CHECK);
271 } 271 }
311 } 311 }
312 } 312 }
313 313
314 314
315 oop Reflection:: basic_type_arrayklass_to_mirror(Klass* basic_type_arrayklass, TRAPS) { 315 oop Reflection:: basic_type_arrayklass_to_mirror(Klass* basic_type_arrayklass, TRAPS) {
316 BasicType type = typeArrayKlass::cast(basic_type_arrayklass)->element_type(); 316 BasicType type = TypeArrayKlass::cast(basic_type_arrayklass)->element_type();
317 return Universe::java_mirror(type); 317 return Universe::java_mirror(type);
318 } 318 }
319 319
320 320
321 arrayOop Reflection::reflect_new_array(oop element_mirror, jint length, TRAPS) { 321 arrayOop Reflection::reflect_new_array(oop element_mirror, jint length, TRAPS) {
325 if (length < 0) { 325 if (length < 0) {
326 THROW_0(vmSymbols::java_lang_NegativeArraySizeException()); 326 THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
327 } 327 }
328 if (java_lang_Class::is_primitive(element_mirror)) { 328 if (java_lang_Class::is_primitive(element_mirror)) {
329 Klass* tak = basic_type_mirror_to_arrayklass(element_mirror, CHECK_NULL); 329 Klass* tak = basic_type_mirror_to_arrayklass(element_mirror, CHECK_NULL);
330 return typeArrayKlass::cast(tak)->allocate(length, THREAD); 330 return TypeArrayKlass::cast(tak)->allocate(length, THREAD);
331 } else { 331 } else {
332 Klass* k = java_lang_Class::as_Klass(element_mirror); 332 Klass* k = java_lang_Class::as_Klass(element_mirror);
333 if (Klass::cast(k)->oop_is_array() && arrayKlass::cast(k)->dimension() >= MAX_DIM) { 333 if (Klass::cast(k)->oop_is_array() && ArrayKlass::cast(k)->dimension() >= MAX_DIM) {
334 THROW_0(vmSymbols::java_lang_IllegalArgumentException()); 334 THROW_0(vmSymbols::java_lang_IllegalArgumentException());
335 } 335 }
336 return oopFactory::new_objArray(k, length, THREAD); 336 return oopFactory::new_objArray(k, length, THREAD);
337 } 337 }
338 } 338 }
339 339
340 340
341 arrayOop Reflection::reflect_new_multi_array(oop element_mirror, typeArrayOop dim_array, TRAPS) { 341 arrayOop Reflection::reflect_new_multi_array(oop element_mirror, typeArrayOop dim_array, TRAPS) {
342 assert(dim_array->is_typeArray(), "just checking"); 342 assert(dim_array->is_typeArray(), "just checking");
343 assert(typeArrayKlass::cast(dim_array->klass())->element_type() == T_INT, "just checking"); 343 assert(TypeArrayKlass::cast(dim_array->klass())->element_type() == T_INT, "just checking");
344 344
345 if (element_mirror == NULL) { 345 if (element_mirror == NULL) {
346 THROW_0(vmSymbols::java_lang_NullPointerException()); 346 THROW_0(vmSymbols::java_lang_NullPointerException());
347 } 347 }
348 348
365 if (java_lang_Class::is_primitive(element_mirror)) { 365 if (java_lang_Class::is_primitive(element_mirror)) {
366 klass = basic_type_mirror_to_arrayklass(element_mirror, CHECK_NULL); 366 klass = basic_type_mirror_to_arrayklass(element_mirror, CHECK_NULL);
367 } else { 367 } else {
368 klass = java_lang_Class::as_Klass(element_mirror); 368 klass = java_lang_Class::as_Klass(element_mirror);
369 if (Klass::cast(klass)->oop_is_array()) { 369 if (Klass::cast(klass)->oop_is_array()) {
370 int k_dim = arrayKlass::cast(klass)->dimension(); 370 int k_dim = ArrayKlass::cast(klass)->dimension();
371 if (k_dim + len > MAX_DIM) { 371 if (k_dim + len > MAX_DIM) {
372 THROW_0(vmSymbols::java_lang_IllegalArgumentException()); 372 THROW_0(vmSymbols::java_lang_IllegalArgumentException());
373 } 373 }
374 dim += k_dim; 374 dim += k_dim;
375 } 375 }
376 } 376 }
377 klass = Klass::cast(klass)->array_klass(dim, CHECK_NULL); 377 klass = Klass::cast(klass)->array_klass(dim, CHECK_NULL);
378 oop obj = arrayKlass::cast(klass)->multi_allocate(len, dimensions, THREAD); 378 oop obj = ArrayKlass::cast(klass)->multi_allocate(len, dimensions, THREAD);
379 assert(obj->is_array(), "just checking"); 379 assert(obj->is_array(), "just checking");
380 return arrayOop(obj); 380 return arrayOop(obj);
381 } 381 }
382 382
383 383
389 Klass* klass = java_lang_Class::as_Klass(mirror); 389 Klass* klass = java_lang_Class::as_Klass(mirror);
390 if (!Klass::cast(klass)->oop_is_array()) { 390 if (!Klass::cast(klass)->oop_is_array()) {
391 return NULL; 391 return NULL;
392 } 392 }
393 393
394 oop result = arrayKlass::cast(klass)->component_mirror(); 394 oop result = ArrayKlass::cast(klass)->component_mirror();
395 #ifdef ASSERT 395 #ifdef ASSERT
396 oop result2 = NULL; 396 oop result2 = NULL;
397 if (arrayKlass::cast(klass)->dimension() == 1) { 397 if (ArrayKlass::cast(klass)->dimension() == 1) {
398 if (Klass::cast(klass)->oop_is_typeArray()) { 398 if (Klass::cast(klass)->oop_is_typeArray()) {
399 result2 = basic_type_arrayklass_to_mirror(klass, CHECK_NULL); 399 result2 = basic_type_arrayklass_to_mirror(klass, CHECK_NULL);
400 } else { 400 } else {
401 result2 = Klass::cast(objArrayKlass::cast(klass)->element_klass())->java_mirror(); 401 result2 = Klass::cast(ObjArrayKlass::cast(klass)->element_klass())->java_mirror();
402 } 402 }
403 } else { 403 } else {
404 Klass* lower_dim = arrayKlass::cast(klass)->lower_dimension(); 404 Klass* lower_dim = ArrayKlass::cast(klass)->lower_dimension();
405 assert(Klass::cast(lower_dim)->oop_is_array(), "just checking"); 405 assert(Klass::cast(lower_dim)->oop_is_array(), "just checking");
406 result2 = Klass::cast(lower_dim)->java_mirror(); 406 result2 = Klass::cast(lower_dim)->java_mirror();
407 } 407 }
408 assert(result == result2, "results must be consistent"); 408 assert(result == result2, "results must be consistent");
409 #endif //ASSERT 409 #endif //ASSERT