src/hotspot/share/ci/ciEnv.cpp
changeset 58722 cba8afa5cfed
parent 58512 5185bc8dcbb1
child 59056 15936b142f86
equal deleted inserted replaced
58720:ae0af9fb3dbb 58722:cba8afa5cfed
   411   ASSERT_IN_VM;
   411   ASSERT_IN_VM;
   412   EXCEPTION_CONTEXT;
   412   EXCEPTION_CONTEXT;
   413 
   413 
   414   // Now we need to check the SystemDictionary
   414   // Now we need to check the SystemDictionary
   415   Symbol* sym = name->get_symbol();
   415   Symbol* sym = name->get_symbol();
   416   if (sym->char_at(0) == 'L' &&
   416   if (sym->char_at(0) == JVM_SIGNATURE_CLASS &&
   417     sym->char_at(sym->utf8_length()-1) == ';') {
   417       sym->char_at(sym->utf8_length()-1) == JVM_SIGNATURE_ENDCLASS) {
   418     // This is a name from a signature.  Strip off the trimmings.
   418     // This is a name from a signature.  Strip off the trimmings.
   419     // Call recursive to keep scope of strippedsym.
   419     // Call recursive to keep scope of strippedsym.
   420     TempNewSymbol strippedsym = SymbolTable::new_symbol(sym->as_utf8()+1,
   420     TempNewSymbol strippedsym = SymbolTable::new_symbol(sym->as_utf8()+1,
   421                                                         sym->utf8_length()-2);
   421                                                         sym->utf8_length()-2);
   422     ciSymbol* strippedname = get_symbol(strippedsym);
   422     ciSymbol* strippedname = get_symbol(strippedsym);
   438     domain = Handle(THREAD, accessing_klass->protection_domain());
   438     domain = Handle(THREAD, accessing_klass->protection_domain());
   439   }
   439   }
   440 
   440 
   441   // setup up the proper type to return on OOM
   441   // setup up the proper type to return on OOM
   442   ciKlass* fail_type;
   442   ciKlass* fail_type;
   443   if (sym->char_at(0) == '[') {
   443   if (sym->char_at(0) == JVM_SIGNATURE_ARRAY) {
   444     fail_type = _unloaded_ciobjarrayklass;
   444     fail_type = _unloaded_ciobjarrayklass;
   445   } else {
   445   } else {
   446     fail_type = _unloaded_ciinstance_klass;
   446     fail_type = _unloaded_ciinstance_klass;
   447   }
   447   }
   448   Klass* found_klass;
   448   Klass* found_klass;
   464   // The element type may be available either locally or via constraints.
   464   // The element type may be available either locally or via constraints.
   465   // In either case, if we can find the element type in the system dictionary,
   465   // In either case, if we can find the element type in the system dictionary,
   466   // we must build an array type around it.  The CI requires array klasses
   466   // we must build an array type around it.  The CI requires array klasses
   467   // to be loaded if their element klasses are loaded, except when memory
   467   // to be loaded if their element klasses are loaded, except when memory
   468   // is exhausted.
   468   // is exhausted.
   469   if (sym->char_at(0) == '[' &&
   469   if (sym->char_at(0) == JVM_SIGNATURE_ARRAY &&
   470       (sym->char_at(1) == '[' || sym->char_at(1) == 'L')) {
   470       (sym->char_at(1) == JVM_SIGNATURE_ARRAY || sym->char_at(1) == JVM_SIGNATURE_CLASS)) {
   471     // We have an unloaded array.
   471     // We have an unloaded array.
   472     // Build it on the fly if the element class exists.
   472     // Build it on the fly if the element class exists.
   473     TempNewSymbol elem_sym = SymbolTable::new_symbol(sym->as_utf8()+1,
   473     TempNewSymbol elem_sym = SymbolTable::new_symbol(sym->as_utf8()+1,
   474                                                      sym->utf8_length()-1);
   474                                                      sym->utf8_length()-1);
   475 
   475