src/share/vm/oops/constantPoolOop.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7017732_incremental Sdiff src/share/vm/oops

src/share/vm/oops/constantPoolOop.cpp

Print this page




 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);


src/share/vm/oops/constantPoolOop.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File