hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp
changeset 17309 83ac929d332a
parent 17307 74bb7db916df
child 22234 da823d78ad65
equal deleted inserted replaced
17308:eb7a22d26c53 17309:83ac929d332a
   348 //    {   u2 bootstrap_method_ref;
   348 //    {   u2 bootstrap_method_ref;
   349 //        u2 num_bootstrap_arguments;
   349 //        u2 num_bootstrap_arguments;
   350 //        u2 bootstrap_arguments[num_bootstrap_arguments];
   350 //        u2 bootstrap_arguments[num_bootstrap_arguments];
   351 //    } bootstrap_methods[num_bootstrap_methods];
   351 //    } bootstrap_methods[num_bootstrap_methods];
   352 //  }
   352 //  }
   353 void JvmtiClassFileReconstituter::write_boostrapmethod_attribute() {
   353 void JvmtiClassFileReconstituter::write_bootstrapmethod_attribute() {
   354   Array<u2>* operands = cpool()->operands();
   354   Array<u2>* operands = cpool()->operands();
   355   write_attribute_name_index("BootstrapMethods");
   355   write_attribute_name_index("BootstrapMethods");
   356   int num_bootstrap_methods = ConstantPool::operand_array_length(operands);
   356   int num_bootstrap_methods = ConstantPool::operand_array_length(operands);
   357 
   357 
   358   // calculate length of attribute
   358   // calculate length of attribute
   359   int length = sizeof(u2); // num_boostrap_methods
   359   int length = sizeof(u2); // num_bootstrap_methods
   360   for (int n = 0; n < num_bootstrap_methods; n++) {
   360   for (int n = 0; n < num_bootstrap_methods; n++) {
   361     u2 num_bootstrap_arguments = cpool()->operand_argument_count_at(n);
   361     u2 num_bootstrap_arguments = cpool()->operand_argument_count_at(n);
   362     length += sizeof(u2); // bootstrap_method_ref
   362     length += sizeof(u2); // bootstrap_method_ref
   363     length += sizeof(u2); // num_bootstrap_arguments
   363     length += sizeof(u2); // num_bootstrap_arguments
   364     length += sizeof(u2) * num_bootstrap_arguments; // bootstrap_arguments[num_bootstrap_arguments]
   364     length += sizeof(u2) * num_bootstrap_arguments; // bootstrap_arguments[num_bootstrap_arguments]
   655   }
   655   }
   656   if (anno != NULL) {
   656   if (anno != NULL) {
   657     write_annotations_attribute("RuntimeVisibleAnnotations", anno);
   657     write_annotations_attribute("RuntimeVisibleAnnotations", anno);
   658   }
   658   }
   659   if (cpool()->operands() != NULL) {
   659   if (cpool()->operands() != NULL) {
   660     write_boostrapmethod_attribute();
   660     write_bootstrapmethod_attribute();
   661   }
   661   }
   662 }
   662 }
   663 
   663 
   664 // Write the method information portion of ClassFile structure
   664 // Write the method information portion of ClassFile structure
   665 // JVMSpec|     u2 methods_count;
   665 // JVMSpec|     u2 methods_count;