preliminary RFR: 8049365 - Update JDI and JDWP for modules

harold seigel harold.seigel at oracle.com
Thu Dec 10 19:57:19 UTC 2015


Hi Serguei,

Looks good.  Just a few comments.

1. Should jni_GetAllModules() contain the DTrace macros that other JNI 
entries have?

2. Can you add a similar GetAllModules() function to jniCheck.cpp ?

Thanks, Harold

On 12/10/2015 7:04 AM, Alan Bateman wrote:
>
> On 10/12/2015 08:03, serguei.spitsyn at oracle.com wrote:
>>
>> Jdk webrev:
>> http://cr.openjdk.java.net/~sspitsyn/webrevs/2015/jdk/8049365-Jigsaw-jdk.0/ 
>>
>>
>> Hotspot webrev:
>> http://cr.openjdk.java.net/~sspitsyn/webrevs/2015/hotspot/8049365-Jigsaw-hs.0/ 
>>
>>
>>
>> Summary:
>>
>>   It is expected that the JDI and JDWP update for modules will have 
>> several iterations.
>>   This is the initial one, and it introduces a very minimal 
>> functionality.
>>   The main purpose of this preliminary review is to make sure the JDI 
>> and JDWP update
>>   for modules goes in a right direction and has nothing obviously wrong.
>
> I went through the changes to the JDWP spec + additions to jdwpgen in 
> this iteration and it looks quite good. A few comments:
>
> 1. I don't know if JEP 223 considered the JDWP version but I will 
> assume this will move to 9 instead of 1.9.
>
> 2. In the Module command then the description would be clearer as "... 
> that this reference type ...".
>
> 3. In the Module command set then we'll need to decide the reply to 
> the Name command for the case that the module is an unnamed module. 
> There is also an open issue for the runtime API too.
>
> 4. Also in the Module command set then the CanRead targetModule should 
> be "source" (not target) to get consistency with the runtime API.
>
>
> As you mentioned in your mail, I think the GetAllModules will need to 
> move to JVM TI so that it's consistent with GetAllClasses, 
> GetAllThreads, ...
>
>
> I also went through the JDI changes. The type hierarchy in JDI is 
> quite deep and is has a convention for naming that we need to follow 
> too. Looking at it now then it looks like it should be ModuleReference 
> extends ObjectReference. That would give us consistency with other 
> mirrors that are object references (ThreadReference and 
> ClassLoaderReference for example). We don't rev JDI often enough to 
> keep the hierarchy and naming convention in our heads so good to have 
> more eyes on this.
>
> ReferenceType::module looks right, we'll just need to iterate on the 
> javadoc.
>
> VirtualMachine::allModules looks right. Note that the TRACE_* fields 
> are public and part of the JDI API so we'll need to decide whether 
> TRACE_MODULES is important or not.
>
> In ReferenceTypeImpl then I assume isModuleCached is not needed. Maybe 
> you have this to the JDWP command when connected to a target VM that 
> is JDK 8 or older?
>
> VirtualMachineImpl - this might be the time to change to 9 rather than 
> 1.9.
>
> ModuleImpl - I assume ref can be final.
>
>
> Have you thought about SA yet? I can't recall if it is compiled with 
> the boot JDK or will be compiled against the newly built jdk.jdi 
> module. If the later then I assume that SA will need updates. If the 
> former then I assume we will have issues with boot cycle builds.
>
> Tests. I see you have a basic test but I assume we will need to find 
> time to develop a lot more tests for this update.
>
> -Alan



More information about the jigsaw-dev mailing list