Jigsaw Enhancement RFR round #3: 8159145 Add JVMTI function GetNamedModule
serguei.spitsyn at oracle.com
serguei.spitsyn at oracle.com
Tue Jun 28 08:54:47 UTC 2016
Hi David,
Thank you for the comments!
I agree with you.
Updated Hotspot webrev:
http://cr.openjdk.java.net/~sspitsyn/webrevs/2016/hotspot/8159145-jigsaw-jvmti-pkg.4/
Thanks,
Serguei
On 6/27/16 22:06, David Holmes wrote:
> Hi Serguei,
>
> Overall this looks a lot clearer/simpler.
>
> On 28/06/2016 2:20 PM, serguei.spitsyn at oracle.com wrote:
>> On 6/27/16 21:08, serguei.spitsyn at oracle.com wrote:
>>> Please, review the Jigsaw fix for the enhancement:
>>> https://bugs.openjdk.java.net/browse/JDK-8159145
>>>
>>>
>>> The Hotspot webrev:
>>>
>>> http://cr.openjdk.java.net/~sspitsyn/webrevs/2016/hotspot/8159145-jigsaw-jvmti-pkg.3/
>>>
>
> Are there intended to be other callers of Module::get_named_module? If
> not it seems odd to go to all the trouble of throwing exceptions, just
> to have the caller clear them and return an error code. Or you could
> move all that argument checking code into the JVMTI function directly
> - if called internally you would just assert that arguments are as
> expected.
>
>
> src/share/vm/prims/jvmti.xml
>
> + otherwise the <code>NULL</code> is returned.
>
> Delete "the".
>
> Otherwise all looks good to me.
>
>>>
>>>
>>> The Jdk webrev is the same:
>>>
>>> http://cr.openjdk.java.net/~sspitsyn/webrevs/2016/hotspot/8159145-jigsaw-jvmti-pkg.jdk1/
>>>
>>
>> Sorry, the Jdk webrev changed as well:
>>
>> http://cr.openjdk.java.net/~sspitsyn/webrevs/2016/hotspot/8159145-jigsaw-jvmti-pkg.jdk3/
>>
>
> Looks fine.
>
> Thanks,
> David
>
>>
>> Thanks,
>> Serguei
>>
>>
>>>
>>>
>>> Summary:
>>>
>>> This is the review round #3.
>>> Alan suggested to replace the function GetModuleByPackageName with
>>> the GetNamedModule.
>>> New function will return NULL if the package is not in a module
>>> defined to the class loader.
>>> It simplifies the API and makes it easier to specify.
>>> JVM TI agents that instrument code in named modules need the Module
>>> at class load time.
>>>
>>> One question that came from the function semantics change.
>>> I had to implement the Modules::get_named_module() from scratch
>>> independently of the existing
>>> Modules::get_module_by_package_name() and Modules::get_module().
>>> The issue is that the Modules::get_module() can return the unnamed
>>> module whereas the
>>> JVMTI helper Modules::get_named_module() should return NULL instead
>>> of the unnamed module.
>>> Please, let me know if it is Ok or if you have better ideas how to
>>> share the code.
>>>
>>> This is the Summary from review round #1:
>>>
>>> One way to do this is by introducing a new ClassFileLoadHook that
>>> takes an additional parameter but this approach is disruptive.
>>> The alternative option is a JVM TI function that maps a classloader
>>> + package name to a module.
>>> We were initially not confident with this approach so we introduced
>>> it as JVM function JVM_GetModuleByPackageName.
>>> Based on experience to date then this approach seems okay and so
>>> this function needs to be promoted to a JVMTI function.
>>>
>>> It includes new jtreg test with native JVMTI agent.
>>>
>>>
>>> Testing:
>>> Run newly developed jtreg test.
>>>
>>> Thanks,
>>> Serguei
>>
More information about the serviceability-dev
mailing list