RFR 8038797: JVMTI FollowReferences does not report roots reachable from nmethods

dean.long at oracle.com dean.long at oracle.com
Thu Aug 11 20:10:53 UTC 2016


On 8/11/16 12:54 PM, Coleen Phillimore wrote:

>
>
> On 8/11/16 2:32 PM, dean.long at oracle.com wrote:
>> Can you make it work for any CompiledMethod and not just nmethods?
>
> Dean, I tried to do this but CompiledMethod didn't have any oops_do 
> function.

Oh right, I was thinking it did because of some experiments I had made 
in that area.

>>
>> I believe oops_do() also picks up klass_holder() oops that were added 
>> to keep metadata references alive.
>
> Yes, it does.
>
>> So for those you will most likely get a ClassLoader and not the Class 
>> object.  To get the Class object I think you would need to use 
>> something like metadata_do(). Does FollowReferences care either way?
>
> No, FollowReferences really wants the oops and you can use the oops to 
> find out which Class objects (java.lang.Class) and ClassLoaders are 
> alive.   FollowReferences doesn't follow any metadata for anything.
>

OK, this change looks good to me.

dl

> Coleen
>
>>
>> dl
>>
>> On 8/11/16 10:44 AM, Coleen Phillimore wrote:
>>> Summary: Also follow nmethods found on the execution stack.
>>>
>>> I have this fix to follow nmethods found on the execution stack but 
>>> not really a good way to test it.  There are two tests internally 
>>> that exercise this code and with some printing, I verified that they 
>>> do the right thing.   I am open to suggestions how to test this, it 
>>> requires compiled methods on the stack with oops that are only 
>>> referenced from said methods in the oop section (not in locals or on 
>>> stack).
>>>
>>> Also ran the tonga colocated/non-colocated internal tests, 
>>> jdk/test/com/sun/jdi.
>>>
>>> scp -r /home/cphillim/home/public_html/webrev/8038797.01 
>>> coleenp at cr.openjdk.java.net:
>>> open webrev at http://cr.openjdk.java.net/~coleenp/8038797.01/webrev
>>>
>>>
>>> thanks,
>>> Coleen
>>
>



More information about the hotspot-dev mailing list