Need help with change

Coleen Phillimore coleen.phillimore at oracle.com
Wed May 22 04:18:36 PDT 2013


On 5/22/2013 3:04 AM, Staffan Larsen wrote:
> On 22 maj 2013, at 06:35, David Holmes <David.Holmes at oracle.com> wrote:
>
>> On 21/05/2013 11:56 PM, Coleen Phillimore wrote:
>>> On 05/21/2013 09:29 AM, Staffan Larsen wrote:
>>>> When doing heap iteration with JVMTI, the spec requires callbacks from
>>>> the VM to the agent identifying the signers and protection domain
>>>> references. This is what tagMap does, see jvmtiTagMap.cpp:2464.
>>>>
>>>> As long as it it still possible for JVMTI to find these references
>>>> (with ik->protection_domain() and ik->signers()), I think it's ok.
>>> Okay.  Thanks for the quick answer.   I was going to rip this out (rats,
>>> now I can't).  I can get to both protection domain and signers through
>>> the mirror.
>>>
>>> We are working on moving the signers completely to the jdk and not
>>> having the jvm know about them at all.  Then we can't find the signers
>>> through this interface.  Should we file a CCC request to change the
>>> JVMTI spec then?
>> You can access any Java object field from the JVM - you just need to add it to java_classes.cpp :) I don't think you can just rip this out of the JVMTI spec.
> I agree with David here - changing the JVMTI spec is not the solution.

But there won't be a field in the mirror or anywhere for signers. We can 
get the value from protection_domain.getCertificates() from the jdk but 
the jvm doesn't currently do the upcall to java.   Why does the jvmti 
spec dictate implementation?

Coleen

>
> /Staffan
>
>
>> David
>> -----
>>
>>> Thanks,
>>> Coleen
>>>
>>>> /Staffan
>>>>
>>>>
>>>> On 21 maj 2013, at 14:52, Coleen Phillimore
>>>> <coleen.phillimore at oracle.com> wrote:
>>>>
>>>>> I found during code review comment editing for my change that removes
>>>>> signers and protection domain from the InstanceKlass, that JVMTI code
>>>>> seems to have some sort of call back and knowledge of these fields in
>>>>> instanceKlass.
>>>>>
>>>>>           </constant>
>>>>>           <constant id="JVMTI_REFERENCE_SIGNERS" num="5">
>>>>>             Reference from a class to its signers array.
>>>>>           </constant>
>>>>>           <constant id="JVMTI_REFERENCE_PROTECTION_DOMAIN" num="6">
>>>>>             Reference from a class to its protection domain.
>>>>>
>>>>>
>>>>> If I remove these, will it cause incompatibilities?   It's used
>>>>> during jvmtiTagMap.cpp (whatever that's doing).
>>>>>
>>>>> Thanks,
>>>>> Coleen



More information about the serviceability-dev mailing list