Need help with change

David Holmes david.holmes at oracle.com
Wed May 22 04:34:54 PDT 2013


On 22/05/2013 9:18 PM, Coleen Phillimore wrote:
> 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?

I don't understand. AFAICS the JVMTI spec just says you have to be able 
to get to these things from the Class object. So if the fields are in 
Class then we just need to access them - no need for an upcall.

David
-----


> 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