464 ConstantPoolCacheEntry* cpc_entry = this_oop->cache()->entry_at(cache_index);
465 result_oop = cpc_entry->f1();
466 if (result_oop != NULL) {
467 return decode_exception_from_f1(result_oop, THREAD);
468 // That was easy...
469 }
470 index = cpc_entry->constant_pool_index();
471 }
472
473 jvalue prim_value; // temp used only in a few cases below
474
475 int tag_value = this_oop->tag_at(index).value();
476 switch (tag_value) {
477
478 case JVM_CONSTANT_UnresolvedClass:
479 case JVM_CONSTANT_UnresolvedClassInError:
480 case JVM_CONSTANT_Class:
481 {
482 klassOop resolved = klass_at_impl(this_oop, index, CHECK_NULL);
483 // ldc wants the java mirror.
484 result_oop = resolved->klass_part()->java_mirror();
485 break;
486 }
487
488 case JVM_CONSTANT_String:
489 case JVM_CONSTANT_UnresolvedString:
490 if (this_oop->is_pseudo_string_at(index)) {
491 result_oop = this_oop->pseudo_string_at(index);
492 break;
493 }
494 result_oop = string_at_impl(this_oop, index, CHECK_NULL);
495 break;
496
497 case JVM_CONSTANT_Object:
498 result_oop = this_oop->object_at(index);
499 break;
500
501 case JVM_CONSTANT_MethodHandle:
502 {
503 int ref_kind = this_oop->method_handle_ref_kind_at(index);
504 int callee_index = this_oop->method_handle_klass_index_at(index);
|
464 ConstantPoolCacheEntry* cpc_entry = this_oop->cache()->entry_at(cache_index);
465 result_oop = cpc_entry->f1();
466 if (result_oop != NULL) {
467 return decode_exception_from_f1(result_oop, THREAD);
468 // That was easy...
469 }
470 index = cpc_entry->constant_pool_index();
471 }
472
473 jvalue prim_value; // temp used only in a few cases below
474
475 int tag_value = this_oop->tag_at(index).value();
476 switch (tag_value) {
477
478 case JVM_CONSTANT_UnresolvedClass:
479 case JVM_CONSTANT_UnresolvedClassInError:
480 case JVM_CONSTANT_Class:
481 {
482 klassOop resolved = klass_at_impl(this_oop, index, CHECK_NULL);
483 // ldc wants the java mirror.
484 result_oop = resolved->java_mirror();
485 break;
486 }
487
488 case JVM_CONSTANT_String:
489 case JVM_CONSTANT_UnresolvedString:
490 if (this_oop->is_pseudo_string_at(index)) {
491 result_oop = this_oop->pseudo_string_at(index);
492 break;
493 }
494 result_oop = string_at_impl(this_oop, index, CHECK_NULL);
495 break;
496
497 case JVM_CONSTANT_Object:
498 result_oop = this_oop->object_at(index);
499 break;
500
501 case JVM_CONSTANT_MethodHandle:
502 {
503 int ref_kind = this_oop->method_handle_ref_kind_at(index);
504 int callee_index = this_oop->method_handle_klass_index_at(index);
|