484 check_property(valid_symbol_at(signature_ref_index),
485 "Invalid constant pool index %u in class file %s",
486 signature_ref_index, CHECK);
487 break;
488 }
489 case JVM_CONSTANT_Utf8:
490 break;
491 case JVM_CONSTANT_UnresolvedClass: // fall-through
492 case JVM_CONSTANT_UnresolvedClassInError: {
493 ShouldNotReachHere(); // Only JVM_CONSTANT_ClassIndex should be present
494 break;
495 }
496 case JVM_CONSTANT_ClassIndex: {
497 const int class_index = cp->klass_index_at(index);
498 check_property(valid_symbol_at(class_index),
499 "Invalid constant pool index %u in class file %s",
500 class_index, CHECK);
501
502 Symbol* const name = cp->symbol_at(class_index);
503 const unsigned int name_len = name->utf8_length();
504 if (name->is_Q_signature() || name->is_Q_array_signature()) {
505 cp->unresolved_qdescriptor_at_put(index, class_index, num_klasses++);
506 } else {
507 cp->unresolved_klass_at_put(index, class_index, num_klasses++);
508 }
509 break;
510 }
511 case JVM_CONSTANT_StringIndex: {
512 const int string_index = cp->string_index_at(index);
513 check_property(valid_symbol_at(string_index),
514 "Invalid constant pool index %u in class file %s",
515 string_index, CHECK);
516 Symbol* const sym = cp->symbol_at(string_index);
517 cp->unresolved_string_at_put(index, sym);
518 break;
519 }
520 case JVM_CONSTANT_MethodHandle: {
521 const int ref_index = cp->method_handle_index_at(index);
522 check_property(valid_cp_range(ref_index, length),
523 "Invalid constant pool index %u in class file %s",
524 ref_index, CHECK);
|
484 check_property(valid_symbol_at(signature_ref_index),
485 "Invalid constant pool index %u in class file %s",
486 signature_ref_index, CHECK);
487 break;
488 }
489 case JVM_CONSTANT_Utf8:
490 break;
491 case JVM_CONSTANT_UnresolvedClass: // fall-through
492 case JVM_CONSTANT_UnresolvedClassInError: {
493 ShouldNotReachHere(); // Only JVM_CONSTANT_ClassIndex should be present
494 break;
495 }
496 case JVM_CONSTANT_ClassIndex: {
497 const int class_index = cp->klass_index_at(index);
498 check_property(valid_symbol_at(class_index),
499 "Invalid constant pool index %u in class file %s",
500 class_index, CHECK);
501
502 Symbol* const name = cp->symbol_at(class_index);
503 const unsigned int name_len = name->utf8_length();
504 if (name->is_Q_signature()) {
505 cp->unresolved_qdescriptor_at_put(index, class_index, num_klasses++);
506 } else {
507 cp->unresolved_klass_at_put(index, class_index, num_klasses++);
508 }
509 break;
510 }
511 case JVM_CONSTANT_StringIndex: {
512 const int string_index = cp->string_index_at(index);
513 check_property(valid_symbol_at(string_index),
514 "Invalid constant pool index %u in class file %s",
515 string_index, CHECK);
516 Symbol* const sym = cp->symbol_at(string_index);
517 cp->unresolved_string_at_put(index, sym);
518 break;
519 }
520 case JVM_CONSTANT_MethodHandle: {
521 const int ref_index = cp->method_handle_index_at(index);
522 check_property(valid_cp_range(ref_index, length),
523 "Invalid constant pool index %u in class file %s",
524 ref_index, CHECK);
|