src/share/vm/ci/ciEnv.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/ci

src/share/vm/ci/ciEnv.cpp

Print this page




 450                                                  sym->utf8_length()-1,
 451                                                  KILL_COMPILE_ON_FATAL_(fail_type));
 452 
 453     // Get element ciKlass recursively.
 454     ciKlass* elem_klass =
 455       get_klass_by_name_impl(accessing_klass,
 456                              cpool,
 457                              get_symbol(elem_sym),
 458                              require_local);
 459     if (elem_klass != NULL && elem_klass->is_loaded()) {
 460       // Now make an array for it
 461       return ciObjArrayKlass::make_impl(elem_klass);
 462     }
 463   }
 464 
 465   if (found_klass() == NULL && !cpool.is_null() && cpool->has_preresolution()) {
 466     // Look inside the constant pool for pre-resolved class entries.
 467     for (int i = cpool->length() - 1; i >= 1; i--) {
 468       if (cpool->tag_at(i).is_klass()) {
 469         Klass* kls = cpool->resolved_klass_at(i);
 470         if (kls->name() == sym) {
 471           found_klass = KlassHandle(THREAD, kls);
 472           break;
 473         }
 474       }
 475     }
 476   }
 477 
 478   if (found_klass() != NULL) {
 479     // Found it.  Build a CI handle.
 480     return get_klass(found_klass());
 481   }
 482 
 483   if (require_local)  return NULL;
 484 
 485   // Not yet loaded into the VM, or not governed by loader constraints.
 486   // Make a CI representative for it.
 487   return get_unloaded_klass(accessing_klass, name);
 488 }
 489 
 490 // ------------------------------------------------------------------




 450                                                  sym->utf8_length()-1,
 451                                                  KILL_COMPILE_ON_FATAL_(fail_type));
 452 
 453     // Get element ciKlass recursively.
 454     ciKlass* elem_klass =
 455       get_klass_by_name_impl(accessing_klass,
 456                              cpool,
 457                              get_symbol(elem_sym),
 458                              require_local);
 459     if (elem_klass != NULL && elem_klass->is_loaded()) {
 460       // Now make an array for it
 461       return ciObjArrayKlass::make_impl(elem_klass);
 462     }
 463   }
 464 
 465   if (found_klass() == NULL && !cpool.is_null() && cpool->has_preresolution()) {
 466     // Look inside the constant pool for pre-resolved class entries.
 467     for (int i = cpool->length() - 1; i >= 1; i--) {
 468       if (cpool->tag_at(i).is_klass()) {
 469         Klass* kls = cpool->resolved_klass_at(i);
 470         if (kls->name()->equals(sym)) {
 471           found_klass = KlassHandle(THREAD, kls);
 472           break;
 473         }
 474       }
 475     }
 476   }
 477 
 478   if (found_klass() != NULL) {
 479     // Found it.  Build a CI handle.
 480     return get_klass(found_klass());
 481   }
 482 
 483   if (require_local)  return NULL;
 484 
 485   // Not yet loaded into the VM, or not governed by loader constraints.
 486   // Make a CI representative for it.
 487   return get_unloaded_klass(accessing_klass, name);
 488 }
 489 
 490 // ------------------------------------------------------------------


src/share/vm/ci/ciEnv.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File