review request (L): 6984311 JSR 292 needs optional bootstrap method parameters

Christian Thalinger christian.thalinger at
Fri Oct 29 04:09:42 PDT 2010

On Oct 28, 2010, at 8:40 PM, John Rose wrote:
> 6984311: JSR 292 needs optional bootstrap method parameters
> 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.)

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?


Only the copyright year is changed.

Otherwise looks good.

-- Christian

More information about the hotspot-compiler-dev mailing list