RFR: 8067247: Crash: assert(method_holder->data() == 0 ...) failed: a) MT-unsafe modification of inline cache
Jamsheed C m
jamsheed.c.m at oracle.com
Mon Mar 28 06:19:22 UTC 2016
Hi Dean,
clear_inline_caches clears static stubs. i wanted this api to look more
like cleanup_inline_caches functionality(with clean all ics). So used this.
Best Regards,
Jamsheed
On 3/26/2016 1:50 PM, Dean Long wrote:
> Instead of changing cleanup_inline_caches() to take a new flag, can
> you use the existing
> clear_inline_caches()?
>
> dl
>
> On 3/25/2016 9:54 AM, Jamsheed C m wrote:
>> Thank you Chris.
>> I have updated the code.
>>
>> + if (method == NULL) {
>> + return;
>> + }
>> + nmethod* nm = method->code();
>> + if (nm == NULL || nm->is_unloaded()) {
>> + return;
>> + }
>> + nm->cleanup_inline_caches(true);
>> Best Regards,
>> Jamsheed
>>
>> On 3/25/2016 6:58 AM, Christian Thalinger wrote:
>>>
>>>> On Mar 24, 2016, at 11:05 AM, Jamsheed C m
>>>> <jamsheed.c.m at oracle.com> wrote:
>>>>
>>>> Hi All,
>>>>
>>>> Request for review,
>>>>
>>>> bug url: https://bugs.openjdk.java.net/browse/JDK-8067247
>>>>
>>>> webrevs:
>>>> fix:
>>>> jdk part: http://cr.openjdk.java.net/~jcm/8067247/webrev.jdk.00/
>>>> <http://cr.openjdk.java.net/%7Ejcm/8067247/webrev.jdk.00/>
>>>>
>>>> newly added test case
>>>> hotspot part:
>>>> http://cr.openjdk.java.net/~jcm/8067247/webrev.hs.00/
>>>> <http://cr.openjdk.java.net/%7Ejcm/8067247/webrev.hs.00/>
>>>> under hs-comp/test
>>>> http://cr.openjdk.java.net/~jcm/8067247/webrev.hs_comp.00/
>>>> <http://cr.openjdk.java.net/%7Ejcm/8067247/webrev.hs_comp.00/>
>>>>
>>>> Unit Test: test/compiler/jsr292/misc/gc/MHInvokeTest.java
>>>> Testing: JPRT with new test case, with fix, without fix
>>>>
>>>> Problem Summary: MH.invoke linksite take assistance of java code
>>>> to get an adapter method. Here a new method holder class and a
>>>> adapter method are created for a MT and lform instance is cached.
>>>> Normally this cached lform get returned for a linksite request of
>>>> same MT. When these cached lform get collected(due to memory
>>>> pressure), a new class and method gets created for same MT(even
>>>> though old method holder class and adapter method are live).
>>>> Fix Summary: Kept a strong reference to lform instance in adapter
>>>> method holder class of MT.
>>>
>>> Wow! You found the cause for his long-standing issue? Nice.
>>> + if (method == NULL) { return; }
>>> + nmethod* nm = method->code();
>>> + if (nm == NULL) { return; }
>>> + if (nm->is_unloaded()) { return; }
>>> Please put the return and } on separate lines.
>>>
>>>>
>>>> Best Regards,
>>>> Jamsheed
>>>>
>>>>
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20160328/1966bea4/attachment-0001.html>
More information about the hotspot-compiler-dev
mailing list