equal
deleted
inserted
replaced
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 |