On Nov 25, 2010, at 2:27 AM, Christian Thalinger wrote: > 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. >> http://cr.openjdk.java.net/~jrose/7001379/webrev.hs.00 > > src/share/vm/classfile/classFileParser.hpp: > > + //@@ 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?
Oops, nope. > src/share/vm/oops/constantPoolOop.hpp: > > - 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. In principle, the call to 'klass_at' could trigger a GC. We know it won't, because of the tag of the CP entry. But that requires a private, invisible contract with the present implementation of 'klass_at'. It is safer to use the handle. Since I had to introduce a handle in copy_cp_to_impl, it was natural to move it down into the per-entry routine. >> For review, here is the specification change, in the javadoc in the jdk repo: >> http://cr.openjdk.java.net/~jrose/7001379/webrev.jdk.00 > > 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. Thanks. Fixed and clarified: * Each {...@code CONSTANT_InvokeDynamic} entry contains an index which references * a bootstrap method specifier; all such specifiers are contained in a separate array. * This array is defined by a class attribute named {...@code BootstrapMethods}. > 317 * {...@code BootstrapMethods} attribute. In particular, each cosntant > > Typo. Fixed. >> The JDK webrev also includes an adjusted unit test. >> >> The base revision was reviewed by Christian yesterday: >> http://cr.openjdk.java.net/~jrose/7001423/webrev.00 >> >> The JVM code passes the unit test, of course. > > > -- Christian Thanks. Can I cite you as a reviewer on both change sets? -- John _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev