RFR 8042235: redefining method used by multiple MethodHandles crashes VM

Coleen Phillimore coleen.phillimore at oracle.com
Wed Nov 19 16:27:56 UTC 2014


On 11/19/14, 8:13 AM, Lois Foltan wrote:
> Hi Coleen,
>
> I think this looks good and I actually like the implementation better 
> than the former indexing approach.  One minor comment:
>
> src/share/vm/prims/methodHandles.cpp
>   - line #278 if statement conditional, the expression 
> "m->method_holder()" could be changed to "m_klass"
>     which is set at the top of the routine to contain 
> m->method_holder().  m_klass seems to be used
>     consistently in that manner throughout the routine. \

m_klass is a stupid KlassHandle so I'd have to upcast it to 
InstanceKlass but method_holder() returns the right type InstanceKlass 
so I now think m->method_holder() is better.

I should get back to work deciding whether we can remove these 
KlassHandle types....

Thanks!
Coleen

>
> Lois
>
> On 11/17/2014 5:49 PM, Coleen Phillimore wrote:
>> Summary: note all MemberNames created on internal list for adjusting 
>> method entries.
>>
>> The JVM MemberNameTable code will push all member names on the list 
>> rather than trying to index by method_idnum.  The code to look up 
>> MemberName types wasn't used so was removed.  Class redefinition 
>> iterates through the table sequentially to update the Method* 
>> pointers in saved member names.
>>
>> This change will work with David Chase's change to the Java code for 
>> bug 8013267 without the extra code dealing with class redefinition.
>>
>> Tested with vm.quick.testlist, jck tests and jtreg tests, including 
>> the mlvm tests that failed in the bug report.
>>
>> open webrev at http://cr.openjdk.java.net/~coleenp/8042235/
>> bug link https://bugs.openjdk.java.net/browse/JDK-8042235
>>
>> Thanks,
>> Coleen
>



More information about the hotspot-dev mailing list