Hi,

To me it did read like Remi says the name is wrong. I was wondering if 
it is related to void as well...

Maybe it is better to give the method name as explicit argument and use 
the bytecode name for something else instead. Only... the bytecode 
started to read well again just now... But I guess I have to do that 
step, since Groovy allows in theory method names, that are not legal in 
bytecode.

Am 30.08.2012 15:59, schrieb Douglas Simon:
> Is is something to do with the fact that <init> methods always have a void 
> return type?
>
> On Aug 30, 2012, at 3:35 PM, Remi Forax <fo...@univ-mlv.fr> wrote:
>
>> The JVMS says the name must be a method name,
>> http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html#jvms-5.1
>>
>> A symbolic reference to a call site specifier is derived from a 
>> CONSTANT_InvokeDynamic_info structure (§4.4.10) in the binary representation 
>> of a class or interface. Such a reference gives:
>>      • a symbolic reference to a method handle, which will serve as a 
>> bootstrap method for an invokedynamic instruction (§invokedynamic);
>>
>>      • a sequence of symbolic references (to classes, method types, and 
>> method handles), string literals, and runtime constants (i.e. primitive 
>> numeric values), which will serve as static arguments to a bootstrap method;
>>
>>      • a method name and method descriptor.
>>
>>
>> so "<init>" should be possible, but I don't think the EG discuss this corner 
>> case.
>>
>> Rémi
>>
>> On 08/30/2012 03:19 PM, Jochen Theodorou wrote:
>>> Hi all,
>>>
>>> I originally wrote that to the asm list, but nobody seems to know there.
>>> Anyway, for my generated bytecode the verifier complains with this message:
>>>
>>> java.lang.ClassFormatError: Method "<init>" in class test has illegal
>>> signature "(Ljava/lang/Class;Ljava/util/Map;)Ljava/lang/Object;"
>>>
>>> Now... there is not a single <init> method of that signature in the
>>> class test. What is new though (before it worked) is this indy call:
>>>
>>>
>>>>      INVOKEDYNAMIC 
>>>> <init>(Ljava/lang/Class;Ljava/util/Map;)Ljava/lang/Object; [
>>>>        // handle kind 0x6 : INVOKESTATIC
>>>>        
>>>> org/codehaus/groovy/vmplugin/v7/IndyInterface.bootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;)
>>>>        // arguments: none
>>>>
>>> And this call has the signature the verifier complains about. Is this an
>>> illegal invokedynamic call?
>>>
>>> bye blackdrag
>>>
>>>
>>
>> _______________________________________________
>> mlvm-dev mailing list
>> mlvm-dev@openjdk.java.net
>> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
>
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev@openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
>


-- 
Jochen "blackdrag" Theodorou - Groovy Project Tech Lead
blog: http://blackdragsview.blogspot.com/
german groovy discussion newsgroup: de.comp.lang.misc
For Groovy programming sources visit http://groovy-lang.org

_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to