Fwd: Re: Request for review: 7174978: NPG: Fix bactrace builder for class redefinition
Coleen Phillimore
coleen.phillimore at oracle.com
Mon Dec 17 13:48:48 UTC 2012
Hi, Can someone from the GC group review this? I added code to
reference processor to clean up backtrace marker objects (that's a
better name, isn't it?).
Thanks,
Coleen
-------- Original Message --------
Subject: Re: Request for review: 7174978: NPG: Fix bactrace builder for
class redefinition
Date: Fri, 14 Dec 2012 11:05:47 -0500
From: Coleen Phillimore <coleen.phillimore at oracle.com>
Reply-To: coleen.phillimore at oracle.com
Organization: Oracle Corporation
To: hotspot-runtime-dev at openjdk.java.net
I have reworked this change to cleanup backtrace saver C heap allocated
objects (and changed the name) when weak references are cleaned up,
which doesn't have to happen at a full collection. There is still some
performance concerns because we create these things but a better way of
accounting for Method* in the Java objects is still under design
discussions. Ideas welcome!
open webrev at http://cr.openjdk.java.net/~coleenp/7174978_4/
bug link at http://bugs.sun.com/view_bug.do?bug_id=7174978_4
One note below.
On 12/12/2012 12:15 PM, Coleen Phillimore wrote:
>
> Serguei,
>
> Thanks for reviewing this. I'm reworking it because in the
> pathological case, if there are no full GC's, we wouldn't reclaim this
> backtrace C heap storage.
>
> On 12/11/2012 5:31 PM, serguei.spitsyn at oracle.com wrote:
>> Coleen,
>>
>> It looks good in general.
>> Just some questions below.
>>
>>
>> src/share/vm/classfile/javaClasses.cpp
>>
>> 1339 void java_lang_Throwable::mark_on_stack(oop throwable) {
>> . . .
>> 1352 if (method == NULL) return;
>>
>> Would it be more safe to continue instead of return?
>> 1352 if (method == NULL) continue;
>
> This is a short circuit that the function above this also has. The
> trace_next_offset will be null in this case. If I change it, I'd want
> to change them both.
Actually, it would have to be changed to a 'break' because we create an
objArrayOop for the method array and fill it in as the backtrace is
created. Finding a null means there are no more methods. I prefer to
leave the returns in both places. I had a version where I wrote an
iterator, which is "knows" this, but it didn't feel like saving this
many lines was worth the amount of code the iterator took.
Thanks,
Coleen
>>
>> src/share/vm/classfile/backtrace.cpp
>> 63 void Backtrace::do_unloading() {
>>
>> I guess, this can be called at a safepoint only.
>> Would it make sense to place a comment or an assert?
>
> I added an assert because I assume this. I'm not sure if CMS gc can
> unload classes without a safepoint, but this code wants to be run at a
> safepoint.
>
>> I see you already created a new unit test for this:
>> java/lang/instrument/RedefineMethodInBacktrace.sh
>>
> I think StefanK was going to add this test after I checked in this fix
> (or has he already added it?)
>
> thanks,
> Coleen
>
>> Thanks,
>> Serguei
>>
>>
>>
>>
>>
>>
>> On 12/10/12 1:15 PM, Coleen Phillimore wrote:
>>>
>>> I have updated this webrev to include cleanups suggested by John
>>> Rose for the anonymous class fix. Please review before I add more
>>> to this!!
>>>
>>> open webrev at http://cr.openjdk.java.net/~coleenp/7174978_2/
>>> bug link at http://bugs.sun.com/view_bug.do?bug_id=7174978
>>>
>>> Thanks,
>>> Coleen
>>>
>>>
>>> On 12/05/2012 02:23 PM, Coleen Phillimore wrote:
>>>> Summary: Save the set of backtraces to use for on stack method
>>>> walking for redefine classes.
>>>>
>>>> I also moved metadataOnStackMark class to it's own file because
>>>> it's not only used for redefine classes. Some metadata can be
>>>> individually deallocated (eg. the Method* created in the relocator).
>>>>
>>>> open webrev at http://cr.openjdk.java.net/~coleenp/7174978/
>>>> bug link at http://bugs.sun.com/view_bug.do?bug_id=7174978
>>>>
>>>> Ran test that will be added to the jdk/tests in
>>>> java/lang/instrument/RedefineMethodInBacktrace.sh (to be checked in
>>>> separately).
>>>>
>>>> thanks,
>>>> Coleen
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20121217/57f22c2f/attachment.htm>
More information about the hotspot-gc-dev
mailing list