On Oct 28, 2010, at 8:40 PM, John Rose wrote: > 6984311: JSR 292 needs optional bootstrap method parameters > > http://cr.openjdk.java.net/~jrose/6984311/webrev.02/ > > This is a rework of an earlier review request. (The subject line > mentioned bug 6981777.) > > The changes are (1) the structure of the CONSTANT_MethodApply node > is merged into the CONSTANT_InvokeDynamic node, and (2) the extra- > argument structure is N-ary, not binary. > > Both of these changes reduce the number of constant pool nodes, > relative to the binary MethodApply version. > > (Motivation: This change will support injection of additional > metadata parameters at dynamic call sites. A key use is for Java > closures, where the additional metadata parameter is a closure body > method. There are many other language-specific uses for such > metadata. Previously, such metadata had to be mangled into the > name, or coded into a unique per-call-site bootstrap method. Both > of those older workarounds are significantly more costly in > complexity, class file size, and constant pool entry count.)
src/share/vm/oops/constantPoolOop.cpp: 576 // Benign race condition: f1 may already be filled in while we were trying to lock. I guess we don't care here because the exception to be thrown is expected to be the same for different threads, right? 1613 Bytes::put_Java_u2((address) (bytes+5), argc); 1614 for (int arg_i = 0; arg_i < argc; arg_i++) { 1615 int arg = invoke_dynamic_argument_index_at(idx, arg_i); 1616 Bytes::put_Java_u2((address) (bytes+5+2*arg_i), arg); 1617 } Isn't argc here overwritten with the first arg? src/share/vm/utilities/constantTag.cpp: Only the copyright year is changed. Otherwise looks good. -- Christian _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev