Jigsaw Enhancement RFR round #3: 8159145 Add JVMTI function GetNamedModule

Daniel D. Daugherty daniel.daugherty at oracle.com
Tue Jun 28 17:24:25 UTC 2016


On 6/27/16 10: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/ 
>>
>>
>>
>> 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/ 
> '

src/java.base/share/native/include/jvmti.h
     No comments.

Thumbs up on the 'jdk' repo change.

Dan




>
>
> 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 hotspot-dev mailing list