< prev index next >

src/hotspot/share/prims/jvmtiClassFileReconstituter.cpp

Print this page
rev 50604 : imported patch jep181-rev1

*** 386,395 **** --- 386,429 ---- write_u2(bootstrap_argument); } } } + // NestHost_attribute { + // u2 attribute_name_index; + // u4 attribute_length; + // u2 host_class_index; + // } + void JvmtiClassFileReconstituter::write_nest_host_attribute() { + int length = sizeof(u2); + int host_class_index = ik()->nest_host_index(); + + write_attribute_name_index("NestHost"); + write_u4(length); + write_u2(host_class_index); + } + + // NestMembers_attribute { + // u2 attribute_name_index; + // u4 attribute_length; + // u2 number_of_classes; + // u2 classes[number_of_classes]; + // } + void JvmtiClassFileReconstituter::write_nest_members_attribute() { + Array<u2>* nest_members = ik()->nest_members(); + int number_of_classes = nest_members->length(); + int length = sizeof(u2) * (1 + number_of_classes); + + write_attribute_name_index("NestMembers"); + write_u4(length); + write_u2(number_of_classes); + for (int i = 0; i < number_of_classes; i++) { + u2 class_cp_index = nest_members->at(i); + write_u2(class_cp_index); + } + } + // Write InnerClasses attribute // JVMSpec| InnerClasses_attribute { // JVMSpec| u2 attribute_name_index; // JVMSpec| u4 attribute_length;
*** 656,665 **** --- 690,705 ---- ++attr_count; // has RuntimeVisibleTypeAnnotations attribute } if (cpool()->operands() != NULL) { ++attr_count; } + if (ik()->nest_host_index() != 0) { + ++attr_count; + } + if (ik()->nest_members() != Universe::the_empty_short_array()) { + ++attr_count; + } write_u2(attr_count); if (generic_signature != NULL) { write_signature_attribute(symbol_to_cpool_index(generic_signature));
*** 680,689 **** --- 720,735 ---- write_annotations_attribute("RuntimeVisibleTypeAnnotations", type_anno); } if (cpool()->operands() != NULL) { write_bootstrapmethod_attribute(); } + if (ik()->nest_host_index() != 0) { + write_nest_host_attribute(); + } + if (ik()->nest_members() != Universe::the_empty_short_array()) { + write_nest_members_attribute(); + } } // Write the method information portion of ClassFile structure // JVMSpec| u2 methods_count; // JVMSpec| method_info methods[methods_count];
< prev index next >