RFR (s) 8159470: Error message for ICCE for MethodHandle constant pool not helpful

David Holmes david.holmes at oracle.com
Mon Jun 20 23:51:11 UTC 2016


On 21/06/2016 2:27 AM, Coleen Phillimore wrote:
>
>
> On 6/20/16 12:24 AM, David Holmes wrote:
>> Hi Coleen,
>>
>> Hi Coleen,
>>
>> On 18/06/2016 12:58 AM, Coleen Phillimore wrote:
>>> Summary: Reworded message and added test.
>>>
>>> Caused by: java.lang.IncompatibleClassChangeError: Inconsistent constant
>>> pool data in classfile for class WithConfiguration. Method
>>> lambda$autoDetect$0()Ljava/lang/String; at index 26 is
>>> JVM_CONSTANT_MethodRef and should be JVM_CONSTANT_InterfaceMethodRef
>>>
>>> Added test because the existing tests didn't cover this code path.
>>>
>>> open webrev at http://cr.openjdk.java.net/~coleenp/8159470.01/webrev
>>> bug link https://bugs.openjdk.java.net/browse/JDK-8159470
>>
>> Nit: why did you get rid of the parentheses here:
>>
>> !       if ((callee->is_interface() && m_tag.is_method()) ||
>
> Fixed. I shouldn't have removed them.
>>
>> Otherwise functional change looks fine.
>>
>> In the test what is the relationship between BootstrapMethodError and
>> the expected ICCE?
>
> Exceptions are intercepted and wrapped with BootstrapMethodError for
> invokedynamic. The ICCE happens to be the cause though.

So should the test be checking that the cause is in fact the expected 
ICCE and not some other unexpected exception?

David

> Thanks for the review.
> Coleen
>
>>
>> Thanks,
>> David
>>
>>> Ran nightly tests.
>>>
>>> Thanks,
>>> Coleen
>


More information about the hotspot-runtime-dev mailing list