review request (L): 7001379: bootstrap method data needs to be moved from constant pool to a classfile attribute

Christian Thalinger christian.thalinger at
Thu Nov 25 02:27:43 PST 2010

On Nov 25, 2010, at 8:42 AM, John Rose wrote:
> On Nov 22, 2010, at 6:57 PM, John Rose wrote:
>> Because of a strong and reasonable request from the IBM JVM team, the JSR 292 class file format for CONSTANT_InvokeDynamic is changing one more time.
>> ...
>> I will be putting out a review request soon for this.
> Here is a JVM change which moves the variadic parts of CONSTANT_InvokeDynamic specifiers out of the constant pool and into a new attribute, BootstrapMethods.


+  //@@  static int start_operand_group(GrowableArray<int>* &operands, int op_count, TRAPS);
+  //@@  static void store_operand_array(GrowableArray<int>* operands, constantPoolHandle cp, TRAPS);

Do we still need them?


-  void copy_entry_to(int from_i, constantPoolHandle to_cp, int to_i, TRAPS);
+  static void copy_entry_to(constantPoolHandle from_cp, int from_i, constantPoolHandle to_cp, int to_i, TRAPS);

Maybe I'm missing the obvious here but why do need to pass a handle in?  There is nothing fancy going on in that method.

> For review, here is the specification change, in the javadoc in the jdk repo:

 301  * Each {@code CONSTANT_InvokeDynamic} entry refers has a reference to a
 302  * bootstrap method specifier defined in a separate array.

I think there are some superfluous words.

 317  * {@code BootstrapMethods} attribute.  In particular, each cosntant


> The JDK webrev also includes an adjusted unit test.
> The base revision was reviewed by Christian yesterday:
> The JVM code passes the unit test, of course.

-- Christian

More information about the hotspot-compiler-dev mailing list